From 5de5f9d9a9b945c80f9a7f387570c18232548870 Mon Sep 17 00:00:00 2001 From: dec05eba Date: Thu, 8 Apr 2021 11:56:43 +0200 Subject: Temporary workaround tabbed bug When closing the tabbed window, all embedded windows except the first one are killed --- src/QuickMedia.cpp | 31 ++++--------------------------- src/plugins/Matrix.cpp | 4 ---- 2 files changed, 4 insertions(+), 31 deletions(-) (limited to 'src') diff --git a/src/QuickMedia.cpp b/src/QuickMedia.cpp index ebbbba8..e092584 100644 --- a/src/QuickMedia.cpp +++ b/src/QuickMedia.cpp @@ -445,21 +445,6 @@ namespace QuickMedia { return body_item; } - void Program::window_set_urgent() { - XWMHints *hints = XGetWMHints(disp, x11_window); - if(!hints) { - fprintf(stderr, "seturgent: unable to get window manager hints\n"); - return; - } - - hints->flags |= XUrgencyHint; - - if(!XSetWMHints(disp, x11_window, hints)) - fprintf(stderr, "seturgent: unable to set urgency hint\n"); - - XFree(hints); - } - int Program::run(int argc, char **argv) { if(argc < 2) { usage(); @@ -631,14 +616,6 @@ namespace QuickMedia { XMapWindow(disp, x11_window); XFlush(disp); - XWMHints* hints = XAllocWMHints(); - if(hints) { - hints->flags = AllHints; - hints->initial_state = NormalState; - XSetWMHints(disp, x11_window, hints); - XFree(hints); - } - window.create(x11_window); resources_root = "/usr/share/quickmedia/"; @@ -810,11 +787,13 @@ namespace QuickMedia { } } - void Program::handle_window_close() { + bool Program::handle_window_close() { if(wm_delete_window_atom && XCheckTypedWindowEvent(disp, x11_window, ClientMessage, &xev) && (Atom)xev.xclient.data.l[0] == wm_delete_window_atom) { current_page = PageType::EXIT; window.close(); + return true; } + return false; } void Program::base_event_handler(sf::Event &event, PageType previous_page, Body *body, SearchBar *search_bar, bool handle_keypress, bool handle_searchbar) { @@ -1790,10 +1769,8 @@ namespace QuickMedia { } } - if(wm_delete_window_atom && XCheckTypedWindowEvent(disp, x11_window, ClientMessage, &xev) && (Atom)xev.xclient.data.l[0] == wm_delete_window_atom) { + if(handle_window_close()) { task.cancel(); - current_page = PageType::EXIT; - window.close(); return TaskResult::CANCEL; } diff --git a/src/plugins/Matrix.cpp b/src/plugins/Matrix.cpp index 9db9872..9568244 100644 --- a/src/plugins/Matrix.cpp +++ b/src/plugins/Matrix.cpp @@ -389,7 +389,6 @@ namespace QuickMedia { invites_page->add_body_item(std::move(body_item)); if(invite.new_invite) { show_notification("QuickMedia matrix - " + invite.room_name, "You were invited to " + invite.room_name + " by " + invited_by_display_name + " (" + invite.invited_by->user_id + ")"); - program->window_set_urgent(); } } @@ -452,8 +451,6 @@ namespace QuickMedia { show_notification("QuickMedia matrix - " + unread_notification.sender + " (" + it.first->get_name() + ")", unread_notification.body); } } - if(!unread_notifications.empty()) - program->window_set_urgent(); //if(!unread_notifications.empty()) { // rooms_page->sort_rooms(); // room_tags_page->sort_rooms(); @@ -585,7 +582,6 @@ namespace QuickMedia { // TODO: What if the message or username begins with "-"? also make the notification image be the avatar of the user if((!is_window_focused || room != current_room || page_type == MatrixPageType::ROOM_LIST) && message->related_event_type != RelatedEventType::EDIT && message->related_event_type != RelatedEventType::REDACTION) { show_notification("QuickMedia matrix - " + matrix->message_get_author_displayname(message.get()) + " (" + room->get_name() + ")", message->body); - program->window_set_urgent(); } } } -- cgit v1.2.3