Skip to content

Commit

Permalink
Selecting text from annotation notes
Browse files Browse the repository at this point in the history
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
  • Loading branch information
Giselle Reis authored and Carlos Garcia Campos committed Dec 2, 2015
1 parent c648cb2 commit 91ac78b
Showing 1 changed file with 32 additions and 23 deletions.
55 changes: 32 additions & 23 deletions libview/ev-annotation-window.c
Original file line number Diff line number Diff line change
Expand Up @@ -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;

Expand All @@ -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);
Expand Down Expand Up @@ -460,27 +491,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)
Expand Down Expand Up @@ -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;
Expand Down

0 comments on commit 91ac78b

Please sign in to comment.