X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/6aeb6f2a5810694b5241eb267d71dab4848cf8bb..66c2bf7b1d9326fb650acfaae22ec50528cfbf7c:/include/wx/gtk/toplevel.h diff --git a/include/wx/gtk/toplevel.h b/include/wx/gtk/toplevel.h index 1f4a35c268..9f9374b06b 100644 --- a/include/wx/gtk/toplevel.h +++ b/include/wx/gtk/toplevel.h @@ -2,26 +2,20 @@ // Name: wx/gtk/toplevel.h // Purpose: // Author: Robert Roebling -// Id: $Id$ // Copyright: (c) 1998 Robert Roebling, Julian Smart // Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// - -#ifndef __GTKTOPLEVELH__ -#define __GTKTOPLEVELH__ - -#ifdef __GNUG__ - #pragma interface "toplevel.h" -#endif - +#ifndef _WX_GTK_TOPLEVEL_H_ +#define _WX_GTK_TOPLEVEL_H_ //----------------------------------------------------------------------------- // wxTopLevelWindowGTK //----------------------------------------------------------------------------- -class wxTopLevelWindowGTK : public wxTopLevelWindowBase +class WXDLLIMPEXP_CORE wxTopLevelWindowGTK : public wxTopLevelWindowBase { + typedef wxTopLevelWindowBase base_type; public: // construction wxTopLevelWindowGTK() { Init(); } @@ -49,73 +43,127 @@ public: virtual ~wxTopLevelWindowGTK(); // implement base class pure virtuals - virtual void Maximize(bool maximize = TRUE); + virtual void Maximize(bool maximize = true); virtual bool IsMaximized() const; - virtual void Iconize(bool iconize = TRUE); + 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 IsFullScreen() const { return m_fsIsShowing; } + + virtual void RequestUserAttention(int flags = wxUSER_ATTENTION_INFO); - virtual bool Show(bool show = TRUE); + virtual void SetWindowStyleFlag( long style ); + + virtual bool Show(bool show = true); + + virtual void Raise(); + + virtual bool IsActive(); virtual void SetTitle( const wxString &title ); virtual wxString GetTitle() const { return m_title; } - // implementation from now on - // -------------------------- + virtual void SetLabel(const wxString& label) { SetTitle( label ); } + virtual wxString GetLabel() const { return GetTitle(); } - // move the window to the specified location and resize it: this is called - // from both DoSetSize() and DoSetClientSize() - virtual void DoMoveWindow(int x, int y, int width, int height); - // set the icon for this window - void DoSetIcon( const wxIcon& icon ); + virtual bool SetTransparent(wxByte alpha); + virtual bool CanSetTransparent(); + + // Experimental, to allow help windows to be + // viewable from within modal dialogs + virtual void AddGrab(); + 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( int x, int y, int width, int height ); virtual void OnInternalIdle(); + virtual void GTKHandleRealized(); + + void GTKConfigureEvent(int x, int y); + // do *not* call this to iconize the frame, this is a private function! void SetIconizeState(bool iconic); - wxString m_title; - 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; -protected: - // common part of all ctors - void Init(); + // size of WM decorations + struct DecorSize + { + int left, right, top, bottom; + }; + DecorSize 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 DecorSize& decorSize); - // focus event handler - void OnSetFocus(wxFocusEvent& event); +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, int maxH, + int incW, int incH); + // move the window to the specified location and resize it + virtual void DoMoveWindow(int x, int y, int width, int height); - // override wxWindow methods to take into account tool/menu/statusbars + // take into account WM decorations here virtual void DoSetSize(int x, int y, int width, int height, int sizeFlags = wxSIZE_AUTO); virtual void DoSetClientSize(int width, int height); - virtual void DoGetClientSize( int *width, int *height ) const; + virtual void DoGetClientSize(int *width, int *height) const; + + // string shown in the title bar + wxString m_title; + + bool m_deferShow; + +private: + void Init(); + DecorSize& GetCachedDecorSize(); + + // size hint increments + int m_incWidth, m_incHeight; // is the frame currently iconized? bool m_isIconized; - DECLARE_EVENT_TABLE() + // is the frame currently grabbed explicitly by the application? + bool m_grabbed; + + bool m_updateDecorSize; + bool m_deferShowAllowed; }; -#endif // __GTKTOPLEVELH__ +#endif // _WX_GTK_TOPLEVEL_H_