]> git.saurik.com Git - wxWidgets.git/blobdiff - interface/wx/window.h
update for bakefile 0.2.6
[wxWidgets.git] / interface / wx / window.h
index c0503b5ee3ed0669a5ef166f008c664a909e2117..6eb30c66bb72a1fe20f01aababa7efaf0f40e367 100644 (file)
@@ -151,16 +151,17 @@ enum wxWindowVariant
 
     @beginExtraStyleTable
     @style{wxWS_EX_VALIDATE_RECURSIVELY}
-           By default, Validate/TransferDataTo/FromWindow() only work on
-           direct children of the window (compatible behaviour). Set this flag
-           to make them recursively descend into all subwindows.
+           By default, wxWindow::Validate(), wxWindow::TransferDataTo() and
+           wxWindow::TransferDataFromWindow() only work on
+           direct children of the window (compatible behaviour).
+           Set this flag to make them recursively descend into all subwindows.
     @style{wxWS_EX_BLOCK_EVENTS}
            wxCommandEvents and the objects of the derived classes are
            forwarded to the parent window and so on recursively by default.
            Using this flag for the given window allows to block this
            propagation at this window, i.e. prevent the events from being
            propagated further upwards. Dialogs have this flag on by default
-           for the reasons explained in the @ref overview_eventhandling "Event Handling Overview".
+           for the reasons explained in the @ref overview_events.
     @style{wxWS_EX_TRANSIENT}
            Don't use this window as an implicit parent for the other windows:
            this must be used with transient windows as otherwise there is the
@@ -169,23 +170,76 @@ enum wxWindowVariant
     @style{wxWS_EX_CONTEXTHELP}
            Under Windows, puts a query button on the caption. When pressed,
            Windows will go into a context-sensitive help mode and wxWidgets
-           will send a wxEVT_HELP event if the user clicked on an application window.
+           will send a @c wxEVT_HELP event if the user clicked on an application window.
            This style cannot be used (because of the underlying native behaviour)
            together with @c wxMAXIMIZE_BOX or @c wxMINIMIZE_BOX, so these two styles
            are automatically turned off if this one is used.
     @style{wxWS_EX_PROCESS_IDLE}
            This window should always process idle events, even if the mode set
-           by wxIdleEvent::SetMode is wxIDLE_PROCESS_SPECIFIED.
+           by wxIdleEvent::SetMode is @c wxIDLE_PROCESS_SPECIFIED.
     @style{wxWS_EX_PROCESS_UI_UPDATES}
            This window should always process UI update events, even if the
-           mode set by wxUpdateUIEvent::SetMode is wxUPDATE_UI_PROCESS_SPECIFIED.
+           mode set by wxUpdateUIEvent::SetMode is @c wxUPDATE_UI_PROCESS_SPECIFIED.
     @endExtraStyleTable
 
+    @beginEventEmissionTable
+    @event{EVT_ACTIVATE(id, func)}
+        Process a @c wxEVT_ACTIVATE event. See wxActivateEvent.
+    @event{EVT_CHILD_FOCUS(func)}
+        Process a @c wxEVT_CHILD_FOCUS event. See wxChildFocusEvent.
+    @event{EVT_CONTEXT_MENU(func)}
+        A right click (or other context menu command depending on platform) has been detected.
+        See wxContextMenuEvent.
+    @event{EVT_HELP(id, func)}
+        Process a @c wxEVT_HELP event. See wxHelpEvent.
+    @event{EVT_HELP_RANGE(id1, id2, func)}
+        Process a @c wxEVT_HELP event for a range of ids. See wxHelpEvent.
+    @event{EVT_DROP_FILES(func)}
+        Process a @c wxEVT_DROP_FILES event. See wxDropFilesEvent.
+    @event{EVT_ERASE_BACKGROUND(func)}
+        Process a @c wxEVT_ERASE_BACKGROUND event. See wxEraseEvent.
+    @event{EVT_SET_FOCUS(func)}
+        Process a @c wxEVT_SET_FOCUS event. See wxFocusEvent.
+    @event{EVT_KILL_FOCUS(func)}
+        Process a @c wxEVT_KILL_FOCUS event. See wxFocusEvent.
+    @event{EVT_IDLE(func)}
+        Process a @c wxEVT_IDLE event. See wxIdleEvent.
+    @event{EVT_JOY_*(func)}
+        Processes joystick events. See wxJoystickEvent.
+    @event{EVT_KEY_DOWN(func)}
+        Process a @c wxEVT_KEY_DOWN event (any key has been pressed).
+        See wxKeyEvent.
+    @event{EVT_KEY_UP(func)}
+        Process a @c wxEVT_KEY_UP event (any key has been released).
+    @event{EVT_CHAR(func)}
+        Process a @c wxEVT_CHAR event.
+        See wxKeyEvent.
+    @event{EVT_MOUSE_CAPTURE_LOST(func)}
+        Process a @c wxEVT_MOUSE_CAPTURE_LOST event. See wxMouseCaptureLostEvent.
+    @event{EVT_MOUSE_CAPTURE_CHANGED(func)}
+        Process a @c wxEVT_MOUSE_CAPTURE_CHANGED event. See wxMouseCaptureChangedEvent.
+    @event{EVT_MOUSE_*(func)}
+        See wxMouseEvent.
+    @event{EVT_PAINT(func)}
+        Process a @c wxEVT_PAINT event. See wxPaintEvent.
+    @event{EVT_POWER_*(func)}
+        The system power state changed. See wxPowerEvent.
+    @event{EVT_SCROLLWIN_*(func)}
+        Process scroll events. See wxScrollWinEvent.
+    @event{EVT_SET_CURSOR(func)}
+        Process a @c wxEVT_SET_CURSOR event. See wxSetCursorEvent.
+    @event{EVT_SHOW(func)}
+        Process a @c wxEVT_SHOW event. See wxShowEvent.
+    @event{EVT_SIZE(func)}
+        Process a @c wxEVT_SIZE event. See wxSizeEvent.
+    @event{EVT_SYS_COLOUR_CHANGED(func)}
+        Process a @c wxEVT_SYS_COLOUR_CHANGED event. See wxSysColourChangedEvent.
+    @endEventTable
+
     @library{wxcore}
     @category{miscwnd}
 
-    @see @ref overview_eventhandling "Event handling overview",
-         @ref overview_windowsizing "Window sizing overview"
+    @see @ref overview_events, @ref overview_windowsizing
 */
 class wxWindow : public wxEvtHandler
 {
@@ -416,6 +470,9 @@ public:
 
     /**
         @name Scrolling and scrollbars functions
+
+        Note that these methods don't work with native controls which don't use
+        wxWidgets scrolling framework (i.e. don't derive from wxScrolledWindow).
     */
     //@{
 
@@ -437,7 +494,7 @@ public:
     /**
         Returns the built-in scrollbar position.
 
-        @see See SetScrollbar()
+        @see SetScrollbar()
     */
     virtual int GetScrollPos(int orientation) const;
 
@@ -612,6 +669,8 @@ public:
 
     /**
         Sets the cached best size value.
+
+        @see GetBestSize()
     */
     void CacheBestSize(const wxSize& size) const;
 
@@ -684,6 +743,11 @@ public:
         control label is not truncated. For windows containing subwindows (typically
         wxPanel), the size returned by this function will be the same as the size
         the window would have had after calling Fit().
+
+        Note that when you write your own widget you need to overload the
+        DoGetBestSize() function instead of this (non-virtual!) function.
+
+        @see CacheBestSize(), @ref overview_windowsizing
     */
     wxSize GetBestSize() const;
 
@@ -709,9 +773,12 @@ public:
         This is the value used by sizers to determine the appropriate
         ammount of space to allocate for the widget.
 
+        This is the method called by any wxSizer when they query the size
+        of a certain window or control.
+
         @see GetBestSize(), SetInitialSize(), @ref overview_windowsizing
     */
-    wxSize GetEffectiveMinSize() const;
+    virtual wxSize GetEffectiveMinSize() const;
 
     /**
         Returns the maximum size of window's client area.
@@ -720,7 +787,7 @@ public:
         possible size as well as the upper bound on window's size settable using
         SetClientSize().
 
-        @see GetMaxSize()
+        @see GetMaxSize(), @ref overview_windowsizing
     */
     virtual wxSize GetMaxClientSize() const;
 
@@ -730,7 +797,7 @@ public:
         This is an indication to the sizer layout mechanism that this is the maximum
         possible size as well as the upper bound on window's size settable using SetSize().
 
-        @see GetMaxClientSize()
+        @see GetMaxClientSize(), @ref overview_windowsizing
     */
     virtual wxSize GetMaxSize() const;
 
@@ -741,7 +808,7 @@ public:
         It normally just returns the value set by SetMinClientSize(), but it can be
         overridden to do the calculation on demand.
 
-        @see GetMinSize()
+        @see GetMinSize(), @ref overview_windowsizing
     */
     virtual wxSize GetMinClientSize() const;
 
@@ -752,7 +819,7 @@ public:
         This method normally just returns the value set by SetMinSize(), but it
         can be overridden to do the calculation on demand.
 
-        @see GetMinClientSize()
+        @see GetMinClientSize(), @ref overview_windowsizing
     */
     virtual wxSize GetMinSize() const;
 
@@ -768,7 +835,7 @@ public:
         @param height
             Receives the window height.
 
-        @see GetClientSize(), GetVirtualSize()
+        @see GetClientSize(), GetVirtualSize(), @ref overview_windowsizing
     */
     void GetSize(int* width, int* height) const;
 
@@ -781,6 +848,8 @@ public:
         This gets the virtual size of the window in pixels.
         By default it returns the client size of the window, but after a call to
         SetVirtualSize() it will return the size set with that method.
+
+        @see @ref overview_windowsizing
     */
     wxSize GetVirtualSize() const;
 
@@ -803,8 +872,11 @@ public:
     /**
         Resets the cached best size value so it will be recalculated the next time it
         is needed.
+
+        @see CacheBestSize()
     */
     void InvalidateBestSize();
+
     /**
         Posts a size event to the window.
 
@@ -863,6 +935,8 @@ public:
         than SetSize(), since the application need not worry about what dimensions
         the border or title bar have when trying to fit the window around panel
         items, for example.
+
+        @see @ref overview_windowsizing
     */
     virtual void SetClientSize(int width, int height);
 
@@ -899,7 +973,12 @@ public:
         Sets the maximum client size of the window, to indicate to the sizer
         layout mechanism that this is the maximum possible size of its client area.
 
-        @see SetMaxSize()
+        Note that this method is just a shortcut for:
+        @code
+        SetMaxSize(ClientToWindowSize(size));
+        @endcode
+
+        @see SetMaxSize(), @ref overview_windowsizing
     */
     virtual void SetMaxClientSize(const wxSize& size);
 
@@ -907,7 +986,7 @@ public:
         Sets the maximum size of the window, to indicate to the sizer layout mechanism
         that this is the maximum possible size.
 
-        @see SetMaxClientSize()
+        @see SetMaxClientSize(), @ref overview_windowsizing
     */
     virtual void SetMaxSize(const wxSize& size);
 
@@ -923,7 +1002,12 @@ public:
         prevent the program from explicitly making the window smaller than the
         specified size.
 
-        @see SetMinSize()
+        Note that this method is just a shortcut for:
+        @code
+        SetMinSize(ClientToWindowSize(size));
+        @endcode
+
+        @see SetMinSize(), @ref overview_windowsizing
     */
     virtual void SetMinClientSize(const wxSize& size);
 
@@ -939,7 +1023,7 @@ public:
         SetSize(), it just ensures that it won't become smaller than this size
         during the automatic layout.
 
-        @see SetMinClientSize()
+        @see SetMinClientSize(), @ref overview_windowsizing
     */
     virtual void SetMinSize(const wxSize& size);
 
@@ -984,7 +1068,7 @@ public:
                  should be supplied by wxWidgets, or that the current value of the
                  dimension should be used.
 
-        @see Move()
+        @see Move(), @ref overview_windowsizing
     */
     void SetSize(int x, int y, int width, int height,
                  int sizeFlags = wxSIZE_AUTO);
@@ -995,7 +1079,7 @@ public:
 
         @remarks This form must be used with non-default width and height values.
 
-        @see Move()
+        @see Move(), @ref overview_windowsizing
     */
     virtual void SetSize(const wxRect& rect);
 
@@ -1014,7 +1098,7 @@ public:
         (such as wxDialog or wxFrame) is discouraged.
         Please use SetMinSize() and SetMaxSize() instead.
 
-        @see wxTopLevelWindow::SetSizeHints
+        @see wxTopLevelWindow::SetSizeHints, @ref overview_windowsizing
     */
     void SetSizeHints( const wxSize& minSize,
                        const wxSize& maxSize=wxDefaultSize,
@@ -1022,6 +1106,8 @@ public:
 
     /**
         Sets the virtual size of the window in pixels.
+
+        @see @ref overview_windowsizing
     */
     void SetVirtualSize(int width, int height);
 
@@ -1669,7 +1755,7 @@ public:
         Removes and returns the top-most event handler on the event handler stack.
 
         E.g. in the case of:
-            @image html overview_eventhandling_winstack.png
+            @image html overview_events_winstack.png
         when calling @c W->PopEventHandler(), the event handler @c A will be
         removed and @c B will be the first handler of the stack.
 
@@ -1681,7 +1767,7 @@ public:
             If this is @true, the handler will be deleted after it is removed
             (and the returned value will be @NULL).
 
-        @see @ref overview_eventhandling_processing
+        @see @ref overview_events_processing
     */
     wxEvtHandler* PopEventHandler(bool deleteHandler = false);
 
@@ -1704,7 +1790,7 @@ public:
             W->PushEventHandler(B);
         @endcode
         you will end up with the following situation:
-            @image html overview_eventhandling_winstack.png
+            @image html overview_events_winstack.png
 
         Note that you can use wxWindow::PopEventHandler to remove the event handler.
 
@@ -1713,13 +1799,15 @@ public:
             It must not be part of a wxEvtHandler chain; an assert will fail
             if it's not unlinked (see wxEvtHandler::IsUnlinked).
 
-        @see @ref overview_eventhandling_processing
+        @see @ref overview_events_processing
     */
     void PushEventHandler(wxEvtHandler* handler);
 
     /**
-        Find the given @a handler in the windows event handler stack and unlinks
-        (but not delete) it. See wxEvtHandler::Unlink() for more info.
+        Find the given @a handler in the windows event handler stack and
+        removes (but does not delete) it from the stack.
+
+        See wxEvtHandler::Unlink() for more info.
 
         @param handler
             The event handler to remove, must be non-@NULL and
@@ -1743,7 +1831,7 @@ public:
         @param handler
             Specifies the handler to be set. Cannot be @NULL.
 
-        @see @ref overview_eventhandling_processing
+        @see @ref overview_events_processing
     */
     void SetEventHandler(wxEvtHandler* handler);
 
@@ -2294,6 +2382,12 @@ public:
     */
     virtual wxString GetLabel() const;
 
+    /**
+        Returns the layout direction for this window,
+        Note that @c wxLayout_Default is returned if layout direction is not supported.
+    */
+    virtual wxLayoutDirection GetLayoutDirection() const;
+
     /**
         Returns the window's name.
 
@@ -2332,6 +2426,11 @@ public:
     */
     virtual void SetLabel(const wxString& label);
 
+    /**
+        Sets the layout direction for this window.
+    */
+    virtual void SetLayoutDirection(wxLayoutDirection dir);
+
     /**
         Sets the window's name.
 
@@ -2352,7 +2451,6 @@ public:
     */
     void SetWindowVariant(wxWindowVariant variant);
 
-
     /**
         Gets the accelerator table for this window. See wxAcceleratorTable.
     */
@@ -3062,10 +3160,9 @@ protected:
      */
     void SendDestroyEvent();
 
-    //@{
     /**
-        These functions are public in wxEvtHandler but protected in wxWindow
-        because for wxWindows you should always use this function on the
+        This function is public in wxEvtHandler but protected in wxWindow
+        because for wxWindows you should always call ProcessEvent() on the
         pointer returned by GetEventHandler() and not on the wxWindow object
         itself.
 
@@ -3076,8 +3173,16 @@ protected:
         wxWindow object (e.g. casting it to wxEvtHandler) but doing that will
         create subtle bugs when windows with event handlers pushed on them are
         involved.
+
+        This holds also for all other wxEvtHandler functions.
     */
     virtual bool ProcessEvent(wxEvent& event);
+
+    //@{
+    /**
+        See ProcessEvent() for more info about why you shouldn't use this function
+        and the reason for making this function protected in wxWindow.
+    */
     bool SafelyProcessEvent(wxEvent& event);
     virtual void QueueEvent(wxEvent *event);
     virtual void AddPendingEvent(const wxEvent& event);