[gtk+] treeview: fix size of the dragged column header
- From: Stefano Facchini <sfacchini src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk+] treeview: fix size of the dragged column header
- Date: Thu, 27 Sep 2012 15:10:49 +0000 (UTC)
commit 3c7a6581dcb49224bb749036374dd87bf32e9903
Author: Stefano Facchini <stefano facchini gmail com>
Date: Thu Sep 27 16:44:19 2012 +0200
treeview: fix size of the dragged column header
Currently the GdkWindow used for dragging is created once when
the first drag starts, and the reused identical each time.
Instead, just recreate it for each drag, with the correct size.
gtk/gtktreeview.c | 40 +++++++++++++++++++---------------------
1 files changed, 19 insertions(+), 21 deletions(-)
---
diff --git a/gtk/gtktreeview.c b/gtk/gtktreeview.c
index 263fe59..8217eb7 100644
--- a/gtk/gtktreeview.c
+++ b/gtk/gtktreeview.c
@@ -3317,7 +3317,8 @@ gtk_tree_view_button_release_drag_column (GtkWidget *widget,
tree_view->priv->cur_reorder->left_column);
}
tree_view->priv->drag_column = NULL;
- gdk_window_hide (tree_view->priv->drag_window);
+ gdk_window_destroy (tree_view->priv->drag_window);
+ tree_view->priv->drag_window = NULL;
for (l = tree_view->priv->column_drag_info; l != NULL; l = l->next)
g_slice_free (GtkTreeViewColumnReorder, l->data);
@@ -9787,9 +9788,12 @@ _gtk_tree_view_column_start_drag (GtkTreeView *tree_view,
GdkScreen *screen = gtk_widget_get_screen (GTK_WIDGET (tree_view));
GtkWidget *button;
GdkDevice *pointer, *keyboard;
+ GdkWindowAttr attributes;
+ guint attributes_mask;
g_return_if_fail (tree_view->priv->column_drag_info == NULL);
g_return_if_fail (tree_view->priv->cur_reorder == NULL);
+ g_return_if_fail (tree_view->priv->drag_window == NULL);
gtk_tree_view_set_column_drag_info (tree_view, column);
@@ -9798,28 +9802,22 @@ _gtk_tree_view_column_start_drag (GtkTreeView *tree_view,
button = gtk_tree_view_column_get_button (column);
- if (tree_view->priv->drag_window == NULL)
- {
- GdkWindowAttr attributes;
- guint attributes_mask;
-
- gtk_widget_get_allocation (button, &button_allocation);
+ gtk_widget_get_allocation (button, &button_allocation);
- attributes.window_type = GDK_WINDOW_CHILD;
- attributes.wclass = GDK_INPUT_OUTPUT;
- attributes.x = button_allocation.x;
- attributes.y = 0;
- attributes.width = button_allocation.width;
- attributes.height = button_allocation.height;
- attributes.visual = gtk_widget_get_visual (GTK_WIDGET (tree_view));
- attributes.event_mask = GDK_VISIBILITY_NOTIFY_MASK | GDK_EXPOSURE_MASK | GDK_POINTER_MOTION_MASK;
- attributes_mask = GDK_WA_X | GDK_WA_Y | GDK_WA_VISUAL;
+ attributes.window_type = GDK_WINDOW_CHILD;
+ attributes.wclass = GDK_INPUT_OUTPUT;
+ attributes.x = button_allocation.x;
+ attributes.y = 0;
+ attributes.width = button_allocation.width;
+ attributes.height = button_allocation.height;
+ attributes.visual = gtk_widget_get_visual (GTK_WIDGET (tree_view));
+ attributes.event_mask = GDK_VISIBILITY_NOTIFY_MASK | GDK_EXPOSURE_MASK | GDK_POINTER_MOTION_MASK;
+ attributes_mask = GDK_WA_X | GDK_WA_Y | GDK_WA_VISUAL;
- tree_view->priv->drag_window = gdk_window_new (tree_view->priv->bin_window,
- &attributes,
- attributes_mask);
- gdk_window_set_user_data (tree_view->priv->drag_window, GTK_WIDGET (tree_view));
- }
+ tree_view->priv->drag_window = gdk_window_new (tree_view->priv->bin_window,
+ &attributes,
+ attributes_mask);
+ gdk_window_set_user_data (tree_view->priv->drag_window, GTK_WIDGET (tree_view));
if (gdk_device_get_source (device) == GDK_SOURCE_KEYBOARD)
{
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]