summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPablo Barciela <[email protected]>2017-09-25 09:57:26 +0200
committerraveit65 <[email protected]>2017-11-04 19:15:23 +0100
commit57100be045fe457b17fb39465a8fcaabf31e49f0 (patch)
tree6ca6db96db5d866c6038955b86a7caa2177564c3
parent21c58b0a959797e5ee229434ecf7605f67c89216 (diff)
downloadpluma-57100be045fe457b17fb39465a8fcaabf31e49f0.tar.bz2
pluma-57100be045fe457b17fb39465a8fcaabf31e49f0.tar.xz
Fix: wrong behavior holding down [middle + right] click
Fixes https://github.com/mate-desktop/pluma/issues/250
-rw-r--r--pluma/pluma-view.c27
1 files changed, 27 insertions, 0 deletions
diff --git a/pluma/pluma-view.c b/pluma/pluma-view.c
index 707656a3..a1574828 100644
--- a/pluma/pluma-view.c
+++ b/pluma/pluma-view.c
@@ -56,6 +56,8 @@
#define PLUMA_VIEW_GET_PRIVATE(object)(G_TYPE_INSTANCE_GET_PRIVATE ((object), PLUMA_TYPE_VIEW, PlumaViewPrivate))
+static gboolean middledown = FALSE;
+
typedef enum
{
GOTO_LINE,
@@ -121,8 +123,11 @@ static gboolean pluma_view_drag_drop (GtkWidget *widget,
gint x,
gint y,
guint timestamp);
+
static gboolean pluma_view_button_press_event (GtkWidget *widget,
GdkEventButton *event);
+static gboolean pluma_view_button_release_event (GtkWidget *widget,
+ GdkEventButton *event);
static gboolean start_interactive_search (PlumaView *view);
static gboolean start_interactive_goto_line (PlumaView *view);
@@ -206,6 +211,7 @@ pluma_view_class_init (PlumaViewClass *klass)
widget_class->drag_data_received = pluma_view_drag_data_received;
widget_class->drag_drop = pluma_view_drag_drop;
widget_class->button_press_event = pluma_view_button_press_event;
+ widget_class->button_release_event = pluma_view_button_release_event;
klass->start_interactive_search = start_interactive_search;
klass->start_interactive_goto_line = start_interactive_goto_line;
klass->reset_searched_text = reset_searched_text;
@@ -1987,6 +1993,16 @@ show_line_numbers_menu (GtkWidget *view,
static gboolean
pluma_view_button_press_event (GtkWidget *widget, GdkEventButton *event)
{
+ if ((event->button == 3) && (middledown))
+ {
+ middledown = FALSE;
+ return TRUE;
+ }
+ else if (event->button == 2)
+ {
+ middledown = TRUE;
+ }
+
if ((event->type == GDK_BUTTON_PRESS) &&
(event->window == gtk_text_view_get_window (GTK_TEXT_VIEW (widget),
GTK_TEXT_WINDOW_LEFT)))
@@ -2003,6 +2019,17 @@ pluma_view_button_press_event (GtkWidget *widget, GdkEventButton *event)
return GTK_WIDGET_CLASS (pluma_view_parent_class)->button_press_event (widget, event);
}
+static gboolean
+pluma_view_button_release_event (GtkWidget *widget, GdkEventButton *event)
+{
+ if (event->button == 2)
+ {
+ middledown = FALSE;
+ }
+
+ return GTK_WIDGET_CLASS (pluma_view_parent_class)->button_release_event (widget, event);
+}
+
static void
search_highlight_updated_cb (PlumaDocument *doc,
GtkTextIter *start,