[gnome-photos] application, selection-toolbar: Use the GAction for opening



commit d8a812ab35487357c7154f1936d3285a569ed0bc
Author: Rafael Fonseca <r4f4rfs gmail com>
Date:   Wed Feb 17 15:03:57 2016 +0100

    application, selection-toolbar: Use the GAction for opening
    
    https://bugzilla.gnome.org/show_bug.cgi?id=761587

 src/photos-application.c        |   38 +++++++++++++++++++++++++++++++++-----
 src/photos-selection-toolbar.c  |   30 ------------------------------
 src/photos-selection-toolbar.ui |    3 +--
 3 files changed, 34 insertions(+), 37 deletions(-)
---
diff --git a/src/photos-application.c b/src/photos-application.c
index 3fce884..f3d1035 100644
--- a/src/photos-application.c
+++ b/src/photos-application.c
@@ -299,6 +299,7 @@ photos_application_actions_update (PhotosApplication *self)
   GList *selection;
   PhotosLoadState load_state;
   PhotosWindowMode mode;
+  gboolean can_open;
   gboolean can_trash;
   gboolean enable;
   gboolean selection_mode;
@@ -340,7 +341,6 @@ photos_application_actions_update (PhotosApplication *self)
 
   enable = (load_state == PHOTOS_LOAD_STATE_FINISHED && mode == PHOTOS_WINDOW_MODE_PREVIEW);
   g_simple_action_set_enabled (priv->gear_action, enable);
-  g_simple_action_set_enabled (priv->open_action, enable);
   g_simple_action_set_enabled (priv->properties_action, enable);
   g_simple_action_set_enabled (priv->set_bg_action, enable);
   g_simple_action_set_enabled (priv->set_ss_action, enable);
@@ -350,6 +350,7 @@ photos_application_actions_update (PhotosApplication *self)
   g_simple_action_set_enabled (priv->print_action, enable);
   g_simple_action_set_enabled (priv->save_action, enable);
 
+  can_open = FALSE;
   can_trash = selection != NULL;
   for (l = selection; l != NULL; l = l->next)
     {
@@ -358,6 +359,9 @@ photos_application_actions_update (PhotosApplication *self)
 
       selected_item = PHOTOS_BASE_ITEM (photos_base_manager_get_object_by_id (priv->state->item_mngr, urn));
       can_trash = can_trash && photos_base_item_can_trash (selected_item);
+
+      if (photos_base_item_get_default_app_name (selected_item) != NULL)
+        can_open = TRUE;
     }
 
   enable = ((load_state == PHOTOS_LOAD_STATE_FINISHED
@@ -366,6 +370,10 @@ photos_application_actions_update (PhotosApplication *self)
             || (selection_mode && can_trash));
   g_simple_action_set_enabled (priv->delete_action, enable);
 
+  enable = ((load_state == PHOTOS_LOAD_STATE_FINISHED && mode == PHOTOS_WINDOW_MODE_PREVIEW)
+            || (selection_mode && can_open));
+  g_simple_action_set_enabled (priv->open_action, enable);
+
   enable = (load_state == PHOTOS_LOAD_STATE_FINISHED
             && mode == PHOTOS_WINDOW_MODE_PREVIEW
             && photos_base_item_can_edit (item));
@@ -793,12 +801,32 @@ photos_application_open_current (PhotosApplication *self)
   PhotosBaseItem *item;
   guint32 time;
 
-  item = PHOTOS_BASE_ITEM (photos_base_manager_get_active_object (priv->state->item_mngr));
-  g_return_if_fail (item != NULL);
-
   screen = gtk_window_get_screen (GTK_WINDOW (priv->main_window));
   time = gtk_get_current_event_time ();
-  photos_base_item_open (item, screen, time);
+
+  if (photos_selection_controller_get_selection_mode (priv->sel_cntrlr))
+    {
+      GList *l;
+      GList *selection;
+
+      selection = photos_selection_controller_get_selection (priv->sel_cntrlr);
+      for (l = selection; l != NULL; l = l->next)
+        {
+          const gchar *urn = (gchar *) l->data;
+
+          item = PHOTOS_BASE_ITEM (photos_base_manager_get_object_by_id (priv->state->item_mngr, urn));
+          photos_base_item_open (item, screen, time);
+        }
+    }
+  else
+    {
+      item = PHOTOS_BASE_ITEM (photos_base_manager_get_active_object (priv->state->item_mngr));
+      g_return_if_fail (item != NULL);
+
+      photos_base_item_open (item, screen, time);
+    }
+
+  photos_selection_controller_set_selection_mode (priv->sel_cntrlr, FALSE);
 }
 
 
diff --git a/src/photos-selection-toolbar.c b/src/photos-selection-toolbar.c
index cf03427..b6de14b 100644
--- a/src/photos-selection-toolbar.c
+++ b/src/photos-selection-toolbar.c
@@ -185,31 +185,6 @@ photos_selection_toolbar_favorite_clicked (GtkButton *button, gpointer user_data
 
 
 static void
-photos_selection_toolbar_open_clicked (GtkButton *button, gpointer user_data)
-{
-  PhotosSelectionToolbar *self = PHOTOS_SELECTION_TOOLBAR (user_data);
-  GList *selection;
-  GList *l;
-
-  selection = photos_selection_controller_get_selection (self->sel_cntrlr);
-  for (l = selection; l != NULL; l = l->next)
-    {
-      const gchar *urn = (gchar *) l->data;
-      GdkScreen *screen;
-      PhotosBaseItem *item;
-      guint32 time;
-
-      item = PHOTOS_BASE_ITEM (photos_base_manager_get_object_by_id (self->item_mngr, urn));
-      screen = gtk_widget_get_screen (GTK_WIDGET (button));
-      time = gtk_get_current_event_time ();
-      photos_base_item_open (item, screen, time);
-    }
-
-  photos_selection_controller_set_selection_mode (self->sel_cntrlr, FALSE);
-}
-
-
-static void
 photos_selection_toolbar_properties_response (GtkDialog *dialog, gint response_id, gpointer user_data)
 {
   PhotosSelectionToolbar *self = PHOTOS_SELECTION_TOOLBAR (user_data);
@@ -252,7 +227,6 @@ photos_selection_toolbar_set_item_visibility (PhotosSelectionToolbar *self)
   gboolean has_selection;
   gboolean show_collection;
   gboolean show_favorite;
-  gboolean show_open;
   gboolean show_properties;
   gchar *favorite_label;
   gchar *open_label;
@@ -266,7 +240,6 @@ photos_selection_toolbar_set_item_visibility (PhotosSelectionToolbar *self)
 
   show_collection = has_selection;
   show_favorite = has_selection;
-  show_open = has_selection;
   show_properties = has_selection;
 
   for (l = selection; l != NULL; l = g_list_next (l))
@@ -289,7 +262,6 @@ photos_selection_toolbar_set_item_visibility (PhotosSelectionToolbar *self)
     }
 
   show_favorite = show_favorite && ((fav_count == 0) || (fav_count == sel_length));
-  show_open = apps != NULL;
 
   if (sel_length > 1)
     {
@@ -324,7 +296,6 @@ photos_selection_toolbar_set_item_visibility (PhotosSelectionToolbar *self)
 
   gtk_widget_set_sensitive (self->toolbar_collection, show_collection);
   gtk_widget_set_sensitive (self->toolbar_properties, show_properties);
-  gtk_widget_set_sensitive (self->toolbar_open, show_open);
   gtk_widget_set_sensitive (self->toolbar_favorite, show_favorite);
 
   self->inside_refresh = FALSE;
@@ -445,7 +416,6 @@ photos_selection_toolbar_class_init (PhotosSelectionToolbarClass *class)
   gtk_widget_class_bind_template_child (widget_class, PhotosSelectionToolbar, toolbar_properties);
   gtk_widget_class_bind_template_child (widget_class, PhotosSelectionToolbar, toolbar_collection);
   gtk_widget_class_bind_template_callback (widget_class, photos_selection_toolbar_favorite_clicked);
-  gtk_widget_class_bind_template_callback (widget_class, photos_selection_toolbar_open_clicked);
   gtk_widget_class_bind_template_callback (widget_class, photos_selection_toolbar_properties_clicked);
   gtk_widget_class_bind_template_callback (widget_class, photos_selection_toolbar_collection_clicked);
 }
diff --git a/src/photos-selection-toolbar.ui b/src/photos-selection-toolbar.ui
index 9ae3008..ec69bec 100644
--- a/src/photos-selection-toolbar.ui
+++ b/src/photos-selection-toolbar.ui
@@ -27,8 +27,7 @@
         <object class="GtkButton" id="toolbar_open">
           <property name="visible">1</property>
           <property name="label" translatable="yes">Open</property>
-          <signal name="clicked" object="PhotosSelectionToolbar" swapped="no"
-                  handler="photos_selection_toolbar_open_clicked" />
+          <property name="action_name">app.open-current</property>
         </object>
         <packing>
           <property name="pack_type">start</property>


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