X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/70ef48fee362bd9d62a530e3d77b7c6574bdf5b7..d5027818a42043052ac375b1a0ba30fac491ddc4:/src/gtk/taskbar.cpp diff --git a/src/gtk/taskbar.cpp b/src/gtk/taskbar.cpp index 87af558886..c15672f284 100644 --- a/src/gtk/taskbar.cpp +++ b/src/gtk/taskbar.cpp @@ -25,6 +25,10 @@ #include "eggtrayicon.h" #include +#if !GTK_CHECK_VERSION(2,10,0) + typedef struct _GtkStatusIcon GtkStatusIcon; +#endif + class wxTaskBarIcon::Private { public: @@ -112,6 +116,7 @@ status_icon_popup_menu(GtkStatusIcon*, guint, guint, wxTaskBarIcon* taskBarIcon) bool wxTaskBarIconBase::IsAvailable() { +#ifdef GDK_WINDOWING_X11 char name[32]; g_snprintf(name, sizeof(name), "_NET_SYSTEM_TRAY_S%d", gdk_x11_get_default_screen()); @@ -120,6 +125,9 @@ bool wxTaskBarIconBase::IsAvailable() Window manager = XGetSelectionOwner(gdk_x11_get_default_xdisplay(), atom); return manager != None; +#else + return true; +#endif } //----------------------------------------------------------------------------- @@ -176,7 +184,7 @@ void wxTaskBarIcon::Private::SetIcon() m_size = 0; if (m_eggTrayIcon) { - GtkWidget* image = GTK_BIN(m_eggTrayIcon)->child; + GtkWidget* image = gtk_bin_get_child(GTK_BIN(m_eggTrayIcon)); gtk_image_set_from_pixbuf(GTK_IMAGE(image), m_bitmap.GetPixbuf()); } else @@ -199,14 +207,26 @@ void wxTaskBarIcon::Private::SetIcon() #if wxUSE_TOOLTIPS const char *tip_text = NULL; if (!m_tipText.empty()) - tip_text = m_tipText.c_str(); + tip_text = m_tipText.utf8_str(); #if GTK_CHECK_VERSION(2,10,0) if (m_statusIcon) - gtk_status_icon_set_tooltip(m_statusIcon, tip_text); - else + { +#if GTK_CHECK_VERSION(2,16,0) + if (GTK_CHECK_VERSION(3,0,0) || gtk_check_version(2,16,0) == NULL) + gtk_status_icon_set_tooltip_text(m_statusIcon, tip_text); + else #endif + { +#if !GTK_CHECK_VERSION(3,0,0) && !defined(GTK_DISABLE_DEPRECATED) + gtk_status_icon_set_tooltip(m_statusIcon, tip_text); +#endif + } + } + else +#endif // GTK_CHECK_VERSION(2,10,0) { +#if !GTK_CHECK_VERSION(3,0,0) && !defined(GTK_DISABLE_DEPRECATED) if (tip_text && m_tooltips == NULL) { m_tooltips = gtk_tooltips_new(); @@ -215,6 +235,7 @@ void wxTaskBarIcon::Private::SetIcon() } if (m_tooltips) gtk_tooltips_set_tip(m_tooltips, m_eggTrayIcon, tip_text, ""); +#endif } #endif // wxUSE_TOOLTIPS } @@ -236,7 +257,7 @@ void wxTaskBarIcon::Private::size_allocate(int width, int height) if (h > size) h = size; GdkPixbuf* pixbuf = gdk_pixbuf_scale_simple(m_bitmap.GetPixbuf(), w, h, GDK_INTERP_BILINEAR); - GtkImage* image = GTK_IMAGE(GTK_BIN(m_eggTrayIcon)->child); + GtkImage* image = GTK_IMAGE(gtk_bin_get_child(GTK_BIN(m_eggTrayIcon))); gtk_image_set_from_pixbuf(image, pixbuf); g_object_unref(pixbuf); } @@ -245,7 +266,7 @@ void wxTaskBarIcon::Private::size_allocate(int width, int height) IMPLEMENT_DYNAMIC_CLASS(wxTaskBarIcon, wxEvtHandler) -wxTaskBarIcon::wxTaskBarIcon() +wxTaskBarIcon::wxTaskBarIcon(wxTaskBarIconType WXUNUSED(iconType)) { m_priv = new Private(this); }