X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/a6cdd521887b3ec00becc08564f279ebbcaa55b4..82b30473f935d7ffe21a165aa8ef63e16599c3fc:/include/wx/gtk/toplevel.h diff --git a/include/wx/gtk/toplevel.h b/include/wx/gtk/toplevel.h index c5d99c5de4..f056ed3102 100644 --- a/include/wx/gtk/toplevel.h +++ b/include/wx/gtk/toplevel.h @@ -16,6 +16,7 @@ class WXDLLIMPEXP_CORE wxTopLevelWindowGTK : public wxTopLevelWindowBase { + typedef wxTopLevelWindowBase base_type; public: // construction wxTopLevelWindowGTK() { Init(); } @@ -47,16 +48,14 @@ public: virtual bool IsMaximized() const; virtual void Iconize(bool iconize = true); virtual bool IsIconized() const; - virtual void SetIcon(const wxIcon& icon); virtual void SetIcons(const wxIconBundle& icons); virtual void Restore(); virtual bool EnableCloseButton(bool enable = true); + virtual void ShowWithoutActivating(); virtual bool ShowFullScreen(bool show, long style = wxFULLSCREEN_ALL); - virtual bool IsFullScreen() const { return m_fsIsShowing; }; - - virtual bool SetShape(const wxRegion& region); + virtual bool IsFullScreen() const { return m_fsIsShowing; } virtual void RequestUserAttention(int flags = wxUSER_ATTENTION_INFO); @@ -71,6 +70,10 @@ public: virtual void SetTitle( const wxString &title ); virtual wxString GetTitle() const { return m_title; } + virtual void SetLabel(const wxString& label) { SetTitle( label ); } + virtual wxString GetLabel() const { return GetTitle(); } + + virtual bool SetTransparent(wxByte alpha); virtual bool CanSetTransparent(); @@ -80,71 +83,81 @@ public: virtual void RemoveGrab(); virtual bool IsGrabbed() const { return m_grabbed; } + + virtual void Refresh( bool eraseBackground = true, + const wxRect *rect = (const wxRect *) NULL ); + // implementation from now on // -------------------------- // GTK callbacks - virtual void GtkOnSize(); virtual void OnInternalIdle(); + virtual void GTKHandleRealized(); + // do *not* call this to iconize the frame, this is a private function! void SetIconizeState(bool iconic); - int m_miniEdge, - m_miniTitle; GtkWidget *m_mainWidget; - bool m_insertInClientArea; /* not from within OnCreateXXX */ bool m_fsIsShowing; /* full screen */ - long m_fsSaveGdkFunc, m_fsSaveGdkDecor; - long m_fsSaveFlag; + int m_fsSaveGdkFunc, m_fsSaveGdkDecor; wxRect m_fsSaveFrame; // m_windowStyle translated to GDK's terms - long m_gdkFunc, + int m_gdkFunc, m_gdkDecor; + // size of WM decorations + wxSize m_decorSize; + // private gtk_timeout_add result for mimicing wxUSER_ATTENTION_INFO and // wxUSER_ATTENTION_ERROR difference, -2 for no hint, -1 for ERROR hint, rest for GtkTimeout handle. int m_urgency_hint; + // timer for detecting WM with broken _NET_REQUEST_FRAME_EXTENTS handling + unsigned m_netFrameExtentsTimerId; + + // return the size of the window without WM decorations + void GTKDoGetSize(int *width, int *height) const; + + void GTKUpdateDecorSize(const wxSize& decorSize); +protected: // give hints to the Window Manager for how the size // of the TLW can be changed by dragging virtual void DoSetSizeHints( int minW, int minH, - int maxW = wxDefaultCoord, int maxH = wxDefaultCoord, - int incW = wxDefaultCoord, int incH = wxDefaultCoord ); - -protected: + int maxW, int maxH, + int incW, int incH); // common part of all ctors void Init(); - // move the window to the specified location and resize it: this is called - // from both DoSetSize() and DoSetClientSize() + // move the window to the specified location and resize it virtual void DoMoveWindow(int x, int y, int width, int height); // take into account WM decorations here - virtual void DoGetSize(int *width, int *height) const; virtual void DoSetSize(int x, int y, int width, int height, int sizeFlags = wxSIZE_AUTO); - // override these methods to take into account tool/menu/statusbars virtual void DoSetClientSize(int width, int height); virtual void DoGetClientSize(int *width, int *height) const; - // this method takes the size of the window not taking account of - // decorations and is used by both DoSetSize() and DoSetClientSize() - void GTKDoSetSize(int width, int height); - - // string shown in the title bar wxString m_title; + bool m_deferShow; + +private: + wxSize& GetCachedDecorSize(); + // is the frame currently iconized? bool m_isIconized; // is the frame currently grabbed explicitly by the application? bool m_grabbed; + + bool m_updateDecorSize; + bool m_deferShowAllowed; }; #endif // _WX_GTK_TOPLEVEL_H_