fix window retain problems (#336)

This commit is contained in:
Felix Kratz 2023-03-22 08:48:03 +01:00
parent 81ce6363fa
commit 33f815ceea
2 changed files with 6 additions and 9 deletions

View file

@ -246,6 +246,7 @@ static void popup_create_window(struct popup* popup) {
g_bar_manager.font_smoothing);
window_set_blur_radius(&popup->window, popup->blur_radius);
popup->needs_ordering = true;
}
static void popup_close_window(struct popup* popup) {

View file

@ -184,6 +184,7 @@ void window_send_to_space(struct window* window, uint64_t dsid) {
void window_close(struct window* window) {
if (!window->id) return;
windows_unfreeze();
SLSOrderWindow(g_connection, window->id, 0, 0);
CGContextRelease(window->context);
@ -194,19 +195,14 @@ void window_close(struct window* window) {
void window_set_level(struct window* window, uint32_t level) {
windows_freeze();
SLSTransactionSetWindowLevel(g_transaction, window->id, level);
SLSSetWindowLevel(g_connection, window->id, level);
}
void window_order(struct window* window, struct window* parent, int mode) {
windows_freeze();
if (parent) {
window->parent = parent;
if (mode != W_OUT) window->order_mode = mode;
SLSTransactionOrderWindow(g_transaction, window->id, mode, parent->id);
} else {
window->parent = NULL;
SLSTransactionOrderWindow(g_transaction, window->id, mode, 0);
}
SLSOrderWindow(g_connection, window->id, mode, parent ? parent->id : 0);
}
void window_assign_mouse_tracking_area(struct window* window, CGRect rect) {