mirror of
https://github.com/baldurk/renderdoc.git
synced 2026-05-06 01:50:38 +00:00
Only look at valid suggestions of docks, not docks in other managers
This commit is contained in:
+38
-1
@@ -548,7 +548,44 @@ void ToolWindowManager::findSuggestions(ToolWindowManagerWrapper* wrapper) {
|
||||
QPoint globalPos = QCursor::pos();
|
||||
QList<QWidget*> candidates;
|
||||
foreach(QSplitter* splitter, wrapper->findChildren<QSplitter*>()) {
|
||||
candidates << splitter;
|
||||
// make sure this is one of our layout splitters, not a proper widget or a splitter
|
||||
// from another manager. We walk the parents, expecting either a QSplitter or QTabWidget
|
||||
// at each time until we reach an area.
|
||||
|
||||
QWidget *w = splitter;
|
||||
|
||||
bool valid = false;
|
||||
|
||||
while(w)
|
||||
{
|
||||
QWidget *parent = w->parentWidget();
|
||||
|
||||
QSplitter *parentSplitter = qobject_cast<QSplitter*>(parent);
|
||||
QTabWidget *parentTab = qobject_cast<QTabWidget*>(parent);
|
||||
|
||||
// keep recursing up what looks like our hierarchy
|
||||
if(parentSplitter || parentTab)
|
||||
{
|
||||
w = parent;
|
||||
continue;
|
||||
}
|
||||
|
||||
ToolWindowManagerArea* area = qobject_cast<ToolWindowManagerArea*>(parent);
|
||||
ToolWindowManagerWrapper* wrapper = qobject_cast<ToolWindowManagerWrapper*>(parent);
|
||||
|
||||
// if it's an area or wrapper, check if it's ours
|
||||
if(area)
|
||||
valid = area->manager() == this;
|
||||
else if(wrapper)
|
||||
valid = wrapper->manager() == this;
|
||||
|
||||
// we're done now, whether we checked for validity, or if we
|
||||
// found something that's none of the above
|
||||
break;
|
||||
}
|
||||
|
||||
if(valid)
|
||||
candidates << splitter;
|
||||
}
|
||||
foreach(ToolWindowManagerArea* area, m_areas) {
|
||||
if (area->topLevelWidget() == wrapper->topLevelWidget()) {
|
||||
|
||||
@@ -57,6 +57,8 @@ public:
|
||||
*/
|
||||
QList<QWidget*> toolWindows();
|
||||
|
||||
ToolWindowManager* manager() { return m_manager; }
|
||||
|
||||
/*!
|
||||
* Updates the \a toolWindow to its current properties and title.
|
||||
*/
|
||||
|
||||
@@ -44,6 +44,8 @@ public:
|
||||
//! Removes the wrapper.
|
||||
virtual ~ToolWindowManagerWrapper();
|
||||
|
||||
ToolWindowManager* manager() { return m_manager; }
|
||||
|
||||
protected:
|
||||
//! Reimplemented to register hiding of contained tool windows when user closes the floating window.
|
||||
virtual void closeEvent(QCloseEvent *);
|
||||
|
||||
Reference in New Issue
Block a user