From f7646cf541224a5efecb6fef5dd5987bd123507c Mon Sep 17 00:00:00 2001 From: Benjamin Otte Date: Sat, 4 Nov 2017 03:16:26 +0100 Subject: [PATCH] textview: Remove GdkWindow usage from the public API A sideeffect is that we don't set the correct parent window on child widgets anymore, but that is hopefully going to be fixed once we get rid of child windows completely. --- demos/gtk-demo/hypertext.c | 9 +-- gtk/a11y/gtktextviewaccessible.c | 4 +- gtk/gtktextview.c | 112 ++----------------------------- gtk/gtktextview.h | 7 -- 4 files changed, 8 insertions(+), 124 deletions(-) diff --git a/demos/gtk-demo/hypertext.c b/demos/gtk-demo/hypertext.c index ecb9fd351e..804a161c89 100644 --- a/demos/gtk-demo/hypertext.c +++ b/demos/gtk-demo/hypertext.c @@ -179,8 +179,6 @@ event_after (GtkWidget *text_view, } static gboolean hovering_over_link = FALSE; -static GdkCursor *hand_cursor = NULL; -static GdkCursor *regular_cursor = NULL; /* Looks at all tags covering the position (x, y) in the text view, * and if one of them is a link, change the cursor to the "hands" cursor @@ -216,9 +214,9 @@ set_cursor_if_appropriate (GtkTextView *text_view, hovering_over_link = hovering; if (hovering_over_link) - gdk_window_set_cursor (gtk_text_view_get_window (text_view, GTK_TEXT_WINDOW_TEXT), hand_cursor); + gtk_widget_set_cursor_from_name (GTK_WIDGET (text_view), "pointer"); else - gdk_window_set_cursor (gtk_text_view_get_window (text_view, GTK_TEXT_WINDOW_TEXT), regular_cursor); + gtk_widget_set_cursor_from_name (GTK_WIDGET (text_view), "text"); } if (tags) @@ -255,9 +253,6 @@ do_hypertext (GtkWidget *do_widget) GtkWidget *sw; GtkTextBuffer *buffer; - hand_cursor = gdk_cursor_new_from_name ("pointer", NULL); - regular_cursor = gdk_cursor_new_from_name ("text", NULL); - window = gtk_window_new (GTK_WINDOW_TOPLEVEL); gtk_window_set_title (GTK_WINDOW (window), "Hypertext"); gtk_window_set_display (GTK_WINDOW (window), diff --git a/gtk/a11y/gtktextviewaccessible.c b/gtk/a11y/gtktextviewaccessible.c index f4e592849d..085f6284ce 100644 --- a/gtk/a11y/gtktextviewaccessible.c +++ b/gtk/a11y/gtktextviewaccessible.c @@ -456,7 +456,7 @@ gtk_text_view_accessible_get_offset_at_point (AtkText *text, return -1; view = GTK_TEXT_VIEW (widget); - window = gtk_text_view_get_window (view, GTK_TEXT_WINDOW_WIDGET); + window = gtk_widget_get_window (widget); gdk_window_get_origin (window, &x_widget, &y_widget); if (coords == ATK_XY_SCREEN) @@ -525,7 +525,7 @@ gtk_text_view_accessible_get_character_extents (AtkText *text, gtk_text_buffer_get_iter_at_offset (buffer, &iter, offset); gtk_text_view_get_iter_location (view, &iter, &rectangle); - window = gtk_text_view_get_window (view, GTK_TEXT_WINDOW_WIDGET); + window = gtk_widget_get_window (widget); if (window == NULL) return; diff --git a/gtk/gtktextview.c b/gtk/gtktextview.c index 247f553187..e1db105ac2 100644 --- a/gtk/gtktextview.c +++ b/gtk/gtktextview.c @@ -5856,7 +5856,7 @@ paint_border_window (GtkTextView *text_view, if (text_window == NULL) return; - window = gtk_text_view_get_window (text_view, text_window->type); + window = text_window->bin_window; w = gdk_window_get_width (window); h = gdk_window_get_height (window); @@ -9721,7 +9721,7 @@ gtk_text_view_get_rendered_rect (GtkTextView *text_view, GtkTextViewPrivate *priv = text_view->priv; GdkWindow *window; - window = gtk_text_view_get_window (text_view, GTK_TEXT_WINDOW_TEXT); + window = priv->text_window->bin_window; rect->x = gtk_adjustment_get_value (priv->hadjustment); rect->y = gtk_adjustment_get_value (priv->vadjustment) - priv->top_margin; @@ -9994,77 +9994,6 @@ text_window_get_height (GtkTextWindow *win) /* Windows */ -/** - * gtk_text_view_get_window: - * @text_view: a #GtkTextView - * @win: window to get - * - * Retrieves the #GdkWindow corresponding to an area of the text view; - * possible windows include the overall widget window, child windows - * on the left, right, top, bottom, and the window that displays the - * text buffer. Windows are %NULL and nonexistent if their width or - * height is 0, and are nonexistent before the widget has been - * realized. - * - * Returns: (nullable) (transfer none): a #GdkWindow, or %NULL - **/ -GdkWindow* -gtk_text_view_get_window (GtkTextView *text_view, - GtkTextWindowType win) -{ - GtkTextViewPrivate *priv = text_view->priv; - - g_return_val_if_fail (GTK_IS_TEXT_VIEW (text_view), NULL); - - switch (win) - { - case GTK_TEXT_WINDOW_WIDGET: - return gtk_widget_get_window (GTK_WIDGET (text_view)); - break; - - case GTK_TEXT_WINDOW_TEXT: - return priv->text_window->bin_window; - break; - - case GTK_TEXT_WINDOW_LEFT: - if (priv->left_window) - return priv->left_window->bin_window; - else - return NULL; - break; - - case GTK_TEXT_WINDOW_RIGHT: - if (priv->right_window) - return priv->right_window->bin_window; - else - return NULL; - break; - - case GTK_TEXT_WINDOW_TOP: - if (priv->top_window) - return priv->top_window->bin_window; - else - return NULL; - break; - - case GTK_TEXT_WINDOW_BOTTOM: - if (priv->bottom_window) - return priv->bottom_window->bin_window; - else - return NULL; - break; - - case GTK_TEXT_WINDOW_PRIVATE: - default: - g_warning ("%s: You can't get GTK_TEXT_WINDOW_PRIVATE, it has \"PRIVATE\" in the name because it is private.", G_STRFUNC); - return NULL; - break; - } - - g_warning ("%s: Unknown GtkTextWindowType", G_STRFUNC); - return NULL; -} - static GtkCssNode * gtk_text_view_get_css_node (GtkTextView *text_view, GtkTextWindowType win) @@ -10107,41 +10036,6 @@ gtk_text_view_get_css_node (GtkTextView *text_view, return NULL; } -/** - * gtk_text_view_get_window_type: - * @text_view: a #GtkTextView - * @window: a window type - * - * Usually used to find out which window an event corresponds to. - * If you connect to an event signal on @text_view, this function - * should be called on `event->window` to - * see which window it was. - * - * Returns: the window type. - **/ -GtkTextWindowType -gtk_text_view_get_window_type (GtkTextView *text_view, - GdkWindow *window) -{ - GtkTextWindow *win; - - g_return_val_if_fail (GTK_IS_TEXT_VIEW (text_view), 0); - g_return_val_if_fail (GDK_IS_WINDOW (window), 0); - - if (window == gtk_widget_get_window (GTK_WIDGET (text_view))) - return GTK_TEXT_WINDOW_WIDGET; - - win = g_object_get_qdata (G_OBJECT (window), - g_quark_try_string ("gtk-text-view-text-window")); - - if (win) - return win->type; - else - { - return GTK_TEXT_WINDOW_PRIVATE; - } -} - static void buffer_to_widget (GtkTextView *text_view, gint buffer_x, @@ -10697,10 +10591,12 @@ text_view_child_set_parent_window (GtkTextView *text_view, text_view->priv->text_window->bin_window); else { +#if 0 GdkWindow *window; window = gtk_text_view_get_window (text_view, vc->type); gtk_widget_set_parent_window (vc->widget, window); +#endif } } diff --git a/gtk/gtktextview.h b/gtk/gtktextview.h index 6b2d87cb47..7f536a295f 100644 --- a/gtk/gtktextview.h +++ b/gtk/gtktextview.h @@ -295,13 +295,6 @@ void gtk_text_view_window_to_buffer_coords (GtkTextView *text_view, gint *buffer_x, gint *buffer_y); -GDK_AVAILABLE_IN_ALL -GdkWindow* gtk_text_view_get_window (GtkTextView *text_view, - GtkTextWindowType win); -GDK_AVAILABLE_IN_ALL -GtkTextWindowType gtk_text_view_get_window_type (GtkTextView *text_view, - GdkWindow *window); - GDK_AVAILABLE_IN_ALL void gtk_text_view_set_border_window_size (GtkTextView *text_view, GtkTextWindowType type,