Updating branch refs/heads/andrzejr/deskbar-github to a13e5d342d24c20b305a675af99e419eaecc5a0c (commit) from 460dac040e62ddbd2f345ada96fd6b7686045ea5 (commit)
commit a13e5d342d24c20b305a675af99e419eaecc5a0c Author: Andrzej <ndrwr...@gmail.com> Date: Mon Nov 21 23:24:53 2011 +0900 pager: fixed aspect ratio of the wnck applet in deskbar mode. wnck assumes that a horizontal applet is always used in a horizontal panel, which is not the case in the deskbar mode. Added a workaround for it. plugins/pager/pager.c | 65 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 65 insertions(+), 0 deletions(-) diff --git a/plugins/pager/pager.c b/plugins/pager/pager.c index c92d91d..91fa2b2 100644 --- a/plugins/pager/pager.c +++ b/plugins/pager/pager.c @@ -64,6 +64,10 @@ static void pager_plugin_deskbar_mode_changed (XfcePanelPlugin *pa static void pager_plugin_configure_workspace_settings (GtkWidget *button); static void pager_plugin_configure_plugin (XfcePanelPlugin *panel_plugin); static void pager_plugin_screen_layout_changed (PagerPlugin *plugin); +static void pager_plugin_size_request (GtkWidget *widget, + GtkRequisition *requisition); +static void pager_plugin_size_allocate (GtkWidget *widget, + GtkAllocation *allocation); @@ -84,6 +88,8 @@ struct _PagerPlugin guint scrolling : 1; guint miniature_view : 1; gint rows; + + double aspect; }; enum @@ -115,6 +121,8 @@ pager_plugin_class_init (PagerPluginClass *klass) widget_class = GTK_WIDGET_CLASS (klass); widget_class->scroll_event = pager_plugin_scroll_event; + widget_class->size_request = pager_plugin_size_request; + widget_class->size_allocate = pager_plugin_size_allocate; plugin_class = XFCE_PANEL_PLUGIN_CLASS (klass); plugin_class->construct = pager_plugin_construct; @@ -156,6 +164,7 @@ pager_plugin_init (PagerPlugin *plugin) plugin->miniature_view = TRUE; plugin->rows = 1; plugin->pager = NULL; + plugin->aspect = 1.0; } @@ -387,6 +396,62 @@ pager_plugin_free_data (XfcePanelPlugin *panel_plugin) +static void +pager_plugin_size_request (GtkWidget *widget, + GtkRequisition *requisition) +{ + PagerPlugin *plugin; + XfcePanelPlugin *panel_plugin; + gboolean deskbar_mode; + GtkOrientation orientation; + gint size; + + plugin = XFCE_PAGER_PLUGIN (widget); + panel_plugin = XFCE_PANEL_PLUGIN (widget); + deskbar_mode = xfce_panel_plugin_get_deskbar_mode (panel_plugin); + orientation = xfce_panel_plugin_get_orientation (panel_plugin); + size = xfce_panel_plugin_get_size (panel_plugin); + + gtk_widget_size_request (plugin->pager, requisition); + if (plugin->miniature_view && deskbar_mode && orientation == GTK_ORIENTATION_VERTICAL) + { + /* Working around limitations of the wnck applet. */ + /* Wnck assumes that a horizontal applet is always used in a horizontal panel. */ + if (requisition->width && requisition->width > size) + plugin->aspect = (double) requisition->height / (double) requisition->width; + } +} + + + +static void +pager_plugin_size_allocate (GtkWidget *widget, + GtkAllocation *allocation) +{ + PagerPlugin *plugin; + XfcePanelPlugin *panel_plugin; + gboolean deskbar_mode; + GtkOrientation orientation; + gint size; + + plugin = XFCE_PAGER_PLUGIN (widget); + panel_plugin = XFCE_PANEL_PLUGIN (widget); + deskbar_mode = xfce_panel_plugin_get_deskbar_mode (panel_plugin); + orientation = xfce_panel_plugin_get_orientation (panel_plugin); + size = xfce_panel_plugin_get_size (panel_plugin); + + if (plugin->miniature_view && deskbar_mode && orientation == GTK_ORIENTATION_VERTICAL) + { + /* Working around limitations of the wnck applet. */ + /* Wnck assumes that a horizontal applet is always used in a horizontal panel. */ + allocation->height = size * plugin->aspect; + allocation->width = size; + } + gtk_widget_size_allocate (plugin->pager, allocation); +} + + + static gboolean pager_plugin_size_changed (XfcePanelPlugin *panel_plugin, gint size) _______________________________________________ Xfce4-commits mailing list Xfce4-commits@xfce.org https://mail.xfce.org/mailman/listinfo/xfce4-commits