diff --git a/Telegram/SourceFiles/history/history_widget.cpp b/Telegram/SourceFiles/history/history_widget.cpp
index e81fc1bc2..b19c0222f 100644
--- a/Telegram/SourceFiles/history/history_widget.cpp
+++ b/Telegram/SourceFiles/history/history_widget.cpp
@@ -378,11 +378,10 @@ HistoryWidget::HistoryWidget(
 		_field->setEnabled(shown);
 	}, _field->lifetime());
 #endif // Q_OS_MAC
-	connect(
-		controller->widget()->windowHandle(),
-		&QWindow::visibleChanged,
-		this,
-		[=] { windowIsVisibleChanged(); });
+	controller->widget()->shownValue(
+	) | rpl::skip(1) | rpl::start_with_next([=] {
+		windowIsVisibleChanged();
+	}, lifetime());
 
 	initTabbedSelector();
 
diff --git a/Telegram/SourceFiles/window/main_window.cpp b/Telegram/SourceFiles/window/main_window.cpp
index a8b6cf861..77ce6d20f 100644
--- a/Telegram/SourceFiles/window/main_window.cpp
+++ b/Telegram/SourceFiles/window/main_window.cpp
@@ -358,6 +358,13 @@ MainWindow::MainWindow(not_null<Controller*> controller)
 		});
 	}, lifetime());
 
+	shownValue(
+	) | rpl::skip(1) | rpl::start_with_next([=](bool visible) {
+		InvokeQueued(this, [=] {
+			handleVisibleChanged(visible);
+		});
+	}, lifetime());
+
 	body()->sizeValue(
 	) | rpl::start_with_next([=](QSize size) {
 		updateControlsGeometry();
@@ -457,11 +464,6 @@ void MainWindow::init() {
 		&QWindow::windowStateChanged,
 		this,
 		[=](Qt::WindowState state) { handleStateChanged(state); });
-	connect(
-		windowHandle(),
-		&QWindow::visibleChanged,
-		this,
-		[=](bool visible) { handleVisibleChanged(visible); });
 
 	updatePalette();