mirror of
https://github.com/AyuGram/AyuGramDesktop.git
synced 2025-04-16 14:17:12 +02:00
Try better webview focusing.
This commit is contained in:
parent
8ce10d5503
commit
917d1841c1
2 changed files with 20 additions and 16 deletions
|
@ -9,7 +9,6 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
|
|||
|
||||
#include "base/platform/base_platform_info.h"
|
||||
#include "base/invoke_queued.h"
|
||||
#include "base/qt_signal_producer.h"
|
||||
#include "base/qthelp_url.h"
|
||||
#include "iv/iv_data.h"
|
||||
#include "lang/lang_keys.h"
|
||||
|
@ -281,12 +280,14 @@ void Controller::createWindow() {
|
|||
_window = std::make_unique<Ui::RpWindow>();
|
||||
const auto window = _window.get();
|
||||
|
||||
base::qt_signal_producer(
|
||||
window->window()->windowHandle(),
|
||||
&QWindow::activeChanged
|
||||
) | rpl::filter([=] {
|
||||
return _webview && window->window()->windowHandle()->isActive();
|
||||
}) | rpl::start_with_next([=] {
|
||||
window->windowActiveValue(
|
||||
) | rpl::map([=] {
|
||||
const auto handle = window->window()->windowHandle();
|
||||
return (_shareFocus || _webview) && handle && handle->isActive();
|
||||
}) | rpl::distinct_until_changed(
|
||||
) | rpl::filter(
|
||||
rpl::mappers::_1
|
||||
) | rpl::start_with_next([=] {
|
||||
setInnerFocus();
|
||||
}, window->lifetime());
|
||||
|
||||
|
|
|
@ -739,15 +739,18 @@ postEvent: function(eventType, eventData) {
|
|||
|
||||
setupProgressGeometry();
|
||||
|
||||
base::qt_signal_producer(
|
||||
_widget->window()->windowHandle(),
|
||||
&QWindow::activeChanged
|
||||
) | rpl::filter([=] {
|
||||
return _webview && _widget->window()->windowHandle()->isActive();
|
||||
}) | rpl::start_with_next([=] {
|
||||
if (_webview && !_webview->window.widget()->isHidden()) {
|
||||
_webview->window.focus();
|
||||
}
|
||||
_widget->windowActiveValue(
|
||||
) | rpl::map([=] {
|
||||
const auto handle = _widget->window()->windowHandle();
|
||||
return _webview
|
||||
&& !_webview->window.widget()->isHidden()
|
||||
&& handle
|
||||
&& handle->isActive();
|
||||
}) | rpl::distinct_until_changed(
|
||||
) | rpl::filter(
|
||||
rpl::mappers::_1
|
||||
) | rpl::start_with_next([=] {
|
||||
_webview->window.focus();
|
||||
}, _webview->lifetime);
|
||||
|
||||
return true;
|
||||
|
|
Loading…
Add table
Reference in a new issue