diff options
author | monsta <[email protected]> | 2018-04-02 15:18:59 +0300 |
---|---|---|
committer | raveit65 <[email protected]> | 2018-04-02 17:04:47 +0200 |
commit | 68166966cd7a3a646fe33c622837938b86364405 (patch) | |
tree | b761a62fdf10c53cf52ac530b5a57a1c5c7260d3 | |
parent | efe29e6c72178f0970ded735560dc34e6fd05d87 (diff) | |
download | atril-68166966cd7a3a646fe33c622837938b86364405.tar.bz2 atril-68166966cd7a3a646fe33c622837938b86364405.tar.xz |
libview: fix text selection with mouse in annotation window
taken from:
https://github.com/GNOME/evince/commit/91ac78bc587eb2ac931136c9da9609b142410209
-rw-r--r-- | libview/ev-annotation-window.c | 55 |
1 files changed, 32 insertions, 23 deletions
diff --git a/libview/ev-annotation-window.c b/libview/ev-annotation-window.c index 86ec6488..eab458c2 100644 --- a/libview/ev-annotation-window.c +++ b/libview/ev-annotation-window.c @@ -280,12 +280,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; @@ -302,10 +324,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); @@ -465,27 +496,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) { @@ -543,7 +553,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; |