[gtk+] textview: Simplify gtk_text_view_buffer_to_window_coords()
- From: Benjamin Otte <otte src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk+] textview: Simplify gtk_text_view_buffer_to_window_coords()
- Date: Sat, 11 Nov 2017 04:38:06 +0000 (UTC)
commit 26909ee913297111806a2956fcf3ce5714a62146
Author: Benjamin Otte <otte redhat com>
Date: Sat Nov 11 05:22:17 2017 +0100
textview: Simplify gtk_text_view_buffer_to_window_coords()
... and gtk_text_view_window_to_buffer_coords()
gtk/gtktextview.c | 195 +++++++----------------------------------------------
1 files changed, 24 insertions(+), 171 deletions(-)
---
diff --git a/gtk/gtktextview.c b/gtk/gtktextview.c
index 2a8ef74..b091a8a 100644
--- a/gtk/gtktextview.c
+++ b/gtk/gtktextview.c
@@ -9809,68 +9809,6 @@ gtk_text_view_get_css_node (GtkTextView *text_view,
return NULL;
}
-static void
-buffer_to_widget (GtkTextView *text_view,
- gint buffer_x,
- gint buffer_y,
- gint *window_x,
- gint *window_y)
-{
- GtkTextViewPrivate *priv = text_view->priv;
-
- if (window_x)
- {
- *window_x = buffer_x - priv->xoffset;
- *window_x += priv->text_window->allocation.x;
- }
-
- if (window_y)
- {
- *window_y = buffer_y - priv->yoffset;
- *window_y += priv->text_window->allocation.y;
- }
-}
-
-static void
-widget_to_text_window (GtkTextWindow *win,
- gint widget_x,
- gint widget_y,
- gint *window_x,
- gint *window_y)
-{
- if (window_x)
- *window_x = widget_x - win->allocation.x;
-
- if (window_y)
- *window_y = widget_y - win->allocation.y;
-}
-
-static void
-buffer_to_text_window (GtkTextView *text_view,
- GtkTextWindow *win,
- gint buffer_x,
- gint buffer_y,
- gint *window_x,
- gint *window_y)
-{
- if (win == NULL)
- {
- g_warning ("Attempt to convert text buffer coordinates to coordinates "
- "for a nonexistent or private child window of GtkTextView");
- return;
- }
-
- buffer_to_widget (text_view,
- buffer_x, buffer_y,
- window_x, window_y);
-
- widget_to_text_window (win,
- window_x ? *window_x : 0,
- window_y ? *window_y : 0,
- window_x,
- window_y);
-}
-
/**
* gtk_text_view_buffer_to_window_coords:
* @text_view: a #GtkTextView
@@ -9898,47 +9836,33 @@ gtk_text_view_buffer_to_window_coords (GtkTextView *text_view,
g_return_if_fail (GTK_IS_TEXT_VIEW (text_view));
+ buffer_x -= priv->xoffset;
+ buffer_y -= priv->yoffset;
+
switch (win)
{
case GTK_TEXT_WINDOW_WIDGET:
- buffer_to_widget (text_view,
- buffer_x, buffer_y,
- window_x, window_y);
+ buffer_x += priv->border_window_size.left;
+ buffer_y += priv->border_window_size.top;
break;
case GTK_TEXT_WINDOW_TEXT:
- if (window_x)
- *window_x = buffer_x - priv->xoffset;
- if (window_y)
- *window_y = buffer_y - priv->yoffset;
break;
case GTK_TEXT_WINDOW_LEFT:
- buffer_to_text_window (text_view,
- priv->left_window,
- buffer_x, buffer_y,
- window_x, window_y);
+ buffer_x += priv->border_window_size.left;
break;
case GTK_TEXT_WINDOW_RIGHT:
- buffer_to_text_window (text_view,
- priv->right_window,
- buffer_x, buffer_y,
- window_x, window_y);
+ buffer_x -= text_window_get_width (priv->text_window);
break;
case GTK_TEXT_WINDOW_TOP:
- buffer_to_text_window (text_view,
- priv->top_window,
- buffer_x, buffer_y,
- window_x, window_y);
+ buffer_y += priv->border_window_size.top;
break;
case GTK_TEXT_WINDOW_BOTTOM:
- buffer_to_text_window (text_view,
- priv->bottom_window,
- buffer_x, buffer_y,
- window_x, window_y);
+ buffer_y -= text_window_get_height (priv->text_window);
break;
case GTK_TEXT_WINDOW_PRIVATE:
@@ -9949,70 +9873,11 @@ gtk_text_view_buffer_to_window_coords (GtkTextView *text_view,
g_warning ("%s: Unknown GtkTextWindowType", G_STRFUNC);
break;
}
-}
-static void
-widget_to_buffer (GtkTextView *text_view,
- gint widget_x,
- gint widget_y,
- gint *buffer_x,
- gint *buffer_y)
-{
- GtkTextViewPrivate *priv = text_view->priv;
-
- if (buffer_x)
- {
- *buffer_x = widget_x + priv->xoffset;
- *buffer_x -= priv->text_window->allocation.x;
- }
-
- if (buffer_y)
- {
- *buffer_y = widget_y + priv->yoffset;
- *buffer_y -= priv->text_window->allocation.y;
- }
-}
-
-static void
-text_window_to_widget (GtkTextWindow *win,
- gint window_x,
- gint window_y,
- gint *widget_x,
- gint *widget_y)
-{
- if (widget_x)
- *widget_x = window_x + win->allocation.x;
-
- if (widget_y)
- *widget_y = window_y + win->allocation.y;
-}
-
-static void
-text_window_to_buffer (GtkTextView *text_view,
- GtkTextWindow *win,
- gint window_x,
- gint window_y,
- gint *buffer_x,
- gint *buffer_y)
-{
- if (win == NULL)
- {
- g_warning ("Attempt to convert GtkTextView buffer coordinates into "
- "coordinates for a nonexistent child window.");
- return;
- }
-
- text_window_to_widget (win,
- window_x,
- window_y,
- buffer_x,
- buffer_y);
-
- widget_to_buffer (text_view,
- buffer_x ? *buffer_x : 0,
- buffer_y ? *buffer_y : 0,
- buffer_x,
- buffer_y);
+ if (window_x)
+ *window_x = buffer_x;
+ if (window_y)
+ *window_y = buffer_y;
}
/**
@@ -10045,44 +9910,27 @@ gtk_text_view_window_to_buffer_coords (GtkTextView *text_view,
switch (win)
{
case GTK_TEXT_WINDOW_WIDGET:
- widget_to_buffer (text_view,
- window_x, window_y,
- buffer_x, buffer_y);
+ window_x -= priv->border_window_size.left;
+ window_y -= priv->border_window_size.top;
break;
case GTK_TEXT_WINDOW_TEXT:
- if (buffer_x)
- *buffer_x = window_x + priv->xoffset;
- if (buffer_y)
- *buffer_y = window_y + priv->yoffset;
break;
case GTK_TEXT_WINDOW_LEFT:
- text_window_to_buffer (text_view,
- priv->left_window,
- window_x, window_y,
- buffer_x, buffer_y);
+ window_x -= priv->border_window_size.left;
break;
case GTK_TEXT_WINDOW_RIGHT:
- text_window_to_buffer (text_view,
- priv->right_window,
- window_x, window_y,
- buffer_x, buffer_y);
+ window_x += text_window_get_width (priv->text_window);
break;
case GTK_TEXT_WINDOW_TOP:
- text_window_to_buffer (text_view,
- priv->top_window,
- window_x, window_y,
- buffer_x, buffer_y);
+ window_y -= priv->border_window_size.top;
break;
case GTK_TEXT_WINDOW_BOTTOM:
- text_window_to_buffer (text_view,
- priv->bottom_window,
- window_x, window_y,
- buffer_x, buffer_y);
+ window_y += text_window_get_height (priv->text_window);
break;
case GTK_TEXT_WINDOW_PRIVATE:
@@ -10093,6 +9941,11 @@ gtk_text_view_window_to_buffer_coords (GtkTextView *text_view,
g_warning ("%s: Unknown GtkTextWindowType", G_STRFUNC);
break;
}
+
+ if (buffer_x)
+ *buffer_x = window_x + priv->xoffset;
+ if (buffer_y)
+ *buffer_y = window_y + priv->yoffset;
}
static void
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]