From e25fe618664dce1f78a62ea3dbb7bfe98137c14d Mon Sep 17 00:00:00 2001 From: Mathieu Pellerin Date: Sat, 18 Nov 2023 16:53:47 +0700 Subject: [PATCH 1/2] Raise login window to make sure it shows in front of other dialogs all the time --- qfieldsync/gui/cloud_login_dialog.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/qfieldsync/gui/cloud_login_dialog.py b/qfieldsync/gui/cloud_login_dialog.py index dea79787..90a13af3 100644 --- a/qfieldsync/gui/cloud_login_dialog.py +++ b/qfieldsync/gui/cloud_login_dialog.py @@ -54,6 +54,8 @@ def show_auth_dialog( ): if CloudLoginDialog.instance: CloudLoginDialog.instance.show() + CloudLoginDialog.instance.raise_() + CloudLoginDialog.instance.activateWindow() return CloudLoginDialog.instance CloudLoginDialog.instance = CloudLoginDialog(network_manager, parent) @@ -153,6 +155,8 @@ def authenticate(self) -> None: if not cfg.config("token") or not self.parent(): self.show() + self.raise_() + self.activateWindow() def on_login_button_clicked(self) -> None: QApplication.setOverrideCursor(Qt.WaitCursor) From 0d65f5a1636e27995e9543bed94b0200d389dc78 Mon Sep 17 00:00:00 2001 From: Mathieu Pellerin Date: Sat, 18 Nov 2023 16:56:02 +0700 Subject: [PATCH 2/2] Insure that login dialog is shown _after_ the cloud projects dialog is visible to avoid confusing Qt and OS --- qfieldsync/gui/cloud_projects_dialog.py | 29 +++++++++++++------------ 1 file changed, 15 insertions(+), 14 deletions(-) diff --git a/qfieldsync/gui/cloud_projects_dialog.py b/qfieldsync/gui/cloud_projects_dialog.py index fe329384..f290096f 100644 --- a/qfieldsync/gui/cloud_projects_dialog.py +++ b/qfieldsync/gui/cloud_projects_dialog.py @@ -121,20 +121,6 @@ def __init__( self.update_welcome_label() - if self.network_manager.has_token(): - self.show_projects() - self.show() - self.createButton.setEnabled(True) - else: - CloudLoginDialog.show_auth_dialog( - self.network_manager, - lambda: self.on_auth_accepted(), - lambda: self.close(), - parent=self, - ) - self.hide() - self.createButton.setEnabled(False) - self.use_current_project_directory_action = QAction( QIcon(), self.tr("Use Current Project Directory") ) @@ -175,6 +161,20 @@ def __init__( ) self.deleteButton.setEnabled(False) + self.show() + + if self.network_manager.has_token(): + self.show_projects() + self.createButton.setEnabled(True) + else: + CloudLoginDialog.show_auth_dialog( + self.network_manager, + lambda: self.on_auth_accepted(), + lambda: self.close(), + parent=self, + ) + self.createButton.setEnabled(False) + self.projectsStack.setCurrentWidget(self.projectsListPage) self.createProjectWidget = CloudCreateProjectWidget( iface, @@ -182,6 +182,7 @@ def __init__( QgsProject.instance(), self, ) + self.projectCreatePage.layout().addWidget(self.createProjectWidget) self.createProjectWidget.finished.connect( lambda project_id: self.on_create_project_finished(project_id)