]> git.saurik.com Git - wxWidgets.git/commitdiff
Switch to GtkTooltip from deprecated GtkTooltips in wxGTK wxToolTip.
authorVadim Zeitlin <vadim@wxwidgets.org>
Wed, 22 Dec 2010 13:57:28 +0000 (13:57 +0000)
committerVadim Zeitlin <vadim@wxwidgets.org>
Wed, 22 Dec 2010 13:57:28 +0000 (13:57 +0000)
Don't use deprecated GtkTooltips in wxGTK code any more, use the new
GtkTooltip instead.

Closes #12034.

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

docs/changes.txt
src/gtk/listbox.cpp
src/gtk/toolbar.cpp
src/gtk/tooltip.cpp
src/gtk/window.cpp

index 02f58a6a30dda84493f9c7b5386f154e101f5901..b30d607c3b9e946226644cb54f92640fe5532520 100644 (file)
@@ -450,6 +450,10 @@ All (GUI):
 - Fixed resizing columns in wxGrid when they were reordered.
 - Added wxImage::Rotate180() (Jeff Tupper).
 
+GTK:
+
+- Switch to GtkTooltip from deprecated GtkTooltips (Emilien Kia).
+
 MSW:
 
 - Native implementation of wxHyperlinkCtrl and wxProgressDialog under modern
index fb70b0c0c7aa59ea5626a2c7b15b4155c587952a..60c03da2030ea8284126b095c1226b9d234d03a0 100644 (file)
@@ -848,8 +848,17 @@ int wxListBox::DoListHitTest(const wxPoint& point) const
 #if wxUSE_TOOLTIPS
 void wxListBox::GTKApplyToolTip( GtkTooltips *tips, const gchar *tip )
 {
-    // RN: Is this needed anymore?
-    gtk_tooltips_set_tip( tips, GTK_WIDGET( m_treeview ), tip, NULL );
+#if GTK_CHECK_VERSION(2, 12, 0)
+    if (!gtk_check_version(2, 12, 0))
+    {
+        gtk_widget_set_tooltip_text(GTK_WIDGET( m_treeview ), tip);
+    }
+    else
+#endif
+    {
+        // RN: Is this needed anymore?
+        gtk_tooltips_set_tip( tips, GTK_WIDGET( m_treeview ), tip, NULL );
+    }
 }
 #endif // wxUSE_TOOLTIPS
 
index f8a8cade54e060286e8b70fb5d8d4c82556e379b..b25f775019f4743eeb74771cd5bc9ee1f682d005 100644 (file)
@@ -351,7 +351,7 @@ void wxToolBar::Init()
 
 wxToolBar::~wxToolBar()
 {
-    if (m_tooltips)
+    if (m_tooltips) // always NULL if GTK >= 2.12
     {
         gtk_object_destroy(GTK_OBJECT(m_tooltips));
         g_object_unref(m_tooltips);
@@ -376,9 +376,12 @@ bool wxToolBar::Create( wxWindow *parent,
     FixupStyle();
 
     m_toolbar = GTK_TOOLBAR( gtk_toolbar_new() );
-    m_tooltips = gtk_tooltips_new();
-    g_object_ref(m_tooltips);
-    gtk_object_sink(GTK_OBJECT(m_tooltips));
+    if (gtk_check_version(2, 12, 0))
+    {
+        m_tooltips = gtk_tooltips_new();
+        g_object_ref(m_tooltips);
+        gtk_object_sink(GTK_OBJECT(m_tooltips));
+    }
     GtkSetStyle();
 
     if (style & wxTB_DOCKABLE)
@@ -528,8 +531,18 @@ bool wxToolBar::DoInsertTool(size_t pos, wxToolBarToolBase *toolBase)
             }
             if (!HasFlag(wxTB_NO_TOOLTIPS) && !tool->GetShortHelp().empty())
             {
-                gtk_tool_item_set_tooltip(tool->m_item,
-                    m_tooltips, wxGTK_CONV(tool->GetShortHelp()), "");
+#if GTK_CHECK_VERSION(2, 12, 0)
+                if (!gtk_check_version(2, 12, 0))
+                {
+                    gtk_tool_item_set_tooltip_text(tool->m_item,
+                        wxGTK_CONV(tool->GetShortHelp()));
+                }
+                else
+#endif
+                {
+                    gtk_tool_item_set_tooltip(tool->m_item,
+                        m_tooltips, wxGTK_CONV(tool->GetShortHelp()), "");
+                }
             }
             g_signal_connect(GTK_BIN(tool->m_item)->child, "button_press_event",
                 G_CALLBACK(button_press_event), tool);
@@ -695,8 +708,18 @@ void wxToolBar::SetToolShortHelp( int id, const wxString& helpString )
         (void)tool->SetShortHelp(helpString);
         if (tool->m_item)
         {
-            gtk_tool_item_set_tooltip(tool->m_item,
-                m_tooltips, wxGTK_CONV(helpString), "");
+#if GTK_CHECK_VERSION(2, 12, 0)
+            if (!gtk_check_version(2, 12, 0))
+            {
+                gtk_tool_item_set_tooltip_text(tool->m_item,
+                    wxGTK_CONV(helpString));
+            }
+            else
+#endif
+            {
+                gtk_tool_item_set_tooltip(tool->m_item,
+                    m_tooltips, wxGTK_CONV(helpString), "");
+            }
         }
     }
 }
index 801ae68eeddee689b0f7f488edb11692425e742b..53707efbc7e39f87f09db639a397bae4a737ae3a 100644 (file)
@@ -63,21 +63,42 @@ void wxToolTip::GTKApply( wxWindow *win )
 /* static */
 void wxToolTip::GTKApply(GtkWidget *w, const gchar *tip)
 {
-    if ( !gs_tooltips )
-        gs_tooltips = gtk_tooltips_new();
+#if GTK_CHECK_VERSION(2, 12, 0)
+    if (!gtk_check_version(2, 12, 0))
+    {
+        gtk_widget_set_tooltip_text(w, tip);
+    }
+    else
+#endif
+    {
+        if ( !gs_tooltips )
+            gs_tooltips = gtk_tooltips_new();
 
-    gtk_tooltips_set_tip(gs_tooltips, w, tip, NULL);
+        gtk_tooltips_set_tip(gs_tooltips, w, tip, NULL);
+    }
 }
 
 void wxToolTip::Enable( bool flag )
 {
-    if (!gs_tooltips)
-        return;
-
-    if (flag)
-        gtk_tooltips_enable( gs_tooltips );
+#if GTK_CHECK_VERSION(2, 12, 0)
+    if (!gtk_check_version(2, 12, 0))
+    {
+        GtkSettings* settings = gtk_settings_get_default();
+        if(!settings)
+            return;
+        gtk_settings_set_long_property(settings, "gtk-enable-tooltips", flag?TRUE:FALSE, NULL);
+    }
     else
-        gtk_tooltips_disable( gs_tooltips );
+#endif
+    {
+        if (!gs_tooltips)
+            return;
+
+        if (flag)
+            gtk_tooltips_enable( gs_tooltips );
+        else
+            gtk_tooltips_disable( gs_tooltips );
+    }
 }
 
 G_BEGIN_DECLS
@@ -87,12 +108,24 @@ G_END_DECLS
 
 void wxToolTip::SetDelay( long msecs )
 {
-    if (!gs_tooltips)
-        return;
-
-    // FIXME: This is a deprecated function and might not even have an effect.
-    // Try to not use it, after which remove the prototype above.
-    gtk_tooltips_set_delay( gs_tooltips, (int)msecs );
+#if GTK_CHECK_VERSION(2, 12, 0)
+    if (!gtk_check_version(2, 12, 0))
+    {
+        GtkSettings* settings = gtk_settings_get_default();
+        if(!settings)
+            return;
+        gtk_settings_set_long_property(settings, "gtk-tooltip-timeout", msecs, NULL);
+    }
+    else
+#endif
+    {
+        if (!gs_tooltips)
+            return;
+
+        // FIXME: This is a deprecated function and might not even have an effect.
+        // Try to not use it, after which remove the prototype above.
+        gtk_tooltips_set_delay( gs_tooltips, (int)msecs );
+    }
 }
 
 void wxToolTip::SetAutoPop( long WXUNUSED(msecs) )
index 1e4523f340272f80d631e5f32598ee704218a08b..53c687fa0848e5e1e3e25ca20c27288db27c657e 100644 (file)
@@ -3782,30 +3782,23 @@ void wxWindowGTK::DoSetToolTip( wxToolTip *tip )
     {
         GtkWidget *w = GetConnectWidget();
         wxToolTip::GTKApply(w, NULL);
-#if GTK_CHECK_VERSION(2, 12, 0)
-        // Just applying NULL doesn't work on 2.12.0, so also use
-        // gtk_widget_set_has_tooltip. It is part of the new GtkTooltip API
-        // but seems also to work with the old GtkTooltips.
-        if (gtk_check_version(2, 12, 0) == NULL)
-            gtk_widget_set_has_tooltip(w, FALSE);
-#endif
     }
 }
 
 void wxWindowGTK::GTKApplyToolTip( GtkTooltips *tips, const gchar *tip )
 {
     GtkWidget *w = GetConnectWidget();
-    gtk_tooltips_set_tip(tips, w, tip, NULL);
 
 #if GTK_CHECK_VERSION(2, 12, 0)
-    if ( !tip || tip[0] == '\0' )
+    if (!gtk_check_version(2, 12, 0))
     {
-        // Just applying empty tool tip doesn't work on 2.12.0, so also use
-        // gtk_widget_set_has_tooltip.
-        if (gtk_check_version(2, 12, 0) == NULL)
-            gtk_widget_set_has_tooltip(w, FALSE);
+        gtk_widget_set_tooltip_text (w, tip);
     }
+    else
 #endif
+    {
+        gtk_tooltips_set_tip(tips, w, tip, NULL);
+    }
 }
 #endif // wxUSE_TOOLTIPS