From 2087d60f7f535d920ba7590535ee42ba0c2fe394 Mon Sep 17 00:00:00 2001 From: Eric Koegel <eric.koegel@gmail.com> Date: Sun, 1 Mar 2015 22:04:29 +0300 Subject: [PATCH] Start porting to GTK3 This starts the port to GTK3. The deprecated warnings for GTK dropping the system tray are ignored, we can deal with that in GTK4. --- configure.ac.in | 6 +++--- .../power-manager-button.c | 19 +++++++++++-------- settings/xfpm-settings-main.c | 3 ++- settings/xfpm-settings.c | 2 +- settings/xfpm-settings.h | 3 ++- src/xfpm-manager.c | 10 ++++++++++ 6 files changed, 29 insertions(+), 14 deletions(-) diff --git a/configure.ac.in b/configure.ac.in index 5c68465a..b01654a1 100644 --- a/configure.ac.in +++ b/configure.ac.in @@ -59,7 +59,7 @@ XDT_I18N([@LINGUAS@]) #==================================================== # # Check for required packages # #=====================================================# -m4_define([gtk_minimum_version], [2.24.0]) +m4_define([gtk_minimum_version], [3.10.0]) m4_define([glib_minimum_version], [2.30.0]) m4_define([dbus_minimum_version], [1.1]) m4_define([dbus_glib_minimum_version], [0.84]) @@ -76,7 +76,7 @@ m4_define([upower_minimum_version], [0.9.7]) m4_define([xrandr_minimum_version], [1.2.0]) m4_define([x11_minimum_version], [1.0.0]) -XDT_CHECK_PACKAGE([GTK], [gtk+-2.0], [gtk_minimum_version]) +XDT_CHECK_PACKAGE([GTK], [gtk+-3.0], [gtk_minimum_version]) XDT_CHECK_PACKAGE([GLIB], [glib-2.0], [glib_minimum_version]) XDT_CHECK_PACKAGE([GOBJECT], [gobject-2.0], [glib_minimum_version]) XDT_CHECK_PACKAGE([GTHREAD], [gthread-2.0], [glib_minimum_version]) @@ -84,7 +84,7 @@ XDT_CHECK_PACKAGE([GMODULE], [gmodule-2.0], [glib_minimum_version]) XDT_CHECK_PACKAGE([DBUS], [dbus-1], [dbus_minimum_version]) XDT_CHECK_PACKAGE([DBUS_GLIB], [dbus-glib-1], [dbus_glib_minimum_version]) XDT_CHECK_PACKAGE([XFCONF], [libxfconf-0],[xfconf_minimum_version]) -XDT_CHECK_PACKAGE([LIBXFCE4UI], [libxfce4ui-1],[libxfce4ui_minimum_version]) +XDT_CHECK_PACKAGE([LIBXFCE4UI], [libxfce4ui-2],[libxfce4ui_minimum_version]) XDT_CHECK_PACKAGE([LIBXFCE4UTIL], [libxfce4util-1.0],[libxfce4util_minimum_version]) XDT_CHECK_PACKAGE([LIBNOTIFY],[libnotify], [libnotify_minimum_version]) XDT_CHECK_PACKAGE([UPOWER],[upower-glib], [upower_minimum_version]) diff --git a/panel-plugins/power-manager-plugin/power-manager-button.c b/panel-plugins/power-manager-plugin/power-manager-button.c index 6d5844de..d5fef444 100644 --- a/panel-plugins/power-manager-plugin/power-manager-button.c +++ b/panel-plugins/power-manager-plugin/power-manager-button.c @@ -260,6 +260,7 @@ power_manager_button_device_icon_expose (GtkWidget *img, GdkEventExpose *event, gdouble min_height = 2; PangoLayout *layout = NULL; PangoRectangle ink_extent, log_extent; + GtkAllocation allocation; TRACE("entering"); @@ -288,16 +289,18 @@ power_manager_button_device_icon_expose (GtkWidget *img, GdkEventExpose *event, state = UP_DEVICE_STATE_UNKNOWN; } - cr = gdk_cairo_create (img->window); - width = img->allocation.width; - height = img->allocation.height; + gtk_widget_get_allocation (img, &allocation); + + cr = gdk_cairo_create (gtk_widget_get_window (img)); + width = allocation.width; + height = allocation.height; if (state != UP_DEVICE_STATE_UNKNOWN) { /* Draw the trough of the progressbar */ cairo_set_operator (cr, CAIRO_OPERATOR_SOURCE); cairo_set_line_width (cr, 1.0); - cairo_rectangle (cr, width - 3.5, img->allocation.y + 1.5, 5, height - 2); + cairo_rectangle (cr, width - 3.5, allocation.y + 1.5, 5, height - 2); cairo_set_source_rgb (cr, 0.87, 0.87, 0.87); cairo_fill_preserve (cr); cairo_set_source_rgb (cr, 0.53, 0.54, 0.52); @@ -310,7 +313,7 @@ power_manager_button_device_icon_expose (GtkWidget *img, GdkEventExpose *event, if ((height * (percentage / 100)) > min_height) min_height = (height - 3) * (percentage / 100); - cairo_rectangle (cr, width - 3, img->allocation.y + height - min_height - 1, 4, min_height); + cairo_rectangle (cr, width - 3, allocation.y + height - min_height - 1, 4, min_height); if (percentage > 5 && percentage < 20) cairo_set_source_rgb (cr, 0.93, 0.83, 0.0); else if (percentage > 20 && percentage < 100) @@ -321,7 +324,7 @@ power_manager_button_device_icon_expose (GtkWidget *img, GdkEventExpose *event, cairo_set_source_rgb (cr, 0.94, 0.16, 0.16); cairo_fill (cr); - cairo_rectangle (cr, width - 2.5, img->allocation.y + 2.5, 3, height - 4); + cairo_rectangle (cr, width - 2.5, allocation.y + 2.5, 3, height - 4); cairo_set_source_rgba (cr, 1.0, 1.0, 1.0, 0.75); cairo_stroke (cr); } @@ -330,7 +333,7 @@ power_manager_button_device_icon_expose (GtkWidget *img, GdkEventExpose *event, /* Draw a bubble with a question mark for devices with unknown state */ cairo_set_operator (cr, CAIRO_OPERATOR_SOURCE); cairo_set_line_width (cr, 1.0); - cairo_arc(cr, width - 4.5, img->allocation.y + 6.5, 6, 0, 2*3.14159); + cairo_arc(cr, width - 4.5, allocation.y + 6.5, 6, 0, 2*3.14159); cairo_set_source_rgb (cr, 0.2, 0.54, 0.9); cairo_fill_preserve (cr); cairo_set_source_rgb (cr, 0.1, 0.37, 0.6); @@ -339,7 +342,7 @@ power_manager_button_device_icon_expose (GtkWidget *img, GdkEventExpose *event, layout = gtk_widget_create_pango_layout (GTK_WIDGET (img), "?"); pango_layout_set_font_description (layout, pango_font_description_from_string ("Sans Bold 9")); pango_layout_get_pixel_extents (layout, &ink_extent, &log_extent); - cairo_move_to (cr, (width - 5.5) - (log_extent.width / 2), (img->allocation.y + 5.5) - (log_extent.height / 2)); + cairo_move_to (cr, (width - 5.5) - (log_extent.width / 2), (allocation.y + 5.5) - (log_extent.height / 2)); cairo_set_source_rgb (cr, 1.0, 1.0, 1.0); pango_cairo_show_layout (cr, layout); } diff --git a/settings/xfpm-settings-main.c b/settings/xfpm-settings-main.c index c27208ac..6a1d2441 100644 --- a/settings/xfpm-settings-main.c +++ b/settings/xfpm-settings-main.c @@ -27,6 +27,7 @@ #include <string.h> #include <gtk/gtk.h> +#include <gtk/gtkx.h> #include <glib.h> #include <libxfce4util/libxfce4util.h> @@ -69,7 +70,7 @@ int main (int argc, char **argv) gboolean start_xfpm_if_not_running; gboolean debug = FALSE; - GdkNativeWindow socket_id = 0; + Window socket_id = 0; gchar *device_id = NULL; XfconfChannel *channel; diff --git a/settings/xfpm-settings.c b/settings/xfpm-settings.c index aab02e0e..4ff41786 100644 --- a/settings/xfpm-settings.c +++ b/settings/xfpm-settings.c @@ -2274,7 +2274,7 @@ xfpm_settings_dialog_new (XfconfChannel *channel, gboolean auth_suspend, gboolean has_battery, gboolean has_lcd_brightness, gboolean has_lid, gboolean has_sleep_button, gboolean has_hibernate_button, gboolean has_power_button, - GdkNativeWindow id, gchar *device_id) + Window id, gchar *device_id) { GtkWidget *plug; GtkWidget *dialog; diff --git a/settings/xfpm-settings.h b/settings/xfpm-settings.h index b5a6cb47..2b54c16a 100644 --- a/settings/xfpm-settings.h +++ b/settings/xfpm-settings.h @@ -21,6 +21,7 @@ #ifndef __XFPM_SETTINGS_H #define __XFPM_SETTINGS_H +#include <gtk/gtkx.h> GtkWidget *xfpm_settings_dialog_new (XfconfChannel *channel, gboolean auth_suspend, @@ -34,7 +35,7 @@ GtkWidget *xfpm_settings_dialog_new (XfconfChannel *channel, gboolean has_sleep_button, gboolean has_hibernate_button, gboolean has_power_button, - GdkNativeWindow id, + Window id, gchar *device_id); #endif /* __XFPM_SETTINGS_H */ diff --git a/src/xfpm-manager.c b/src/xfpm-manager.c index 755a50cb..5b0f4dc2 100644 --- a/src/xfpm-manager.c +++ b/src/xfpm-manager.c @@ -719,7 +719,9 @@ xfpm_manager_tray_update_tooltip (PowerManagerButton *button, XfpmManager *manag if (power_manager_button_get_tooltip (POWER_MANAGER_BUTTON(manager->priv->power_button)) == NULL) return; +G_GNUC_BEGIN_IGNORE_DEPRECATIONS gtk_status_icon_set_tooltip_markup (manager->priv->adapter_icon, power_manager_button_get_tooltip (POWER_MANAGER_BUTTON(manager->priv->power_button))); +G_GNUC_END_IGNORE_DEPRECATIONS } static void @@ -730,7 +732,9 @@ xfpm_manager_tray_update_icon (PowerManagerButton *button, XfpmManager *manager) XFPM_DEBUG ("updating icon"); +G_GNUC_BEGIN_IGNORE_DEPRECATIONS gtk_status_icon_set_from_icon_name (manager->priv->adapter_icon, power_manager_button_get_icon_name (POWER_MANAGER_BUTTON(manager->priv->power_button))); +G_GNUC_END_IGNORE_DEPRECATIONS } static void @@ -747,8 +751,10 @@ xfpm_manager_show_tray_icon (XfpmManager *manager) return; } +G_GNUC_BEGIN_IGNORE_DEPRECATIONS manager->priv->adapter_icon = gtk_status_icon_new (); manager->priv->power_button = power_manager_button_new (); +G_GNUC_END_IGNORE_DEPRECATIONS XFPM_DEBUG ("Showing tray icon"); @@ -763,7 +769,9 @@ xfpm_manager_show_tray_icon (XfpmManager *manager) g_signal_connect (G_OBJECT(manager->priv->power_button), "tooltip-changed", G_CALLBACK(xfpm_manager_tray_update_tooltip), manager); g_signal_connect (G_OBJECT(manager->priv->power_button), "icon-name-changed", G_CALLBACK(xfpm_manager_tray_update_icon), manager); +G_GNUC_BEGIN_IGNORE_DEPRECATIONS gtk_status_icon_set_visible (manager->priv->adapter_icon, TRUE); +G_GNUC_END_IGNORE_DEPRECATIONS g_signal_connect (manager->priv->adapter_icon, "popup-menu", G_CALLBACK (xfpm_manager_show_tray_menu), manager); } @@ -774,7 +782,9 @@ xfpm_manager_hide_tray_icon (XfpmManager *manager) if (manager->priv->adapter_icon == NULL) return; +G_GNUC_BEGIN_IGNORE_DEPRECATIONS gtk_status_icon_set_visible (manager->priv->adapter_icon, FALSE); +G_GNUC_END_IGNORE_DEPRECATIONS /* disconnect from all the signals */ g_signal_handlers_disconnect_by_func (G_OBJECT(manager->priv->power_button), G_CALLBACK(xfpm_manager_tray_update_tooltip), manager); -- GitLab