From 21254c434261d67fe6523e1b9615ac0ba9a54607 Mon Sep 17 00:00:00 2001 From: monsta Date: Mon, 2 Apr 2018 15:18:59 +0300 Subject: libview: fix text selection with mouse in annotation window taken from: https://github.com/GNOME/evince/commit/91ac78bc587eb2ac931136c9da9609b142410209 --- 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 8cc682a9..80a7d1d9 100644 --- a/libview/ev-annotation-window.c +++ b/libview/ev-annotation-window.c @@ -264,12 +264,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; @@ -286,10 +308,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); @@ -440,27 +471,6 @@ ev_annotation_window_constructor (GType type, return object; } -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) @@ -519,7 +529,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 v1.2.1