diff options
Diffstat (limited to 'libdecor/src')
| -rw-r--r-- | libdecor/src/plugins/cairo/libdecor-cairo.c | 12 |
1 files changed, 3 insertions, 9 deletions
diff --git a/libdecor/src/plugins/cairo/libdecor-cairo.c b/libdecor/src/plugins/cairo/libdecor-cairo.c index aa46a0d0d..12af8aacb 100644 --- a/libdecor/src/plugins/cairo/libdecor-cairo.c +++ b/libdecor/src/plugins/cairo/libdecor-cairo.c @@ -2363,6 +2363,7 @@ pointer_button(void *data, } else if (state == WL_POINTER_BUTTON_STATE_RELEASED && frame_cairo->grab) { + libdecor_frame_ref(&frame_cairo->frame); if (frame_cairo->grab == frame_cairo->focus) { switch (frame_cairo->active->type) { case BUTTON_MIN: @@ -2374,16 +2375,8 @@ pointer_button(void *data, toggle_maximized(&frame_cairo->frame); break; case BUTTON_CLOSE: -#ifdef DONT_APPLY_FLTK_CHANGES - if (closeable(frame_cairo)) - libdecor_frame_close(&frame_cairo->frame); -#else - if (closeable(frame_cairo)) { + if (closeable(frame_cairo)) libdecor_frame_close(&frame_cairo->frame); - seat->pointer_focus = NULL; - return; - } -#endif break; default: break; @@ -2391,6 +2384,7 @@ pointer_button(void *data, } frame_cairo->grab = NULL; sync_active_component(frame_cairo, seat); + libdecor_frame_unref(&frame_cairo->frame); } } else if (button == BTN_RIGHT && |
