[gnome-photos/wip/rishi/edit-mode: 30/30] preview-view: glue
- From: Debarshi Ray <debarshir src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-photos/wip/rishi/edit-mode: 30/30] preview-view: glue
- Date: Sun, 14 Jun 2015 18:15:12 +0000 (UTC)
commit 16d63a7e4df54b93426a7a3a6f7fa2eeb7eec05e
Author: Debarshi Ray <debarshir gnome org>
Date: Sat Jun 13 01:19:34 2015 +0200
preview-view: glue
src/photos-preview-view.c | 29 ++++++++++++++++++++++++++++-
1 files changed, 28 insertions(+), 1 deletions(-)
---
diff --git a/src/photos-preview-view.c b/src/photos-preview-view.c
index 8322e5a..07d7a3a 100644
--- a/src/photos-preview-view.c
+++ b/src/photos-preview-view.c
@@ -67,6 +67,13 @@ G_DEFINE_TYPE_WITH_PRIVATE (PhotosPreviewView, photos_preview_view, GTK_TYPE_SCR
static GtkWidget *photos_preview_view_create_view (PhotosPreviewView *self);
+static gboolean
+photos_preview_view_button_press_event (PhotosPreviewView *self, GdkEvent *event)
+{
+ return GDK_EVENT_PROPAGATE;
+}
+
+
static void
photos_preview_view_draw_background (PhotosPreviewView *self, cairo_t *cr, GdkRectangle *rect, gpointer
user_data)
{
@@ -83,6 +90,18 @@ photos_preview_view_draw_background (PhotosPreviewView *self, cairo_t *cr, GdkRe
}
+static void
+photos_preview_view_draw_overlay (PhotosPreviewView *self, cairo_t *cr, GdkRectangle *rect, gpointer
user_data)
+{
+ PhotosPreviewViewPrivate *priv = self->priv;
+
+ if (priv->active_tool == NULL)
+ return;
+
+ photos_tool_draw (priv->active_tool, cr, rect);
+}
+
+
static GtkWidget *
photos_preview_view_get_invisible_view (PhotosPreviewView *self)
{
@@ -219,12 +238,14 @@ photos_preview_view_create_view (PhotosPreviewView *self)
GtkWidget *view;
view = GTK_WIDGET (gegl_gtk_view_new ());
- gtk_widget_add_events (view, GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK);
+ gtk_widget_add_events (view, GDK_BUTTON_PRESS_MASK | GDK_POINTER_MOTION_MASK |
GDK_POINTER_MOTION_HINT_MASK);
context = gtk_widget_get_style_context (view);
gtk_style_context_add_class (context, GTK_STYLE_CLASS_VIEW);
gtk_style_context_add_class (context, "content-view");
+ g_signal_connect_swapped (view, "button-press-event", G_CALLBACK (photos_preview_view_button_press_event),
self);
g_signal_connect_swapped (view, "size-allocate", G_CALLBACK (photos_preview_view_size_allocate), self);
g_signal_connect_swapped (view, "draw-background", G_CALLBACK (photos_preview_view_draw_background), self);
+ g_signal_connect_swapped (view, "draw-overlay", G_CALLBACK (photos_preview_view_draw_overlay), self);
/* It has to be visible to become the visible child of priv->stack. */
gtk_widget_show (view);
@@ -291,10 +312,14 @@ static void
photos_preview_view_tool_changed (PhotosPreviewView *self, PhotosTool *tool)
{
PhotosPreviewViewPrivate *priv = self->priv;
+ GtkWidget *view;
g_clear_object (&priv->active_tool);
if (tool != NULL)
priv->active_tool = g_object_ref (tool);
+
+ view = gtk_stack_get_visible_child (GTK_STACK (priv->stack));
+ gtk_widget_queue_draw (view);
}
@@ -342,6 +367,8 @@ photos_preview_view_window_mode_changed (PhotosPreviewView *self, PhotosWindowMo
g_assert_not_reached ();
break;
}
+
+ g_clear_object (&priv->active_tool);
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]