[polari] chatView: Don't extend interactive tags into margins
- From: Florian Müllner <fmuellner src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [polari] chatView: Don't extend interactive tags into margins
- Date: Wed, 10 Feb 2016 16:02:20 +0000 (UTC)
commit 15dc959423c28144cdf7e4674df323ca8b893025
Author: Florian Müllner <fmuellner gnome org>
Date: Wed Feb 10 16:18:14 2016 +0100
chatView: Don't extend interactive tags into margins
Until now, margins neighboring interactive elements like links or
status headers have been clickable as well. GTK+ now gives us API
to check whether a position is over text, so use that to fix the
issue.
https://bugzilla.gnome.org/show_bug.cgi?id=760842
src/chatView.js | 19 +++++++++++++------
1 files changed, 13 insertions(+), 6 deletions(-)
---
diff --git a/src/chatView.js b/src/chatView.js
index 6cdfeb1..8e0a0b2 100644
--- a/src/chatView.js
+++ b/src/chatView.js
@@ -204,6 +204,9 @@ const ButtonTag = new Lang.Class({
vfunc_event: function(object, event, iter) {
let type = event.get_event_type();
+ if (!this._hover)
+ return Gdk.EVENT_PROPAGATE;
+
if (type != Gdk.EventType.BUTTON_PRESS &&
type != Gdk.EventType.BUTTON_RELEASE)
return Gdk.EVENT_PROPAGATE;
@@ -658,12 +661,16 @@ const ChatView = new Lang.Class({
let [, eventX, eventY] = event.get_coords();
let [x, y] = view.window_to_buffer_coords(Gtk.TextWindowType.WIDGET,
eventX, eventY);
- let iter = view.get_iter_at_location(x, y);
+ let [inside, iter] = view.get_iter_at_location(x, y);
- let hoveredButtonTags = iter.get_tags().filter(
- function(t) {
- return t instanceof ButtonTag;
- });
+ let hoveredButtonTags;
+ if (inside)
+ hoveredButtonTags = iter.get_tags().filter(
+ function(t) {
+ return t instanceof ButtonTag;
+ });
+ else
+ hoveredButtonTags = [];
hoveredButtonTags.forEach(
function(t) {
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]