m_colHighlightText,
m_colListBox,
m_colBtnText,
- m_colMenuItemHighlight;
+ m_colMenuItemHighlight,
+ m_colTooltip,
+ m_colTooltipText;
wxFont m_fontSystem;
};
case wxGTK_LIST:
widget = gtk_list_new();
-
+ break;
+
case wxGTK_MENUITEM:
widget = gtk_menu_item_new();
}
return ok;
}
+static void GetTooltipColors()
+{
+ GtkTooltips* tooltips = gtk_tooltips_new();
+ gtk_tooltips_force_window(tooltips);
+ gtk_widget_ensure_style(tooltips->tip_window);
+ GdkColor c = tooltips->tip_window->style->bg[GTK_STATE_NORMAL];
+ gs_objects.m_colTooltip = wxColor(c.red >> SHIFT, c.green >> SHIFT, c.blue >> SHIFT);
+ c = tooltips->tip_window->style->fg[GTK_STATE_NORMAL];
+ gs_objects.m_colTooltipText = wxColor(c.red >> SHIFT, c.green >> SHIFT, c.blue >> SHIFT);
+ gtk_object_sink(wx_reinterpret_cast(GtkObject*, tooltips));
+}
+
wxColour wxSystemSettingsNative::GetColour( wxSystemColour index )
{
switch (index)
case wxSYS_COLOUR_CAPTIONTEXT:
case wxSYS_COLOUR_INACTIVECAPTIONTEXT:
case wxSYS_COLOUR_BTNTEXT:
- case wxSYS_COLOUR_INFOTEXT:
if (!gs_objects.m_colBtnText.Ok())
{
int red, green, blue;
}
return gs_objects.m_colBtnText;
- // this (as well as wxSYS_COLOUR_INFOTEXT above) is used for
- // tooltip windows - Robert, please change this code to use the
- // real GTK tooltips when/if you can (TODO)
case wxSYS_COLOUR_INFOBK:
- return wxColour(255, 255, 225);
+ if (!gs_objects.m_colTooltip.Ok()) {
+ GetTooltipColors();
+ }
+ return gs_objects.m_colTooltip;
+
+ case wxSYS_COLOUR_INFOTEXT:
+ if (!gs_objects.m_colTooltipText.Ok()) {
+ GetTooltipColors();
+ }
+ return gs_objects.m_colTooltipText;
case wxSYS_COLOUR_HIGHLIGHTTEXT:
if (!gs_objects.m_colHighlightText.Ok())
case wxSYS_COLOUR_MAX:
default:
wxFAIL_MSG( _T("unknown system colour index") );
- }
+ }
- return *wxWHITE;
+ return *wxWHITE;
}
wxFont wxSystemSettingsNative::GetFont( wxSystemFont index )
int wxSystemSettingsNative::GetMetric( wxSystemMetric index, wxWindow* win )
{
#ifdef __WXGTK20__
+ bool success = false;
+
guchar *data = NULL;
GdkWindow *window = NULL;
if(win && GTK_WIDGET_REALIZED(win->GetHandle()))
switch (index)
{
+#ifdef __WXGTK20__
case wxSYS_BORDER_X:
case wxSYS_BORDER_Y:
case wxSYS_EDGE_X:
Atom type;
gint format;
gulong nitems;
- gulong bytes_after;
-
- if (XGetWindowProperty (GDK_DISPLAY_XDISPLAY(gdk_drawable_get_display(window)),
+
+#if GTK_CHECK_VERSION(2,2,0)
+ if (!gtk_check_version(2,2,0))
+ {
+ gulong bytes_after;
+ success = (XGetWindowProperty (GDK_DISPLAY_XDISPLAY(gdk_drawable_get_display(window)),
GDK_WINDOW_XWINDOW(window),
gdk_x11_get_xatom_by_name_for_display (
gdk_drawable_get_display(window),
false, // do not delete property
XA_CARDINAL, // 32 bit
&type, &format, &nitems, &bytes_after, &data
- ) == Success)
+ ) == Success);
+ }
+#endif
+ if (success)
{
int border_return = -1;
}
return -1; // no window specified
+#endif // gtk2
case wxSYS_CURSOR_X:
case wxSYS_CURSOR_Y:
Atom type;
gint format;
gulong nitems;
- gulong bytes_after;
- if (XGetWindowProperty (GDK_DISPLAY_XDISPLAY(gdk_drawable_get_display(window)),
+#if GTK_CHECK_VERSION(2,2,0)
+ if (!gtk_check_version(2,2,0))
+ {
+ gulong bytes_after;
+ success = (XGetWindowProperty (GDK_DISPLAY_XDISPLAY(gdk_drawable_get_display(window)),
GDK_WINDOW_XWINDOW(window),
gdk_x11_get_xatom_by_name_for_display (
gdk_drawable_get_display(window),
false, // do not delete property
XA_CARDINAL, // 32 bit
&type, &format, &nitems, &bytes_after, &data
- ) == Success)
+ ) == Success);
+ }
+#endif
+ if (success)
{
int caption_height = -1;