#undef GTK_DISABLE_DEPRECATED
#endif
#include <gtk/gtk.h>
-#include <gdk/gdkx.h>
-#include <X11/Xatom.h>
+bool wxGetFrameExtents(GdkWindow* window, int* left, int* right, int* top, int* bottom);
// ----------------------------------------------------------------------------
// wxSystemObjects
m_colBtnText,
m_colMenuItemHighlight,
m_colTooltip,
- m_colTooltipText;
+ m_colTooltipText,
+ m_colMenubarBg;
wxFont m_fontSystem;
};
gs_objects.m_colMenuItemHighlight = wxColour();
gs_objects.m_colTooltip = wxColour();
gs_objects.m_colTooltipText = wxColour();
+ gs_objects.m_colMenubarBg = wxColour();
gs_objects.m_fontSystem = wxNullFont;
}
wxGTK_BUTTON,
wxGTK_LIST,
wxGTK_MENUITEM,
- wxGTK_TEXTCTRL
+ wxGTK_TEXTCTRL,
+ wxGTK_MENUBAR,
};
// the colour we need
case wxGTK_MENUITEM:
widget = gtk_menu_item_new();
+ break;
+
+ case wxGTK_MENUBAR:
+ widget = gtk_menu_bar_new();
+ break;
}
GtkStyle *def = gtk_rc_get_style( widget );
case wxSYS_COLOUR_ACTIVEBORDER:
case wxSYS_COLOUR_INACTIVEBORDER:
case wxSYS_COLOUR_BTNFACE:
- case wxSYS_COLOUR_MENUBAR:
case wxSYS_COLOUR_3DLIGHT:
if (!gs_objects.m_colBtnFace.Ok())
{
color = gs_objects.m_colWindow;
break;
+
+ case wxSYS_COLOUR_MENUBAR:
+ if (!gs_objects.m_colMenubarBg.Ok())
+ {
+ gdkColor.red =
+ gdkColor.green = 0;
+ gdkColor.blue = 0x9c40;
+ GetColourFromGTKWidget(gdkColor,wxGTK_MENUBAR);
+ gs_objects.m_colMenubarBg = wxColor(gdkColor);
+ }
+ color = gs_objects.m_colMenubarBg;
+ break;
+
case wxSYS_COLOUR_3DDKSHADOW:
color = *wxBLACK;
break;
case wxSYS_COLOUR_HIGHLIGHTTEXT:
if (!gs_objects.m_colHighlightText.Ok())
{
- wxColour hclr = GetColour(wxSYS_COLOUR_HIGHLIGHT);
- if (hclr.Red() > 200 && hclr.Green() > 200 && hclr.Blue() > 200)
- gs_objects.m_colHighlightText = *wxBLACK;
- else
- gs_objects.m_colHighlightText = *wxWHITE;
+ gdkColor.red =
+ gdkColor.green =
+ gdkColor.blue = 0;
+ GetColourFromGTKWidget(
+ gdkColor, wxGTK_BUTTON, GTK_STATE_SELECTED, wxGTK_FG);
+ gs_objects.m_colHighlightText = wxColour(gdkColor);
}
color = gs_objects.m_colHighlightText;
break;
return font;
}
-static bool GetFrameExtents(GdkWindow* window, int* left, int* right, int* top, int* bottom)
-{
- bool success = false;
- Atom property = 0;
- if (gdk_x11_screen_supports_net_wm_hint(
- gdk_drawable_get_screen(window),
- gdk_atom_intern("_NET_FRAME_EXTENTS", false)))
- {
- success = true;
- property = gdk_x11_get_xatom_by_name_for_display(
- gdk_drawable_get_display(window),
- "_NET_FRAME_EXTENTS");
- }
-
- if (success)
- {
- Atom type;
- int format;
- gulong nitems, bytes_after;
- guchar* data;
- success = XGetWindowProperty(
- gdk_x11_drawable_get_xdisplay(window),
- gdk_x11_drawable_get_xid(window),
- property,
- 0, 4,
- false,
- XA_CARDINAL,
- &type, &format, &nitems, &bytes_after, &data
- ) == Success;
- if (success)
- {
- success = data && nitems == 4;
- if (success)
- {
- long* p = (long*)data;
- if (left) *left = int(p[0]);
- if (right) *right = int(p[1]);
- if (top) *top = int(p[2]);
- if (bottom) *bottom = int(p[3]);
- }
- if (data)
- XFree(data);
- }
- }
- return success;
-}
-
// helper: return the GtkSettings either for the screen the current window is
// on or for the default screen if window is NULL
static GtkSettings *GetSettingsForWindowScreen(GdkWindow *window)
// In most cases the top extent is the titlebar, so we use the bottom extent
// for the heights.
int right, bottom;
- if (GetFrameExtents(window, NULL, &right, NULL, &bottom))
+ if (wxGetFrameExtents(window, NULL, &right, NULL, &bottom))
{
switch (index)
{
// Reconsider when we have a way to report to the user on which side it is.
{
int top;
- if (GetFrameExtents(window, NULL, NULL, &top, NULL))
+ if (wxGetFrameExtents(window, NULL, NULL, &top, NULL))
{
return top; // top frame extent
}