Blob Blame History Raw
From 91ac78bc587eb2ac931136c9da9609b142410209 Mon Sep 17 00:00:00 2001
From: Giselle Reis <gisellemnr@src.gnome.org>
Date: Wed, 29 Jul 2015 22:19:36 +0200
Subject: Selecting text from annotation notes

Clicking and dragging the mouse inside an
annotation note should select the text. Clicking
and dragging the mouse on the title bar should
move the window.

This commit fixes
https://bugzilla.gnome.org/show_bug.cgi?id=749727
---
 libview/ev-annotation-window.c | 55 ++++++++++++++++++++++++------------------
 1 file changed, 32 insertions(+), 23 deletions(-)

diff --git a/libview/ev-annotation-window.c b/libview/ev-annotation-window.c
index ee002ce..9d66ec9 100644
--- a/libview/ev-annotation-window.c
+++ b/libview/ev-annotation-window.c
@@ -275,12 +275,34 @@ ev_annotation_window_close (EvAnnotationWindow *window)
 	g_signal_emit (window, signals[CLOSED], 0);
 }
 
+static gboolean
+ev_annotation_window_button_press_event (GtkWidget      *widget,
+					 GdkEventButton *event)
+{
+	EvAnnotationWindow *window = EV_ANNOTATION_WINDOW (widget);
+
+	if (event->type == GDK_BUTTON_PRESS && event->button == 1) {
+		window->in_move = TRUE;
+		window->x = event->x_root - event->x;
+		window->y = event->y_root - event->y;
+		gtk_window_begin_move_drag (GTK_WINDOW (widget),
+					    event->button,
+					    event->x_root,
+					    event->y_root,
+					    event->time);
+		return TRUE;
+	}
+
+	return FALSE;
+}
+
 static void
 ev_annotation_window_init (EvAnnotationWindow *window)
 {
 	GtkWidget    *vbox, *hbox;
 	GtkWidget    *icon;
 	GtkWidget    *swindow;
+	GtkWidget    *header;
 	GtkIconTheme *icon_theme;
 	GdkPixbuf    *pixbuf;
 
@@ -297,10 +319,19 @@ ev_annotation_window_init (EvAnnotationWindow *window)
 	gtk_box_pack_start (GTK_BOX (hbox), icon, FALSE, FALSE, 0);
 	gtk_widget_show (icon);
 
+	header = gtk_event_box_new ();
+	gtk_widget_add_events (header, GDK_BUTTON_PRESS_MASK);
+	g_signal_connect_swapped (header, "button-press-event",
+				  G_CALLBACK (ev_annotation_window_button_press_event),
+			          window);
+
 	window->title = gtk_label_new (NULL);
-	gtk_box_pack_start (GTK_BOX (hbox), window->title, TRUE, TRUE, 0);
+	gtk_container_add (GTK_CONTAINER (header), window->title);
 	gtk_widget_show (window->title);
 
+	gtk_box_pack_start (GTK_BOX (hbox), header, TRUE, TRUE, 0);
+	gtk_widget_show (header);
+
 	window->close_button = gtk_button_new ();
 	gtk_button_set_relief (GTK_BUTTON (window->close_button), GTK_RELIEF_NONE);
 	gtk_container_set_border_width (GTK_CONTAINER (window->close_button), 0);
@@ -461,27 +492,6 @@ ev_annotation_window_constructor (GType                  type,
 }
 
 static gboolean
-ev_annotation_window_button_press_event (GtkWidget      *widget,
-					 GdkEventButton *event)
-{
-	EvAnnotationWindow *window = EV_ANNOTATION_WINDOW (widget);
-
-	if (event->type == GDK_BUTTON_PRESS && event->button == 1) {
-		window->in_move = TRUE;
-		window->x = event->x_root - event->x;
-		window->y = event->y_root - event->y;
-		gtk_window_begin_move_drag (GTK_WINDOW (widget),
-					    event->button,
-					    event->x_root,
-					    event->y_root,
-					    event->time);
-		return TRUE;
-	}
-
-	return FALSE;
-}
-
-static gboolean
 ev_annotation_window_configure_event (GtkWidget         *widget,
 				      GdkEventConfigure *event)
 {
@@ -539,7 +549,6 @@ ev_annotation_window_class_init (EvAnnotationWindowClass *klass)
 	g_object_class->set_property = ev_annotation_window_set_property;
 	g_object_class->dispose = ev_annotation_window_dispose;
 
-	gtk_widget_class->button_press_event = ev_annotation_window_button_press_event;
 	gtk_widget_class->configure_event = ev_annotation_window_configure_event;
 	gtk_widget_class->focus_in_event = ev_annotation_window_focus_in_event;
 	gtk_widget_class->focus_out_event = ev_annotation_window_focus_out_event;
-- 
cgit v0.12