X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/44fd6f721ad375033b2a2b64ac5f703ac70cb8f0..53e8c532c641ea8285b436990ff6e29ddd8d0443:/src/gtk/settings.cpp diff --git a/src/gtk/settings.cpp b/src/gtk/settings.cpp index 29c639b590..dede98aa35 100644 --- a/src/gtk/settings.cpp +++ b/src/gtk/settings.cpp @@ -38,7 +38,8 @@ struct wxSystemObjects m_colHighlight, m_colHighlightText, m_colListBox, - m_colBtnText; + m_colBtnText, + m_colMenuItemHighlight; wxFont m_fontSystem; }; @@ -53,7 +54,8 @@ static wxSystemObjects gs_objects; enum wxGtkWidgetType { wxGTK_BUTTON, - wxGTK_LIST + wxGTK_LIST, + wxGTK_MENUITEM }; // the colour we need @@ -84,6 +86,9 @@ static bool GetColourFromGTKWidget(int& red, int& green, int& blue, case wxGTK_LIST: widget = gtk_list_new(); + + case wxGTK_MENUITEM: + widget = gtk_menu_item_new(); } GtkStyle *def = gtk_rc_get_style( widget ); @@ -135,7 +140,6 @@ wxColour wxSystemSettingsNative::GetColour( wxSystemColour index ) { case wxSYS_COLOUR_SCROLLBAR: case wxSYS_COLOUR_BACKGROUND: - case wxSYS_COLOUR_ACTIVECAPTION: case wxSYS_COLOUR_INACTIVECAPTION: case wxSYS_COLOUR_MENU: case wxSYS_COLOUR_WINDOWFRAME: @@ -268,10 +272,30 @@ wxColour wxSystemSettingsNative::GetColour( wxSystemColour index ) case wxSYS_COLOUR_APPWORKSPACE: return *wxWHITE; // ? + case wxSYS_COLOUR_ACTIVECAPTION: + case wxSYS_COLOUR_MENUHILIGHT: + if (!gs_objects.m_colMenuItemHighlight.Ok()) + { + int red, green, blue; + if ( !GetColourFromGTKWidget(red, green, blue, + wxGTK_MENUITEM, + GTK_STATE_SELECTED, + wxGTK_BG) ) + { + red = + green = + blue = 0; + } + + gs_objects.m_colMenuItemHighlight = wxColour( red >> SHIFT, + green >> SHIFT, + blue >> SHIFT ); + } + return gs_objects.m_colMenuItemHighlight; + case wxSYS_COLOUR_HOTLIGHT: case wxSYS_COLOUR_GRADIENTACTIVECAPTION: case wxSYS_COLOUR_GRADIENTINACTIVECAPTION: - case wxSYS_COLOUR_MENUHILIGHT: // TODO return *wxBLACK; @@ -308,7 +332,8 @@ wxFont wxSystemSettingsNative::GetFont( wxSystemFont index ) if ( def && def->font_desc ) { wxNativeFontInfo info; - info.description = def->font_desc; + info.description = + pango_font_description_copy(def->font_desc); gs_objects.m_fontSystem = wxFont(info); } else @@ -377,8 +402,7 @@ int wxSystemSettingsNative::GetMetric( wxSystemMetric index ) case wxSYS_ICON_X: return 32; case wxSYS_ICON_Y: return 32; default: - wxFAIL_MSG( wxT("wxSystemSettings::GetMetric not fully implemented") ); - return 0; + return -1; // metric is unknown } }