Author: olivier
Date: 2006-07-11 21:47:03 +0000 (Tue, 11 Jul 2006)
New Revision: 22407
Modified:
xfwm4/trunk/src/client.c
xfwm4/trunk/src/tabwin.c
xfwm4/trunk/src/tabwin.h
Log:
Make sure the icon selected in the tabwin matches the selected window in all
cases (fix bug #2008)
Modified: xfwm4/trunk/src/client.c
===================================================================
--- xfwm4/trunk/src/client.c 2006-07-11 21:37:28 UTC (rev 22406)
+++ xfwm4/trunk/src/client.c 2006-07-11 21:47:03 UTC (rev 22407)
@@ -4434,8 +4434,8 @@
TRACE ("entering cycle loop");
passdata.wireframe = wireframeCreate (passdata.c);
icon = getAppIcon (display_info, passdata.c->window, 32, 32);
- passdata.tabwin = tabwinCreate (passdata.c->screen_info->gscr, c,
- passdata.cycle_range,
+ passdata.tabwin = tabwinCreate (passdata.c->screen_info->gscr, c,
+ passdata.c, passdata.cycle_range,
screen_info->params->cycle_workspaces);
eventFilterPush (display_info->xfilter, clientCycle_event_filter,
&passdata);
gtk_main ();
Modified: xfwm4/trunk/src/tabwin.c
===================================================================
--- xfwm4/trunk/src/tabwin.c 2006-07-11 21:37:28 UTC (rev 22406)
+++ xfwm4/trunk/src/tabwin.c 2006-07-11 21:47:03 UTC (rev 22407)
@@ -162,13 +162,13 @@
}
static GtkWidget *
-createWindowlist (GdkScreen * scr, Client * c, unsigned int cycle_range,
Tabwin * t)
+createWindowlist (GdkScreen * scr, Client * current, Client * new, unsigned
int cycle_range, Tabwin * t)
{
ScreenInfo *screen_info;
- Client *c2 = NULL;
- GList *next;
+ Client *c2;
GdkRectangle monitor_sz;
GtkWidget *windowlist, *icon;
+ GList *next;
unsigned int grid_cols;
unsigned int n_clients;
unsigned int grid_rows;
@@ -176,13 +176,15 @@
int msx, msy;
gint monitor;
- g_return_val_if_fail (c != NULL, NULL);
+ g_return_val_if_fail (current != NULL, NULL);
i = 0;
packpos = 0;
+ c2 = NULL;
+ next = NULL;
/* calculate the wrapping */
- screen_info = c->screen_info;
+ screen_info = current->screen_info;
n_clients = screen_info->client_count;
g_return_val_if_fail (n_clients > 0, NULL);
@@ -199,7 +201,7 @@
t->grid_cols = grid_cols;
t->grid_rows = grid_rows;
/* pack the client icons */
- for (c2 = c, i = 0; c2 && i < n_clients; i++, c2 = c2->next)
+ for (c2 = current, i = 0; c2 && i < n_clients; i++, c2 = c2->next)
{
if (!clientSelectMask (c2, cycle_range, WINDOW_REGULAR_FOCUSABLE))
continue;
@@ -210,23 +212,21 @@
GTK_FILL, GTK_FILL, 7, 7);
packpos++;
t->head = g_list_append (t->head, icon);
+ if (c2 == new)
+ {
+ next = g_list_last (t->head);
+ }
}
-
- next = g_list_next (t->head);
- if (!next)
- {
- next = t->head;
- }
- t->current = next;
if (next)
{
tabwinSetSelected (t, next->data);
}
+ t->current = next;
return windowlist;
}
Tabwin *
-tabwinCreate (GdkScreen * scr, Client * c, unsigned int cycle_range, gboolean
display_workspace)
+tabwinCreate (GdkScreen * scr, Client * current, Client * new, unsigned int
cycle_range, gboolean display_workspace)
{
Tabwin *tabwin;
GtkWidget *frame;
@@ -278,7 +278,7 @@
gtk_box_pack_start (GTK_BOX (vbox), tabwin->label, TRUE, TRUE, 0);
gtk_widget_set_size_request (GTK_WIDGET (tabwin->label), 240, -1);
- windowlist = createWindowlist (scr, c, cycle_range, tabwin);
+ windowlist = createWindowlist (scr, current, new, cycle_range, tabwin);
tabwin->container = windowlist;
gtk_container_add (GTK_CONTAINER (frame), windowlist);
Modified: xfwm4/trunk/src/tabwin.h
===================================================================
--- xfwm4/trunk/src/tabwin.h 2006-07-11 21:37:28 UTC (rev 22406)
+++ xfwm4/trunk/src/tabwin.h 2006-07-11 21:47:03 UTC (rev 22407)
@@ -48,7 +48,7 @@
int grid_rows;
};
-Tabwin *tabwinCreate (GdkScreen *, Client *, unsigned int, gboolean);
+Tabwin *tabwinCreate (GdkScreen *, Client *, Client *, unsigned int, gboolean);
Client *tabwinGetSelected (Tabwin *);
Client *tabwinSelectNext (Tabwin *);
Client *tabwinSelectPrev (Tabwin *);
_______________________________________________
Xfce4-commits mailing list
[email protected]
http://foo-projects.org/mailman/listinfo/xfce4-commits