X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/c05cc2c727f30cce6d800bbca1ca7d9323439fdd..2121eb69fa8d49f4484f7170159e61f2e8885de4:/src/gtk/settings.cpp diff --git a/src/gtk/settings.cpp b/src/gtk/settings.cpp index d16be22d12..1aa49645b0 100644 --- a/src/gtk/settings.cpp +++ b/src/gtk/settings.cpp @@ -1,5 +1,5 @@ ///////////////////////////////////////////////////////////////////////////// -// Name: gtk/settings.cpp +// Name: src/gtk/settings.cpp // Purpose: // Author: Robert Roebling // Modified by: Mart Raudsepp (GetMetric) @@ -8,19 +8,23 @@ // Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// - -#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA) -#pragma implementation "settings.h" -#endif - // For compilers that support precompilation, includes "wx.h". #include "wx/wxprec.h" #include "wx/settings.h" -#include "wx/debug.h" -#include "wx/cmndata.h" + +#ifndef WX_PRECOMP + #include "wx/cmndata.h" + #include "wx/toplevel.h" +#endif + #include "wx/fontutil.h" -#include "wx/toplevel.h" + +// Using gtk_list_new, which is deprecated since GTK2 +// Using gtk_object_sink, which is deprecated since GTK+-2.9.0 +#ifdef GTK_DISABLE_DEPRECATED +#undef GTK_DISABLE_DEPRECATED +#endif #include #include @@ -130,11 +134,11 @@ static bool GetColourFromGTKWidget(int& red, int& green, int& blue, green = col[state].green; blue = col[state].blue; - ok = TRUE; + ok = true; } else { - ok = FALSE; + ok = false; } gtk_widget_destroy( widget ); @@ -349,24 +353,23 @@ wxFont wxSystemSettingsNative::GetFont( wxSystemFont index ) { if (!gs_objects.m_fontSystem.Ok()) { -#ifdef __WXGTK20__ GtkWidget *widget = gtk_button_new(); GtkStyle *def = gtk_rc_get_style( widget ); if ( !def || !def->font_desc ) - def = gtk_widget_get_default_style(); + def = gtk_widget_get_default_style(); if ( def && def->font_desc ) - { - wxNativeFontInfo info; - info.description = + { + wxNativeFontInfo info; + info.description = pango_font_description_copy(def->font_desc); - gs_objects.m_fontSystem = wxFont(info); - } - else - { + gs_objects.m_fontSystem = wxFont(info); + } + else + { GtkSettings *settings = gtk_settings_get_default(); gchar *font_name = NULL; g_object_get ( settings, - "gtk-font-name", + "gtk-font-name", &font_name, NULL); if (!font_name) @@ -374,11 +377,8 @@ wxFont wxSystemSettingsNative::GetFont( wxSystemFont index ) else gs_objects.m_fontSystem = wxFont(wxString::FromAscii(font_name)); g_free (font_name); - } + } gtk_widget_destroy( widget ); -#else - gs_objects.m_fontSystem = wxFont( 12, wxSWISS, wxNORMAL, wxNORMAL ); -#endif } return gs_objects.m_fontSystem; } @@ -390,18 +390,15 @@ 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())) window = win->GetHandle()->window; -#endif switch (index) { -#ifdef __WXGTK20__ case wxSYS_BORDER_X: case wxSYS_BORDER_Y: case wxSYS_EDGE_X: @@ -433,15 +430,15 @@ int wxSystemSettingsNative::GetMetric( wxSystemMetric index, wxWindow* win ) if (!gdk_net_wm_supports(gdk_atom_intern("_NET_FRAME_EXTENTS", false))) return -1; } - + // Get the frame extents from the windowmanager. // In most cases the top extent is the titlebar, so we use the bottom extent // for the heights. - + Atom type; gint format; gulong nitems; - + #if GTK_CHECK_VERSION(2,2,0) if (!gtk_check_version(2,2,0)) { @@ -489,7 +486,6 @@ int wxSystemSettingsNative::GetMetric( wxSystemMetric index, wxWindow* win ) } return -1; // no window specified -#endif // gtk2 case wxSYS_CURSOR_X: case wxSYS_CURSOR_Y: @@ -505,7 +501,6 @@ int wxSystemSettingsNative::GetMetric( wxSystemMetric index, wxWindow* win ) #endif return 16; -#ifdef __WXGTK20__ case wxSYS_DCLICK_X: case wxSYS_DCLICK_Y: gint dclick_distance; @@ -519,9 +514,7 @@ int wxSystemSettingsNative::GetMetric( wxSystemMetric index, wxWindow* win ) "gtk-double-click-distance", &dclick_distance, NULL); return dclick_distance * 2; -#endif // gtk2 -#ifdef __WXGTK20__ case wxSYS_DRAG_X: case wxSYS_DRAG_Y: gint drag_threshold; @@ -540,15 +533,20 @@ int wxSystemSettingsNative::GetMetric( wxSystemMetric index, wxWindow* win ) "gtk-dnd-drag-threshold", &drag_threshold, NULL); } - return drag_threshold * 2; -#endif + // The correct thing here would be to double the value + // since that is what the API wants. But the values + // are much bigger under GNOME than under Windows and + // just seem to much in many cases to be useful. + // drag_threshold *= 2; + + return drag_threshold; // MBN: ditto for icons case wxSYS_ICON_X: return 32; case wxSYS_ICON_Y: return 32; case wxSYS_SCREEN_X: -#if defined(__WXGTK20__) && GTK_CHECK_VERSION(2,2,0) +#if GTK_CHECK_VERSION(2,2,0) if (window && !gtk_check_version(2,2,0)) return gdk_screen_get_width(gdk_drawable_get_screen(window)); else @@ -556,7 +554,7 @@ int wxSystemSettingsNative::GetMetric( wxSystemMetric index, wxWindow* win ) return gdk_screen_width(); case wxSYS_SCREEN_Y: -#if defined(__WXGTK20__) && GTK_CHECK_VERSION(2,2,0) +#if GTK_CHECK_VERSION(2,2,0) if (window && !gtk_check_version(2,2,0)) return gdk_screen_get_height(gdk_drawable_get_screen(window)); else @@ -566,8 +564,6 @@ int wxSystemSettingsNative::GetMetric( wxSystemMetric index, wxWindow* win ) case wxSYS_HSCROLL_Y: return 15; case wxSYS_VSCROLL_X: return 15; -// a gtk1 implementation should be possible too if gtk2 efficiency/convenience functions aren't used -#ifdef __WXGTK20__ case wxSYS_CAPTION_Y: if (!window) // No realized window specified, and no implementation for that case yet. @@ -640,7 +636,6 @@ int wxSystemSettingsNative::GetMetric( wxSystemMetric index, wxWindow* win ) // ... return -1; -#endif // gtk2 case wxSYS_PENWINDOWS_PRESENT: // No MS Windows for Pen computing extension available in X11 based gtk+. @@ -655,13 +650,13 @@ bool wxSystemSettingsNative::HasFeature(wxSystemFeature index) { switch (index) { - case wxSYS_CAN_ICONIZE_FRAME: - return FALSE; - break; + case wxSYS_CAN_ICONIZE_FRAME: + return false; + case wxSYS_CAN_DRAW_FRAME_DECORATIONS: - return TRUE; - break; + return true; + default: - return FALSE; + return false; } }