[recipes] edit page: Don't do fullscreen image view
- From: Matthias Clasen <matthiasc src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [recipes] edit page: Don't do fullscreen image view
- Date: Fri, 27 Jan 2017 14:38:07 +0000 (UTC)
commit 12a8f856a6db66069b32542b6eb9957f041b8119
Author: Matthias Clasen <mclasen redhat com>
Date: Fri Jan 27 15:36:46 2017 +0100
edit page: Don't do fullscreen image view
This is confusing and unnecessary on the edit page.
To make this possible, switch things around to use a
signal in the image viewer and handle it from the details
page.
src/gr-details-page.c | 14 ++++++++++++++
src/gr-details-page.ui | 1 +
src/gr-image-viewer.c | 28 ++++++++++++++++++++++++----
3 files changed, 39 insertions(+), 4 deletions(-)
---
diff --git a/src/gr-details-page.c b/src/gr-details-page.c
index a6fdd73..c7f5fbd 100644
--- a/src/gr-details-page.c
+++ b/src/gr-details-page.c
@@ -681,6 +681,19 @@ activate_link (GtkLabel *label,
}
static void
+activate_image (GrDetailsPage *page)
+{
+ GtkWidget *window;
+ g_autoptr(GArray) images = NULL;
+ int idx;
+
+ g_object_get (page->recipe_image, "images", &images, "index", &idx, NULL);
+
+ window = gtk_widget_get_ancestor (GTK_WIDGET (page->recipe_image), GTK_TYPE_APPLICATION_WINDOW);
+ gr_window_show_image (GR_WINDOW (window), images, idx);
+}
+
+static void
dismiss_error (GrDetailsPage *page)
{
gtk_revealer_set_reveal_child (GTK_REVEALER (page->error_revealer), FALSE);
@@ -776,6 +789,7 @@ gr_details_page_class_init (GrDetailsPageClass *klass)
gtk_widget_class_bind_template_callback (widget_class, shop_it);
gtk_widget_class_bind_template_callback (widget_class, activate_link);
gtk_widget_class_bind_template_callback (widget_class, dismiss_error);
+ gtk_widget_class_bind_template_callback (widget_class, activate_image);
}
GtkWidget *
diff --git a/src/gr-details-page.ui b/src/gr-details-page.ui
index 2d1ede2..07302d3 100644
--- a/src/gr-details-page.ui
+++ b/src/gr-details-page.ui
@@ -174,6 +174,7 @@ followed</property>
<child>
<object class="GrImageViewer" id="recipe_image">
<property name="visible">1</property>
+ <signal name="activate" handler="activate_image" swapped="yes"/>
</object>
</child>
<child>
diff --git a/src/gr-image-viewer.c b/src/gr-image-viewer.c
index 6708123..9f21337 100644
--- a/src/gr-image-viewer.c
+++ b/src/gr-image-viewer.c
@@ -56,9 +56,11 @@ G_DEFINE_TYPE (GrImageViewer, gr_image_viewer, GTK_TYPE_BOX)
enum {
PROP_0,
PROP_IMAGES,
+ PROP_INDEX,
N_PROPS
};
+static guint activate_signal;
GrImageViewer *
gr_image_viewer_new (void)
@@ -264,10 +266,7 @@ button_press (GtkGesture *gesture,
button = gtk_gesture_single_get_current_button (GTK_GESTURE_SINGLE (gesture));
if (button == GDK_BUTTON_PRIMARY) {
- GtkWidget *window;
-
- window = gtk_widget_get_ancestor (GTK_WIDGET (viewer), GTK_TYPE_APPLICATION_WINDOW);
- gr_window_show_image (GR_WINDOW (window), viewer->images, viewer->index);
+ g_signal_emit (viewer, activate_signal, 0);
}
else {
toggle_preview (viewer);
@@ -367,6 +366,10 @@ gr_image_viewer_get_property (GObject *object,
g_value_set_boxed (value, self->images);
break;
+ case PROP_INDEX:
+ g_value_set_int (value, self->index);
+ break;
+
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
}
@@ -386,6 +389,10 @@ gr_image_viewer_set_property (GObject *object,
gr_image_viewer_set_images (self, (GArray *) g_value_get_boxed (value));
break;
+ case PROP_INDEX:
+ gr_image_viewer_show_image (self, g_value_get_int (value));
+ break;
+
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
}
@@ -407,6 +414,19 @@ gr_image_viewer_class_init (GrImageViewerClass *klass)
G_PARAM_READWRITE);
g_object_class_install_property (object_class, PROP_IMAGES, pspec);
+ pspec = g_param_spec_int ("index", NULL, NULL,
+ 0, G_MAXINT, 0,
+ G_PARAM_READWRITE);
+ g_object_class_install_property (object_class, PROP_INDEX, pspec);
+
+ activate_signal = g_signal_new ("activate",
+ G_TYPE_FROM_CLASS (object_class),
+ G_SIGNAL_RUN_LAST,
+ 0,
+ NULL, NULL,
+ NULL,
+ G_TYPE_NONE, 0);
+
gtk_widget_class_set_template_from_resource (widget_class, "/org/gnome/Recipes/gr-image-viewer.ui");
gtk_widget_class_bind_template_child (widget_class, GrImageViewer, image1);
gtk_widget_class_bind_template_child (widget_class, GrImageViewer, image2);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]