wayland: forward window events
parent
48066984b7
commit
2b3cf36fd9
|
@ -562,29 +562,32 @@ decoration_frame_configure(struct libdecor_frame *frame,
|
|||
window_state = LIBDECOR_WINDOW_STATE_NONE;
|
||||
}
|
||||
|
||||
if (window_state & LIBDECOR_WINDOW_STATE_MAXIMIZED) {
|
||||
window->flags |= SDL_WINDOW_MAXIMIZED;
|
||||
}
|
||||
else {
|
||||
window->flags &= ~SDL_WINDOW_MAXIMIZED;
|
||||
}
|
||||
|
||||
if (window_state & LIBDECOR_WINDOW_STATE_ACTIVE) {
|
||||
window->flags |= SDL_WINDOW_INPUT_FOCUS;
|
||||
}
|
||||
else {
|
||||
window->flags &= ~SDL_WINDOW_INPUT_FOCUS;
|
||||
}
|
||||
|
||||
/* The fullscreen flag is already set my some other entity when 'SDL_SetWindowFullscreen'
|
||||
* is called, but we will set it here again in case the compositor requests fullscreen.
|
||||
/* Always send maximized/restored/focus events; if the event is redundant it will
|
||||
* automatically be discarded (see src/events/SDL_windowevents.c).
|
||||
*
|
||||
* No, we do not get minimize events from libdecor.
|
||||
*/
|
||||
if (window_state & LIBDECOR_WINDOW_STATE_FULLSCREEN) {
|
||||
window->flags |= SDL_WINDOW_FULLSCREEN;
|
||||
}
|
||||
else {
|
||||
} else {
|
||||
if (window->flags & SDL_WINDOW_FULLSCREEN) {
|
||||
/* We might need to re-enter fullscreen after being restored from minimized */
|
||||
SDL_WaylandOutputData *driverdata = (SDL_WaylandOutputData *) SDL_GetDisplayForWindow(window)->driverdata;
|
||||
SetFullscreen(window, driverdata->output);
|
||||
} else {
|
||||
SDL_SendWindowEvent(window,
|
||||
(window_state & LIBDECOR_WINDOW_STATE_MAXIMIZED) ?
|
||||
SDL_WINDOWEVENT_MAXIMIZED :
|
||||
SDL_WINDOWEVENT_RESTORED,
|
||||
0, 0);
|
||||
}
|
||||
window->flags &= ~SDL_WINDOW_FULLSCREEN;
|
||||
}
|
||||
SDL_SendWindowEvent(window,
|
||||
(window_state & LIBDECOR_WINDOW_STATE_ACTIVE) ?
|
||||
SDL_WINDOWEVENT_FOCUS_GAINED :
|
||||
SDL_WINDOWEVENT_FOCUS_LOST,
|
||||
0, 0);
|
||||
|
||||
/* commit frame state */
|
||||
state = libdecor_state_new(width, height);
|
||||
|
|
Loading…
Reference in New Issue