This is an automated email from the git hooks/post-receive script. n i n e t l s p u s h e d a c o m m i t t o b r a n c h m a s t e r in repository panel-plugins/xfce4-xkb-plugin.
commit b6716e83da0e98b63ea1203f7ef766e1c498e45c Author: Viktor Odintsev <zakh...@gmail.com> Date: Wed Mar 15 15:10:13 2017 +0300 Port to GTK 3 --- .gitignore | 5 +- configure.in.in => configure.ac.in | 19 ++--- panel-plugin/Makefile.am | 95 ++++++++++++---------- panel-plugin/xfce4-xkb-plugin.c | 50 +++++++----- panel-plugin/xfce4-xkb-plugin.h | 15 ---- panel-plugin/xkb-cairo.c | 52 +++--------- panel-plugin/xkb-cairo.h | 11 +-- panel-plugin/xkb-callbacks.c | 80 +++++------------- panel-plugin/xkb-callbacks.h | 16 +--- panel-plugin/xkb-config.c | 3 +- panel-plugin/xkb-settings-dialog.c | 41 ++++++---- panel-plugin/xkb-util.c | 1 - .../{xkb-plugin.desktop.in.in => xkb.desktop.in} | 4 +- po/POTFILES.in | 3 +- 14 files changed, 158 insertions(+), 237 deletions(-) diff --git a/.gitignore b/.gitignore index eb0ea70..238f737 100644 --- a/.gitignore +++ b/.gitignore @@ -6,7 +6,10 @@ po/*.gmo *.o *.tar.* config.* -configure* m4/*.m4 *.m4 *.in +/configure* +!/configure.ac.in +!/po/POTFILES.in +!/panel-plugin/xkb.desktop.in diff --git a/configure.in.in b/configure.ac.in similarity index 78% rename from configure.in.in rename to configure.ac.in index c35d72d..933982d 100644 --- a/configure.in.in +++ b/configure.ac.in @@ -34,6 +34,7 @@ dnl *************************** AM_INIT_AUTOMAKE([1.8 dist-bzip2 tar-ustar]) AM_CONFIG_HEADER([config.h]) AM_MAINTAINER_MODE() +m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])]) dnl ******************************* dnl *** Check for UNIX variants *** @@ -70,16 +71,14 @@ XDT_I18N([@LINGUAS@]) dnl *********************************** dnl *** Check for required packages *** dnl *********************************** -XDT_CHECK_PACKAGE([GTK], [gtk+-2.0], [2.6.0]) -XDT_CHECK_PACKAGE([LIBXFCE4UTIL], [libxfce4util-1.0], [4.8.0]) -XDT_CHECK_PACKAGE([LIBXFCE4UI], [libxfce4ui-1], [4.8.0]) -XDT_CHECK_PACKAGE([LIBXFCE4PANEL], [libxfce4panel-1.0], [4.8.0]) -XDT_CHECK_PACKAGE([LIBXKLAVIER], [libxklavier], [5.0]) -XDT_CHECK_PACKAGE([LIBRSVG], [librsvg-2.0], [2.18]) -dnl check librsvg version to see if including headers other than rsvg.h is deprecated -XDT_CHECK_OPTIONAL_PACKAGE([LIBRSVG_2_36_2], [librsvg-2.0], [2.36.2], [librsvg_2.36.2], [deprecated includes of librsvg header files (always leave enabled)], yes) -XDT_CHECK_PACKAGE([LIBWNCK], [libwnck-1.0], [2.12]) -XDT_CHECK_PACKAGE([GARCON], [garcon-1], [0.1.5]) +XDT_CHECK_PACKAGE([GTK], [gtk+-3.0], [3.20.0]) +XDT_CHECK_PACKAGE([LIBXFCE4PANEL], [libxfce4panel-2.0], [4.12.0]) +XDT_CHECK_PACKAGE([LIBXFCE4UTIL], [libxfce4util-1.0], [4.12.0]) +XDT_CHECK_PACKAGE([LIBXFCE4UI], [libxfce4ui-2], [4.12.0]) +XDT_CHECK_PACKAGE([LIBXKLAVIER], [libxklavier], [5.4]) +XDT_CHECK_PACKAGE([LIBRSVG], [librsvg-2.0], [2.40]) +XDT_CHECK_PACKAGE([LIBWNCK], [libwnck-3.0], [3.14]) +XDT_CHECK_PACKAGE([GARCON], [garcon-1], [0.4.0]) dnl *********************************** dnl *** Check for debugging support *** diff --git a/panel-plugin/Makefile.am b/panel-plugin/Makefile.am index a4bb4c3..dc33005 100644 --- a/panel-plugin/Makefile.am +++ b/panel-plugin/Makefile.am @@ -1,65 +1,72 @@ # $Id$ -plugindir = $(libexecdir)/xfce4/panel-plugins +plugindir = \ + $(libdir)/xfce4/panel/plugins -plugin_PROGRAMS = xfce4-xkb-plugin +plugin_LTLIBRARIES = \ + libxkb.la -xfce4_xkb_plugin_SOURCES = \ - xfce4-xkb-plugin.h \ - xfce4-xkb-plugin-private.h \ - xfce4-xkb-plugin.c \ - xkb-settings-dialog.h \ - xkb-settings-dialog.c \ - xkb-config.h \ - xkb-config.c \ - xkb-util.h \ - xkb-util.c \ - xkb-cairo.h \ - xkb-cairo.c \ - xkb-callbacks.h \ +libxkb_la_SOURCES = \ + xfce4-xkb-plugin.h \ + xfce4-xkb-plugin-private.h \ + xfce4-xkb-plugin.c \ + xkb-settings-dialog.h \ + xkb-settings-dialog.c \ + xkb-config.h \ + xkb-config.c \ + xkb-util.h \ + xkb-util.c \ + xkb-cairo.h \ + xkb-cairo.c \ + xkb-callbacks.h \ xkb-callbacks.c +libxkb_la_CPPFLAGS = \ + -I$(top_srcdir) \ + $(PLATFORM_CPPFLAGS) -xfce4_xkb_plugin_CFLAGS = \ - @LIBXFCE4PANEL_CFLAGS@ \ - @GTK_CFLAGS@ \ - @LIBXFCE4UI_CFLAGS@ \ - @LIBXFCE4UTIL_CFLAGS@ \ - @LIBXKLAVIER_CFLAGS@ \ - @LIBRSVG_CFLAGS@ \ - @LIBWNCK_CFLAGS@ \ - @GARCON_CFLAGS@ \ - -DPACKAGE_LOCALE_DIR=\"$(localedir)\" \ - -DFLAGSDIR=\"$(datadir)/xfce4/xkb/flags\" \ +libxkb_la_CFLAGS = \ + $(GTK_CFLAGS) \ + $(LIBXFCE4PANEL_CFLAGS) \ + $(LIBXFCE4UTIL_CFLAGS) \ + $(LIBXFCE4UI_CFLAGS) \ + $(LIBXKLAVIER_CFLAGS) \ + $(LIBRSVG_CFLAGS) \ + $(LIBWNCK_CFLAGS) \ + $(GARCON_CFLAGS) \ + $(PLATFORM_CFLAGS) \ + -DPACKAGE_LOCALE_DIR=\"$(localedir)\" \ + -DFLAGSDIR=\"$(datadir)/xfce4/xkb/flags\" \ -DWNCK_I_KNOW_THIS_IS_UNSTABLE +libxkb_la_LDFLAGS = \ + -avoid-version \ + -module \ + -no-undefined \ + $(PLATFORM_LDFLAGS) -xfce4_xkb_plugin_LDADD = \ - @LIBXFCE4PANEL_LIBS@ \ - @GTK_LIBS@ \ - @LIBXFCE4UI_LIBS@ \ - @LIBXFCE4UTIL_LIBS@ \ - @LIBXKLAVIER_LIBS@ \ - @LIBWNCK_LIBS@ \ - @GARCON_LIBS@ \ - @LIBRSVG_LIBS@ +libxkb_la_LIBADD = \ + $(GTK_LIBS) \ + $(LIBXFCE4PANEL_LIBS) \ + $(LIBXFCE4UTIL_LIBS) \ + $(LIBXFCE4UI_LIBS) \ + $(LIBXKLAVIER_LIBS) \ + $(LIBWNCK_LIBS) \ + $(GARCON_LIBS) \ + $(LIBRSVG_LIBS) # # Desktop file # -desktopdir = $(datadir)/xfce4/panel-plugins -desktop_in_in_files = xkb-plugin.desktop.in.in -desktop_in_files = $(desktop_in_in_files:.desktop.in.in=.desktop.in) -%.desktop.in: %.desktop.in.in - sed -e "s,\@libexecdir\@,$(libexecdir),g" < $< > $@ +desktopdir = $(datadir)/xfce4/panel/plugins +desktop_in_files = xkb.desktop.in desktop_DATA = $(desktop_in_files:.desktop.in=.desktop) @INTLTOOL_DESKTOP_RULE@ -EXTRA_DIST = \ - $(desktop_in_in_files) +EXTRA_DIST = \ + $(desktop_in_files) -CLEANFILES = \ - $(desktop_in_files) \ +CLEANFILES = \ $(desktop_DATA) # vi:set ts=8 sw=8 noet ai nocindent syntax=automake: diff --git a/panel-plugin/xfce4-xkb-plugin.c b/panel-plugin/xfce4-xkb-plugin.c index 2d24f4e..0486ab1 100644 --- a/panel-plugin/xfce4-xkb-plugin.c +++ b/panel-plugin/xfce4-xkb-plugin.c @@ -91,7 +91,7 @@ static void xfce_xkb_configure_layout (GtkWidget *widget, * Implementation * * ================================================================== */ -XFCE_PANEL_PLUGIN_REGISTER_EXTERNAL (xfce_xkb_construct); +XFCE_PANEL_PLUGIN_REGISTER (xfce_xkb_construct); static void xfce_xkb_construct (XfcePanelPlugin *plugin) @@ -201,6 +201,7 @@ xkb_new (XfcePanelPlugin *plugin) t_xkb *xkb; gchar *filename; WnckScreen *wnck_screen; + GtkCssProvider *css_provider; xkb = panel_slice_new0 (t_xkb); xkb->plugin = plugin; @@ -216,7 +217,14 @@ xkb_new (XfcePanelPlugin *plugin) gtk_button_set_relief (GTK_BUTTON (xkb->btn), GTK_RELIEF_NONE); gtk_container_add (GTK_CONTAINER (xkb->plugin), xkb->btn); xfce_panel_plugin_add_action_widget (xkb->plugin, xkb->btn); - xkb->button_state = GTK_STATE_NORMAL; + gtk_widget_add_events (xkb->btn, GDK_SCROLL_MASK); + + /* remove padding inside button */ + css_provider = gtk_css_provider_new (); + gtk_css_provider_load_from_data (css_provider, ".xfce4-panel button {padding: 0;}", -1, NULL); + gtk_style_context_add_provider (GTK_STYLE_CONTEXT (gtk_widget_get_style_context (GTK_WIDGET (xkb->btn))), + GTK_STYLE_PROVIDER (css_provider), GTK_STYLE_PROVIDER_PRIORITY_APPLICATION); + g_object_unref (css_provider); gtk_widget_show (xkb->btn); g_signal_connect (xkb->btn, "clicked", G_CALLBACK (xkb_plugin_button_clicked), xkb); @@ -227,17 +235,10 @@ xkb_new (XfcePanelPlugin *plugin) g_signal_connect (xkb->btn, "query-tooltip", G_CALLBACK (xkb_plugin_set_tooltip), xkb); - g_signal_connect (G_OBJECT (xkb->btn), "enter-notify-event", - G_CALLBACK (xkb_plugin_button_entered), xkb); - g_signal_connect (G_OBJECT (xkb->btn), "leave-notify-event", - G_CALLBACK (xkb_plugin_button_left), xkb); - g_signal_connect (G_OBJECT (xkb->btn), "size-allocate", - G_CALLBACK (xkb_plugin_button_size_allocated), xkb); - xkb->layout_image = gtk_image_new (); gtk_container_add (GTK_CONTAINER (xkb->btn), xkb->layout_image); - g_signal_connect (G_OBJECT (xkb->layout_image), "expose-event", - G_CALLBACK (xkb_plugin_layout_image_exposed), xkb); + g_signal_connect (G_OBJECT (xkb->layout_image), "draw", + G_CALLBACK (xkb_plugin_layout_image_draw), xkb); gtk_widget_show (GTK_WIDGET (xkb->layout_image)); if (xkb_config_initialize (xkb->group_policy, xkb_state_changed, xkb)) @@ -354,6 +355,7 @@ static gboolean xkb_calculate_sizes (t_xkb *xkb, GtkOrientation orientation, gint panel_size) { guint nrows; + gint hsize, vsize; nrows = xfce_panel_plugin_get_nrows (xkb->plugin); panel_size /= nrows; @@ -362,36 +364,37 @@ xkb_calculate_sizes (t_xkb *xkb, GtkOrientation orientation, gint panel_size) switch (orientation) { case GTK_ORIENTATION_HORIZONTAL: - xkb->vsize = panel_size; + vsize = panel_size; if (nrows > 1) { - xkb->hsize = xkb->vsize; + hsize = panel_size; } else { - xkb->hsize = (int) (1.33 * panel_size); + hsize = (int) (1.33 * panel_size); } - gtk_widget_set_size_request (xkb->btn, xkb->hsize, xkb->vsize); + gtk_widget_set_size_request (xkb->btn, hsize, vsize); break; case GTK_ORIENTATION_VERTICAL: - xkb->hsize = panel_size; + hsize = panel_size; if (nrows > 1) { - xkb->vsize = xkb->hsize; + vsize = panel_size; } else { - xkb->vsize = (int) (0.75 * panel_size); + vsize = (int) (0.75 * panel_size); } - if (xkb->vsize < 10) xkb->vsize = 10; - gtk_widget_set_size_request (xkb->btn, xkb->hsize, xkb->vsize); + if (vsize < 10) vsize = 10; + + gtk_widget_set_size_request (xkb->btn, hsize, vsize); break; default: break; } - DBG ("size requested: h/v (%p: %d/%d)", xkb, xkb->hsize, xkb->vsize); + DBG ("size requested: h/v (%p: %d/%d)", xkb, hsize, vsize); xkb_refresh_gui (xkb); return TRUE; @@ -470,10 +473,13 @@ void xkb_refresh_gui (t_xkb *xkb) { GdkDisplay * display; + GtkAllocation allocation; + + gtk_widget_get_allocation (GTK_WIDGET (xkb->btn), &allocation); /* Part of the image may remain visible after display type change */ gtk_widget_queue_draw_area (xkb->btn, 0, 0, - xkb->button_hsize, xkb->button_vsize); + allocation.width, allocation.height); display = gdk_display_get_default(); if (display) diff --git a/panel-plugin/xfce4-xkb-plugin.h b/panel-plugin/xfce4-xkb-plugin.h index 372a27a..2b1f778 100644 --- a/panel-plugin/xfce4-xkb-plugin.h +++ b/panel-plugin/xfce4-xkb-plugin.h @@ -53,31 +53,16 @@ typedef struct { XfcePanelPlugin *plugin; - /* options */ - gint hsize; /* plugin horizontal size */ - gint vsize; /* plugin vertical size */ - gint button_hsize; /* real allocated button size - see below */ - gint button_vsize; /* read allocated button size - see below */ - t_display_type display_type; /* display layout as image ot text */ guint display_text_scale; /* text scale % for text layout */ guint display_img_scale; /* image scale % for flag layout */ t_group_policy group_policy; /* per-app/window/global policy */ - gint button_state; /* gtk state of the button */ - /* widgets */ GtkWidget *btn; GtkWidget *layout_image; GtkWidget *popup; } t_xkb; -/* - * NOTE: The t_xkb->button_size field is due to xfce panel 4.4.1 - * prior versions, allowing a plugin to resize the whole panel. - * This should be removed after xfce 4.4.2, where this behaviour - * should not be possible. - */ - #endif diff --git a/panel-plugin/xkb-cairo.c b/panel-plugin/xkb-cairo.c index 27454f3..ce79214 100644 --- a/panel-plugin/xkb-cairo.c +++ b/panel-plugin/xkb-cairo.c @@ -27,47 +27,25 @@ #include "xkb-util.h" #include "xfce4-xkb-plugin.h" -#ifndef HAVE_LIBRSVG_2_36_2 -#include <librsvg/rsvg-cairo.h> -#endif +#include <librsvg/rsvg.h> #define XKB_PREFERRED_FONT "Courier New, Courier 10 Pitch, Monospace Bold" -#define xkb_cairo_arc_for_flag(cr, x, y, r, a1, a2) \ - xx = x; yy = y; \ - cairo_device_to_user (cr, &xx, &yy); \ - cairo_arc (cr, xx, yy, r, a1, a2); - -#define xkb_cairo_arc_for_label(cr, x, y, r, a1, a2) xx = x; \ - yy = y; \ - cairo_device_to_user (cr, &xx, &yy); \ - cairo_arc (cr, xx, yy, r, a1, a2); - -#define xkb_cairo_move_to(cr, x, y) xx = x; \ - yy = y; \ - cairo_device_to_user (cr, &xx, &yy); \ - cairo_move_to (cr, xx, yy); - - void xkb_cairo_draw_flag (cairo_t *cr, const gchar *group_name, - gint panel_size, gint actual_width, gint actual_height, - gint width, - gint height, gint variant_markers_count, guint max_variant_markers_count, guint img_scale, guint text_scale, - GdkColor fgcolor) + GdkRGBA rgba) { gchar *filename; RsvgHandle *handle; RsvgDimensionData dim; double scalex, scaley; - double xx, yy; gint i; double layoutx, layouty, img_width, img_height; double radius, diameter; @@ -85,19 +63,17 @@ xkb_cairo_draw_flag (cairo_t *cr, if (!handle) { xkb_cairo_draw_label (cr, group_name, - panel_size, actual_width, actual_height, - width, height, variant_markers_count, text_scale, - fgcolor); + rgba); return; } rsvg_handle_get_dimensions (handle, &dim); - scalex = (double) (width - 4) / dim.width; - scaley = (double) (height - 4) / dim.height; + scalex = (double) (actual_width - 4) / dim.width; + scaley = (double) (actual_height - 4) / dim.height; scalex *= img_scale / 100.0; scaley *= img_scale / 100.0; @@ -119,8 +95,8 @@ xkb_cairo_draw_flag (cairo_t *cr, cairo_restore (cr); - DBG ("actual width/height: %d/%d; w/h: %d/%d; img w/h: %.1f/%.1f; markers: %d, max markers: %d", - actual_width, actual_height, width, height, img_width, img_height, + DBG ("actual width/height: %d/%d; img w/h: %.1f/%.1f; markers: %d, max markers: %d", + actual_width, actual_height, img_width, img_height, variant_markers_count, max_variant_markers_count); DBG ("layout x/y: %.1f/%.1f", layoutx, layouty); @@ -171,7 +147,7 @@ xkb_cairo_draw_flag (cairo_t *cr, DBG ("variant center x/y: %d/%d, diameter: %.1f, spacing: %d", x, y, diameter, spacing); - xkb_cairo_arc_for_flag (cr, x, y, radius, 0, 2 * G_PI); + cairo_arc (cr, x, y, radius, 0, 2 * G_PI); cairo_set_source_rgb (cr, 0, 0, 0); cairo_fill_preserve (cr); @@ -186,19 +162,15 @@ xkb_cairo_draw_flag (cairo_t *cr, void xkb_cairo_draw_label (cairo_t *cr, const gchar *group_name, - const gint panel_size, const gint actual_width, const gint actual_height, - const gint width, - const gint height, const gint variant_markers_count, const guint text_scale, - const GdkColor fgcolor) + const GdkRGBA rgba) { gchar *normalized_group_name; gint pango_width, pango_height; double layoutx, layouty, text_width, text_height; - double xx, yy; double scalex, scaley; gint i; double radius, diameter; @@ -228,7 +200,7 @@ xkb_cairo_draw_label (cairo_t *cr, pango_layout_set_font_description (layout, desc); pango_font_description_free (desc); - gdk_cairo_set_source_color (cr, &fgcolor); + gdk_cairo_set_source_rgba (cr, &rgba); pango_layout_get_pixel_size (layout, &pango_width, &pango_height); DBG ("pango_width/height: %d/%d", pango_width, pango_height); @@ -262,8 +234,8 @@ xkb_cairo_draw_label (cairo_t *cr, DBG ("layout x/y: %.2f/%.2f scale x/y: %.2f/%.2f, radius: %.2f", layoutx, layouty, scalex, scaley, radius); - xkb_cairo_move_to (cr, layoutx, layouty); cairo_save (cr); + cairo_move_to (cr, layoutx, layouty); cairo_scale (cr, scalex, scaley); pango_cairo_show_layout (cr, layout); cairo_restore (cr); @@ -272,7 +244,7 @@ xkb_cairo_draw_label (cairo_t *cr, { cairo_set_line_cap (cr, CAIRO_LINE_CAP_ROUND); cairo_set_line_width (cr, 1); - xkb_cairo_arc_for_label (cr, + cairo_arc (cr, layoutx + text_width + 3 + (diameter * i), layouty + text_height - (text_height / 5), radius, 0, 2 * G_PI diff --git a/panel-plugin/xkb-cairo.h b/panel-plugin/xkb-cairo.h index fbac467..ec06b93 100644 --- a/panel-plugin/xkb-cairo.h +++ b/panel-plugin/xkb-cairo.h @@ -30,32 +30,25 @@ #include <glib/gprintf.h> #include <gdk/gdk.h> #include <cairo/cairo.h> -#include <librsvg/rsvg.h> #include <pango/pangocairo.h> void xkb_cairo_draw_flag (cairo_t *cr, const gchar *flag_name, - gint panel_size, gint actual_width, gint actual_height, - gint width, - gint height, gint variant_markers_count, guint max_variant_markers_count, guint img_scale, guint text_scale, - GdkColor fgcolor); + GdkRGBA rgba); void xkb_cairo_draw_label (cairo_t *cr, const gchar *group_name, - const gint panel_size, const gint actual_width, const gint actual_height, - const gint width, - const gint height, const gint variant_markers_count, const guint text_scale, - const GdkColor fgcolor); + const GdkRGBA rgba); #endif diff --git a/panel-plugin/xkb-callbacks.c b/panel-plugin/xkb-callbacks.c index 3453c62..049ba20 100644 --- a/panel-plugin/xkb-callbacks.c +++ b/panel-plugin/xkb-callbacks.c @@ -70,93 +70,51 @@ xkb_plugin_window_closed (WnckScreen *screen, xkb_config_window_closed (window_id); } -void -xkb_plugin_button_size_allocated (GtkWidget *button, - GtkAllocation *allocation, - t_xkb *xkb) -{ - xkb->button_hsize = allocation->width; - xkb->button_vsize = allocation->height; - - DBG ("size_allocated: h/v (%p: %d/%d)", - xkb, xkb->button_hsize, xkb->button_vsize); -} - gboolean -xkb_plugin_button_entered (GtkWidget *widget, - GdkEventCrossing *event, - t_xkb *xkb) -{ - xkb->button_state = GTK_STATE_PRELIGHT; - return FALSE; -} - -gboolean -xkb_plugin_button_left (GtkWidget *widget, - GdkEventCrossing *event, - t_xkb *xkb) -{ - xkb->button_state = GTK_STATE_NORMAL; - return FALSE; -} - -gboolean -xkb_plugin_layout_image_exposed (GtkWidget *widget, - GdkEventExpose *event, +xkb_plugin_layout_image_draw (GtkWidget *widget, + cairo_t *cr, t_xkb *xkb) { const gchar *group_name; - cairo_t *cr; - GtkStyle *style; - GdkColor fgcolor; - gint actual_hsize, actual_vsize, panel_size; - gint vsize; - - actual_hsize = (xkb->button_hsize > xkb->hsize) ? xkb->button_hsize : xkb->hsize; - actual_vsize = (xkb->button_vsize > xkb->vsize) ? xkb->button_vsize : xkb->vsize; - - vsize = MIN (xkb->vsize, (int) (xkb->hsize * 0.75)); - - panel_size = xfce_panel_plugin_get_size (xkb->plugin); - panel_size /= xfce_panel_plugin_get_nrows (xkb->plugin); - - style = gtk_widget_get_style (GTK_WIDGET (xkb->btn)); - fgcolor = style->fg[xkb->button_state]; + GtkAllocation allocation; + GtkStyleContext *style_ctx; + GtkStateFlags state; + GdkRGBA rgba; + gint actual_hsize, actual_vsize; + + gtk_widget_get_allocation (GTK_WIDGET (widget), &allocation); + actual_hsize = allocation.width; + actual_vsize = allocation.height; + + state = gtk_widget_get_state_flags (GTK_WIDGET (xkb->btn)); + style_ctx = gtk_widget_get_style_context (GTK_WIDGET (xkb->btn)); + gtk_style_context_get_color (style_ctx, state, &rgba); group_name = xkb_config_get_group_name (-1); - DBG ("img_exposed: actual h/v (%d/%d), xkb h/v (%d/%d), panel sz (%d)", - actual_hsize, actual_vsize, - xkb->hsize, xkb->vsize, panel_size); - - cr = gdk_cairo_create ((GTK_WIDGET (xkb->layout_image))->window); + DBG ("img_exposed: actual h/v (%d/%d)", + actual_hsize, actual_vsize); if (xkb->display_type == DISPLAY_TYPE_IMAGE) { xkb_cairo_draw_flag (cr, group_name, - panel_size, actual_hsize, actual_vsize, - xkb->hsize, vsize, xkb_config_variant_index_for_group (-1), xkb_config_get_max_group_count (), xkb->display_img_scale, xkb->display_text_scale, - fgcolor + rgba ); } else { xkb_cairo_draw_label (cr, group_name, - panel_size, actual_hsize, actual_vsize, - xkb->hsize, vsize, xkb_config_variant_index_for_group (-1), xkb->display_text_scale, - fgcolor + rgba ); } - cairo_destroy (cr); - return FALSE; } diff --git a/panel-plugin/xkb-callbacks.h b/panel-plugin/xkb-callbacks.h index a06c22f..2aea893 100644 --- a/panel-plugin/xkb-callbacks.h +++ b/panel-plugin/xkb-callbacks.h @@ -32,20 +32,8 @@ #include "xfce4-xkb-plugin.h" -gboolean xkb_plugin_layout_image_exposed (GtkWidget *widget, - GdkEventExpose *event, - t_xkb *xkb); - -gboolean xkb_plugin_button_entered (GtkWidget *widget, - GdkEventCrossing *event, - t_xkb *xkb); - -gboolean xkb_plugin_button_left (GtkWidget *widget, - GdkEventCrossing *event, - t_xkb *xkb); - -void xkb_plugin_button_size_allocated (GtkWidget *button, - GtkAllocation *allocation, +gboolean xkb_plugin_layout_image_draw (GtkWidget *widget, + cairo_t *cr, t_xkb *xkb); void xkb_plugin_active_window_changed (WnckScreen *screen, diff --git a/panel-plugin/xkb-config.c b/panel-plugin/xkb-config.c index b7234d2..b84fd09 100644 --- a/panel-plugin/xkb-config.c +++ b/panel-plugin/xkb-config.c @@ -38,6 +38,7 @@ #include <librsvg/rsvg.h> #ifndef DEBUG +#undef G_DISABLE_ASSERT #define G_DISABLE_ASSERT #endif @@ -104,7 +105,7 @@ xkb_config_initialize (t_group_policy group_policy, config->callback = callback; config->callback_data = callback_data; - config->engine = xkl_engine_get_instance (GDK_DISPLAY ()); + config->engine = xkl_engine_get_instance (gdk_x11_get_default_xdisplay ()); if (!config->engine) { diff --git a/panel-plugin/xkb-settings-dialog.c b/panel-plugin/xkb-settings-dialog.c index 2431773..53f0baa 100644 --- a/panel-plugin/xkb-settings-dialog.c +++ b/panel-plugin/xkb-settings-dialog.c @@ -118,22 +118,26 @@ xfce_xkb_configure (XfcePanelPlugin *plugin, xfce_panel_plugin_block_menu (plugin); settings_dialog = xfce_titled_dialog_new_with_buttons (_("Keyboard Layouts"), - NULL, GTK_DIALOG_NO_SEPARATOR, - GTK_STOCK_CLOSE, GTK_RESPONSE_OK, NULL); + NULL, 0, "gtk-close", GTK_RESPONSE_OK, NULL); gtk_window_set_icon_name (GTK_WINDOW (settings_dialog), "xfce4-settings"); - vbox = gtk_vbox_new (FALSE, 2); + vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 2); + gtk_box_set_homogeneous (GTK_BOX (vbox), FALSE); + gtk_widget_set_margin_start (vbox, 8); + gtk_widget_set_margin_end (vbox, 8); + gtk_widget_set_margin_top (vbox, 8); + gtk_widget_set_margin_bottom (vbox, 8); gtk_widget_show (vbox); - gtk_container_add (GTK_CONTAINER (GTK_DIALOG (settings_dialog)->vbox), vbox); + gtk_container_add (GTK_CONTAINER (gtk_dialog_get_content_area (GTK_DIALOG (settings_dialog))), vbox); /*****/ display_type_frame = xfce_gtk_frame_box_new (_("Show layout as:"), &bin); gtk_widget_show (display_type_frame); gtk_box_pack_start (GTK_BOX (vbox), display_type_frame, TRUE, TRUE, 2); - display_type_optmenu = gtk_combo_box_new_text (); - gtk_combo_box_append_text (GTK_COMBO_BOX (display_type_optmenu), _("image")); - gtk_combo_box_append_text (GTK_COMBO_BOX (display_type_optmenu), _("text")); + display_type_optmenu = gtk_combo_box_text_new (); + gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (display_type_optmenu), _("image")); + gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (display_type_optmenu), _("text")); gtk_widget_set_size_request (display_type_optmenu, 230, -1); gtk_container_add (GTK_CONTAINER (bin), display_type_optmenu); @@ -142,8 +146,7 @@ xfce_xkb_configure (XfcePanelPlugin *plugin, gtk_widget_show (display_textsize_frame); gtk_box_pack_start (GTK_BOX (vbox), display_textsize_frame, TRUE, TRUE, 2); - display_textsize_scale = gtk_hscale_new_with_range (0, 100, 1); - gtk_range_set_update_policy (GTK_RANGE (display_textsize_scale), GTK_UPDATE_CONTINUOUS); + display_textsize_scale = gtk_scale_new_with_range (GTK_ORIENTATION_HORIZONTAL, 0, 100, 1); gtk_scale_set_value_pos (GTK_SCALE (display_textsize_scale), GTK_POS_RIGHT); gtk_widget_set_size_request (display_textsize_scale, 230, -1); gtk_container_add (GTK_CONTAINER (bin), display_textsize_scale); @@ -153,8 +156,7 @@ xfce_xkb_configure (XfcePanelPlugin *plugin, gtk_widget_show (display_imgsize_frame); gtk_box_pack_start (GTK_BOX (vbox), display_imgsize_frame, TRUE, TRUE, 2); - display_imgsize_scale = gtk_hscale_new_with_range (0, 100, 1); - gtk_range_set_update_policy (GTK_RANGE (display_imgsize_scale), GTK_UPDATE_CONTINUOUS); + display_imgsize_scale = gtk_scale_new_with_range (GTK_ORIENTATION_HORIZONTAL, 0, 100, 1); gtk_scale_set_value_pos (GTK_SCALE (display_imgsize_scale), GTK_POS_RIGHT); gtk_widget_set_size_request (display_imgsize_scale, 230, -1); gtk_container_add (GTK_CONTAINER (bin), display_imgsize_scale); @@ -163,10 +165,10 @@ xfce_xkb_configure (XfcePanelPlugin *plugin, gtk_widget_show (group_policy_frame); gtk_box_pack_start (GTK_BOX (vbox), group_policy_frame, TRUE, TRUE, 2); - group_policy_combo = gtk_combo_box_new_text (); - gtk_combo_box_append_text (GTK_COMBO_BOX (group_policy_combo), _("globally")); - gtk_combo_box_append_text (GTK_COMBO_BOX (group_policy_combo), _("per window")); - gtk_combo_box_append_text (GTK_COMBO_BOX (group_policy_combo), _("per application")); + group_policy_combo = gtk_combo_box_text_new (); + gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (group_policy_combo), _("globally")); + gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (group_policy_combo), _("per window")); + gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (group_policy_combo), _("per application")); gtk_widget_set_size_request (group_policy_combo, 230, -1); gtk_container_add (GTK_CONTAINER (bin), group_policy_combo); gtk_widget_show (group_policy_combo); @@ -193,6 +195,8 @@ void xfce_xkb_about (XfcePanelPlugin *plugin) { GtkWidget *about; + GdkPixbuf *icon; + const gchar* authors[] = { "Alexander Iliev <sasoil...@mamul.org>", "Gauvain Pocentek <gauvainpocen...@gmail.com>", @@ -200,13 +204,14 @@ xfce_xkb_about (XfcePanelPlugin *plugin) NULL }; + icon = xfce_panel_pixbuf_from_source ("preferences-desktop-keyboard", NULL, 32); about = gtk_about_dialog_new (); - gtk_about_dialog_set_name (GTK_ABOUT_DIALOG (about), + gtk_about_dialog_set_program_name (GTK_ABOUT_DIALOG (about), _("Keyboard Layouts Plugin")); gtk_about_dialog_set_version (GTK_ABOUT_DIALOG (about), PACKAGE_VERSION); gtk_about_dialog_set_logo (GTK_ABOUT_DIALOG (about), - NULL); + icon); gtk_about_dialog_set_license (GTK_ABOUT_DIALOG (about), xfce_get_license_text (XFCE_LICENSE_TEXT_GPL)); gtk_about_dialog_set_authors (GTK_ABOUT_DIALOG (about), @@ -219,4 +224,6 @@ xfce_xkb_about (XfcePanelPlugin *plugin) _("Other plugins available here")); gtk_dialog_run (GTK_DIALOG (about)); gtk_widget_destroy (about); + if (icon) + g_object_unref (G_OBJECT (icon)); } diff --git a/panel-plugin/xkb-util.c b/panel-plugin/xkb-util.c index 1e64cfc..3b7d9e1 100644 --- a/panel-plugin/xkb-util.c +++ b/panel-plugin/xkb-util.c @@ -24,7 +24,6 @@ */ #include <string.h> -#include <librsvg/rsvg.h> #include <cairo/cairo.h> #include "xkb-util.h" diff --git a/panel-plugin/xkb-plugin.desktop.in.in b/panel-plugin/xkb.desktop.in similarity index 72% rename from panel-plugin/xkb-plugin.desktop.in.in rename to panel-plugin/xkb.desktop.in index ca72592..e517648 100644 --- a/panel-plugin/xkb-plugin.desktop.in.in +++ b/panel-plugin/xkb.desktop.in @@ -3,5 +3,7 @@ Type=X-XFCE-PanelPlugin _Name=Keyboard Layouts _Comment=Keyboard layouts setup and switch plugin Icon=preferences-desktop-keyboard -X-XFCE-Exec=@libexecdir@/xfce4/panel-plugins/xfce4-xkb-plugin +X-XFCE-Module=xkb X-XFCE-Unique=TRUE +X-XFCE-Internal=FALSE +X-XFCE-API=2.0 diff --git a/po/POTFILES.in b/po/POTFILES.in index da1b0ae..b658aef 100644 --- a/po/POTFILES.in +++ b/po/POTFILES.in @@ -4,4 +4,5 @@ panel-plugin/xkb-settings-dialog.c panel-plugin/xfce4-xkb-plugin.c # files added by intltool-prepare. -panel-plugin/xkb-plugin.desktop.in.in + +panel-plugin/xkb.desktop.in -- To stop receiving notification emails like this one, please contact the administrator of this repository. _______________________________________________ Xfce4-commits mailing list Xfce4-commits@xfce.org https://mail.xfce.org/mailman/listinfo/xfce4-commits