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 )
5555 if ( QgsPanelWidget* panel = qobject_cast< QgsPanelWidget* >( p ) )
5656 return panel;
5757
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+
5865 p = p->parentWidget ();
5966 }
6067 return nullptr ;
Original file line number Diff line number Diff line change 1414
1515import qgis # NOQA
1616
17- from qgis .PyQt .QtWidgets import QWidget
17+ from qgis .PyQt .QtWidgets import QWidget , QDialog
1818from qgis .gui import QgsPanelWidget
1919from qgis .testing import start_app , unittest
2020
@@ -49,6 +49,12 @@ def testFindParentPanel(self):
4949 w5 = QWidget (w4 )
5050 self .assertEqual (QgsPanelWidget .findParentPanel (w5 ), w3 )
5151
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+
5258
5359if __name__ == '__main__' :
5460 unittest .main ()
You can’t perform that action at this time.
0 commit comments