Updating branch refs/heads/master to 9271cb32d3094754e82c2f39cfde5d0a4414e589 (commit) from 015b99d80d9f78fa1f21af707bc2bafdb02b7620 (commit)
commit 9271cb32d3094754e82c2f39cfde5d0a4414e589 Author: Jérôme Guelfucci <jero...@xfce.org> Date: Wed Aug 12 18:50:17 2009 +0200 Add a scroll feature for the panel plugin. When scrolling the panel plugin button, the region to be screenshooted is changed. This is faster than opening the preferences dialog. ChangeLog | 8 ++++ lib/screenshooter-global.h | 4 +- panel-plugin/screenshooter-plugin.c | 70 ++++++++++++++++++++++++++--------- 3 files changed, 62 insertions(+), 20 deletions(-) diff --git a/ChangeLog b/ChangeLog index b1dd942..db867e0 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,13 @@ 2009-08-12 jeromeg +Add a scroll feature for the panel plugin. + +When scrolling the panel plugin button, the region to be +screenshooted is changed. This is faster than opening the +preferences dialog. + +2009-08-12 jeromeg + First implementation of a nice rubber banding. When the screen is composited, use a nicer area selection mecanism. Draw diff --git a/lib/screenshooter-global.h b/lib/screenshooter-global.h index 21bea82..8fb9996 100644 --- a/lib/screenshooter-global.h +++ b/lib/screenshooter-global.h @@ -58,9 +58,9 @@ ScreenshotData; -/* Screenshot Modes */ +/* Screenshot regions */ enum { - MODE_0, + REGION_0, FULLSCREEN, ACTIVE_WINDOW, SELECT, diff --git a/panel-plugin/screenshooter-plugin.c b/panel-plugin/screenshooter-plugin.c index b554906..076e16a 100644 --- a/panel-plugin/screenshooter-plugin.c +++ b/panel-plugin/screenshooter-plugin.c @@ -90,6 +90,11 @@ static void cb_button_clicked (GtkWidget *button, PluginData *pd); +static gboolean +cb_button_scrolled (GtkWidget *widget, + GdkEventScroll *event, + PluginData *pd); + static void cb_style_set (XfcePanelPlugin *plugin, gpointer ignored, @@ -171,6 +176,37 @@ cb_button_clicked (GtkWidget *button, PluginData *pd) +static gboolean cb_button_scrolled (GtkWidget *widget, + GdkEventScroll *event, + PluginData *pd) +{ + switch (event->direction) + { + case GDK_SCROLL_UP: + case GDK_SCROLL_RIGHT: + pd->sd->region += 1; + if (pd->sd->region > SELECT) + pd->sd->region = FULLSCREEN; + set_panel_button_tooltip (pd); + gtk_widget_trigger_tooltip_query (pd->button); + return TRUE; + case GDK_SCROLL_DOWN: + case GDK_SCROLL_LEFT: + pd->sd->region -= 1; + if (pd->sd->region == REGION_0) + pd->sd->region = SELECT; + set_panel_button_tooltip (pd); + gtk_widget_trigger_tooltip_query (pd->button); + return TRUE; + default: + return FALSE; + } + + return FALSE; +} + + + /* Set the style of the panel plugin. plugin: a XfcePanelPlugin (a screenshooter one). pd: the associated PluginData. @@ -325,28 +361,26 @@ screenshooter_plugin_construct (XfcePanelPlugin *plugin) set_panel_button_tooltip (pd); TRACE ("Add the button to the panel"); - gtk_widget_show_all (pd->button); - gtk_container_add (GTK_CONTAINER (plugin), pd->button); - xfce_panel_plugin_add_action_widget (plugin, pd->button); + gtk_widget_show_all (pd->button); /* Set the callbacks */ - TRACE ("Set the clicked callback"); - g_signal_connect (pd->button, "clicked", G_CALLBACK (cb_button_clicked), pd); - - TRACE ("Set the free data callback"); - g_signal_connect (plugin, "free-data", G_CALLBACK (cb_free_data), pd); - - TRACE ("Set the size changed callback"); - g_signal_connect (plugin, "size-changed", G_CALLBACK (cb_set_size), pd); - - TRACE ("Set the style set callback"); - pd->style_id = g_signal_connect (plugin, "style-set", G_CALLBACK (cb_style_set), pd); - - TRACE ("Set the configuration menu"); + g_signal_connect (pd->button, "clicked", + (GCallback) cb_button_clicked, pd); + g_signal_connect (pd->button, "scroll-event", + (GCallback) cb_button_scrolled, pd); + g_signal_connect (plugin, "free-data", + (GCallback) cb_free_data, pd); + g_signal_connect (plugin, "size-changed", + (GCallback) cb_set_size, pd); + + pd->style_id = g_signal_connect (plugin, "style-set", + (GCallback) cb_style_set, pd); + + /* Set the configuration menu */ xfce_panel_plugin_menu_show_configure (plugin); - - g_signal_connect (plugin, "configure-plugin", G_CALLBACK (cb_properties_dialog), pd); + g_signal_connect (plugin, "configure-plugin", + (GCallback) cb_properties_dialog, pd); } XFCE_PANEL_PLUGIN_REGISTER_EXTERNAL (screenshooter_plugin_construct);
_______________________________________________ Xfce4-commits mailing list Xfce4-commits@xfce.org http://foo-projects.org/mailman/listinfo/xfce4-commits