[Xfce4-commits] <xfce4-panel:andrzejr/deskbar-length-adjust> xfce-panel-plugin: added a virtual method xfce_panel_plugin_lenght_adjust

Andrzej noreply at xfce.org
Mon Dec 19 18:18:03 CET 2011


Updating branch refs/heads/andrzejr/deskbar-length-adjust
         to f284ad33fe00ed3d9cdb5b14040e7d282b13ee38 (commit)
       from ef2cb2d7b5e5d3da18574387e2612ede2df67a72 (commit)

commit f284ad33fe00ed3d9cdb5b14040e7d282b13ee38
Author: Andrzej <ndrwrdck at gmail.com>
Date:   Tue Dec 20 02:05:39 2011 +0900

    xfce-panel-plugin: added a virtual method xfce_panel_plugin_lenght_adjust
    
    This method is to be used for asking shrinking plugins to adjust their length based on the proposed length of the allocation area. This can be used for example to limit their minimum sizes or implement more complex sizing policies (such as non-continuous resizing during shrinking). A default noop implementation is provided in the xfce-panel-plugin so the change should be transparent to other plugins.
    
    TODO add support for the same functionality in the external plugins.

 libxfce4panel/xfce-panel-plugin.c |   39 +++++++++++++++++++++++++++++++++++++
 libxfce4panel/xfce-panel-plugin.h |    5 +++-
 2 files changed, 43 insertions(+), 1 deletions(-)

diff --git a/libxfce4panel/xfce-panel-plugin.c b/libxfce4panel/xfce-panel-plugin.c
index 80adb0f..acf20b0 100644
--- a/libxfce4panel/xfce-panel-plugin.c
+++ b/libxfce4panel/xfce-panel-plugin.c
@@ -113,6 +113,8 @@ static void          xfce_panel_plugin_take_window_notify     (gpointer
                                                                GObject                          *where_the_object_was);
 static void          xfce_panel_plugin_menu_item_destroy      (GtkWidget                        *item,
                                                                XfcePanelPlugin                  *plugin);
+static gint          xfce_panel_plugin_real_length_adjust     (XfcePanelPlugin                  *plugin,
+                                                               gint                              length);
 
 
 
@@ -216,6 +218,7 @@ xfce_panel_plugin_class_init (XfcePanelPluginClass *klass)
   g_type_class_add_private (klass, sizeof (XfcePanelPluginPrivate));
 
   klass->construct = NULL;
+  klass->length_adjust = xfce_panel_plugin_real_length_adjust;
 
   gobject_class = G_OBJECT_CLASS (klass);
   gobject_class->constructor = xfce_panel_plugin_constructor;
@@ -2728,5 +2731,41 @@ xfce_panel_plugin_save_location (XfcePanelPlugin *plugin,
 
 
 
+static gint
+xfce_panel_plugin_real_length_adjust (XfcePanelPlugin *plugin,
+                                      gint             length)
+{
+  return length;
+}
+
+
+
+/**
+ * xfce_panel_plugin_length_adjust:
+ * @plugin : an #XfcePanelPlugin.
+ * @length : a proposed length of the allocated area.
+ *
+ * To be called back from the itembar object for shrinking plugins.
+ * Returns an adjusted length of allocated area.
+ * Reimplement this method to implement more complex sizing policies
+ * such as minimum size, non-continuous resizing etc.
+ *
+ * Returns: an adjusted length of the allocated area.
+ *          In the default implementation the adjusted length is equal
+ *          to the proposed length.
+ *
+ * Since: 4.10
+ **/
+gint
+xfce_panel_plugin_length_adjust (XfcePanelPlugin *plugin,
+                                 gint             length)
+{
+  g_return_val_if_fail (XFCE_IS_PANEL_PLUGIN (plugin), length);
+
+  return XFCE_PANEL_PLUGIN_GET_CLASS (plugin)->length_adjust (plugin, length);
+}
+
+
+
 #define __XFCE_PANEL_PLUGIN_C__
 #include <libxfce4panel/libxfce4panel-aliasdef.c>
diff --git a/libxfce4panel/xfce-panel-plugin.h b/libxfce4panel/xfce-panel-plugin.h
index 37c3a63..715ef55 100644
--- a/libxfce4panel/xfce-panel-plugin.h
+++ b/libxfce4panel/xfce-panel-plugin.h
@@ -132,10 +132,11 @@ struct _XfcePanelPluginClass
                                        XfcePanelPluginMode mode);
   void     (*nrows_changed)           (XfcePanelPlugin    *plugin,
                                        guint               rows);
+  gint     (*length_adjust)           (XfcePanelPlugin    *plugin,
+                                       gint                length);
 
   /*< private >*/
   void (*reserved1) (void);
-  void (*reserved2) (void);
 };
 
 
@@ -243,6 +244,8 @@ gchar                *xfce_panel_plugin_lookup_rc_file      (XfcePanelPlugin   *
 
 gchar                *xfce_panel_plugin_save_location       (XfcePanelPlugin   *plugin,
                                                              gboolean           create) G_GNUC_MALLOC G_GNUC_WARN_UNUSED_RESULT;
+gint                  xfce_panel_plugin_length_adjust       (XfcePanelPlugin   *plugin,
+                                                             gint               length);
 
 G_END_DECLS
 


More information about the Xfce4-commits mailing list