]> git.saurik.com Git - wxWidgets.git/blobdiff - src/gtk/hyperlink.cpp
better fix for #11803, don't set iconized state for hidden window
[wxWidgets.git] / src / gtk / hyperlink.cpp
index 4093de29572880cc2fb545dade71ebe2da083c0f..54b8aa7d8ef1463875ff40cf4f6d6dfbc15179c5 100644 (file)
@@ -23,7 +23,7 @@
     #pragma hdrstop
 #endif
 
-#if wxUSE_HYPERLINKCTRL && defined(__WXGTK210__)
+#if wxUSE_HYPERLINKCTRL && defined(__WXGTK210__) && !defined(__WXUNIVERSAL__)
 
 #include "wx/hyperlink.h"
 
@@ -37,7 +37,7 @@
 // local functions
 // ----------------------------------------------------------------------------
 
-inline bool UseNative()
+static inline bool UseNative()
 {
     // native gtk_link_button widget is only available in GTK+ 2.10 and later
     return !gtk_check_version(2, 10, 0);
@@ -76,9 +76,6 @@ bool wxHyperlinkCtrl::Create(wxWindow *parent, wxWindowID id,
         // do validation checks:
         CheckParams(label, url, style);
 
-        m_needParent = true;
-        m_acceptsFocus = true;
-
         if (!PreCreation( parent, pos, size ) ||
             !CreateBase( parent, id, pos, size, style, wxDefaultValidator, name ))
         {
@@ -87,7 +84,8 @@ bool wxHyperlinkCtrl::Create(wxWindow *parent, wxWindowID id,
         }
 
         m_widget = gtk_link_button_new("asdfsaf asdfdsaf asdfdsa");
-        gtk_widget_show( GTK_WIDGET(m_widget) );
+        g_object_ref(m_widget);
+        gtk_widget_show(m_widget);
 
         // alignment
         float x_alignment = 0.5;
@@ -109,11 +107,10 @@ bool wxHyperlinkCtrl::Create(wxWindow *parent, wxWindowID id,
         m_parent->DoAddChild( this );
 
         PostCreation(size);
-        SetInitialSize(size);
 
         // wxWindowGTK will connect to the enter_notify and leave_notify GTK+ signals
         // thus overriding GTK+'s internal signal handlers which set the cursor of
-        // the widget - thus we need to manually set it here: 
+        // the widget - thus we need to manually set it here:
         SetCursor(wxCursor(wxCURSOR_HAND));
     }
     else
@@ -144,7 +141,7 @@ void wxHyperlinkCtrl::SetLabel(const wxString &label)
 void wxHyperlinkCtrl::SetURL(const wxString &uri)
 {
     if ( UseNative() )
-        gtk_link_button_set_uri(GTK_LINK_BUTTON(m_widget), uri.c_str());
+        gtk_link_button_set_uri(GTK_LINK_BUTTON(m_widget), wxGTK_CONV(uri));
     else
         wxGenericHyperlinkCtrl::SetURL(uri);
 }
@@ -154,7 +151,7 @@ wxString wxHyperlinkCtrl::GetURL() const
     if ( UseNative() )
     {
         const gchar *str = gtk_link_button_get_uri(GTK_LINK_BUTTON(m_widget));
-        return wxConvFileName->cMB2WX(str);
+        return wxString::FromUTF8(str);
     }
 
     return wxGenericHyperlinkCtrl::GetURL();
@@ -172,21 +169,21 @@ void wxHyperlinkCtrl::SetNormalColour(const wxColour &colour)
 
 wxColour wxHyperlinkCtrl::GetNormalColour() const
 {
+    wxColour ret;
     if ( UseNative() )
     {
         GdkColor *link_color = NULL;
-        wxColour ret = wxNullColour;
 
         // convert GdkColor in wxColour
         gtk_widget_style_get(m_widget, "link-color", &link_color, NULL);
         if (link_color)
-            ret.Set(link_color->red, link_color->green, link_color->blue);
+            ret = wxColour(*link_color);
         gdk_color_free (link_color);
-
-        return ret;
     }
     else
-        return wxGenericHyperlinkCtrl::GetNormalColour();
+        ret = wxGenericHyperlinkCtrl::GetNormalColour();
+
+    return ret;
 }
 
 void wxHyperlinkCtrl::SetVisitedColour(const wxColour &colour)
@@ -201,21 +198,21 @@ void wxHyperlinkCtrl::SetVisitedColour(const wxColour &colour)
 
 wxColour wxHyperlinkCtrl::GetVisitedColour() const
 {
+    wxColour ret;
     if ( UseNative() )
     {
         GdkColor *link_color = NULL;
-        wxColour ret = wxNullColour;
 
         // convert GdkColor in wxColour
         gtk_widget_style_get(m_widget, "visited-link-color", &link_color, NULL);
         if (link_color)
-            ret.Set(link_color->red, link_color->green, link_color->blue);
+            ret = wxColour(*link_color);
         gdk_color_free (link_color);
-
-        return ret;
     }
     else
         return wxGenericHyperlinkCtrl::GetVisitedColour();
+
+    return ret;
 }
 
 void wxHyperlinkCtrl::SetHoverColour(const wxColour &colour)