|
|
- static Client * scratchpad_last_showed = NULL;
-
- static void scratchpad_hide ()
- {
- if (selmon->sel)
- {
- selmon->sel->tags = SCRATCHPAD_MASK;
- focus(NULL);
- arrange(selmon);
- }
- }
-
- static _Bool scratchpad_last_showed_is_killed (void)
- {
- _Bool killed = 1;
- for (Client * c = selmon->clients; c != NULL; c = c->next)
- {
- if (c == scratchpad_last_showed)
- {
- killed = 0;
- break;
- }
- }
- return killed;
- }
-
- static void scratchpad_remove ()
- {
- if (selmon->sel && scratchpad_last_showed != NULL && selmon->sel == scratchpad_last_showed)
- scratchpad_last_showed = NULL;
- }
-
- static void scratchpad_show ()
- {
- if (scratchpad_last_showed == NULL || scratchpad_last_showed_is_killed ())
- scratchpad_show_first ();
- else
- {
- if (scratchpad_last_showed->tags != SCRATCHPAD_MASK)
- {
- scratchpad_last_showed->tags = SCRATCHPAD_MASK;
- focus(NULL);
- arrange(selmon);
- }
- else
- {
- _Bool found_current = 0;
- _Bool found_next = 0;
- for (Client * c = selmon->clients; c != NULL; c = c->next)
- {
- if (found_current == 0)
- {
- if (c == scratchpad_last_showed)
- {
- found_current = 1;
- continue;
- }
- }
- else
- {
- if (c->tags == SCRATCHPAD_MASK)
- {
- found_next = 1;
- scratchpad_show_client (c);
- break;
- }
- }
- }
- if (found_next == 0) scratchpad_show_first ();
- }
- }
- }
-
- static void scratchpad_show_client (Client * c)
- {
- scratchpad_last_showed = c;
- c->tags = selmon->tagset[selmon->seltags];
- focus(c);
- arrange(selmon);
- }
-
- static void scratchpad_show_first (void)
- {
- for (Client * c = selmon->clients; c != NULL; c = c->next)
- {
- if (c->tags == SCRATCHPAD_MASK)
- {
- scratchpad_show_client (c);
- break;
- }
- }
- }
|