partial support for border metrics of non-TLW

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@56391 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Paul Cornett 2008-10-17 04:36:09 +00:00
parent 5ac526c40c
commit 53357e241e

View File

@ -21,6 +21,7 @@
#include "wx/fontutil.h"
#include <gtk/gtk.h>
#include "wx/gtk/private/win_gtk.h"
bool wxGetFrameExtents(GdkWindow* window, int* left, int* right, int* top, int* bottom);
@ -269,6 +270,26 @@ static GtkSettings *GetSettingsForWindowScreen(GdkWindow *window)
: gtk_settings_get_default();
}
static int GetBorderWidth(wxSystemMetric index, wxWindow* win)
{
if (win->m_wxwindow)
{
wxPizza* pizza = WX_PIZZA(win->m_wxwindow);
int x, y;
pizza->get_border_widths(x, y);
switch (index)
{
case wxSYS_BORDER_X:
case wxSYS_EDGE_X:
case wxSYS_FRAMESIZE_X:
return x;
default:
return y;
}
}
return -1;
}
int wxSystemSettingsNative::GetMetric( wxSystemMetric index, wxWindow* win )
{
GdkWindow *window = NULL;
@ -283,14 +304,12 @@ int wxSystemSettingsNative::GetMetric( wxSystemMetric index, wxWindow* win )
case wxSYS_EDGE_Y:
case wxSYS_FRAMESIZE_X:
case wxSYS_FRAMESIZE_Y:
// If a window is specified/realized, and it is a toplevel window, we can query from wm.
// The returned border thickness is outside the client area in that case.
if (window)
if (win)
{
wxTopLevelWindow *tlw = wxDynamicCast(win, wxTopLevelWindow);
if (!tlw)
return -1; // not a tlw, not sure how to approach
else
return GetBorderWidth(index, win);
else if (window)
{
// Get the frame extents from the windowmanager.
// In most cases the top extent is the titlebar, so we use the bottom extent