File tree Expand file tree Collapse file tree 2 files changed +14
-1
lines changed Expand file tree Collapse file tree 2 files changed +14
-1
lines changed Original file line number Diff line number Diff line change @@ -55,6 +55,13 @@ QgsPanelWidget*QgsPanelWidget::findParentPanel( QWidget* widget )
55
55
if ( QgsPanelWidget* panel = qobject_cast< QgsPanelWidget* >( p ) )
56
56
return panel;
57
57
58
+ if ( p->window () == p )
59
+ {
60
+ // break on encountering a window - eg a dialog opened from a panel should not inline
61
+ // widgets inside the parent panel
62
+ return nullptr ;
63
+ }
64
+
58
65
p = p->parentWidget ();
59
66
}
60
67
return nullptr ;
Original file line number Diff line number Diff line change 14
14
15
15
import qgis # NOQA
16
16
17
- from qgis .PyQt .QtWidgets import QWidget
17
+ from qgis .PyQt .QtWidgets import QWidget , QDialog
18
18
from qgis .gui import QgsPanelWidget
19
19
from qgis .testing import start_app , unittest
20
20
@@ -49,6 +49,12 @@ def testFindParentPanel(self):
49
49
w5 = QWidget (w4 )
50
50
self .assertEqual (QgsPanelWidget .findParentPanel (w5 ), w3 )
51
51
52
+ # chain should be broken when a new window is encountered
53
+ n = QgsPanelWidget ()
54
+ n2 = QDialog (n )
55
+ n3 = QWidget (n2 )
56
+ self .assertFalse (QgsPanelWidget .findParentPanel (n3 ))
57
+
52
58
53
59
if __name__ == '__main__' :
54
60
unittest .main ()
You can’t perform that action at this time.
0 commit comments