Skip to content

Commit bbf355d

Browse files
authored
Merge pull request #3068 from ales-erjavec/fixes/always-on-top
[FIX] Canvas: Fix 'Widgest on top'
2 parents c93ff97 + d4cdf78 commit bbf355d

File tree

2 files changed

+6
-14
lines changed

2 files changed

+6
-14
lines changed

Orange/canvas/application/canvasmain.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1176,6 +1176,9 @@ def set_new_scheme(self, new_scheme):
11761176
if self.freeze_action.isChecked():
11771177
manager.pause()
11781178

1179+
new_scheme.widget_manager.set_float_widgets_on_top(
1180+
self.float_widgets_on_top_action.isChecked()
1181+
)
11791182
scheme_doc.setScheme(new_scheme)
11801183

11811184
# Send a close event to the Scheme, it is responsible for

Orange/canvas/scheme/widgetsscheme.py

Lines changed: 3 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@
2525

2626
import sip
2727

28-
from AnyQt.QtWidgets import QWidget, QShortcut, QLabel, QSizePolicy, QAction, qApp
28+
from AnyQt.QtWidgets import QWidget, QShortcut, QLabel, QSizePolicy, QAction
2929
from AnyQt.QtGui import QKeySequence, QWhatsThisClickedEvent
3030

3131
from AnyQt.QtCore import Qt, QObject, QCoreApplication, QTimer, QEvent
@@ -260,12 +260,6 @@ def __init__(self, parent=None):
260260

261261
# Widgets float above other windows
262262
self.__float_widgets_on_top = False
263-
if hasattr(qApp, "applicationStateChanged"):
264-
# disables/enables widget floating when app (de)activates
265-
# available in Qt >= 5.2
266-
def reapply_float_on_top():
267-
self.set_float_widgets_on_top(self.__float_widgets_on_top)
268-
qApp.applicationStateChanged.connect(reapply_float_on_top)
269263

270264
def set_scheme(self, scheme):
271265
"""
@@ -644,7 +638,6 @@ def set_float_widgets_on_top(self, float_on_top):
644638
Set `Float Widgets on Top` flag on all widgets.
645639
"""
646640
self.__float_widgets_on_top = float_on_top
647-
648641
for widget in self.__widget_for_node.values():
649642
self.__set_float_on_top_flag(widget)
650643

@@ -814,18 +807,14 @@ def __on_env_changed(self, key, newvalue, oldvalue):
814807
def __set_float_on_top_flag(self, widget):
815808
"""Set or unset widget's float on top flag"""
816809
should_float_on_top = self.__float_widgets_on_top
817-
if hasattr(qApp, "applicationState"):
818-
# only float on top when the application is active
819-
# available in Qt >= 5.2
820-
should_float_on_top &= qApp.applicationState() == Qt.ApplicationActive
821-
float_on_top = widget.windowFlags() & Qt.WindowStaysOnTopHint
810+
float_on_top = bool(widget.windowFlags() & Qt.WindowStaysOnTopHint)
822811

823812
if float_on_top == should_float_on_top:
824813
return
825814

826815
widget_was_visible = widget.isVisible()
827816
if should_float_on_top:
828-
widget.setWindowFlags(Qt.WindowStaysOnTopHint)
817+
widget.setWindowFlags(widget.windowFlags() | Qt.WindowStaysOnTopHint)
829818
else:
830819
widget.setWindowFlags(widget.windowFlags() & ~Qt.WindowStaysOnTopHint)
831820

0 commit comments

Comments
 (0)