1. TODO item

2. netwm stuff broke e17 - it was setting all windwos to want to go to desk 0
as if it didnt find netwm hints - netwm.desk was 0 anyway - and thus bordfers
got instantly re-attached to deskt 0... and thus if u flipped desktops,
things got weird (new windwos all jumped to desk 0)


SVN revision: 14812
This commit is contained in:
Carsten Haitzler 2005-05-17 08:30:26 +00:00
parent 4e687c0dc8
commit 1112210137
3 changed files with 14 additions and 4 deletions

2
TODO
View File

@ -55,6 +55,8 @@ Also look at all the .c files - they have their own localized TODO lists
These are in no particular order: These are in no particular order:
* drop on ibar for re-ordering, removal seems broken (drop location is the
wrong spot)
* break out desks x/y size config so you can have a different desktop size * break out desks x/y size config so you can have a different desktop size
per zone - right now there is a signle global (use this later as the default per zone - right now there is a signle global (use this later as the default
for new/unconfigured zones) for new/unconfigured zones)

View File

@ -148,6 +148,7 @@ struct _E_Border
struct { struct {
pid_t pid; pid_t pid;
unsigned int desktop; unsigned int desktop;
unsigned char use_desktop : 1;
/* NetWM Window state */ /* NetWM Window state */
struct { struct {

View File

@ -289,14 +289,20 @@ e_hints_window_init(E_Border *bd)
e_border_raise(bd); e_border_raise(bd);
if (!ecore_x_netwm_desktop_get(bd->client.win, &bd->client.netwm.desktop)) if (!ecore_x_netwm_desktop_get(bd->client.win, &bd->client.netwm.desktop))
bd->client.netwm.desktop = 0; {
bd->client.netwm.use_desktop = 0;
bd->client.netwm.desktop = 0;
}
else
bd->client.netwm.use_desktop = 1;
if (!ecore_x_netwm_pid_get(bd->client.win, &bd->client.netwm.pid)) if (!ecore_x_netwm_pid_get(bd->client.win, &bd->client.netwm.pid))
bd->client.netwm.pid = -1; bd->client.netwm.pid = -1;
if (bd->client.netwm.desktop == 0xffffffff) if (bd->client.netwm.desktop == 0xffffffff)
e_border_stick(bd); e_border_stick(bd);
else if ((bd->client.netwm.desktop >= 0) else if ((bd->client.netwm.use_desktop) &&
&& (bd->client.netwm.desktop < (bd->zone->desk_x_count * bd->zone->desk_y_count))) (bd->client.netwm.desktop >= 0) &&
(bd->client.netwm.desktop < (bd->zone->desk_x_count * bd->zone->desk_y_count)))
{ {
E_Desk *desk; E_Desk *desk;
int x, y; int x, y;
@ -305,7 +311,8 @@ e_hints_window_init(E_Border *bd)
x = bd->client.netwm.desktop - (y * bd->zone->desk_x_count); x = bd->client.netwm.desktop - (y * bd->zone->desk_x_count);
desk = e_desk_at_xy_get(bd->zone, x, y); desk = e_desk_at_xy_get(bd->zone, x, y);
e_border_desk_set(bd, desk); if (desk)
e_border_desk_set(bd, desk);
} }
if (bd->client.netwm.state.sticky) if (bd->client.netwm.state.sticky)