Fix missing title-bar redrawing with Wayland & libdecor
Regression in [0], changing active/inactive missed redrawing the
title-bar,
[0]: 37b256e26f
This commit is contained in:
@@ -355,6 +355,8 @@ static void gwl_window_frame_update_from_pending_lockfree(GWL_Window *win)
|
||||
|
||||
#endif
|
||||
|
||||
bool do_redraw = false;
|
||||
|
||||
if (win->frame_pending.size[0] != 0 && win->frame_pending.size[1] != 0) {
|
||||
if ((win->frame.size[0] != win->frame_pending.size[0]) ||
|
||||
(win->frame.size[1] != win->frame_pending.size[1])) {
|
||||
@@ -362,6 +364,9 @@ static void gwl_window_frame_update_from_pending_lockfree(GWL_Window *win)
|
||||
}
|
||||
}
|
||||
|
||||
bool is_active_ghost = (win->ghost_window ==
|
||||
win->ghost_system->getWindowManager()->getActiveWindow());
|
||||
|
||||
if (win->frame_pending.is_active) {
|
||||
win->ghost_window->activate();
|
||||
}
|
||||
@@ -369,6 +374,10 @@ static void gwl_window_frame_update_from_pending_lockfree(GWL_Window *win)
|
||||
win->ghost_window->deactivate();
|
||||
}
|
||||
|
||||
if (is_active_ghost != win->frame_pending.is_active) {
|
||||
do_redraw = true;
|
||||
}
|
||||
|
||||
win->frame_pending.size[0] = win->frame.size[0];
|
||||
win->frame_pending.size[1] = win->frame.size[1];
|
||||
|
||||
@@ -377,6 +386,15 @@ static void gwl_window_frame_update_from_pending_lockfree(GWL_Window *win)
|
||||
/* Signal not to apply the scale unless it's configured. */
|
||||
win->frame_pending.size[0] = 0;
|
||||
win->frame_pending.size[1] = 0;
|
||||
|
||||
if (do_redraw) {
|
||||
#ifdef USE_EVENT_BACKGROUND_THREAD
|
||||
/* Could swap buffers, use pending to a redundant call in some cases. */
|
||||
gwl_window_pending_actions_tag(win, PENDING_SWAP_BUFFERS);
|
||||
#else
|
||||
win->ghost_window->swapBuffers();
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
static void gwl_window_frame_update_from_pending(GWL_Window *win)
|
||||
|
||||
Reference in New Issue
Block a user