Begin filling out the detailed description
This commit is contained in:
parent
1126023668
commit
dd84193fa4
@ -467,6 +467,87 @@
|
||||
\ingroup interface
|
||||
\ingroup libbe
|
||||
\brief View base class.
|
||||
|
||||
A BView is a rectangular area within a window that responds to mouse clicks
|
||||
and key presses, and acts as a surface for you to draw on.
|
||||
|
||||
Most Interface Kit classes, with the notable exception of BWindow inherit from
|
||||
BView. Some of the time you might use a BView object as is, but most of the
|
||||
time you subclass BView to do something unique.
|
||||
|
||||
To create a subclass of BView you generally override one or more of BView's
|
||||
hook methods to respond to user events such as MouseDown() or FrameMoved().
|
||||
By default a BView does nothing in it's hook methods unless otherwise stated,
|
||||
it's up to you to define what happens. To override the look of a BView you
|
||||
should override the Draw() or DrawAfterChildren() methods. See the section on
|
||||
Hook Methods below for more details.
|
||||
|
||||
When a BView object is first created it has no parent or child views. How you
|
||||
add a view to the view hierarchy depends on if you want to use a standard
|
||||
view with a defined frame rectangle or to use the Layout APIs to position and
|
||||
size your view instead.
|
||||
|
||||
If you create a standard view you need to add it to a window or another view
|
||||
using the AddChild() method, if you create a layout view you need to add your
|
||||
view to a layout using BLayout::AddView() or by adding it to a layout builder.
|
||||
|
||||
Views are not very interesting until they, or one of their parents, are
|
||||
attached to a window as many of BView's methods depend on a connection to the
|
||||
App Server to do their work. In order to prevent multiple views from altering
|
||||
the window simultaneously though locking is required. To perform an action
|
||||
while the window is locked you issue the following code:
|
||||
|
||||
\code
|
||||
if (Window()->LockLooper()) {
|
||||
...
|
||||
Window()->UnlockLooper()
|
||||
}
|
||||
\endcode
|
||||
|
||||
Whenever App Server calls a hook method it automatically locks the BWindow for
|
||||
you.
|
||||
|
||||
Only one view attached to a window is able to receive keyboard events at a
|
||||
time. The view that is able to receive keyboard events such as KeyDown() is
|
||||
called the "focus view". MakeFocus() gives or removes focus from a view.
|
||||
Call IsFocus() to determine whether or not the view is the window's current
|
||||
focus view.
|
||||
|
||||
When a view has focus an indicator should be drawn to inform the user. Typically
|
||||
the view is surrounded by a blue rectangle to indicate that it is the window's
|
||||
focus view. The color can be queried using the keyboard_navigation_color()
|
||||
function in InterfaceDefs.h
|
||||
|
||||
Each view has it's own coordinate system with the origin point (0.0, 0.0)
|
||||
located at the top left corner. You can convert a BPoint or BRect to or from
|
||||
the view's coordinate system to the coordinate system of it's parent, or
|
||||
of the screen's coordinate system. See the section on Coordinate Conversion
|
||||
Methods for more details.
|
||||
|
||||
The Application Server clips a BView to the region where it's permitted to
|
||||
draw which is never larger than the view's bound rectangle. A view can never
|
||||
draw outside its bounds nor can it draw outside of the bounds rectangle of any
|
||||
parent view.
|
||||
|
||||
You may limit the clipping region further by passing a BRegion object to
|
||||
ConstrainClippingRegion(). You can obtain the current clipping region by
|
||||
calling GetClippingRegion().
|
||||
|
||||
Each view has a ViewColor() that fills the frame rectangle before the
|
||||
view does any drawing of its own. The default view color is white, you may
|
||||
change the view color by calling SetViewColor(). A commonly used view color
|
||||
is \c B_PANEL_BACKGROUND_COLOR which is a grey color used as the view color
|
||||
of many Interface Kit classes. If you set the view color to
|
||||
\c B_TRANSPARENT_COLOR then the Application Server won't erase the clipping
|
||||
region of the view before updating, this should only be used if the view
|
||||
erases itself by drawing on every pixel in the clipping region.
|
||||
|
||||
If you want to set the view color of a view to be the same as its parent you
|
||||
need to set it within the AttachedToWindow() method of the view like so:
|
||||
|
||||
\code
|
||||
SetViewColor(Parent()->ViewColor());
|
||||
\endcode
|
||||
*/
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user