X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/cb8cc2506b73a5ea51b515a41eb6ea7a5f5ad60c..40b26d752de12e3e9f03172049c441de1a5e0276:/include/wx/window.h diff --git a/include/wx/window.h b/include/wx/window.h index 3583520685..2462fb0d27 100644 --- a/include/wx/window.h +++ b/include/wx/window.h @@ -113,6 +113,7 @@ WX_DECLARE_LIST_3(wxWindow, wxWindowBase, wxWindowList, wxWindowListNode, class // ---------------------------------------------------------------------------- extern WXDLLEXPORT_DATA(wxWindowList) wxTopLevelWindows; +extern WXDLLIMPEXP_DATA_CORE(wxList) wxPendingDelete; // ---------------------------------------------------------------------------- // wxWindowBase is the base class for all GUI controls/widgets, this is the public @@ -168,27 +169,11 @@ public: // window attributes // ----------------- -#if !defined(__WXMSW__) && \ - !defined(__WXMOTIF__) && \ - !defined(__WXGTK__) - - // FIXME: This is work in progress about moving SetTitle/GetTitle from wxWindow - // to wxTopLevelWindow so initially enabled in wxMSW only to observe results - // and continue on other platforms - - virtual void SetTitle( const wxString& WXUNUSED(title) ) {} - virtual wxString GetTitle() const { return wxEmptyString; } - - // label is just the same as the title (but for, e.g., buttons it - // makes more sense to speak about labels) - virtual void SetLabel(const wxString& label) { SetTitle(label); } - virtual wxString GetLabel() const { return GetTitle(); } -#else - // label is just the same as the title (but for, e.g., buttons it - // makes more sense to speak about labels) + // label is just the same as the title (but for, e.g., buttons it + // makes more sense to speak about labels), title access + // is available from wxTLW classes only (frames, dialogs) virtual void SetLabel(const wxString& label) = 0; virtual wxString GetLabel() const = 0; -#endif // the window name is used for ressource setting in X, it is not the // same as the window title/label @@ -238,6 +223,8 @@ public: void Move(const wxPoint& pt, int flags = wxSIZE_USE_EXISTING) { Move(pt.x, pt.y, flags); } + void SetPosition(const wxPoint& pt) { Move(pt); } + // Z-order virtual void Raise() = 0; virtual void Lower() = 0; @@ -252,18 +239,30 @@ public: void SetClientSize(const wxRect& rect) { SetClientSize( rect.width, rect.height ); } - // get the window position and/or size (pointers may be NULL) + // get the window position (pointers may be NULL): notice that it is in + // client coordinates for child windows and screen coordinates for the + // top level ones, use GetScreenPosition() if you need screen + // coordinates for all kinds of windows void GetPosition( int *x, int *y ) const { DoGetPosition(x, y); } wxPoint GetPosition() const { - int w, h; - DoGetPosition(&w, &h); + int x, y; + DoGetPosition(&x, &y); - return wxPoint(w, h); + return wxPoint(x, y); } - void SetPosition( const wxPoint& pt ) { Move( pt ) ; } + // get the window position in screen coordinates + void GetScreenPosition(int *x, int *y) const { DoGetScreenPosition(x, y); } + wxPoint GetScreenPosition() const + { + int x, y; + DoGetScreenPosition(&x, &y); + return wxPoint(x, y); + } + + // get the window size (pointers may be NULL) void GetSize( int *w, int *h ) const { DoGetSize(w, h); } wxSize GetSize() const { @@ -272,22 +271,32 @@ public: return wxSize(w, h); } + void GetClientSize( int *w, int *h ) const { DoGetClientSize(w, h); } + wxSize GetClientSize() const + { + int w, h; + DoGetClientSize(&w, &h); + + return wxSize(w, h); + } + + // get the position and size at once wxRect GetRect() const { int x, y, w, h; - GetPosition(& x, & y); - GetSize(& w, & h); + GetPosition(&x, &y); + GetSize(&w, &h); return wxRect(x, y, w, h); } - void GetClientSize( int *w, int *h ) const { DoGetClientSize(w, h); } - wxSize GetClientSize() const + wxRect GetScreenRect() const { - int w, h; - DoGetClientSize(& w, & h); + int x, y, w, h; + GetScreenPosition(&x, &y); + GetSize(&w, &h); - return wxSize(w, h); + return wxRect(x, y, w, h); } // get the origin of the client area of the window relative to the @@ -348,15 +357,11 @@ public: // the generic centre function - centers the window on parent by` // default or on screen if it doesn't have parent or // wxCENTER_ON_SCREEN flag is given - void Centre( int direction = wxBOTH ); - void Center( int direction = wxBOTH ) { Centre(direction); } - - // centre on screen (only works for top level windows) - void CentreOnScreen(int dir = wxBOTH) { Centre(dir | wxCENTER_ON_SCREEN); } - void CenterOnScreen(int dir = wxBOTH) { CentreOnScreen(dir); } + void Centre(int dir = wxBOTH) { DoCentre(dir); } + void Center(int dir = wxBOTH) { DoCentre(dir); } // centre with respect to the the parent window - void CentreOnParent(int dir = wxBOTH) { Centre(dir | wxCENTER_FRAME); } + void CentreOnParent(int dir = wxBOTH) { DoCentre(dir); } void CenterOnParent(int dir = wxBOTH) { CentreOnParent(dir); } // set window size to wrap around its children @@ -922,9 +927,19 @@ public: // associate this help text with all windows with the same id as this // one void SetHelpTextForId(const wxString& text); - // get the help string associated with this window (may be empty) - wxString GetHelpText() const; -#else + // get the help string associated with the given position in this window + // + // notice that pt may be invalid if event origin is keyboard or unknown + // and this method should return the global window help text then + virtual wxString GetHelpTextAtPoint(const wxPoint& pt, + wxHelpEvent::Origin origin) const; + // returns the position-independent help text + wxString GetHelpText() const + { + return GetHelpTextAtPoint(wxDefaultPosition, wxHelpEvent::Origin_Unknown); + } + +#else // !wxUSE_HELP // silently ignore SetHelpText() calls void SetHelpText(const wxString& WXUNUSED(text)) { } void SetHelpTextForId(const wxString& WXUNUSED(text)) { } @@ -972,7 +987,7 @@ public: void DeleteRelatedConstraints(); void ResetConstraints(); - // these methods may be overriden for special layout algorithms + // these methods may be overridden for special layout algorithms virtual void SetConstraintSizes(bool recurse = true); virtual bool LayoutPhase1(int *noChanges); virtual bool LayoutPhase2(int *noChanges); @@ -1077,17 +1092,6 @@ public: // behaviour in the most common case virtual bool ShouldInheritColours() const { return false; } - // Reserved for future use - virtual void ReservedWindowFunc1() {} - virtual void ReservedWindowFunc2() {} - virtual void ReservedWindowFunc3() {} - virtual void ReservedWindowFunc4() {} - virtual void ReservedWindowFunc5() {} - virtual void ReservedWindowFunc6() {} - virtual void ReservedWindowFunc7() {} - virtual void ReservedWindowFunc8() {} - virtual void ReservedWindowFunc9() {} - protected: // event handling specific to wxWindow virtual bool TryValidator(wxEvent& event); @@ -1278,9 +1282,10 @@ protected: virtual void DoReleaseMouse() = 0; // retrieve the position/size of the window - virtual void DoGetPosition( int *x, int *y ) const = 0; - virtual void DoGetSize( int *width, int *height ) const = 0; - virtual void DoGetClientSize( int *width, int *height ) const = 0; + virtual void DoGetPosition(int *x, int *y) const = 0; + virtual void DoGetScreenPosition(int *x, int *y) const; + virtual void DoGetSize(int *width, int *height) const = 0; + virtual void DoGetClientSize(int *width, int *height) const = 0; // get the size which best suits the window: for a control, it would be // the minimal size which doesn't truncate the control, for a panel - the @@ -1311,6 +1316,11 @@ protected: // arrange themselves inside the given rectangle virtual void DoMoveWindow(int x, int y, int width, int height) = 0; + // centre the window in the specified direction on parent, note that + // wxCENTRE_ON_SCREEN shouldn't be specified here, it only makes sense for + // TLWs + virtual void DoCentre(int dir); + #if wxUSE_TOOLTIPS virtual void DoSetToolTip( wxToolTip *tip ); #endif // wxUSE_TOOLTIPS @@ -1328,9 +1338,6 @@ protected: // implements the window variants virtual void DoSetWindowVariant( wxWindowVariant variant ) ; - // Reserved for future use - void* m_windowReserved; - private: // contains the last id generated by NewControlId static int ms_lastControlId; @@ -1364,13 +1371,20 @@ private: #include "wx/msw/window.h" #elif defined(__WXMOTIF__) #include "wx/motif/window.h" -#elif defined(__WXGTK__) +#elif defined(__WXGTK20__) #ifdef __WXUNIVERSAL__ #define wxWindowNative wxWindowGTK #else // !wxUniv #define wxWindowGTK wxWindow #endif // wxUniv #include "wx/gtk/window.h" +#elif defined(__WXGTK__) + #ifdef __WXUNIVERSAL__ + #define wxWindowNative wxWindowGTK + #else // !wxUniv + #define wxWindowGTK wxWindow + #endif // wxUniv + #include "wx/gtk1/window.h" #elif defined(__WXX11__) #ifdef __WXUNIVERSAL__ #define wxWindowNative wxWindowX11 @@ -1445,8 +1459,11 @@ extern WXDLLEXPORT wxWindow *wxGetActiveWindow(); // get the (first) top level parent window WXDLLEXPORT wxWindow* wxGetTopLevelParent(wxWindow *win); -// deprecated (doesn't start with 'wx' prefix), use wxWindow::NewControlId() -inline int NewControlId() { return wxWindowBase::NewControlId(); } +#if WXWIN_COMPATIBILITY_2_6 + // deprecated (doesn't start with 'wx' prefix), use wxWindow::NewControlId() + wxDEPRECATED( int NewControlId() ); + inline int NewControlId() { return wxWindowBase::NewControlId(); } +#endif // WXWIN_COMPATIBILITY_2_6 #if wxUSE_ACCESSIBILITY // ----------------------------------------------------------------------------