mirror of
https://github.com/vale981/bspwm
synced 2025-03-06 02:01:42 -05:00
Fix toggle_fullscreen
This commit is contained in:
parent
e771dd4c90
commit
3656722c14
5 changed files with 14 additions and 13 deletions
16
events.c
16
events.c
|
@ -102,10 +102,10 @@ void map_request(xcb_generic_event_t *evt)
|
|||
toggle_floating(birth);
|
||||
|
||||
if (desk->focus != NULL && desk->focus->client->fullscreen)
|
||||
toggle_fullscreen(desk->focus->client);
|
||||
toggle_fullscreen(mon, desk->focus->client);
|
||||
|
||||
if (fullscreen)
|
||||
toggle_fullscreen(birth->client);
|
||||
toggle_fullscreen(mon, birth->client);
|
||||
|
||||
c->transient = transient;
|
||||
|
||||
|
@ -276,11 +276,11 @@ void client_message(xcb_generic_event_t *evt)
|
|||
return;
|
||||
|
||||
if (e->type == ewmh->_NET_WM_STATE) {
|
||||
handle_state(loc.node, e->data.data32[1], e->data.data32[0]);
|
||||
handle_state(loc.node, e->data.data32[2], e->data.data32[0]);
|
||||
handle_state(loc.monitor, loc.desktop, loc.node, e->data.data32[1], e->data.data32[0]);
|
||||
handle_state(loc.monitor, loc.desktop, loc.node, e->data.data32[2], e->data.data32[0]);
|
||||
} else if (e->type == ewmh->_NET_ACTIVE_WINDOW) {
|
||||
if (loc.desktop->focus->client->fullscreen && loc.desktop->focus != loc.node)
|
||||
toggle_fullscreen(loc.desktop->focus->client);
|
||||
toggle_fullscreen(loc.monitor, loc.desktop->focus->client);
|
||||
if (loc.monitor->desk != loc.desktop) {
|
||||
arrange(loc.monitor, loc.desktop);
|
||||
select_desktop(loc.desktop);
|
||||
|
@ -403,15 +403,15 @@ void button_release(void)
|
|||
update_floating_rectangle(frozen_pointer->node->client);
|
||||
}
|
||||
|
||||
void handle_state(node_t *n, xcb_atom_t state, unsigned int action)
|
||||
void handle_state(monitor_t *m, desktop_t *d, node_t *n, xcb_atom_t state, unsigned int action)
|
||||
{
|
||||
if (state == ewmh->_NET_WM_STATE_FULLSCREEN) {
|
||||
bool fs = n->client->fullscreen;
|
||||
if (action == XCB_EWMH_WM_STATE_TOGGLE
|
||||
|| (fs && action == XCB_EWMH_WM_STATE_REMOVE)
|
||||
|| (!fs && action == XCB_EWMH_WM_STATE_ADD)) {
|
||||
toggle_fullscreen(n->client);
|
||||
arrange(mon, mon->desk);
|
||||
toggle_fullscreen(m, n->client);
|
||||
arrange(m, d);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
2
events.h
2
events.h
|
@ -14,6 +14,6 @@ void property_notify(xcb_generic_event_t *);
|
|||
void button_press(xcb_generic_event_t *);
|
||||
void motion_notify(xcb_generic_event_t *);
|
||||
void button_release(void);
|
||||
void handle_state(node_t *, xcb_atom_t, unsigned int);
|
||||
void handle_state(monitor_t *, desktop_t *, node_t *, xcb_atom_t, unsigned int);
|
||||
|
||||
#endif
|
||||
|
|
|
@ -89,7 +89,7 @@ void process_message(char *msg, char *rsp)
|
|||
}
|
||||
} else if (strcmp(cmd, "toggle_fullscreen") == 0) {
|
||||
if (mon->desk->focus != NULL)
|
||||
toggle_fullscreen(mon->desk->focus->client);
|
||||
toggle_fullscreen(mon, mon->desk->focus->client);
|
||||
} else if (strcmp(cmd, "toggle_floating") == 0) {
|
||||
split_mode = MODE_AUTOMATIC;
|
||||
toggle_floating(mon->desk->focus);
|
||||
|
|
5
window.c
5
window.c
|
@ -193,7 +193,7 @@ void window_kill(desktop_t *d, node_t *n)
|
|||
remove_node(d, n);
|
||||
}
|
||||
|
||||
void toggle_fullscreen(client_t *c)
|
||||
void toggle_fullscreen(monitor_t *m, client_t *c)
|
||||
{
|
||||
PRINTF("toggle fullscreen %X\n", c->window);
|
||||
|
||||
|
@ -207,7 +207,8 @@ void toggle_fullscreen(client_t *c)
|
|||
xcb_ewmh_set_wm_state(ewmh, c->window, LENGTH(values), values);
|
||||
window_raise(c->window);
|
||||
window_border_width(c->window, 0);
|
||||
window_move_resize(c->window, 0, 0, screen_width, screen_height);
|
||||
xcb_rectangle_t r = m->rectangle;
|
||||
window_move_resize(c->window, r.x, r.y, r.width, r.height);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
2
window.h
2
window.h
|
@ -11,7 +11,7 @@ bool locate_desktop(char *, desktop_location_t *);
|
|||
void window_draw_border(node_t *, bool, bool);
|
||||
void window_close(node_t *);
|
||||
void window_kill(desktop_t *, node_t *);
|
||||
void toggle_fullscreen(client_t *);
|
||||
void toggle_fullscreen(monitor_t *, client_t *);
|
||||
void toggle_floating(node_t *);
|
||||
void toggle_locked(client_t *);
|
||||
void window_border_width(xcb_window_t, uint32_t);
|
||||
|
|
Loading…
Add table
Reference in a new issue