[sysprof/wip/chergert/sysprof-3] libsysprof-ui: add zoom action



commit 502e3848564976342f363347a97636348e27546e
Author: Christian Hergert <chergert redhat com>
Date:   Mon May 20 17:05:38 2019 -0700

    libsysprof-ui: add zoom action

 src/libsysprof-ui/sysprof-zoom-manager.c | 22 ++++++++++++++++++++++
 1 file changed, 22 insertions(+)
---
diff --git a/src/libsysprof-ui/sysprof-zoom-manager.c b/src/libsysprof-ui/sysprof-zoom-manager.c
index fc82bfe..31b47ba 100644
--- a/src/libsysprof-ui/sysprof-zoom-manager.c
+++ b/src/libsysprof-ui/sysprof-zoom-manager.c
@@ -94,6 +94,19 @@ sysprof_zoom_manager_zoom_one_action (GSimpleAction *action,
   sysprof_zoom_manager_reset (self);
 }
 
+static void
+sysprof_zoom_manager_zoom_action (GSimpleAction *action,
+                                  GVariant      *param,
+                                  gpointer       user_data)
+{
+  SysprofZoomManager *self = user_data;
+
+  g_assert (SYSPROF_IS_ZOOM_MANAGER (self));
+  g_assert (g_variant_is_of_type (param, G_VARIANT_TYPE_DOUBLE));
+
+  sysprof_zoom_manager_set_zoom (self, g_variant_get_double (param));
+}
+
 static void
 sysprof_zoom_manager_get_property (GObject    *object,
                                    guint       prop_id,
@@ -224,6 +237,7 @@ sysprof_zoom_manager_init (SysprofZoomManager *self)
     { "zoom-in", sysprof_zoom_manager_zoom_in_action },
     { "zoom-out", sysprof_zoom_manager_zoom_out_action },
     { "zoom-one", sysprof_zoom_manager_zoom_one_action },
+    { "zoom", NULL, "d", "1.0", sysprof_zoom_manager_zoom_action },
   };
   GAction *action;
 
@@ -399,7 +413,15 @@ sysprof_zoom_manager_set_zoom (SysprofZoomManager *self,
 
   if (zoom != self->zoom)
     {
+      g_autoptr(GVariant) state = NULL;
+
       self->zoom = zoom;
+      state = g_variant_take_ref (g_variant_new_double (zoom));
+
+      g_object_set (g_action_map_lookup_action (G_ACTION_MAP (self->actions), "zoom"),
+                    "state", state,
+                    NULL);
+
       g_object_notify_by_pspec (G_OBJECT (self), properties [PROP_ZOOM]);
       g_object_notify_by_pspec (G_OBJECT (self), properties [PROP_CAN_ZOOM_IN]);
       g_object_notify_by_pspec (G_OBJECT (self), properties [PROP_CAN_ZOOM_OUT]);


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]