rpms/libwnck/FC-3 libwnck-2.8.1-fix-tasklist-on-xinerama.patch, NONE, 1.1 libwnck.spec, 1.19, 1.20

fedora-cvs-commits at redhat.com fedora-cvs-commits at redhat.com
Thu Apr 7 19:18:39 UTC 2005


Update of /cvs/dist/rpms/libwnck/FC-3
In directory cvs.devel.redhat.com:/tmp/cvs-serv12318

Modified Files:
	libwnck.spec 
Added Files:
	libwnck-2.8.1-fix-tasklist-on-xinerama.patch 
Log Message:
- Apply backport to fix tasklist with Xinerama (bug 138874)


libwnck-2.8.1-fix-tasklist-on-xinerama.patch:
 tasklist.c |   51 +++++++++++++++++++++++++++++++++++++++------------
 1 files changed, 39 insertions(+), 12 deletions(-)

--- NEW FILE libwnck-2.8.1-fix-tasklist-on-xinerama.patch ---
diff -u -p -r1.62 -r1.65
--- libwnck-2.8.1/libwnck/tasklist.c	3 Dec 2004 20:30:09 -0000	1.62
+++ libwnck-2.8.1/libwnck/tasklist.c	15 Dec 2004 10:25:32 -0000	1.65
@@ -261,4 +261,11 @@ static void     wnck_tasklist_check_end_
 static gpointer task_parent_class;
 static gpointer tasklist_parent_class;
 
+/*
+ * Keep track of all tasklist instances so we can decide
+ * whether to show windows from all monitors in the
+ * tasklist
+ */
+static GSList *tasklist_instances;
+
 /**
@@ -517,6 +524,11 @@ wnck_tasklist_init (WnckTasklist *taskli
   atk_obj = gtk_widget_get_accessible (widget);
   atk_object_set_name (atk_obj, _("Window List"));
   atk_object_set_description (atk_obj, _("Tool to switch between visible windows"));
+
+  tasklist_instances = g_slist_append (tasklist_instances, tasklist);
+  g_slist_foreach (tasklist_instances,
+		   (GFunc) wnck_tasklist_update_lists,
+		   NULL);
 }
 
 static void
@@ -545,6 +557,11 @@ wnck_tasklist_finalize (GObject *object)
   WnckTasklist *tasklist;
 
   tasklist = WNCK_TASKLIST (object);
+  
+  tasklist_instances = g_slist_remove (tasklist_instances, tasklist);
+  g_slist_foreach (tasklist_instances,
+		   (GFunc) wnck_tasklist_update_lists,
+		   NULL);
 
   if (tasklist->priv->free_icon_loader_data != NULL)
     (* tasklist->priv->free_icon_loader_data) (tasklist->priv->icon_loader_data);
@@ -1498,26 +1517,36 @@ wnck_tasklist_update_lists (WnckTasklist
   GList *l;
   WnckTask *win_task;
   WnckTask *class_group_task;
-  gint monitor_num;
 
   wnck_tasklist_free_tasks (tasklist);
   
-  windows = wnck_screen_get_windows (tasklist->priv->screen);
-  
   if (GTK_WIDGET (tasklist)->window != NULL)
     {
-      monitor_num = gdk_screen_get_monitor_at_window (_wnck_screen_get_gdk_screen (tasklist->priv->screen),
-                                                      GTK_WIDGET (tasklist)->window);
-      if (monitor_num != tasklist->priv->monitor_num)
-        {
-          tasklist->priv->monitor_num = monitor_num;
-          gdk_screen_get_monitor_geometry (_wnck_screen_get_gdk_screen (tasklist->priv->screen),
-                                           tasklist->priv->monitor_num,
-                                           &tasklist->priv->monitor_geometry);
+      /*
+       * only show windows from this monitor if there is more than one tasklist running
+       */
+      if (tasklist_instances == NULL || tasklist_instances->next == NULL)
+	{
+	  tasklist->priv->monitor_num = -1;
         }
+      else
+	{
+	  int monitor_num;
+
+	  monitor_num = gdk_screen_get_monitor_at_window (_wnck_screen_get_gdk_screen (tasklist->priv->screen),
+							  GTK_WIDGET (tasklist)->window);
+
+	  if (monitor_num != tasklist->priv->monitor_num)
+	    {
+	      tasklist->priv->monitor_num = monitor_num;
+	      gdk_screen_get_monitor_geometry (_wnck_screen_get_gdk_screen (tasklist->priv->screen),
+					       tasklist->priv->monitor_num,
+					       &tasklist->priv->monitor_geometry);
+	    }
+	}
     }
  
-  l = windows;
+  l = windows = wnck_screen_get_windows (tasklist->priv->screen);
   while (l != NULL)
     {
       win = WNCK_WINDOW (l->data);



Index: libwnck.spec
===================================================================
RCS file: /cvs/dist/rpms/libwnck/FC-3/libwnck.spec,v
retrieving revision 1.19
retrieving revision 1.20
diff -u -r1.19 -r1.20
--- libwnck.spec	12 Oct 2004 17:25:48 -0000	1.19
+++ libwnck.spec	7 Apr 2005 19:18:37 -0000	1.20
@@ -6,7 +6,7 @@
 Summary: Window Navigator Construction Kit
 Name: libwnck
 Version: 2.8.1
-Release: 1
+Release: 1.fc3
 URL: ftp://ftp.gnome.org
 Source0: %{name}-%{version}.tar.bz2
 License: LGPL
@@ -22,6 +22,8 @@
 BuildRequires:  pango-devel >= %{pango_version}
 BuildRequires:  startup-notification-devel >= %{startup_notification_version}
 
+Patch0: libwnck-2.8.1-fix-tasklist-on-xinerama.patch
+
 %description
 
 libwnck (pronounced "libwink") is used to implement pagers, tasklists, 
@@ -48,6 +50,8 @@
 
 %prep
 %setup -q
+%patch0 -p1 -b .fix-tasklist-on-xinerama
+
 
 %build
 
@@ -86,6 +90,9 @@
 %{_datadir}/gtk-doc/html/libwnck
 
 %changelog
+* Thu Apr  7 2006 Ray Strode <rstrode at redhat.com> 2.8.1-1.fc3
+- Apply backport to fix tasklist with Xinerama (bug 138874)
+
 * Tue Oct 12 2004 Mark McLoughlin <markmc at redhat.com> 2.8.1-1
 - Update to 2.8.1
 




More information about the fedora-cvs-commits mailing list