[libdazzle] menu-button: allow disabling transitions
- From: Christian Hergert <chergert src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [libdazzle] menu-button: allow disabling transitions
- Date: Mon, 10 Jul 2017 01:28:24 +0000 (UTC)
commit 093c58c85605f93873a82e3ecff3af43bbb2bd8d
Author: Christian Hergert <chergert redhat com>
Date: Sun Jul 9 18:27:32 2017 -0700
menu-button: allow disabling transitions
This can be useful when the content underneath the popover is
also animating and the dual transitions are distracting or
slow due to multiple composite phases.
src/menus/dzl-menu-button-item.c | 12 +++++++++++-
src/menus/dzl-menu-button.c | 20 ++++++++++++++++++++
2 files changed, 31 insertions(+), 1 deletions(-)
---
diff --git a/src/menus/dzl-menu-button-item.c b/src/menus/dzl-menu-button-item.c
index a95cb60..e4f0692 100644
--- a/src/menus/dzl-menu-button-item.c
+++ b/src/menus/dzl-menu-button-item.c
@@ -18,6 +18,7 @@
#define G_LOG_DOMAIN "dzl-menu-button-item"
+#include "menus/dzl-menu-button.h"
#include "menus/dzl-menu-button-item.h"
#include "shortcuts/dzl-shortcut-label.h"
#include "shortcuts/dzl-shortcut-simple-label.h"
@@ -56,13 +57,22 @@ static GParamSpec *properties [N_PROPS];
static void
dzl_menu_button_item_clicked (DzlMenuButtonItem *self)
{
+ gboolean transitions_enabled = FALSE;
+ GtkWidget *button;
GtkWidget *popover;
g_assert (DZL_IS_MENU_BUTTON_ITEM (self));
+ button = dzl_gtk_widget_get_relative (GTK_WIDGET (self), DZL_TYPE_MENU_BUTTON);
+ if (button != NULL)
+ g_object_get (button, "transitions-enabled", &transitions_enabled, NULL);
+
popover = gtk_widget_get_ancestor (GTK_WIDGET (self), GTK_TYPE_POPOVER);
- if (popover != NULL)
+
+ if (transitions_enabled)
gtk_popover_popdown (GTK_POPOVER (popover));
+ else
+ gtk_widget_hide (popover);
}
static gboolean
diff --git a/src/menus/dzl-menu-button.c b/src/menus/dzl-menu-button.c
index 6912fb5..e024cb8 100644
--- a/src/menus/dzl-menu-button.c
+++ b/src/menus/dzl-menu-button.c
@@ -40,6 +40,7 @@ typedef struct
guint show_accels : 1;
guint show_icons : 1;
+ guint transitions_enabled : 1;
} DzlMenuButtonPrivate;
enum {
@@ -50,6 +51,7 @@ enum {
PROP_SHOW_ACCELS,
PROP_SHOW_ARROW,
PROP_SHOW_ICONS,
+ PROP_TRANSITIONS_ENABLED,
N_PROPS
};
@@ -221,6 +223,7 @@ dzl_menu_button_get_property (GObject *object,
GParamSpec *pspec)
{
DzlMenuButton *self = DZL_MENU_BUTTON (object);
+ DzlMenuButtonPrivate *priv = dzl_menu_button_get_instance_private (self);
switch (prop_id)
{
@@ -240,6 +243,10 @@ dzl_menu_button_get_property (GObject *object,
g_value_set_boolean (value, dzl_menu_button_get_show_icons (self));
break;
+ case PROP_TRANSITIONS_ENABLED:
+ g_value_set_boolean (value, priv->transitions_enabled);
+ break;
+
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
}
@@ -280,6 +287,10 @@ dzl_menu_button_set_property (GObject *object,
dzl_menu_button_set_show_icons (self, g_value_get_boolean (value));
break;
+ case PROP_TRANSITIONS_ENABLED:
+ priv->transitions_enabled = g_value_get_boolean (value);
+ break;
+
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
}
@@ -296,6 +307,13 @@ dzl_menu_button_class_init (DzlMenuButtonClass *klass)
widget_class->destroy = dzl_menu_button_destroy;
+ properties [PROP_TRANSITIONS_ENABLED] =
+ g_param_spec_boolean ("transitions-enabled",
+ "Transitions Enabled",
+ "If transitions should be allowed",
+ TRUE,
+ (G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+
/**
* DzlMenuButton:menu-id:
*
@@ -362,6 +380,8 @@ dzl_menu_button_init (DzlMenuButton *self)
{
DzlMenuButtonPrivate *priv = dzl_menu_button_get_instance_private (self);
+ priv->transitions_enabled = TRUE;
+
gtk_widget_init_template (GTK_WIDGET (self));
priv->menu_signals = dzl_signal_group_new (G_TYPE_MENU_MODEL);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]