X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/a20a357d928b6da93bc8b92193471f51a71127ba..7e4952db837344e369ff9ccc7ece1f7b8c207cf1:/interface/wx/window.h diff --git a/interface/wx/window.h b/interface/wx/window.h index f54958c312..6eb30c66bb 100644 --- a/interface/wx/window.h +++ b/interface/wx/window.h @@ -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; @@ -708,7 +772,7 @@ public: Merges the window's best size into the min size and returns the result. 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. @@ -723,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; @@ -733,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; @@ -744,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; @@ -755,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; @@ -771,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; @@ -784,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; @@ -806,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. @@ -866,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); @@ -902,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); @@ -910,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); @@ -926,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); @@ -942,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); @@ -987,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); @@ -998,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); @@ -1017,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, @@ -1025,6 +1106,8 @@ public: /** Sets the virtual size of the window in pixels. + + @see @ref overview_windowsizing */ void SetVirtualSize(int width, int height); @@ -1672,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. @@ -1684,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); @@ -1707,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. @@ -1716,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 @@ -1746,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); @@ -2297,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. @@ -2335,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. @@ -2355,7 +2451,6 @@ public: */ void SetWindowVariant(wxWindowVariant variant); - /** Gets the accelerator table for this window. See wxAcceleratorTable. */