aboutsummaryrefslogtreecommitdiff
path: root/src/QuickMedia.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/QuickMedia.cpp')
-rw-r--r--src/QuickMedia.cpp39
1 files changed, 26 insertions, 13 deletions
diff --git a/src/QuickMedia.cpp b/src/QuickMedia.cpp
index cf7d058..6dda729 100644
--- a/src/QuickMedia.cpp
+++ b/src/QuickMedia.cpp
@@ -2906,6 +2906,17 @@ namespace QuickMedia {
|| is_soundcloud(url);
}
+ static void show_video_player_window(Display *disp, Window video_player_window, Window window) {
+ XMapWindow(disp, video_player_window);
+ XSync(disp, False);
+
+ Window focused_window = None;
+ int dummy;
+ XGetInputFocus(disp, &focused_window, &dummy);
+ if(focused_window == window)
+ XSetInputFocus(disp, video_player_window, RevertToParent, CurrentTime);
+ }
+
void Program::video_page_download_video(const std::string &url, mgl::WindowHandle video_player_window) {
bool separate_audio_option = url_should_download_with_youtube_dl(url);
std::string video_id;
@@ -2939,10 +2950,8 @@ namespace QuickMedia {
tabs.push_back(Tab{ std::move(body), std::move(options_page), nullptr });
bool selected = page_loop(tabs);
- if(video_player_window) {
- XMapWindow(disp, video_player_window);
- XSync(disp, False);
- }
+ if(video_player_window)
+ show_video_player_window(disp, video_player_window, window.get_system_handle());
if(!selected)
return;
@@ -3069,6 +3078,12 @@ namespace QuickMedia {
if(!subtitle_data.url.empty())
video_player->add_subtitle(subtitle_data.url, subtitle_data.title, "eng");
+ Window focused_window = None;
+ int dummy;
+ XGetInputFocus(disp, &focused_window, &dummy);
+ if(focused_window == window.get_system_handle())
+ XSetInputFocus(disp, video_player_window, RevertToParent, CurrentTime);
+
update_time_pos = true;
};
@@ -3377,7 +3392,9 @@ namespace QuickMedia {
while (current_page == PageType::VIDEO_CONTENT && window.is_open() && !go_to_previous_page) {
while (window.poll_event(event)) {
common_event_handler(event);
- if(event.type == mgl::Event::Resized) {
+ if(event.type == mgl::Event::GainedFocus && video_player_window) {
+ XSetInputFocus(disp, video_player_window, RevertToParent, CurrentTime);
+ } else if(event.type == mgl::Event::Resized) {
window_size.x = event.size.width;
window_size.y = event.size.height;
} else if(event.type == mgl::Event::KeyPressed && (event.key.code == mgl::Keyboard::Escape || event.key.code == mgl::Keyboard::Q || event.key.code == mgl::Keyboard::Backspace)) {
@@ -3446,8 +3463,7 @@ namespace QuickMedia {
});
if(task_result == TaskResult::CANCEL) {
- XMapWindow(disp, video_player_window);
- XSync(disp, False);
+ show_video_player_window(disp, video_player_window, window.get_system_handle());
cancelled = true;
}
}
@@ -3463,8 +3479,7 @@ namespace QuickMedia {
});
if(related_pages_result == TaskResult::FALSE) {
- XMapWindow(disp, video_player_window);
- XSync(disp, False);
+ show_video_player_window(disp, video_player_window, window.get_system_handle());
show_notification("QuickMedia", "Failed to get related pages", Urgency::CRITICAL);
} else if(related_pages_result == TaskResult::TRUE && !related_pages.empty()) {
video_page->set_watch_progress(video_time_pos, video_duration);
@@ -3498,12 +3513,10 @@ namespace QuickMedia {
current_page = PageType::VIDEO_CONTENT;
load_video_error_check(resume_start_time > 0.1 ? std::to_string((int)resume_start_time) : "");
} else {
- XMapWindow(disp, video_player_window);
- XSync(disp, False);
+ show_video_player_window(disp, video_player_window, window.get_system_handle());
}
} else {
- XMapWindow(disp, video_player_window);
- XSync(disp, False);
+ show_video_player_window(disp, video_player_window, window.get_system_handle());
}
}
} else if(pressed_keysym == XK_c && pressing_ctrl) {