[gtk+/wip/cosimoc/menu-gadget: 2/6] menu: deprecate double-arrows style property
- From: Cosimo Cecchi <cosimoc src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk+/wip/cosimoc/menu-gadget: 2/6] menu: deprecate double-arrows style property
- Date: Mon, 21 Dec 2015 03:50:43 +0000 (UTC)
commit 66f352c22cfa263ad2b83b9116071282ebf07cd4
Author: Cosimo Cecchi <cosimoc gnome org>
Date: Sun Dec 20 18:44:10 2015 -0800
menu: deprecate double-arrows style property
It does not sound like a good idea anymore to have a style property
change the layout of the menu this drastically.
gtk/gtkmenu.c | 106 +++++++--------------------------------------------------
1 files changed, 13 insertions(+), 93 deletions(-)
---
diff --git a/gtk/gtkmenu.c b/gtk/gtkmenu.c
index 25c1b05..b718222 100644
--- a/gtk/gtkmenu.c
+++ b/gtk/gtkmenu.c
@@ -746,12 +746,19 @@ gtk_menu_class_init (GtkMenuClass *class)
-2,
GTK_PARAM_READABLE));
+ /**
+ * GtkMenu:double-arrows:
+ *
+ * When %TRUE, both arrows are shown when scrolling.
+ *
+ * Deprecated: 3.20: the value of this style property is ignored.
+ **/
gtk_widget_class_install_style_property (widget_class,
g_param_spec_boolean ("double-arrows",
P_("Double Arrows"),
P_("When scrolling, always show both
arrows."),
TRUE,
- GTK_PARAM_READABLE));
+ GTK_PARAM_READABLE|G_PARAM_DEPRECATED));
/**
* GtkMenu:arrow-placement:
@@ -3560,20 +3567,6 @@ gtk_menu_motion_notify (GtkWidget *widget,
return FALSE;
}
-static gboolean
-get_double_arrows (GtkMenu *menu)
-{
- GtkMenuPrivate *priv = menu->priv;
- gboolean double_arrows;
-
- gtk_widget_style_get (GTK_WIDGET (menu),
- "double-arrows", &double_arrows,
- NULL);
-
- return double_arrows || (priv->initially_pushed_in &&
- priv->scroll_offset != 0);
-}
-
static void
gtk_menu_scroll_by (GtkMenu *menu,
gint step)
@@ -3583,24 +3576,12 @@ gtk_menu_scroll_by (GtkMenu *menu,
GtkWidget *widget;
gint offset;
gint view_height;
- gboolean double_arrows;
widget = GTK_WIDGET (menu);
offset = priv->scroll_offset + step;
get_arrows_border (menu, &arrow_border);
- double_arrows = get_double_arrows (menu);
-
- /* If we scroll upward and the non-visible top part
- * is smaller than the scroll arrow it would be
- * pretty stupid to show the arrow and taking more
- * screen space than just scrolling to the top.
- */
- if (!double_arrows)
- if ((step < 0) && (offset < arrow_border.top))
- offset = 0;
-
/* Don't scroll over the top if we weren't before: */
if ((priv->scroll_offset >= 0) && (offset < 0))
offset = 0;
@@ -3615,11 +3596,8 @@ gtk_menu_scroll_by (GtkMenu *menu,
if (priv->scroll_offset > 0)
view_height -= arrow_border.top;
- /* When both arrows are always shown,
- * reduce view height even more.
- */
- if (double_arrows)
- view_height -= arrow_border.bottom;
+ /* Since arrows are shown, reduce view height even more */
+ view_height -= arrow_border.bottom;
if ((priv->scroll_offset + view_height <= priv->requested_height) &&
(offset + view_height > priv->requested_height))
@@ -4620,7 +4598,6 @@ gtk_menu_scroll_to (GtkMenu *menu,
gint view_width, view_height;
gint border_width;
gint menu_height;
- gboolean double_arrows;
widget = GTK_WIDGET (menu);
@@ -4632,7 +4609,6 @@ gtk_menu_scroll_to (GtkMenu *menu,
view_height = gtk_widget_get_allocated_height (widget);
get_menu_padding (widget, &padding);
- double_arrows = get_double_arrows (menu);
border_width = gtk_container_get_border_width (GTK_CONTAINER (menu));
@@ -4643,7 +4619,7 @@ gtk_menu_scroll_to (GtkMenu *menu,
x = border_width + padding.left;
y = border_width + padding.top;
- if (double_arrows && !priv->tearoff_active)
+ if (!priv->tearoff_active)
{
if (view_height < menu_height ||
(offset > 0 && priv->scroll_offset > 0) ||
@@ -4723,52 +4699,6 @@ gtk_menu_scroll_to (GtkMenu *menu,
gtk_widget_queue_draw (GTK_WIDGET (menu));
}
}
- else if (!priv->tearoff_active)
- {
- gboolean last_visible;
-
- last_visible = priv->upper_arrow_visible;
- priv->upper_arrow_visible = offset > 0;
-
- /* upper_arrow_visible may have changed, so requery the border */
- get_arrows_border (menu, &arrow_border);
- view_height -= arrow_border.top;
-
- if ((last_visible != priv->upper_arrow_visible) &&
- !priv->upper_arrow_visible)
- {
- priv->upper_arrow_prelight = FALSE;
-
- /* If we hide the upper arrow, possibly remove timeout */
- if (priv->scroll_step < 0)
- {
- gtk_menu_stop_scrolling (menu);
- gtk_widget_queue_draw (GTK_WIDGET (menu));
- }
- }
-
- last_visible = priv->lower_arrow_visible;
- priv->lower_arrow_visible = offset < menu_height - view_height;
-
- /* lower_arrow_visible may have changed, so requery the border */
- get_arrows_border (menu, &arrow_border);
- view_height -= arrow_border.bottom;
-
- if ((last_visible != priv->lower_arrow_visible) &&
- !priv->lower_arrow_visible)
- {
- priv->lower_arrow_prelight = FALSE;
-
- /* If we hide the lower arrow, possibly remove timeout */
- if (priv->scroll_step > 0)
- {
- gtk_menu_stop_scrolling (menu);
- gtk_widget_queue_draw (GTK_WIDGET (menu));
- }
- }
-
- y += arrow_border.top;
- }
gtk_css_node_set_visible (priv->top_arrow, priv->upper_arrow_visible);
gtk_css_node_set_visible (priv->bottom_arrow, priv->lower_arrow_visible);
@@ -4843,13 +4773,11 @@ gtk_menu_scroll_item_visible (GtkMenuShell *menu_shell,
if (compute_child_offset (menu, menu_item,
&child_offset, &child_height, &last_child))
{
- gboolean double_arrows;
GtkBorder padding;
y = priv->scroll_offset;
height = gdk_window_get_height (gtk_widget_get_window (widget));
- double_arrows = get_double_arrows (menu);
get_menu_padding (widget, &padding);
height -= 2 * gtk_container_get_border_width (GTK_CONTAINER (menu)) +
@@ -4875,17 +4803,9 @@ gtk_menu_scroll_item_visible (GtkMenuShell *menu_shell,
if (child_offset + child_height > y + height - arrow_height)
{
- arrow_height = 0;
- if ((!last_child && !priv->tearoff_active) || double_arrows)
- arrow_height += arrow_border.bottom;
-
+ arrow_height = arrow_border.bottom + arrow_border.top;
y = child_offset + child_height - height + arrow_height;
- if (((y > 0) && !priv->tearoff_active) || double_arrows)
- {
- /* Need upper arrow */
- arrow_height += arrow_border.top;
- y = child_offset + child_height - height + arrow_height;
- }
+
/* Ignore the enter event we might get if the pointer
* is on the menu
*/
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]