[gtk/wip/chergert/textview-widgets: 22/23] textview: simplify use of border windows
- From: Christian Hergert <chergert src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk/wip/chergert/textview-widgets: 22/23] textview: simplify use of border windows
- Date: Thu, 26 Sep 2019 20:20:05 +0000 (UTC)
commit f9ac7b5582682e49324dd9b3e095a74fdf998a25
Author: Christian Hergert <chergert redhat com>
Date: Tue Sep 24 19:40:16 2019 -0700
textview: simplify use of border windows
docs/reference/gtk/gtk4-sections.txt | 2 +
gtk/gtktextutil.c | 17 +-
gtk/gtktextview.c | 437 ++++++++++++++-------------
gtk/gtktextview.h | 37 ++-
testsuite/reftests/textview-border-windows.c | 19 +-
5 files changed, 280 insertions(+), 232 deletions(-)
---
diff --git a/docs/reference/gtk/gtk4-sections.txt b/docs/reference/gtk/gtk4-sections.txt
index e64ace8fd5..1ad566178f 100644
--- a/docs/reference/gtk/gtk4-sections.txt
+++ b/docs/reference/gtk/gtk4-sections.txt
@@ -3085,6 +3085,8 @@ GtkTextChildAnchor
gtk_text_child_anchor_new
gtk_text_child_anchor_get_widgets
gtk_text_child_anchor_get_deleted
+gtk_text_view_get_gutter
+gtk_text_view_set_gutter
gtk_text_view_add_overlay
gtk_text_view_move_overlay
gtk_text_view_set_wrap_mode
diff --git a/gtk/gtktextutil.c b/gtk/gtktextutil.c
index 200f87285c..fa10328d46 100644
--- a/gtk/gtktextutil.c
+++ b/gtk/gtktextutil.c
@@ -158,6 +158,19 @@ set_attributes_from_style (GtkStyleContext *context,
gtk_style_context_get (context, "font", &values->font, NULL);
}
+static gint
+get_border_window_size (GtkTextView *text_view,
+ GtkTextWindowType window_type)
+{
+ GtkWidget *gutter;
+
+ gutter = gtk_text_view_get_gutter (text_view, window_type);
+ if (gutter != NULL)
+ return gtk_widget_get_width (gutter);
+
+ return 0;
+}
+
GdkPaintable *
gtk_text_util_create_rich_drag_icon (GtkWidget *widget,
GtkTextBuffer *buffer,
@@ -208,8 +221,8 @@ gtk_text_util_create_rich_drag_icon (GtkWidget *widget,
if (GTK_IS_TEXT_VIEW (widget))
{
layout_width = layout_width
- - gtk_text_view_get_border_window_size (GTK_TEXT_VIEW (widget), GTK_TEXT_WINDOW_LEFT)
- - gtk_text_view_get_border_window_size (GTK_TEXT_VIEW (widget), GTK_TEXT_WINDOW_RIGHT);
+ - get_border_window_size (GTK_TEXT_VIEW (widget), GTK_TEXT_WINDOW_LEFT)
+ - get_border_window_size (GTK_TEXT_VIEW (widget), GTK_TEXT_WINDOW_RIGHT);
}
style->direction = gtk_widget_get_direction (widget);
diff --git a/gtk/gtktextview.c b/gtk/gtktextview.c
index fd4d55be32..94175c0fc7 100644
--- a/gtk/gtktextview.c
+++ b/gtk/gtktextview.c
@@ -635,6 +635,8 @@ struct _GtkTextViewChild
gint y;
};
+static void add_child (GtkTextView *text_view,
+ GtkTextViewChild *vc);
static GtkTextViewChild* text_view_child_new_anchored (GtkWidget *child,
GtkTextChildAnchor *anchor,
GtkTextLayout *layout);
@@ -3911,39 +3913,60 @@ gtk_text_view_measure (GtkWidget *widget,
int *natural_baseline)
{
GtkTextViewPrivate *priv = GTK_TEXT_VIEW (widget)->priv;
+ GtkBorder borders = {0};
int min = 0, nat = 0;
- GSList *tmp_list;
+ GSList *list;
- if (orientation == GTK_ORIENTATION_HORIZONTAL)
- {
- min += priv->border_window_size.left + priv->border_window_size.right;
- min += priv->left_margin + priv->right_margin;
- }
- else /* orientation == VERTICAL */
+ for (list = priv->children; list; list = list->next)
{
- min += priv->border_window_size.top + priv->border_window_size.bottom;
- min += priv->height;
- }
+ GtkTextViewChild *child = list->data;
+ int child_min = 0;
+ int child_nat = 0;
- nat = min;
-
- tmp_list = priv->children;
- while (tmp_list != NULL)
- {
- GtkTextViewChild *child = tmp_list->data;
- int child_min = 0, child_nat = 0;
-
- gtk_widget_measure (child->widget, orientation, for_size, &child_min, &child_nat, NULL, NULL);
+ gtk_widget_measure (child->widget, orientation, for_size,
+ &child_min, &child_nat,
+ NULL, NULL);
/* Invalidate layout lines if required */
if (child->anchor && priv->layout)
- gtk_text_child_anchor_queue_resize (child->anchor,
- priv->layout);
+ gtk_text_child_anchor_queue_resize (child->anchor, priv->layout);
- min = MAX (min, child_min);
- nat = MAX (nat, child_nat);
+ if (child->type == GTK_TEXT_WINDOW_TEXT)
+ {
+ min = MAX (min, child_min);
+ nat = MAX (nat, child_nat);
+ }
+ else if (orientation == GTK_ORIENTATION_HORIZONTAL)
+ {
+ if (child->type == GTK_TEXT_WINDOW_LEFT)
+ borders.left = MAX (borders.left, child_min);
+ else if (child->type == GTK_TEXT_WINDOW_RIGHT)
+ borders.right = MAX (borders.right, child_min);
+ }
+ else
+ {
+ if (child->type == GTK_TEXT_WINDOW_TOP)
+ borders.top = MAX (borders.top, child_min);
+ else if (child->type == GTK_TEXT_WINDOW_BOTTOM)
+ borders.bottom = MAX (borders.bottom, child_min);
+ }
+ }
- tmp_list = tmp_list->next;
+ if (orientation == GTK_ORIENTATION_HORIZONTAL)
+ {
+ min += borders.left + priv->left_margin + priv->right_margin + borders.right;
+ nat += borders.left + priv->left_margin + priv->right_margin + borders.right;
+
+ priv->border_window_size.left = borders.left;
+ priv->border_window_size.right = borders.right;
+ }
+ else
+ {
+ min += borders.top + borders.bottom + priv->height;
+ nat += borders.top + borders.bottom + priv->height;
+
+ priv->border_window_size.top = borders.top;
+ priv->border_window_size.bottom = borders.bottom;
}
*minimum = min;
@@ -4023,13 +4046,16 @@ gtk_text_view_child_allocated (GtkTextLayout *layout,
}
static void
-gtk_text_view_allocate_children (GtkTextView *text_view)
+gtk_text_view_allocate_children (GtkTextView *text_view,
+ gint widget_width,
+ gint widget_height)
{
+ GtkTextViewPrivate *priv = text_view->priv;
GSList *tmp_list;
DV(g_print(G_STRLOC"\n"));
- tmp_list = text_view->priv->children;
+ tmp_list = priv->children;
while (tmp_list != NULL)
{
GtkTextViewChild *child = tmp_list->data;
@@ -4056,42 +4082,153 @@ gtk_text_view_allocate_children (GtkTextView *text_view)
{
GtkTextIter end = child_loc;
gtk_text_iter_forward_char (&end);
- gtk_text_layout_invalidate (text_view->priv->layout, &child_loc, &end);
+ gtk_text_layout_invalidate (priv->layout, &child_loc, &end);
}
- gtk_text_layout_validate_yrange (text_view->priv->layout,
+ gtk_text_layout_validate_yrange (priv->layout,
&child_loc,
0, 1);
}
else
{
- GtkAllocation allocation;
+ GtkAllocation child_alloc;
GtkRequisition child_req;
-
- allocation.x = child->x;
- allocation.y = child->y;
-
- if (child->type == GTK_TEXT_WINDOW_TEXT ||
- child->type == GTK_TEXT_WINDOW_LEFT ||
- child->type == GTK_TEXT_WINDOW_RIGHT)
- allocation.y -= text_view->priv->yoffset;
- if (child->type == GTK_TEXT_WINDOW_TEXT ||
- child->type == GTK_TEXT_WINDOW_TOP ||
- child->type == GTK_TEXT_WINDOW_BOTTOM)
- allocation.x -= text_view->priv->xoffset;
-
- gtk_widget_get_preferred_size (child->widget, &child_req, NULL);
-
- allocation.width = child_req.width;
- allocation.height = child_req.height;
+
+ switch (child->type)
+ {
+ case GTK_TEXT_WINDOW_LEFT:
+ child_alloc.x = 0;
+ child_alloc.y = priv->border_window_size.top;
+ child_alloc.width = priv->border_window_size.left;
+ child_alloc.height = widget_height - priv->border_window_size.top -
priv->border_window_size.bottom;
+ break;
+
+ case GTK_TEXT_WINDOW_RIGHT:
+ child_alloc.x = widget_width - priv->border_window_size.right;
+ child_alloc.y = priv->border_window_size.top;
+ child_alloc.width = priv->border_window_size.right;
+ child_alloc.height = widget_height - priv->border_window_size.top -
priv->border_window_size.bottom;
+ break;
+
+ case GTK_TEXT_WINDOW_TOP:
+ child_alloc.x = priv->border_window_size.left;
+ child_alloc.y = 0;
+ child_alloc.width = widget_width - priv->border_window_size.left -
priv->border_window_size.right;
+ child_alloc.height = priv->border_window_size.top;
+ break;
+
+ case GTK_TEXT_WINDOW_BOTTOM:
+ child_alloc.x = priv->border_window_size.left;
+ child_alloc.y = widget_height - priv->border_window_size.bottom;
+ child_alloc.width = widget_width - priv->border_window_size.left -
priv->border_window_size.right;
+ child_alloc.height = priv->border_window_size.bottom;
+ break;
+
+ case GTK_TEXT_WINDOW_TEXT:
+ gtk_widget_get_preferred_size (child->widget, &child_req, NULL);
+ child_alloc.x = child->x - priv->xoffset;
+ child_alloc.y = child->y - priv->yoffset;
+ child_alloc.width = child_req.width;
+ child_alloc.height = child_req.height;
+ break;
+
+ case GTK_TEXT_WINDOW_WIDGET:
+ case GTK_TEXT_WINDOW_PRIVATE:
+ default:
+ g_return_if_reached ();
+ }
- gtk_widget_size_allocate (child->widget, &allocation, -1);
+ gtk_widget_size_allocate (child->widget, &child_alloc, -1);
}
tmp_list = tmp_list->next;
}
}
+/**
+ * gtk_text_view_get_gutter:
+ * @text_view: a #GtkTextView
+ * @win: a #GtkWindowType
+ *
+ * Gets a #GtkWidget that has previously been set with
+ * gtk_text_view_set_gutter().
+ *
+ * @win must be one of %GTK_TEXT_WINDOW_LEFT, %GTK_TEXT_WINDOW_RIGHT,
+ * %GTK_TEXT_WINDOW_TOP, or %GTK_TEXT_WINDOW_BOTTOM.
+ *
+ * Returns: (transfer none) (nullable): a #GtkWidget or %NULL
+ *
+ * Since: 4.0
+ */
+GtkWidget *
+gtk_text_view_get_gutter (GtkTextView *text_view,
+ GtkTextWindowType win)
+{
+ const GSList *list;
+
+ g_return_val_if_fail (GTK_IS_TEXT_VIEW (text_view), NULL);
+ g_return_val_if_fail (win == GTK_TEXT_WINDOW_LEFT ||
+ win == GTK_TEXT_WINDOW_RIGHT ||
+ win == GTK_TEXT_WINDOW_TOP ||
+ win == GTK_TEXT_WINDOW_BOTTOM, NULL);
+
+ for (list = text_view->priv->children; list; list = list->next)
+ {
+ GtkTextViewChild *child = list->data;
+
+ if (child->type == win)
+ return child->widget;
+ }
+
+ return NULL;
+}
+
+/**
+ * gtk_text_view_set_gutter:
+ * @text_view: a #GtkTextView
+ * @win: a #GtkTextWindowType
+ * @widget: (nullable): a #GtkWidget or %NULL
+ *
+ * Places @widget into the gutter specified by @win.
+ *
+ * @win must be one of %GTK_TEXT_WINDOW_LEFT, %GTK_TEXT_WINDOW_RIGHT,
+ * %GTK_TEXT_WINDOW_TOP, or %GTK_TEXT_WINDOW_BOTTOM.
+ */
+void
+gtk_text_view_set_gutter (GtkTextView *text_view,
+ GtkTextWindowType win,
+ GtkWidget *widget)
+{
+ GtkTextViewChild *vc;
+ GtkWidget *old_widget;
+
+ g_return_if_fail (GTK_IS_TEXT_VIEW (text_view));
+ g_return_if_fail (widget == NULL || GTK_IS_WIDGET (widget));
+ g_return_if_fail (win == GTK_TEXT_WINDOW_LEFT ||
+ win == GTK_TEXT_WINDOW_RIGHT ||
+ win == GTK_TEXT_WINDOW_TOP ||
+ win == GTK_TEXT_WINDOW_BOTTOM);
+
+ old_widget = gtk_text_view_get_gutter (text_view, win);
+
+ if (old_widget == widget)
+ return;
+
+ if (old_widget != NULL)
+ gtk_widget_destroy (old_widget);
+
+ if (widget == NULL)
+ return;
+
+ vc = text_view_child_new_window (widget, win, 0, 0);
+ add_child (text_view, vc);
+
+ gtk_widget_queue_resize (GTK_WIDGET (text_view));
+
+ g_assert (vc->widget == widget);
+ g_assert (gtk_widget_get_parent (widget) == GTK_WIDGET (text_view));
+}
+
static void
gtk_text_view_size_allocate (GtkWidget *widget,
int widget_width,
@@ -4148,29 +4285,24 @@ gtk_text_view_size_allocate (GtkWidget *widget,
right_rect.x = text_rect.x + text_rect.width;
bottom_rect.y = text_rect.y + text_rect.height;
- text_window_size_allocate (priv->text_window,
- &text_rect);
+ text_window_size_allocate (priv->text_window, &text_rect);
if (priv->left_window)
- text_window_size_allocate (priv->left_window,
- &left_rect);
+ text_window_size_allocate (priv->left_window, &left_rect);
if (priv->right_window)
- text_window_size_allocate (priv->right_window,
- &right_rect);
+ text_window_size_allocate (priv->right_window, &right_rect);
if (priv->top_window)
- text_window_size_allocate (priv->top_window,
- &top_rect);
+ text_window_size_allocate (priv->top_window, &top_rect);
if (priv->bottom_window)
- text_window_size_allocate (priv->bottom_window,
- &bottom_rect);
+ text_window_size_allocate (priv->bottom_window, &bottom_rect);
gtk_text_view_update_layout_width (text_view);
/* Note that this will do some layout validation */
- gtk_text_view_allocate_children (text_view);
+ gtk_text_view_allocate_children (text_view, widget_width, widget_height);
/* Update adjustments */
if (!gtk_adjustment_is_animating (priv->hadjustment))
@@ -9169,47 +9301,66 @@ text_window_get_height (GtkTextWindow *win)
/* Windows */
+static void
+ensure_text_window (GtkTextView *text_view,
+ GtkTextWindow **winp,
+ GtkTextWindowType win)
+{
+ if (*winp != NULL)
+ return;
+
+ *winp = text_window_new (win, GTK_WIDGET (text_view));
+ /* if the widget is already realized we need to realize the child manually */
+ update_node_ordering (GTK_WIDGET (text_view));
+ gtk_widget_queue_resize (GTK_WIDGET (text_view));
+}
-static GtkCssNode *
-gtk_text_view_get_css_node (GtkTextView *text_view,
- GtkTextWindowType win)
+static GtkTextWindow *
+get_text_window (GtkTextView *text_view,
+ GtkTextWindowType win)
{
GtkTextViewPrivate *priv = text_view->priv;
switch (win)
{
- case GTK_TEXT_WINDOW_WIDGET:
- return gtk_widget_get_css_node (GTK_WIDGET (text_view));
-
case GTK_TEXT_WINDOW_TEXT:
- return priv->text_window->css_node;
+ return priv->text_window;
case GTK_TEXT_WINDOW_LEFT:
- if (priv->left_window)
- return priv->left_window->css_node;
- break;
+ ensure_text_window (text_view, &priv->left_window, win);
+ return priv->left_window;
case GTK_TEXT_WINDOW_RIGHT:
- if (priv->right_window)
- return priv->right_window->css_node;
- break;
+ ensure_text_window (text_view, &priv->right_window, win);
+ return priv->right_window;
case GTK_TEXT_WINDOW_TOP:
- if (priv->top_window)
- return priv->top_window->css_node;
- break;
+ ensure_text_window (text_view, &priv->top_window, win);
+ return priv->top_window;
case GTK_TEXT_WINDOW_BOTTOM:
- if (priv->bottom_window)
- return priv->bottom_window->css_node;
- break;
+ ensure_text_window (text_view, &priv->bottom_window, win);
+ return priv->bottom_window;
+ case GTK_TEXT_WINDOW_WIDGET:
case GTK_TEXT_WINDOW_PRIVATE:
default:
- break;
+ return NULL;
}
+}
- return NULL;
+static GtkCssNode *
+gtk_text_view_get_css_node (GtkTextView *text_view,
+ GtkTextWindowType win)
+{
+ GtkTextWindow *window;
+
+ if (win == GTK_TEXT_WINDOW_WIDGET)
+ return gtk_widget_get_css_node (GTK_WIDGET (text_view));
+
+ window = get_text_window (text_view, win);
+
+ return window ? window->css_node : NULL;
}
/**
@@ -9351,134 +9502,6 @@ gtk_text_view_window_to_buffer_coords (GtkTextView *text_view,
*buffer_y = window_y + priv->yoffset;
}
-static void
-set_window_size (GtkTextView *text_view,
- gint size,
- GtkTextWindowType type,
- GtkTextWindow **winp,
- gint16 *sizep)
-{
- if (*sizep == size)
- return;
-
- if (size == 0)
- {
- text_window_free (*winp);
- *winp = NULL;
- }
- else
- {
- if (*winp == NULL)
- {
- *winp = text_window_new (type, GTK_WIDGET (text_view));
- /* if the widget is already realized we need to realize the child manually */
- update_node_ordering (GTK_WIDGET (text_view));
- }
- }
-
- *sizep = size;
-
- gtk_widget_queue_resize (GTK_WIDGET (text_view));
-}
-
-/**
- * gtk_text_view_set_border_window_size:
- * @text_view: a #GtkTextView
- * @type: window to affect
- * @size: width or height of the window
- *
- * Sets the width of %GTK_TEXT_WINDOW_LEFT or %GTK_TEXT_WINDOW_RIGHT,
- * or the height of %GTK_TEXT_WINDOW_TOP or %GTK_TEXT_WINDOW_BOTTOM.
- * Automatically destroys the corresponding window if the size is set
- * to 0, and creates the window if the size is set to non-zero. This
- * function can only be used for the “border windows,” it doesn’t work
- * with #GTK_TEXT_WINDOW_WIDGET, #GTK_TEXT_WINDOW_TEXT, or
- * #GTK_TEXT_WINDOW_PRIVATE.
- **/
-void
-gtk_text_view_set_border_window_size (GtkTextView *text_view,
- GtkTextWindowType type,
- gint size)
-{
- GtkTextViewPrivate *priv = text_view->priv;
-
- g_return_if_fail (GTK_IS_TEXT_VIEW (text_view));
- g_return_if_fail (size >= 0);
-
- switch (type)
- {
- case GTK_TEXT_WINDOW_LEFT:
- set_window_size (text_view, size, GTK_TEXT_WINDOW_LEFT,
- &priv->left_window, &priv->border_window_size.left);
- break;
-
- case GTK_TEXT_WINDOW_RIGHT:
- set_window_size (text_view, size, GTK_TEXT_WINDOW_RIGHT,
- &priv->right_window, &priv->border_window_size.right);
- break;
-
- case GTK_TEXT_WINDOW_TOP:
- set_window_size (text_view, size, GTK_TEXT_WINDOW_TOP,
- &priv->top_window, &priv->border_window_size.top);
- break;
-
- case GTK_TEXT_WINDOW_BOTTOM:
- set_window_size (text_view, size, GTK_TEXT_WINDOW_BOTTOM,
- &priv->bottom_window, &priv->border_window_size.bottom);
- break;
-
- case GTK_TEXT_WINDOW_PRIVATE:
- case GTK_TEXT_WINDOW_WIDGET:
- case GTK_TEXT_WINDOW_TEXT:
- default:
- g_warning ("Can only set size of left/right/top/bottom border windows with
gtk_text_view_set_border_window_size()");
- break;
- }
-}
-
-/**
- * gtk_text_view_get_border_window_size:
- * @text_view: a #GtkTextView
- * @type: window to return size from
- *
- * Gets the width of the specified border window. See
- * gtk_text_view_set_border_window_size().
- *
- * Returns: width of window
- **/
-gint
-gtk_text_view_get_border_window_size (GtkTextView *text_view,
- GtkTextWindowType type)
-{
- GtkTextViewPrivate *priv = text_view->priv;
-
- g_return_val_if_fail (GTK_IS_TEXT_VIEW (text_view), 0);
-
- switch (type)
- {
- case GTK_TEXT_WINDOW_LEFT:
- return priv->border_window_size.left;
-
- case GTK_TEXT_WINDOW_RIGHT:
- return priv->border_window_size.right;
-
- case GTK_TEXT_WINDOW_TOP:
- return priv->border_window_size.top;
-
- case GTK_TEXT_WINDOW_BOTTOM:
- return priv->border_window_size.bottom;
-
- case GTK_TEXT_WINDOW_PRIVATE:
- case GTK_TEXT_WINDOW_WIDGET:
- case GTK_TEXT_WINDOW_TEXT:
- default:
- g_warning ("Can only get size of left/right/top/bottom border windows with
gtk_text_view_get_border_window_size()");
- break;
- }
-
- return 0;
-}
-
/*
* Child widgets
*/
diff --git a/gtk/gtktextview.h b/gtk/gtktextview.h
index 02c8afc464..9fe349b9a2 100644
--- a/gtk/gtktextview.h
+++ b/gtk/gtktextview.h
@@ -280,14 +280,6 @@ void gtk_text_view_window_to_buffer_coords (GtkTextView *text_view,
gint *buffer_x,
gint *buffer_y);
-GDK_AVAILABLE_IN_ALL
-void gtk_text_view_set_border_window_size (GtkTextView *text_view,
- GtkTextWindowType type,
- gint size);
-GDK_AVAILABLE_IN_ALL
-gint gtk_text_view_get_border_window_size (GtkTextView *text_view,
- GtkTextWindowType type);
-
GDK_AVAILABLE_IN_ALL
gboolean gtk_text_view_forward_display_line (GtkTextView *text_view,
GtkTextIter *iter);
@@ -316,21 +308,28 @@ void gtk_text_view_reset_im_context (GtkTextView
/* Adding child widgets */
GDK_AVAILABLE_IN_ALL
-void gtk_text_view_add_child_at_anchor (GtkTextView *text_view,
- GtkWidget *child,
- GtkTextChildAnchor *anchor);
+GtkWidget *gtk_text_view_get_gutter (GtkTextView *text_view,
+ GtkTextWindowType win);
+GDK_AVAILABLE_IN_ALL
+void gtk_text_view_set_gutter (GtkTextView *text_view,
+ GtkTextWindowType win,
+ GtkWidget *widget);
+GDK_AVAILABLE_IN_ALL
+void gtk_text_view_add_child_at_anchor (GtkTextView *text_view,
+ GtkWidget *child,
+ GtkTextChildAnchor *anchor);
GDK_AVAILABLE_IN_ALL
-void gtk_text_view_add_overlay (GtkTextView *text_view,
- GtkWidget *child,
- gint xpos,
- gint ypos);
+void gtk_text_view_add_overlay (GtkTextView *text_view,
+ GtkWidget *child,
+ gint xpos,
+ gint ypos);
GDK_AVAILABLE_IN_ALL
-void gtk_text_view_move_overlay (GtkTextView *text_view,
- GtkWidget *child,
- gint xpos,
- gint ypos);
+void gtk_text_view_move_overlay (GtkTextView *text_view,
+ GtkWidget *child,
+ gint xpos,
+ gint ypos);
/* Default style settings (fallbacks if no tag affects the property) */
diff --git a/testsuite/reftests/textview-border-windows.c b/testsuite/reftests/textview-border-windows.c
index 019b654907..7a6646393a 100644
--- a/testsuite/reftests/textview-border-windows.c
+++ b/testsuite/reftests/textview-border-windows.c
@@ -17,12 +17,23 @@
#include <gtk/gtk.h>
+static void
+set_border_window_size (GtkTextView *text_view,
+ GtkTextWindowType win,
+ gint size)
+{
+ GtkWidget *label;
+
+ label = gtk_label_new (NULL);
+ gtk_widget_set_size_request (label, size, size);
+ gtk_text_view_set_gutter (text_view, win, label);
+}
G_MODULE_EXPORT void
add_border_windows (GtkTextView *text_view)
{
- gtk_text_view_set_border_window_size (text_view, GTK_TEXT_WINDOW_LEFT, 30);
- gtk_text_view_set_border_window_size (text_view, GTK_TEXT_WINDOW_RIGHT, 30);
- gtk_text_view_set_border_window_size (text_view, GTK_TEXT_WINDOW_TOP, 30);
- gtk_text_view_set_border_window_size (text_view, GTK_TEXT_WINDOW_BOTTOM, 30);
+ set_border_window_size (text_view, GTK_TEXT_WINDOW_LEFT, 30);
+ set_border_window_size (text_view, GTK_TEXT_WINDOW_RIGHT, 30);
+ set_border_window_size (text_view, GTK_TEXT_WINDOW_TOP, 30);
+ set_border_window_size (text_view, GTK_TEXT_WINDOW_BOTTOM, 30);
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]