window = gdk_window_new (gtk_widget_get_root_window (priv->parent),
&attributes, mask);
- gdk_window_set_user_data (window, priv->parent);
+ gtk_widget_register_window (priv->parent, window);
gdk_window_set_background_rgba (window, &bg);
_gtk_text_handle_update_shape (handle, window, pos);
{
GtkTextHandlePrivate *priv;
GtkTextHandlePosition pos;
+ HandleWindow *handle_window;
priv = handle->priv;
else
return FALSE;
- _gtk_text_handle_draw (handle, cr, pos);
- return TRUE;
+ handle_window = &priv->windows[pos];
+ if (gdk_window_is_visible (handle_window->window))
+ _gtk_text_handle_draw (handle, cr, pos);
+
+ return FALSE;
}
static gboolean
width / 2, 0, &x, &y);
}
+ gtk_widget_unregister_window (priv->parent, handle_window->window);
gdk_window_destroy (handle_window->window);
/* Create new window and apply old state */
g_object_unref (priv->relative_to);
if (priv->windows[GTK_TEXT_HANDLE_POSITION_SELECTION_START].window)
- gdk_window_destroy (priv->windows[GTK_TEXT_HANDLE_POSITION_SELECTION_START].window);
+ {
+ gtk_widget_unregister_window (priv->parent,
+ priv->windows[GTK_TEXT_HANDLE_POSITION_SELECTION_START].window);
+ gdk_window_destroy (priv->windows[GTK_TEXT_HANDLE_POSITION_SELECTION_START].window);
+ }
if (priv->windows[GTK_TEXT_HANDLE_POSITION_SELECTION_END].window)
- gdk_window_destroy (priv->windows[GTK_TEXT_HANDLE_POSITION_SELECTION_END].window);
+ {
+ gtk_widget_unregister_window (priv->parent,
+ priv->windows[GTK_TEXT_HANDLE_POSITION_SELECTION_END].window);
+ gdk_window_destroy (priv->windows[GTK_TEXT_HANDLE_POSITION_SELECTION_END].window);
+ }
if (g_signal_handler_is_connected (priv->parent, priv->draw_signal_id))
g_signal_handler_disconnect (priv->parent, priv->draw_signal_id);
if (priv->relative_to)
{
+ gtk_widget_unregister_window (priv->parent,
+ priv->windows[GTK_TEXT_HANDLE_POSITION_SELECTION_START].window);
gdk_window_destroy (priv->windows[GTK_TEXT_HANDLE_POSITION_SELECTION_START].window);
+ gtk_widget_unregister_window (priv->parent,
+ priv->windows[GTK_TEXT_HANDLE_POSITION_SELECTION_END].window);
gdk_window_destroy (priv->windows[GTK_TEXT_HANDLE_POSITION_SELECTION_END].window);
g_object_unref (priv->relative_to);
}