433 |
c->border_width = attr.border_width; |
c->border_width = attr.border_width; |
434 |
for (i = 0; i < BUTTON_COUNT; i++) |
for (i = 0; i < BUTTON_COUNT; i++) |
435 |
c->button_pressed[i] = False; |
c->button_pressed[i] = False; |
436 |
if (!getGnomeHint (dpy, w, win_hints, &c->win_hints)) |
if (!getGnomeHint (w, win_hints, &c->win_hints)) |
437 |
c->win_hints = 0; |
c->win_hints = 0; |
438 |
if (!getGnomeHint (dpy, w, win_state, &c->win_state)) |
if (!getGnomeHint (w, win_state, &c->win_state)) |
439 |
c->win_state = 0; |
c->win_state = 0; |
440 |
getEWMHState (dpy, w, &c->win_state); |
getEWMHState (w, &c->win_state); |
441 |
if (!getGnomeHint (dpy, w, win_layer, &c->win_layer)) |
if (!getGnomeHint (w, win_layer, &c->win_layer)) |
442 |
c->win_layer = WIN_LAYER_NORMAL; |
c->win_layer = WIN_LAYER_NORMAL; |
443 |
if (!getGnomeHint (dpy, w, win_workspace, &c->win_workspace)) |
if (!getGnomeHint (w, win_workspace, &c->win_workspace)) |
444 |
{ |
{ |
445 |
setGnomeHint (dpy, w, win_workspace, workspace); |
setGnomeHint (w, win_workspace, workspace); |
446 |
c->win_workspace = workspace; |
c->win_workspace = workspace; |
447 |
} |
} |
448 |
if (c->win_workspace > workspace_count - 1) |
if (c->win_workspace > workspace_count - 1) |
449 |
{ |
{ |
450 |
setGnomeHint (dpy, w, win_workspace, workspace_count - 1); |
setGnomeHint (w, win_workspace, workspace_count - 1); |
451 |
c->win_workspace = workspace_count - 1; |
c->win_workspace = workspace_count - 1; |
452 |
} |
} |
453 |
|
|
457 |
else |
else |
458 |
c->has_border = True; |
c->has_border = True; |
459 |
|
|
460 |
if (typeDesktop (dpy, c->window)) |
if (typeDesktop (c->window)) |
461 |
{ |
{ |
462 |
c->win_hints = c->win_hints | WIN_HINTS_SKIP_FOCUS; |
c->win_hints = c->win_hints | WIN_HINTS_SKIP_FOCUS; |
463 |
c->win_state = c->win_state | WIN_STATE_STICKY; |
c->win_state = c->win_state | WIN_STATE_STICKY; |
465 |
c->win_layer = WIN_LAYER_DESKTOP; |
c->win_layer = WIN_LAYER_DESKTOP; |
466 |
} |
} |
467 |
|
|
468 |
if (typeDock (dpy, c->window)) |
if (typeDock (c->window)) |
469 |
{ |
{ |
470 |
c->win_hints = c->win_hints | WIN_HINTS_SKIP_FOCUS; |
c->win_hints = c->win_hints | WIN_HINTS_SKIP_FOCUS; |
471 |
} |
} |
474 |
c->focus = False; |
c->focus = False; |
475 |
getWindowName (dpy, c->window, &c->name); |
getWindowName (dpy, c->window, &c->name); |
476 |
|
|
477 |
mwm_hints = getMotifHints (dpy, c->window); |
mwm_hints = getMotifHints (c->window); |
478 |
if (mwm_hints) |
if (mwm_hints) |
479 |
{ |
{ |
480 |
if (mwm_hints->flags & MWM_HINTS_DECORATIONS && |
if (mwm_hints->flags & MWM_HINTS_DECORATIONS && |
551 |
wc.stack_mode = Above; |
wc.stack_mode = Above; |
552 |
clientConfigure (c, &wc, CWX | CWY | CWHeight | CWWidth | CWStackMode); |
clientConfigure (c, &wc, CWX | CWY | CWHeight | CWWidth | CWStackMode); |
553 |
|
|
554 |
if (getWMState (dpy, c->window) != IconicState) |
if (getWMState (c->window) != IconicState) |
555 |
{ |
{ |
556 |
clientShow (c, True); |
clientShow (c, True); |
557 |
if (focus_new && !(c->win_hints & WIN_HINTS_SKIP_FOCUS)) |
if (focus_new && !(c->win_hints & WIN_HINTS_SKIP_FOCUS)) |
560 |
} |
} |
561 |
} |
} |
562 |
else |
else |
563 |
setWMState (dpy, c->window, IconicState); |
setWMState (c->window, IconicState); |
564 |
|
|
565 |
#ifdef DEBUG |
#ifdef DEBUG |
566 |
printf ("client_count=%d\n", client_count); |
printf ("client_count=%d\n", client_count); |
582 |
if (remap) |
if (remap) |
583 |
XMapWindow (dpy, c->window); |
XMapWindow (dpy, c->window); |
584 |
else |
else |
585 |
setWMState (dpy, c->window, WithdrawnState); |
setWMState (c->window, WithdrawnState); |
586 |
XDestroyWindow (dpy, c->frame); |
XDestroyWindow (dpy, c->frame); |
587 |
|
|
588 |
clientRemoveFromList (c); |
clientRemoveFromList (c); |
691 |
XMapWindow (dpy, c->frame); |
XMapWindow (dpy, c->frame); |
692 |
} |
} |
693 |
if (change_state) |
if (change_state) |
694 |
setWMState (dpy, c->window, NormalState); |
setWMState (c->window, NormalState); |
695 |
} |
} |
696 |
|
|
697 |
void |
void |
705 |
XUnmapWindow (dpy, c->window); |
XUnmapWindow (dpy, c->window); |
706 |
XUnmapWindow (dpy, c->frame); |
XUnmapWindow (dpy, c->frame); |
707 |
if (change_state) |
if (change_state) |
708 |
setWMState (dpy, c->window, IconicState); |
setWMState (c->window, IconicState); |
709 |
c->ignore_unmap++; |
c->ignore_unmap++; |
710 |
} |
} |
711 |
|
|
788 |
if (l == old_layer) |
if (l == old_layer) |
789 |
return; |
return; |
790 |
|
|
791 |
setGnomeHint (dpy, c->window, win_layer, l); |
setGnomeHint (c->window, win_layer, l); |
792 |
c->win_layer = l; |
c->win_layer = l; |
793 |
if (l > old_layer) |
if (l > old_layer) |
794 |
clientRaise (c); |
clientRaise (c); |
807 |
if (c->win_workspace == ws) |
if (c->win_workspace == ws) |
808 |
return; |
return; |
809 |
|
|
810 |
setGnomeHint (dpy, c->window, win_workspace, ws); |
setGnomeHint (c->window, win_workspace, ws); |
811 |
c->win_workspace = ws; |
c->win_workspace = ws; |
812 |
if (getWMState (dpy, c->window) != IconicState) |
if (getWMState (c->window) != IconicState) |
813 |
{ |
{ |
814 |
if (c->win_state & WIN_STATE_STICKY) |
if (c->win_state & WIN_STATE_STICKY) |
815 |
clientShow (c, False); |
clientShow (c, False); |
834 |
#endif |
#endif |
835 |
|
|
836 |
c->win_state = (c->win_state & ~mask) | value; |
c->win_state = (c->win_state & ~mask) | value; |
837 |
setGnomeHint (dpy, c->window, win_state, c->win_state); |
setGnomeHint (c->window, win_state, c->win_state); |
838 |
if (mask & ~WIN_STATE_STICKY) |
if (mask & ~WIN_STATE_STICKY) |
839 |
{ |
{ |
840 |
wc.width = c->width; |
wc.width = c->width; |
854 |
#endif |
#endif |
855 |
|
|
856 |
c->win_state = c->win_state ^ WIN_STATE_SHADED; |
c->win_state = c->win_state ^ WIN_STATE_SHADED; |
857 |
setGnomeHint (dpy, c->window, win_state, c->win_state); |
setGnomeHint (c->window, win_state, c->win_state); |
858 |
wc.width = c->width; |
wc.width = c->width; |
859 |
wc.height = c->height; |
wc.height = c->height; |
860 |
clientConfigure (c, &wc, CWWidth | CWHeight); |
clientConfigure (c, &wc, CWWidth | CWHeight); |
869 |
#endif |
#endif |
870 |
|
|
871 |
c->win_state = c->win_state ^ WIN_STATE_STICKY; |
c->win_state = c->win_state ^ WIN_STATE_STICKY; |
872 |
setGnomeHint (dpy, c->window, win_state, c->win_state); |
setGnomeHint (c->window, win_state, c->win_state); |
873 |
clientSetWorkspace (c, workspace); |
clientSetWorkspace (c, workspace); |
874 |
} |
} |
875 |
|
|
933 |
} |
} |
934 |
|
|
935 |
} |
} |
936 |
setGnomeHint (dpy, c->window, win_state, c->win_state); |
setGnomeHint (c->window, win_state, c->win_state); |
937 |
clientConfigure (c, &wc, CWX | CWY | CWWidth | CWHeight); |
clientConfigure (c, &wc, CWX | CWY | CWWidth | CWHeight); |
938 |
clientWarpMouse (c); |
clientWarpMouse (c); |
939 |
} |
} |
1500 |
if (c2->win_hints & WIN_HINTS_SKIP_FOCUS && |
if (c2->win_hints & WIN_HINTS_SKIP_FOCUS && |
1501 |
!(mask & INCLUDE_SKIP_FOCUS)) |
!(mask & INCLUDE_SKIP_FOCUS)) |
1502 |
okay = False; |
okay = False; |
1503 |
if (getWMState (dpy, c2->window) == IconicState && |
if (getWMState (c2->window) == IconicState && |
1504 |
!(mask & INCLUDE_HIDDEN)) |
!(mask & INCLUDE_HIDDEN)) |
1505 |
okay = False; |
okay = False; |
1506 |
if (c2->win_workspace != workspace && |
if (c2->win_workspace != workspace && |
1562 |
{ |
{ |
1563 |
if (ev.xkey.keycode == keys[KEY_CYCLE_WINDOWS].keycode) |
if (ev.xkey.keycode == keys[KEY_CYCLE_WINDOWS].keycode) |
1564 |
{ |
{ |
1565 |
if (getWMState (dpy, c2->window) == IconicState) |
if (getWMState (c2->window) == IconicState) |
1566 |
clientHide (c2, False); |
clientHide (c2, False); |
1567 |
c2 = clientGetNext (c2, INCLUDE_HIDDEN); |
c2 = clientGetNext (c2, INCLUDE_HIDDEN); |
1568 |
if (!c2) |
if (!c2) |