get more accurate TLW sizing by using a window decorations cache

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@48646 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Paul Cornett
2007-09-13 04:36:06 +00:00
parent 7742ea6a6f
commit 290cd3016c
6 changed files with 216 additions and 147 deletions

View File

@@ -14,7 +14,6 @@
#include "wx/toplevel.h"
#ifdef __WXGTK20__
#include <gtk/gtkversion.h>
#if GTK_CHECK_VERSION(2, 1, 0)
@@ -25,7 +24,9 @@ public:
// Returns true if SYSTRAY protocol is supported by the desktop
bool IsProtocolSupported();
virtual bool IsDecorCacheable() const;
wxEvtHandler *m_invokingWindow;
protected:
@@ -34,6 +35,5 @@ protected:
#endif // wxUSE_MENUS_NATIVE
};
#endif // __WXGTK20__
#endif // GTK_CHECK_VERSION(2, 1, 0)
#endif // _WX_GTK_TASKBARPRIV_H_

View File

@@ -94,11 +94,11 @@ public:
GtkWidget *m_mainWidget;
bool m_fsIsShowing; /* full screen */
long m_fsSaveGdkFunc, m_fsSaveGdkDecor;
int m_fsSaveGdkFunc, m_fsSaveGdkDecor;
wxRect m_fsSaveFrame;
// m_windowStyle translated to GDK's terms
long m_gdkFunc,
int m_gdkFunc,
m_gdkDecor;
bool m_sizeSet;
@@ -113,11 +113,14 @@ public:
int maxW = wxDefaultCoord, int maxH = wxDefaultCoord,
int incW = wxDefaultCoord, int incH = wxDefaultCoord );
// return the full size of the window without WM decorations
// return the size of the window without WM decorations
void GTKDoGetSize(int *width, int *height) const;
void GtkUpdateSize() { m_sizeSet = false; }
// whether frame extents are accurate
virtual bool IsDecorCacheable() const;
protected:
// common part of all ctors
void Init();
@@ -126,7 +129,6 @@ protected:
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);
@@ -134,11 +136,6 @@ protected:
// override these methods to take into account tool/menu/statusbars
virtual void DoGetClientSize(int *width, int *height) const;
// this method takes the size of the window not taking account of
// decorations
void GTKDoSetSize(int width, int height);
// string shown in the title bar
wxString m_title;