]> git.saurik.com Git - wxWidgets.git/commitdiff
Simplify GetDefaultAttributesFromGTKWidget() by passing the widget to use,
authorPaul Cornett <paulcor@bullseye.com>
Sun, 25 Nov 2012 02:23:34 +0000 (02:23 +0000)
committerPaul Cornett <paulcor@bullseye.com>
Sun, 25 Nov 2012 02:23:34 +0000 (02:23 +0000)
rather than a pointer to a function to create the widget

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@73010 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

25 files changed:
include/wx/gtk/control.h
src/gtk/anybutton.cpp
src/gtk/button.cpp
src/gtk/checkbox.cpp
src/gtk/choice.cpp
src/gtk/combobox.cpp
src/gtk/control.cpp
src/gtk/dataview.cpp
src/gtk/gauge.cpp
src/gtk/listbox.cpp
src/gtk/notebook.cpp
src/gtk/radiobox.cpp
src/gtk/radiobut.cpp
src/gtk/scrolbar.cpp
src/gtk/slider.cpp
src/gtk/spinbutt.cpp
src/gtk/spinctrl.cpp
src/gtk/statbmp.cpp
src/gtk/statbox.cpp
src/gtk/statline.cpp
src/gtk/stattext.cpp
src/gtk/textctrl.cpp
src/gtk/tglbtn.cpp
src/gtk/toolbar.cpp
src/gtk/webview_webkit.cpp

index 5c288d0aa63bf1cbb7be32d1922becd7bf2ac652..a68832acf493a6c203f42a4c21c72818f5f8eb8c 100644 (file)
@@ -18,13 +18,6 @@ typedef struct _GtkEntry GtkEntry;
 // wxControl
 //-----------------------------------------------------------------------------
 
-// C-linkage function pointer types for GetDefaultAttributesFromGTKWidget
-extern "C" {
-    typedef GtkWidget* (*wxGtkWidgetNew_t)(void);
-    typedef GtkWidget* (*wxGtkWidgetNewFromStr_t)(const char*);
-    typedef GtkWidget* (*wxGtkWidgetNewFromAdj_t)(GtkAdjustment*);
-}
-
 class WXDLLIMPEXP_CORE wxControl : public wxControlBase
 {
     typedef wxControlBase base_type;
@@ -80,19 +73,6 @@ protected:
         GetDefaultAttributesFromGTKWidget(GtkWidget* widget,
                                           bool useBase = false,
                                           int state = 0);
-    static wxVisualAttributes
-        GetDefaultAttributesFromGTKWidget(wxGtkWidgetNew_t,
-                                          bool useBase = false,
-                                          int state = 0);
-    static wxVisualAttributes
-        GetDefaultAttributesFromGTKWidget(wxGtkWidgetNewFromStr_t,
-                                          bool useBase = false,
-                                          int state = 0);
-
-    static wxVisualAttributes
-        GetDefaultAttributesFromGTKWidget(wxGtkWidgetNewFromAdj_t,
-                                          bool useBase = false,
-                                          int state = 0);
 
     // Widgets that use the style->base colour for the BG colour should
     // override this and return true.
index 9036b2a7ed38857f8ea6ea2f898f59ef4576ec8d..60510a012f56b3dfd3293233230be832b3265997 100644 (file)
@@ -95,7 +95,7 @@ GdkWindow *wxAnyButton::GTKGetWindow(wxArrayGdkWindows& WXUNUSED(windows)) const
 wxVisualAttributes
 wxAnyButton::GetClassDefaultAttributes(wxWindowVariant WXUNUSED(variant))
 {
-    return GetDefaultAttributesFromGTKWidget(gtk_button_new);
+    return GetDefaultAttributesFromGTKWidget(gtk_button_new());
 }
 
 // ----------------------------------------------------------------------------
index 6e496d75bbcf6a53260aece1bfc0aac61f566f27..73ccbca5809ebcba8ee812166e030086a6107371 100644 (file)
@@ -334,7 +334,7 @@ wxSize wxButton::DoGetBestSize() const
 wxVisualAttributes
 wxButton::GetClassDefaultAttributes(wxWindowVariant WXUNUSED(variant))
 {
-    return GetDefaultAttributesFromGTKWidget(gtk_button_new);
+    return GetDefaultAttributesFromGTKWidget(gtk_button_new());
 }
 
 #endif // wxUSE_BUTTON
index b19cacc6d3f8bdcd8fd2a3250f7fbc28cf341367..977dd37ac87196059ff3eac0ca861c3046b91b84 100644 (file)
@@ -236,7 +236,7 @@ GdkWindow *wxCheckBox::GTKGetWindow(wxArrayGdkWindows& WXUNUSED(windows)) const
 wxVisualAttributes
 wxCheckBox::GetClassDefaultAttributes(wxWindowVariant WXUNUSED(variant))
 {
-    return GetDefaultAttributesFromGTKWidget(gtk_check_button_new);
+    return GetDefaultAttributesFromGTKWidget(gtk_check_button_new());
 }
 
 #endif
index 73ed8300b3aab6fd8d7b02db70f44a411fe08723..9c82f7b737f6fba9e8397985d221629210f3f376 100644 (file)
@@ -393,7 +393,7 @@ void wxChoice::DoApplyWidgetStyle(GtkRcStyle *style)
 wxVisualAttributes
 wxChoice::GetClassDefaultAttributes(wxWindowVariant WXUNUSED(variant))
 {
-    return GetDefaultAttributesFromGTKWidget(gtk_combo_box_new);
+    return GetDefaultAttributesFromGTKWidget(gtk_combo_box_new());
 }
 
 
index ae69a86b371b20105efdae3aa735a20813d0021d..bf76ed5c506ce7dd5c01c2d78ddb0a3cbfbcbca2 100644 (file)
@@ -290,9 +290,9 @@ wxVisualAttributes
 wxComboBox::GetClassDefaultAttributes(wxWindowVariant WXUNUSED(variant))
 {
 #ifdef __WXGTK3__
-    return GetDefaultAttributesFromGTKWidget(gtk_combo_box_new_with_entry, true);
+    return GetDefaultAttributesFromGTKWidget(gtk_combo_box_new_with_entry(), true);
 #else
-    return GetDefaultAttributesFromGTKWidget(gtk_combo_box_entry_new, true);
+    return GetDefaultAttributesFromGTKWidget(gtk_combo_box_entry_new(), true);
 #endif
 }
 
index ff33e9af473f1d14dfd561c06b8d72f3e90f85cf..770ce7b1162d89d7bbedeab80cfb3b11165da707 100644 (file)
@@ -234,6 +234,14 @@ wxControl::GetDefaultAttributesFromGTKWidget(GtkWidget* widget,
                                              int state)
 {
     wxVisualAttributes attr;
+
+    GtkWidget* tlw = NULL;
+    if (gtk_widget_get_parent(widget) == NULL)
+    {
+        tlw = gtk_window_new(GTK_WINDOW_TOPLEVEL);
+        gtk_container_add(GTK_CONTAINER(tlw), widget);
+    }
+
 #ifdef __WXGTK3__
     GtkStateFlags stateFlag = GTK_STATE_FLAG_NORMAL;
     if (state)
@@ -258,29 +266,30 @@ wxControl::GetDefaultAttributesFromGTKWidget(GtkWidget* widget,
     if (!style)
         style = gtk_widget_get_default_style();
 
-    if (!style)
+    if (style)
     {
-        return wxWindow::GetClassDefaultAttributes(wxWINDOW_VARIANT_NORMAL);
-    }
-
-    // get the style's colours
-    attr.colFg = wxColour(style->fg[state]);
-    if (useBase)
-        attr.colBg = wxColour(style->base[state]);
-    else
-        attr.colBg = wxColour(style->bg[state]);
+        // get the style's colours
+        attr.colFg = wxColour(style->fg[state]);
+        if (useBase)
+            attr.colBg = wxColour(style->base[state]);
+        else
+            attr.colBg = wxColour(style->bg[state]);
 
-    // get the style's font
-    if ( !style->font_desc )
-        style = gtk_widget_get_default_style();
-    if ( style && style->font_desc )
-    {
-        wxNativeFontInfo info;
-        info.description = style->font_desc;
-        attr.font = wxFont(info);
-        info.description = NULL;
+        // get the style's font
+        if (!style->font_desc)
+            style = gtk_widget_get_default_style();
+        if (style && style->font_desc)
+        {
+            wxNativeFontInfo info;
+            info.description = style->font_desc;
+            attr.font = wxFont(info);
+            info.description = NULL;
+        }
     }
+    else
+        attr = wxWindow::GetClassDefaultAttributes(wxWINDOW_VARIANT_NORMAL);
 #endif
+
     if (!attr.font.IsOk())
     {
         GtkSettings *settings = gtk_settings_get_default();
@@ -296,56 +305,9 @@ wxControl::GetDefaultAttributesFromGTKWidget(GtkWidget* widget,
         g_free (font_name);
     }
 
-    return attr;
-}
+    if (tlw)
+        gtk_widget_destroy(tlw);
 
-
-//static
-wxVisualAttributes
-wxControl::GetDefaultAttributesFromGTKWidget(wxGtkWidgetNew_t widget_new,
-                                             bool useBase,
-                                             int state)
-{
-    wxVisualAttributes attr;
-    // NB: we need toplevel window so that GTK+ can find the right style
-    GtkWidget *wnd = gtk_window_new(GTK_WINDOW_TOPLEVEL);
-    GtkWidget* widget = widget_new();
-    gtk_container_add(GTK_CONTAINER(wnd), widget);
-    attr = GetDefaultAttributesFromGTKWidget(widget, useBase, state);
-    gtk_widget_destroy(wnd);
-    return attr;
-}
-
-//static
-wxVisualAttributes
-wxControl::GetDefaultAttributesFromGTKWidget(wxGtkWidgetNewFromStr_t widget_new,
-                                             bool useBase,
-                                             int state)
-{
-    wxVisualAttributes attr;
-    // NB: we need toplevel window so that GTK+ can find the right style
-    GtkWidget *wnd = gtk_window_new(GTK_WINDOW_TOPLEVEL);
-    GtkWidget* widget = widget_new("");
-    gtk_container_add(GTK_CONTAINER(wnd), widget);
-    attr = GetDefaultAttributesFromGTKWidget(widget, useBase, state);
-    gtk_widget_destroy(wnd);
-    return attr;
-}
-
-
-//static
-wxVisualAttributes
-wxControl::GetDefaultAttributesFromGTKWidget(wxGtkWidgetNewFromAdj_t widget_new,
-                                             bool useBase,
-                                             int state)
-{
-    wxVisualAttributes attr;
-    // NB: we need toplevel window so that GTK+ can find the right style
-    GtkWidget *wnd = gtk_window_new(GTK_WINDOW_TOPLEVEL);
-    GtkWidget* widget = widget_new(NULL);
-    gtk_container_add(GTK_CONTAINER(wnd), widget);
-    attr = GetDefaultAttributesFromGTKWidget(widget, useBase, state);
-    gtk_widget_destroy(wnd);
     return attr;
 }
 
index 26bc7cc8a7e18810921f1a9b43fdbf5f71d8cbff..2286b8c2babacf72ec6a5f2f91d3f6d05d860a54 100644 (file)
@@ -5104,7 +5104,7 @@ void wxDataViewCtrl::GtkEnableSelectionEvents()
 wxVisualAttributes
 wxDataViewCtrl::GetClassDefaultAttributes(wxWindowVariant WXUNUSED(variant))
 {
-    return GetDefaultAttributesFromGTKWidget(gtk_tree_view_new);
+    return GetDefaultAttributesFromGTKWidget(gtk_tree_view_new());
 }
 
 void wxDataViewCtrl::DoApplyWidgetStyle(GtkRcStyle *style)
index 50b6758c9f96cda1a0f3b83b2fc4b13438e19f94..108a96e67bcb6c4c83a871ee34a310239987a80c 100644 (file)
@@ -128,7 +128,7 @@ wxVisualAttributes wxGauge::GetDefaultAttributes() const
 wxVisualAttributes
 wxGauge::GetClassDefaultAttributes(wxWindowVariant WXUNUSED(variant))
 {
-    return GetDefaultAttributesFromGTKWidget(gtk_progress_bar_new,
+    return GetDefaultAttributesFromGTKWidget(gtk_progress_bar_new(),
                                              false, GTK_STATE_ACTIVE);
 }
 
index b3fcefba4119d15b612e4a22a770e8d93e463ef5..c5d597b4f43b41606c4ad6334e9cdc22bde16637 100644 (file)
@@ -931,7 +931,7 @@ wxSize wxListBox::DoGetBestSize() const
 wxVisualAttributes
 wxListBox::GetClassDefaultAttributes(wxWindowVariant WXUNUSED(variant))
 {
-    return GetDefaultAttributesFromGTKWidget(gtk_tree_view_new, true);
+    return GetDefaultAttributesFromGTKWidget(gtk_tree_view_new(), true);
 }
 
 #endif // wxUSE_LISTBOX
index 24230065175528f862d7d58b1fd8c1f113582f03..f97678a9208375c9bc2e4ea627a3d8305fea61f1 100644 (file)
@@ -607,7 +607,7 @@ GdkWindow *wxNotebook::GTKGetWindow(wxArrayGdkWindows& windows) const
 wxVisualAttributes
 wxNotebook::GetClassDefaultAttributes(wxWindowVariant WXUNUSED(variant))
 {
-    return GetDefaultAttributesFromGTKWidget(gtk_notebook_new);
+    return GetDefaultAttributesFromGTKWidget(gtk_notebook_new());
 }
 
 #endif
index cc0b114c32b8b540ec86ff7f5bef0c40a4665179..37eafdf31d5c8d7dcd0cbe3033a66c384f998ec2 100644 (file)
@@ -617,14 +617,7 @@ GdkWindow *wxRadioBox::GTKGetWindow(wxArrayGdkWindows& windows) const
 wxVisualAttributes
 wxRadioBox::GetClassDefaultAttributes(wxWindowVariant WXUNUSED(variant))
 {
-    wxVisualAttributes attr;
-    // NB: we need toplevel window so that GTK+ can find the right style
-    GtkWidget *wnd = gtk_window_new(GTK_WINDOW_TOPLEVEL);
-    GtkWidget* widget = gtk_radio_button_new_with_label(NULL, "");
-    gtk_container_add(GTK_CONTAINER(wnd), widget);
-    attr = GetDefaultAttributesFromGTKWidget(widget);
-    gtk_widget_destroy(wnd);
-    return attr;
+    return GetDefaultAttributesFromGTKWidget(gtk_radio_button_new_with_label(NULL, ""));
 }
 
 int wxRadioBox::GetItemFromPoint(const wxPoint& point) const
index 421d84257599467aa457afca26dfd88ee147d95c..6128b2ce114ae3342d859f5ccebc5819031af37c 100644 (file)
@@ -181,14 +181,7 @@ wxRadioButton::GTKGetWindow(wxArrayGdkWindows& WXUNUSED(windows)) const
 wxVisualAttributes
 wxRadioButton::GetClassDefaultAttributes(wxWindowVariant WXUNUSED(variant))
 {
-    wxVisualAttributes attr;
-    // NB: we need toplevel window so that GTK+ can find the right style
-    GtkWidget *wnd = gtk_window_new(GTK_WINDOW_TOPLEVEL);
-    GtkWidget* widget = gtk_radio_button_new_with_label(NULL, "");
-    gtk_container_add(GTK_CONTAINER(wnd), widget);
-    attr = GetDefaultAttributesFromGTKWidget(widget);
-    gtk_widget_destroy(wnd);
-    return attr;
+    return GetDefaultAttributesFromGTKWidget(gtk_radio_button_new_with_label(NULL, ""));
 }
 
 
index 2ef064b3facb2fb65069cbcc6c2463150f2da38d..23da1044de89bd9c554b6a0fe330ccf5938f857c 100644 (file)
@@ -235,7 +235,7 @@ void wxScrollBar::SetRange(int range)
 wxVisualAttributes
 wxScrollBar::GetClassDefaultAttributes(wxWindowVariant WXUNUSED(variant))
 {
-    return GetDefaultAttributesFromGTKWidget(gtk_vscrollbar_new);
+    return GetDefaultAttributesFromGTKWidget(gtk_vscrollbar_new(NULL));
 }
 
 #endif // wxUSE_SCROLLBAR
index dd3b3889ee5b17b946f4aa22b0f8a38ab7c65798..718dda763c8fe8761857dd9cafcee7fc4a1cd6a6 100644 (file)
@@ -533,7 +533,7 @@ GdkWindow *wxSlider::GTKGetWindow(wxArrayGdkWindows& WXUNUSED(windows)) const
 wxVisualAttributes
 wxSlider::GetClassDefaultAttributes(wxWindowVariant WXUNUSED(variant))
 {
-    return GetDefaultAttributesFromGTKWidget(gtk_vscale_new);
+    return GetDefaultAttributesFromGTKWidget(gtk_vscale_new(NULL));
 }
 
 #endif // wxUSE_SLIDER
index 5cb5b6bb897a175a0f4967a3df2f3faa44f4ffef..2a190e9e1c97c9afb49191fe72df407c60f25878 100644 (file)
@@ -217,9 +217,7 @@ wxSize wxSpinButton::DoGetBestSize() const
 wxVisualAttributes
 wxSpinButton::GetClassDefaultAttributes(wxWindowVariant WXUNUSED(variant))
 {
-    // TODO: overload to accept functions like gtk_spin_button_new?
-    // Until then use a similar type
-    return GetDefaultAttributesFromGTKWidget(gtk_button_new);
+    return GetDefaultAttributesFromGTKWidget(gtk_spin_button_new_with_range(0, 100, 1));
 }
 
 #endif
index 9bfe5a9b0bcbe4d8aea5b3691868d3e53124f721..d4f935e07a7a52435b9d3dc6ed2f06ef8971206a 100644 (file)
@@ -376,9 +376,7 @@ wxSize wxSpinCtrlGTKBase::DoGetSizeFromTextSize(int xlen, int ylen) const
 wxVisualAttributes
 wxSpinCtrlGTKBase::GetClassDefaultAttributes(wxWindowVariant WXUNUSED(variant))
 {
-    // TODO: overload to accept functions like gtk_spin_button_new?
-    // Until then use a similar type
-    return GetDefaultAttributesFromGTKWidget(gtk_entry_new, true);
+    return GetDefaultAttributesFromGTKWidget(gtk_spin_button_new_with_range(0, 100, 1), true);
 }
 
 //-----------------------------------------------------------------------------
index a1c66085e38a85bb14a3e595cef23cb39ca5e38a..19391bbb7e69026ad3af802578b24ab0bb0aa766 100644 (file)
@@ -75,8 +75,7 @@ void wxStaticBitmap::SetBitmap( const wxBitmap &bitmap )
 wxVisualAttributes
 wxStaticBitmap::GetClassDefaultAttributes(wxWindowVariant WXUNUSED(variant))
 {
-    // TODO: overload to allow using gtk_pixmap_new?
-    return GetDefaultAttributesFromGTKWidget(gtk_label_new);
+    return GetDefaultAttributesFromGTKWidget(gtk_image_new());
 }
 
 #endif // wxUSE_STATBMP
index 5cb14390ffc9053c7ef4240a6c247b6c40e63dcd..139a678df29fe90441e902deb81e99e856562f11 100644 (file)
@@ -152,7 +152,7 @@ void wxStaticBox::GTKWidgetDoSetMnemonic(GtkWidget* w)
 wxVisualAttributes
 wxStaticBox::GetClassDefaultAttributes(wxWindowVariant WXUNUSED(variant))
 {
-    return GetDefaultAttributesFromGTKWidget(gtk_frame_new);
+    return GetDefaultAttributesFromGTKWidget(gtk_frame_new(""));
 }
 
 
index c199ece70eba908e64b4103d7bbe95466f053c41..14bfb736df00ff7762a61597922e0b7a41c53188 100644 (file)
@@ -76,7 +76,7 @@ bool wxStaticLine::Create( wxWindow *parent, wxWindowID id,
 wxVisualAttributes
 wxStaticLine::GetClassDefaultAttributes(wxWindowVariant WXUNUSED(variant))
 {
-    return GetDefaultAttributesFromGTKWidget(gtk_vseparator_new);
+    return GetDefaultAttributesFromGTKWidget(gtk_vseparator_new());
 }
 
 #endif
index 4bffc1fa0481c4957b26a1bb1273febaea7206ed..6bd76670bb6be585ea5bd0542ce42236ad01fb36 100644 (file)
@@ -248,7 +248,7 @@ void wxStaticText::DoSetLabel(const wxString& str)
 wxVisualAttributes
 wxStaticText::GetClassDefaultAttributes(wxWindowVariant WXUNUSED(variant))
 {
-    return GetDefaultAttributesFromGTKWidget(gtk_label_new);
+    return GetDefaultAttributesFromGTKWidget(gtk_label_new(""));
 }
 
 #endif // wxUSE_STATTEXT
index ecb98e6bdc1a448048206482c9e550db0a4b2749..f0597d724bf1bcb621039f7c72f674fc17fbf365 100644 (file)
@@ -2009,7 +2009,7 @@ bool wxTextCtrl::GTKProcessEvent(wxEvent& event) const
 wxVisualAttributes
 wxTextCtrl::GetClassDefaultAttributes(wxWindowVariant WXUNUSED(variant))
 {
-    return GetDefaultAttributesFromGTKWidget(gtk_entry_new, true);
+    return GetDefaultAttributesFromGTKWidget(gtk_entry_new(), true);
 }
 
 #endif // wxUSE_TEXTCTRL
index 1ad831108f722b2d0940672ffb5be01132251d2d..c3b92d29808911420ee7db43b590c111f1e2ead0 100644 (file)
@@ -235,7 +235,7 @@ wxSize wxToggleButton::DoGetBestSize() const
 wxVisualAttributes
 wxToggleButton::GetClassDefaultAttributes(wxWindowVariant WXUNUSED(variant))
 {
-    return GetDefaultAttributesFromGTKWidget(gtk_toggle_button_new);
+    return GetDefaultAttributesFromGTKWidget(gtk_toggle_button_new());
 }
 
 #endif // wxUSE_TOGGLEBTN
index 6897592dd9449340629062169aaae3feec632451..6f4aa4c6e9f8663b196ef6bfba6b8fd32547f392 100644 (file)
@@ -763,7 +763,7 @@ void wxToolBar::SetToolDisabledBitmap( int id, const wxBitmap& bitmap )
 wxVisualAttributes
 wxToolBar::GetClassDefaultAttributes(wxWindowVariant WXUNUSED(variant))
 {
-    return GetDefaultAttributesFromGTKWidget(gtk_toolbar_new);
+    return GetDefaultAttributesFromGTKWidget(gtk_toolbar_new());
 }
 
 #endif // wxUSE_TOOLBAR_NATIVE
index 28754d298a52abcf6e042df368359eccf302f59b..3e9008503fc5eb246c24f90b3c72c599902dbda1 100644 (file)
@@ -1004,7 +1004,7 @@ void wxWebViewWebKit::FindClear()
 wxVisualAttributes
 wxWebViewWebKit::GetClassDefaultAttributes(wxWindowVariant WXUNUSED(variant))
 {
-     return GetDefaultAttributesFromGTKWidget(webkit_web_view_new);
+     return GetDefaultAttributesFromGTKWidget(webkit_web_view_new());
 }