[gnome-builder] source-view: handle missing clip rectangle
- From: Christian Hergert <chergert src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-builder] source-view: handle missing clip rectangle
- Date: Tue, 19 Jan 2016 21:49:02 +0000 (UTC)
commit b20077dd8b1c3b87ae9df8d620e816e29c2ae394
Author: Christian Hergert <chergert redhat com>
Date: Tue Jan 19 13:47:46 2016 -0800
source-view: handle missing clip rectangle
We were hitting an assertion here recently, due to no clip rectangle.
Instead, avoid fetching the clip rectangle twice, and compute the
buffer_x and buffer_y externally.
If we fail to get a clip rectangle, use the widget allocation instead.
libide/ide-source-view.c | 17 +++++++++--------
1 files changed, 9 insertions(+), 8 deletions(-)
---
diff --git a/libide/ide-source-view.c b/libide/ide-source-view.c
index 33f5773..1b90fd0 100644
--- a/libide/ide-source-view.c
+++ b/libide/ide-source-view.c
@@ -4172,6 +4172,8 @@ ide_source_view_draw_search_bubbles (IdeSourceView *self,
GtkTextIter end;
cairo_rectangle_int_t r;
guint count;
+ gint buffer_x = 0;
+ gint buffer_y = 0;
gint n;
gint i;
@@ -4182,16 +4184,15 @@ ide_source_view_draw_search_bubbles (IdeSourceView *self,
if (!priv->search_context || !gtk_source_search_context_get_highlight (priv->search_context))
return;
- gdk_cairo_get_clip_rectangle (cr, &area);
+ if (!gdk_cairo_get_clip_rectangle (cr, &area))
+ gtk_widget_get_allocation (GTK_WIDGET (self), &area);
+
gtk_text_view_window_to_buffer_coords (text_view, GTK_TEXT_WINDOW_TEXT,
- area.x, area.y, &area.x, &area.y);
- gtk_text_view_get_iter_at_location (text_view, &begin, area.x, area.y);
+ area.x, area.y, &buffer_x, &buffer_y);
+ gtk_text_view_get_iter_at_location (text_view, &begin, buffer_x, buffer_y);
gtk_text_view_get_iter_at_location (text_view, &end,
- area.x + area.width,
- area.y + area.height);
-
- if (!gdk_cairo_get_clip_rectangle (cr, &area))
- g_assert_not_reached ();
+ buffer_x + area.width,
+ buffer_y + area.height);
clip_region = cairo_region_create_rectangle (&area);
match_region = cairo_region_create ();
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]