X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/1f464296deff25be95f9e2b7c68566919aa17da2..a69aabc360d54a93e355fab72c6513c75aaa7337:/include/wx/window.h diff --git a/include/wx/window.h b/include/wx/window.h index 007ea874d9..00aac00518 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 @@ -222,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; @@ -236,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 { @@ -256,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 @@ -489,20 +514,6 @@ public: // click it virtual bool AcceptsFocusFromKeyboard() const { return AcceptsFocus(); } - // NB: these methods really don't belong here but with the current - // class hierarchy there is no other place for them :-( - - // get the default child of this parent, i.e. the one which is - // activated by pressing - virtual wxWindow *GetDefaultItem() const { return NULL; } - - // set this child as default, return the old default - virtual wxWindow *SetDefaultItem(wxWindow * WXUNUSED(child)) - { return NULL; } - - // set this child as temporary default - virtual void SetTmpDefaultItem(wxWindow * WXUNUSED(win)) { } - // navigates in the specified direction by sending a wxNavigationKeyEvent virtual bool Navigate(int flags = wxNavigationKeyEvent::IsForward); @@ -854,6 +865,10 @@ public: { return DoPopupMenu(menu, x, y); } #endif // wxUSE_MENUS + // override this method to return true for controls having multiple pages + virtual bool HasMultiplePages() const { return false; } + + // scrollbars // ---------- @@ -902,9 +917,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)) { } @@ -1002,6 +1027,12 @@ public: wxAccessible* GetOrCreateAccessible() ; #endif + + // Set window transparency if the platform supports it + virtual bool SetTransparent(wxByte WXUNUSED(alpha)) { return false; } + virtual bool CanSetTransparent() { return false; } + + // implementation // -------------- @@ -1057,17 +1088,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); @@ -1258,9 +1278,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 @@ -1313,8 +1334,9 @@ protected: // implements the window variants virtual void DoSetWindowVariant( wxWindowVariant variant ) ; - // Reserved for future use - void* m_windowReserved; + // Must be called when mouse capture is lost to send + // wxMouseCaptureLostEvent to windows on capture stack. + static void NotifyCaptureLost(); private: // contains the last id generated by NewControlId @@ -1322,6 +1344,10 @@ private: // the stack of windows which have captured the mouse static struct WXDLLEXPORT wxWindowNext *ms_winCaptureNext; + // the window that currently has mouse capture + static wxWindow *ms_winCaptureCurrent; + // indicates if execution is inside CaptureMouse/ReleaseMouse + static bool ms_winCaptureChanging; DECLARE_ABSTRACT_CLASS(wxWindowBase) DECLARE_NO_COPY_CLASS(wxWindowBase) @@ -1437,8 +1463,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 // ----------------------------------------------------------------------------