Skip to content

Commit e15c93d

Browse files
committedOct 17, 2016
Fix color widget opens in wrong panel (fix #15705)
(cherry-picked from 721d3c5)
1 parent 979d619 commit e15c93d

File tree

2 files changed

+14
-1
lines changed

2 files changed

+14
-1
lines changed
 

‎src/gui/qgspanelwidget.cpp

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff 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;

‎tests/src/python/test_qgspanelwidget.py

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414

1515
import qgis # NOQA
1616

17-
from qgis.PyQt.QtWidgets import QWidget
17+
from qgis.PyQt.QtWidgets import QWidget, QDialog
1818
from qgis.gui import QgsPanelWidget
1919
from 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

5359
if __name__ == '__main__':
5460
unittest.main()

0 commit comments

Comments
 (0)
Please sign in to comment.