[gnome-builder] greeter: Add support for mouse back button



commit 4490f34bfe471a8054408417f887a30ad0f7242b
Author: Adwait Rawat <adwait rawat gmail com>
Date:   Thu Mar 5 03:01:56 2020 +0900

    greeter: Add support for mouse back button
    
    fixes #1141

 src/libide/greeter/ide-greeter-workspace.c | 22 ++++++++++++++++++++++
 1 file changed, 22 insertions(+)
---
diff --git a/src/libide/greeter/ide-greeter-workspace.c b/src/libide/greeter/ide-greeter-workspace.c
index 5565ac14f..a792c1d8c 100644
--- a/src/libide/greeter/ide-greeter-workspace.c
+++ b/src/libide/greeter/ide-greeter-workspace.c
@@ -69,6 +69,7 @@ struct _IdeGreeterWorkspace
   GtkLabel                 *title;
   IdeGreeterButtonsSection *buttons_section;
   DzlEmptyState            *empty_state;
+  GtkGestureMultiPress     *multipress_gesture;
 
   guint                     selection_mode : 1;
 };
@@ -431,6 +432,19 @@ ide_greeter_workspace_open_project (IdeGreeterWorkspace *self,
   IDE_EXIT;
 }
 
+static void
+ide_greeter_workspace_multipress_gesture_pressed_cb (GtkGestureMultiPress *gesture,
+                                                     guint                 n_press,
+                                                     gdouble               x,
+                                                     gdouble               y,
+                                                     IdeGreeterWorkspace  *self)
+{
+  g_assert (IDE_IS_GREETER_WORKSPACE (self));
+  g_assert (GTK_IS_GESTURE_MULTI_PRESS (gesture));
+
+  ide_workspace_set_visible_surface_name (IDE_WORKSPACE (self), "sections");
+}
+
 static void
 ide_greeter_workspace_project_activated_cb (IdeGreeterWorkspace *self,
                                             IdeProjectInfo      *project_info,
@@ -541,6 +555,7 @@ ide_greeter_workspace_destroy (GtkWidget *widget)
   g_clear_object (&self->addins);
   g_clear_object (&self->delete_action);
   g_clear_object (&self->purge_action);
+  g_clear_object (&self->multipress_gesture);
   g_clear_pointer (&self->pattern_spec, dzl_pattern_spec_unref);
 
   GTK_WIDGET_CLASS (ide_greeter_workspace_parent_class)->destroy (widget);
@@ -653,6 +668,8 @@ ide_greeter_workspace_init (IdeGreeterWorkspace *self)
   selection_action = g_property_action_new ("selection-mode", G_OBJECT (self), "selection-mode");
   g_action_map_add_action (G_ACTION_MAP (self), G_ACTION (selection_action));
   g_action_map_add_action_entries (G_ACTION_MAP (self), actions, G_N_ELEMENTS (actions), self);
+  self->multipress_gesture = GTK_GESTURE_MULTI_PRESS (gtk_gesture_multi_press_new (GTK_WIDGET (self)));
+  gtk_gesture_single_set_button (GTK_GESTURE_SINGLE (self->multipress_gesture), 8);
 
   g_signal_connect_object (self->search_entry,
                            "activate",
@@ -671,6 +688,11 @@ ide_greeter_workspace_init (IdeGreeterWorkspace *self)
                     G_CALLBACK (gtk_entry_set_text),
                     (gpointer) "");
 
+  g_signal_connect (self->multipress_gesture,
+                    "pressed",
+                    G_CALLBACK (ide_greeter_workspace_multipress_gesture_pressed_cb),
+                    self);
+
   stack_notify_visible_child_cb (self, NULL, self->surfaces);
 
   _ide_greeter_workspace_init_actions (self);


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