summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristian Neumair <chris@gnome-de.org>2005-07-29 06:25:57 +0000
committerChristian Neumair <cneumair@src.gnome.org>2005-07-29 06:25:57 +0000
commit07404213e476db78f2bd80de83c4664a5ad6dd08 (patch)
treee5a032a2931bcc8f7fae8a16ce4e89a09485bbad
parent32a6c0cd80df71f6a10f7f6f9e3f16a678834abb (diff)
downloadlibwnck-07404213e476db78f2bd80de83c4664a5ad6dd08.tar.gz
Prevent pager from flickering when moving windows between workspaces.
2005-07-29 Christian Neumair <chris@gnome-de.org> * libwnck/pager.c: (wnck_pager_init), (wnck_pager_draw_workspace), (wnck_pager_expose_event), (wnck_pager_button_release): Prevent pager from flickering when moving windows between workspaces. Fixes #167745.
-rw-r--r--ChangeLog7
-rw-r--r--libwnck/pager.c10
2 files changed, 15 insertions, 2 deletions
diff --git a/ChangeLog b/ChangeLog
index 2d0a41d..683faae 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2005-07-29 Christian Neumair <chris@gnome-de.org>
+
+ * libwnck/pager.c: (wnck_pager_init), (wnck_pager_draw_workspace),
+ (wnck_pager_expose_event), (wnck_pager_button_release):
+ Prevent pager from flickering when moving windows between workspaces.
+ Fixes #167745.
+
2005-07-23 Elijah Newren <newren@gmail.com>
* configure.in: post-release bump to 2.10.4.
diff --git a/libwnck/pager.c b/libwnck/pager.c
index cec4914..e45f9d3 100644
--- a/libwnck/pager.c
+++ b/libwnck/pager.c
@@ -171,6 +171,7 @@ wnck_pager_init (WnckPager *pager)
pager->priv->orientation = GTK_ORIENTATION_HORIZONTAL;
pager->priv->workspace_size = 48;
pager->priv->bg_cache = NULL;
+ pager->priv->action_window = NULL;
pager->priv->layout_manager_token = WNCK_NO_MANAGER_TOKEN;
gtk_drag_dest_set (GTK_WIDGET (pager), 0, NULL, 0, 0);
@@ -876,8 +877,9 @@ wnck_pager_draw_workspace (WnckPager *pager,
WnckWindow *win = tmp->data;
GdkRectangle winrect;
- if (pager->priv->dragging &&
- win == pager->priv->drag_window)
+ if ((pager->priv->dragging &&
+ win == pager->priv->drag_window) ||
+ win == pager->priv->action_window)
{
tmp = tmp->next;
continue;
@@ -1041,6 +1043,9 @@ wnck_pager_expose_event (GtkWidget *widget,
&winrect,
is_current);
}
+
+ if (pager->priv->action_window)
+ pager->priv->action_window = NULL;
return FALSE;
}
@@ -1225,6 +1230,7 @@ wnck_pager_button_release (GtkWidget *widget,
if (space)
{
+ pager->priv->action_window = pager->priv->drag_window;
wnck_window_move_to_workspace (pager->priv->drag_window,
space);
if (space == wnck_screen_get_active_workspace (pager->priv->screen))