[gnome-builder/wip/chergert/hover] hover: be more restrictive in where we display
- From: Christian Hergert <chergert src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-builder/wip/chergert/hover] hover: be more restrictive in where we display
- Date: Sun, 8 Jul 2018 06:42:13 +0000 (UTC)
commit 2ad295e1e54e950b73ac053f69919ef4d0a59b7a
Author: Christian Hergert <chergert redhat com>
Date: Sun Jul 8 08:40:56 2018 +0200
hover: be more restrictive in where we display
We don't want to be obnoxious, so only show when we have the
pointer over text and/or over a non-empty line.
src/libide/hover/ide-hover.c | 17 +++++++++++------
1 file changed, 11 insertions(+), 6 deletions(-)
---
diff --git a/src/libide/hover/ide-hover.c b/src/libide/hover/ide-hover.c
index f849505c0..a7b38f029 100644
--- a/src/libide/hover/ide-hover.c
+++ b/src/libide/hover/ide-hover.c
@@ -170,7 +170,7 @@ ide_hover_popover_destroy_cb (IdeHover *self,
self->state = IDE_HOVER_STATE_INITIAL;
}
-static void
+static gboolean
ide_hover_get_bounds (IdeHover *self,
GtkTextIter *begin,
GtkTextIter *end)
@@ -187,7 +187,7 @@ ide_hover_get_bounds (IdeHover *self,
{
memset (begin, 0, sizeof *begin);
memset (end, 0, sizeof *end);
- return;
+ return FALSE;
}
g_assert (GTK_IS_TEXT_VIEW (view));
@@ -198,7 +198,8 @@ ide_hover_get_bounds (IdeHover *self,
self->motion_y,
&x, &y);
- gtk_text_view_get_iter_at_location (view, &iter, x, y);
+ if (!gtk_text_view_get_iter_at_location (view, &iter, x, y))
+ return FALSE;
if (!_ide_source_iter_inside_word (&iter))
{
@@ -208,7 +209,7 @@ ide_hover_get_bounds (IdeHover *self,
*end = *begin;
gtk_text_iter_forward_to_line_end (end);
- return;
+ return TRUE;
}
if (!_ide_source_iter_starts_full_word (&iter))
@@ -218,6 +219,8 @@ ide_hover_get_bounds (IdeHover *self,
*end = iter;
_ide_source_iter_forward_full_word_end (end);
+
+ return TRUE;
}
static gboolean
@@ -242,6 +245,10 @@ ide_hover_motion_timeout_cb (gpointer data)
if (self->state != IDE_HOVER_STATE_INITIAL)
return G_SOURCE_REMOVE;
+ /* Make sure we're over text */
+ if (!ide_hover_get_bounds (self, &begin, &end))
+ return G_SOURCE_REMOVE;
+
if (self->popover == NULL)
{
self->popover = g_object_new (IDE_TYPE_HOVER_POPOVER,
@@ -281,8 +288,6 @@ ide_hover_motion_timeout_cb (gpointer data)
}
self->state = IDE_HOVER_STATE_DISPLAY;
-
- ide_hover_get_bounds (self, &begin, &end);
gtk_text_view_get_iter_location (GTK_TEXT_VIEW (view), &begin, &begin_rect);
gtk_text_view_get_iter_location (GTK_TEXT_VIEW (view), &end, &end_rect);
gdk_rectangle_union (&begin_rect, &end_rect, &rect);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]