[gitg] Update selection on enter/leave events
- From: Jesse van den Kieboom <jessevdk src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gitg] Update selection on enter/leave events
- Date: Mon, 21 Dec 2015 06:55:46 +0000 (UTC)
commit 4192eb5f8ccd86ac5d758e2976593f94747a7949
Author: Jesse van den Kieboom <jessevdk gnome org>
Date: Mon Dec 21 07:55:09 2015 +0100
Update selection on enter/leave events
libgitg/gitg-diff-view-file-selectable.vala | 28 ++++++++++++++++++++++++--
1 files changed, 25 insertions(+), 3 deletions(-)
---
diff --git a/libgitg/gitg-diff-view-file-selectable.vala b/libgitg/gitg-diff-view-file-selectable.vala
index f257fbd..b901be3 100644
--- a/libgitg/gitg-diff-view-file-selectable.vala
+++ b/libgitg/gitg-diff-view-file-selectable.vala
@@ -75,6 +75,8 @@ class Gitg.DiffViewFileSelectable : Object
{
source_view.button_press_event.connect(button_press_event_on_view);
source_view.motion_notify_event.connect(motion_notify_event_on_view);
+ source_view.leave_notify_event.connect(leave_notify_event_on_view);
+ source_view.enter_notify_event.connect(enter_notify_event_on_view);
source_view.button_release_event.connect(button_release_event_on_view);
source_view.realize.connect(() => {
@@ -293,6 +295,11 @@ class Gitg.DiffViewFileSelectable : Object
return false;
}
+ return get_iter_from_event_position(out iter, x, y);
+ }
+
+ private bool get_iter_from_event_position(out Gtk.TextIter iter, int x, int y)
+ {
int win_x, win_y;
source_view.window_to_buffer_coords(Gtk.TextWindowType.TEXT, x, y, out win_x, out win_y);
@@ -470,16 +477,16 @@ class Gitg.DiffViewFileSelectable : Object
buffer.move_mark(d_end_selection_mark, cursor);
}
- private bool motion_notify_event_on_view(Gdk.EventMotion event)
+ private bool update_selection_event(Gdk.ModifierType state, int x, int y)
{
Gtk.TextIter iter;
- if (!get_iter_from_pointer_position(out iter))
+ if (!get_iter_from_event_position(out iter, x, y))
{
return false;
}
- update_cursor_for_state(event.state);
+ update_cursor_for_state(state);
if (d_selection_mode == DiffSelectionMode.NONE)
{
@@ -490,6 +497,21 @@ class Gitg.DiffViewFileSelectable : Object
return true;
}
+ private bool motion_notify_event_on_view(Gdk.EventMotion event)
+ {
+ return update_selection_event(event.state, (int)event.x, (int)event.y);
+ }
+
+ private bool leave_notify_event_on_view(Gdk.EventCrossing event)
+ {
+ return update_selection_event(event.state, (int)event.x, (int)event.y);
+ }
+
+ private bool enter_notify_event_on_view(Gdk.EventCrossing event)
+ {
+ return update_selection_event(event.state, (int)event.x, (int)event.y);
+ }
+
private void update_has_selection()
{
var buffer = source_view.buffer;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]