Browse Source

Separator: Remove new line option.

This will be replaced by the nrows property.
upstream/xfce4-panel-4.10.1
Nick Schermer 11 years ago
parent
commit
0c15ac55ad
  1. 1
      libxfce4panel/libxfce4panel.symbols
  2. 2
      libxfce4panel/xfce-panel-plugin-provider.h
  3. 10
      panel/panel-application.c
  4. 305
      panel/panel-itembar.c
  5. 3
      plugins/separator/separator-dialog.glade
  6. 29
      plugins/separator/separator.c

1
libxfce4panel/libxfce4panel.symbols

@ -45,6 +45,7 @@ libxfce4panel_minor_version
#if IN_HEADER(__LIBXFCE4PANEL_ENUM_TYPES_H__)
#if IN_SOURCE(__LIBXFCE4PANEL_ENUM_TYPES_C__)
xfce_screen_position_get_type G_GNUC_CONST
xfce_panel_plugin_mode_get_type G_GNUC_CONST
#endif
#endif

2
libxfce4panel/xfce-panel-plugin-provider.h

@ -79,8 +79,6 @@ typedef enum /*< skip >*/
PROVIDER_SIGNAL_MOVE_PLUGIN = 0,
PROVIDER_SIGNAL_EXPAND_PLUGIN,
PROVIDER_SIGNAL_COLLAPSE_PLUGIN,
PROVIDER_SIGNAL_WRAP_PLUGIN,
PROVIDER_SIGNAL_UNWRAP_PLUGIN,
PROVIDER_SIGNAL_SMALL_PLUGIN,
PROVIDER_SIGNAL_UNSMALL_PLUGIN,
PROVIDER_SIGNAL_LOCK_PANEL,

10
panel/panel-application.c

@ -633,16 +633,6 @@ panel_application_plugin_provider_signal (XfcePanelPluginProvider *provide
NULL);
break;
case PROVIDER_SIGNAL_WRAP_PLUGIN:
case PROVIDER_SIGNAL_UNWRAP_PLUGIN:
itembar = gtk_bin_get_child (GTK_BIN (window));
gtk_container_child_set (GTK_CONTAINER (itembar),
GTK_WIDGET (provider),
"wrap",
provider_signal == PROVIDER_SIGNAL_WRAP_PLUGIN,
NULL);
break;
case PROVIDER_SIGNAL_SMALL_PLUGIN:
case PROVIDER_SIGNAL_UNSMALL_PLUGIN:
itembar = gtk_bin_get_child (GTK_BIN (window));

305
panel/panel-itembar.c

@ -101,7 +101,6 @@ struct _PanelItembarChild
GtkWidget *widget;
guint expand : 1;
guint shrink : 1;
guint wrap : 1;
guint small : 1;
};
@ -118,7 +117,6 @@ enum
CHILD_PROP_0,
CHILD_PROP_EXPAND,
CHILD_PROP_SHRINK,
CHILD_PROP_WRAP,
CHILD_PROP_SMALL
};
@ -207,13 +205,6 @@ panel_itembar_class_init (PanelItembarClass *klass)
FALSE,
EXO_PARAM_READWRITE));
gtk_container_class_install_child_property (gtkcontainer_class,
CHILD_PROP_WRAP,
g_param_spec_boolean ("wrap",
NULL, NULL,
FALSE,
EXO_PARAM_READWRITE));
gtk_container_class_install_child_property (gtkcontainer_class,
CHILD_PROP_SMALL,
g_param_spec_boolean ("small",
@ -333,30 +324,10 @@ panel_itembar_size_request (GtkWidget *widget,
gtk_widget_size_request (child->widget, &child_requisition);
if (G_LIKELY (!child->wrap))
{
if (HORIZONTAL (itembar))
row_length += child_requisition.width;
else
row_length += child_requisition.height;
}
if (HORIZONTAL (itembar))
row_length += child_requisition.width;
else
{
/* add to size for new wrap element */
if (HORIZONTAL (itembar))
{
requisition->height += itembar->size;
requisition->width = MAX (requisition->width, row_length);
}
else
{
requisition->width += itembar->size;
requisition->height = MAX (requisition->height, row_length);
}
/* reset length for new row */
row_length = 0;
}
row_length += child_requisition.height;
}
else
{
@ -384,11 +355,10 @@ panel_itembar_size_allocate (GtkWidget *widget,
GtkAllocation *allocation)
{
PanelItembar *itembar = PANEL_ITEMBAR (widget);
GSList *li, *lp;
GSList *lp;
PanelItembarChild *child;
GtkRequisition child_req;
GtkAllocation child_alloc;
guint row;
gint widget_length, border_width;
gint expand_length_avail, expand_length_req;
gint shrink_length_avail, shrink_length_req;
@ -407,176 +377,136 @@ panel_itembar_size_allocate (GtkWidget *widget,
else
widget_length = allocation->height - 2 * border_width;
/* loop for wrap items */
for (row = 0, li = itembar->children; li != NULL; li = g_slist_next (li), row++)
{
expand_length_avail = widget_length;
expand_length_req = 0;
shrink_length_avail = 0;
shrink_length_req = 0;
expand_length_avail = widget_length;
expand_length_req = 0;
shrink_length_avail = 0;
shrink_length_req = 0;
/* get information about the expandable lengths */
for (lp = li; lp != NULL; lp = g_slist_next (lp))
/* get information about the expandable lengths */
for (lp = itembar->children; lp != NULL; lp = g_slist_next (lp))
{
child = lp->data;
if (G_LIKELY (child != NULL))
{
child = lp->data;
if (G_LIKELY (child != NULL))
if (!GTK_WIDGET_VISIBLE (child->widget))
continue;
gtk_widget_get_child_requisition (child->widget, &child_req);
length = HORIZONTAL (itembar) ? child_req.width : child_req.height;
if (G_UNLIKELY (child->expand))
{
if (!GTK_WIDGET_VISIBLE (child->widget))
continue;
/* continue allocating until we hit a wrap child */
if (G_UNLIKELY (child->wrap))
break;
gtk_widget_get_child_requisition (child->widget, &child_req);
length = HORIZONTAL (itembar) ? child_req.width : child_req.height;
if (G_UNLIKELY (child->expand))
{
expand_length_req += length;
}
else
{
expand_length_avail -= length;
if (child->shrink)
shrink_length_avail += length;
}
expand_length_req += length;
}
else
{
expand_length_avail -= itembar->size;
expand_length_avail -= length;
if (child->shrink)
shrink_length_avail += length;
}
}
/* set start coordinates for the items in the row*/
x = allocation->x + border_width;
y = allocation->y + border_width;
if (HORIZONTAL (itembar))
y += row * itembar->size;
else
x += row * itembar->size;
/* whether the expandable items fit on this row; we use this
* as a fast-path when there are expanding items on a panel with
* not really enough length to expand (ie. items make the panel grow,
* not the length set by the user) */
expand_children_fit = expand_length_req == expand_length_avail;
if (expand_length_avail < 0)
{
/* check if there are plugins on the panel we can shrink */
if (shrink_length_avail > 0)
shrink_length_req = ABS (expand_length_avail);
expand_length_avail = 0;
expand_length_avail -= itembar->size;
}
}
/* allocate the children on this row */
for (; li != NULL; li = g_slist_next (li))
{
child = li->data;
/* set start coordinates for the items in the row*/
x = allocation->x + border_width;
y = allocation->y + border_width;
/* the highlight item for which we keep some spare space */
if (G_UNLIKELY (child == NULL))
{
itembar->highlight_x = x;
itembar->highlight_y = y;
expand_length_avail -= itembar->size;
/* whether the expandable items fit on this row; we use this
* as a fast-path when there are expanding items on a panel with
* not really enough length to expand (ie. items make the panel grow,
* not the length set by the user) */
expand_children_fit = expand_length_req == expand_length_avail;
if (HORIZONTAL (itembar))
x += itembar->size;
else
y += itembar->size;
if (expand_length_avail < 0)
{
/* check if there are plugins on the panel we can shrink */
if (shrink_length_avail > 0)
shrink_length_req = ABS (expand_length_avail);
continue;
}
expand_length_avail = 0;
}
if (!GTK_WIDGET_VISIBLE (child->widget))
continue;
/* allocate the children on this row */
for (lp = itembar->children; lp != NULL; lp = g_slist_next (lp))
{
child = lp->data;
gtk_widget_get_child_requisition (child->widget, &child_req);
/* the highlight item for which we keep some spare space */
if (G_UNLIKELY (child == NULL))
{
itembar->highlight_x = x;
itembar->highlight_y = y;
expand_length_avail -= itembar->size;
if (HORIZONTAL (itembar))
x += itembar->size;
else
y += itembar->size;
child_alloc.x = x;
child_alloc.y = y;
continue;
}
if (child->wrap)
{
/* if there is any expanding length available use it for the
* wrapping plugin to improve accessibility */
if (expand_length_avail > 0)
{
if (HORIZONTAL (itembar))
{
child_alloc.height = itembar->size;
child_alloc.width = expand_length_avail;
}
else
{
child_alloc.width = itembar->size;
child_alloc.height = expand_length_avail;
}
}
else
{
/* hide it */
child_alloc.width = child_alloc.height = 0;
}
gtk_widget_size_allocate (child->widget, &child_alloc);
/* stop and continue to the next row */
break;
}
if (!GTK_WIDGET_VISIBLE (child->widget))
continue;
child_length = HORIZONTAL (itembar) ? child_req.width : child_req.height;
gtk_widget_get_child_requisition (child->widget, &child_req);
if (G_UNLIKELY (!expand_children_fit && child->expand))
{
/* equally share the length between the expanding plugins */
panel_assert (expand_length_req > 0);
new_length = expand_length_avail * child_length / expand_length_req;
child_alloc.x = x;
child_alloc.y = y;
expand_length_req -= child_length;
expand_length_avail -= new_length;
child_length = HORIZONTAL (itembar) ? child_req.width : child_req.height;
child_length = new_length;
}
else if (child->shrink && shrink_length_req > 0)
{
/* equally shrink all shrinking plugins */
panel_assert (shrink_length_avail > 0);
new_length = shrink_length_req * child_length / shrink_length_avail;
shrink_length_req -= new_length;
shrink_length_avail -= child_length;
/* the size we decrease can never be more then the actual length,
* if this is the case the size allocation is lacking behind,
* which happens on panel startup with a expanding panel */
if (new_length < child_length)
child_length -= new_length;
}
if (G_UNLIKELY (!expand_children_fit && child->expand))
{
/* equally share the length between the expanding plugins */
panel_assert (expand_length_req > 0);
new_length = expand_length_avail * child_length / expand_length_req;
if (child_length < 1)
child_length = 1;
expand_length_req -= child_length;
expand_length_avail -= new_length;
if (HORIZONTAL (itembar))
{
child_alloc.height = itembar->size;
child_alloc.width = child_length;
x += child_alloc.width;
}
else
{
child_alloc.width = itembar->size;
child_alloc.height = child_length;
y += child_alloc.height;
}
child_length = new_length;
}
else if (child->shrink && shrink_length_req > 0)
{
/* equally shrink all shrinking plugins */
panel_assert (shrink_length_avail > 0);
new_length = shrink_length_req * child_length / shrink_length_avail;
shrink_length_req -= new_length;
shrink_length_avail -= child_length;
/* the size we decrease can never be more then the actual length,
* if this is the case the size allocation is lacking behind,
* which happens on panel startup with a expanding panel */
if (new_length < child_length)
child_length -= new_length;
}
gtk_widget_size_allocate (child->widget, &child_alloc);
if (child_length < 1)
child_length = 1;
if (HORIZONTAL (itembar))
{
child_alloc.height = itembar->size;
child_alloc.width = child_length;
x += child_alloc.width;
}
else
{
child_alloc.width = itembar->size;
child_alloc.height = child_length;
y += child_alloc.height;
}
gtk_widget_size_allocate (child->widget, &child_alloc);
}
}
@ -706,13 +636,6 @@ panel_itembar_set_child_property (GtkContainer *container,
child->shrink = boolean;
break;
case CHILD_PROP_WRAP:
boolean = g_value_get_boolean (value);
if (child->wrap == boolean)
return;
child->wrap = boolean;
break;
case CHILD_PROP_SMALL:
boolean = g_value_get_boolean (value);
if (child->small == boolean)
@ -753,10 +676,6 @@ panel_itembar_get_child_property (GtkContainer *container,
g_value_set_boolean (value, child->shrink);
break;
case CHILD_PROP_WRAP:
g_value_set_boolean (value, child->wrap);
break;
case CHILD_PROP_SMALL:
g_value_set_boolean (value, child->small);
break;
@ -815,7 +734,6 @@ panel_itembar_insert (PanelItembar *itembar,
child = g_slice_new0 (PanelItembarChild);
child->widget = widget;
child->expand = FALSE;
child->wrap = FALSE;
itembar->children = g_slist_insert (itembar->children, child, position);
gtk_widget_set_parent (widget, GTK_WIDGET (itembar));
@ -903,7 +821,6 @@ panel_itembar_get_drop_index (PanelItembar *itembar,
GSList *li;
GtkAllocation *alloc;
guint idx;
gint row = 0;
panel_return_val_if_fail (PANEL_IS_ITEMBAR (itembar), 0);
@ -920,16 +837,6 @@ panel_itembar_get_drop_index (PanelItembar *itembar,
if (G_UNLIKELY (child == NULL))
continue;
if (child->wrap)
{
row += itembar->size;
/* always make sure the item is on the row */
if ((HORIZONTAL (itembar) && y < row)
|| (!HORIZONTAL (itembar) && x < row))
break;
}
alloc = &child->widget->allocation;
if (HORIZONTAL (itembar))

3
plugins/separator/separator-dialog.glade

@ -162,9 +162,6 @@
<row>
<col id="0" translatable="yes">Dots</col>
</row>
<row>
<col id="0" translatable="yes">New Line</col>
</row>
</data>
</object>
</interface>

29
plugins/separator/separator.c

@ -66,7 +66,7 @@ enum _SeparatorPluginStyle
SEPARATOR_PLUGIN_STYLE_SEPARATOR,
SEPARATOR_PLUGIN_STYLE_HANDLE,
SEPARATOR_PLUGIN_STYLE_DOTS,
SEPARATOR_PLUGIN_STYLE_WRAP,
SEPARATOR_PLUGIN_STYLE_WRAP, /* not used in 4.10, nrows property is now used */
/* defines */
SEPARATOR_PLUGIN_STYLE_MIN = SEPARATOR_PLUGIN_STYLE_TRANSPARENT,
@ -194,17 +194,17 @@ separator_plugin_set_property (GObject *object,
GParamSpec *pspec)
{
SeparatorPlugin *plugin = XFCE_SEPARATOR_PLUGIN (object);
gboolean wrap;
switch (prop_id)
{
case PROP_STYLE:
plugin->style = g_value_get_uint (value);
gtk_widget_queue_draw (GTK_WIDGET (object));
wrap = plugin->style == SEPARATOR_PLUGIN_STYLE_WRAP;
xfce_panel_plugin_provider_emit_signal (XFCE_PANEL_PLUGIN_PROVIDER (object),
wrap ? PROVIDER_SIGNAL_WRAP_PLUGIN : PROVIDER_SIGNAL_UNWRAP_PLUGIN);
/* old property */
if (plugin->style == SEPARATOR_PLUGIN_STYLE_WRAP)
plugin->style = SEPARATOR_PLUGIN_STYLE_DEFAULT;
gtk_widget_queue_draw (GTK_WIDGET (object));
break;
case PROP_EXPAND:
@ -379,17 +379,6 @@ separator_plugin_size_changed (XfcePanelPlugin *panel_plugin,
static void
separator_plugin_configure_style_changed (GtkComboBox *combo_box,
GtkWidget *expand)
{
/* expand is not functional when the wrap function is enabled */
gtk_widget_set_sensitive (expand,
gtk_combo_box_get_active (combo_box) != SEPARATOR_PLUGIN_STYLE_WRAP);
}
static void
separator_plugin_configure_plugin (XfcePanelPlugin *panel_plugin)
{
@ -407,12 +396,10 @@ separator_plugin_configure_plugin (XfcePanelPlugin *panel_plugin)
return;
style = gtk_builder_get_object (builder, "style");
expand = gtk_builder_get_object (builder, "expand");
g_signal_connect (G_OBJECT (style), "changed",
G_CALLBACK (separator_plugin_configure_style_changed), expand);
exo_mutual_binding_new (G_OBJECT (plugin), "style",
G_OBJECT (style), "active");
expand = gtk_builder_get_object (builder, "expand");
exo_mutual_binding_new (G_OBJECT (plugin), "expand",
G_OBJECT (expand), "active");

Loading…
Cancel
Save