mirror of
https://github.com/baldurk/renderdoc.git
synced 2026-05-05 01:20:42 +00:00
Update toolwindowmanager to 6f1c258
This commit is contained in:
+31
-9
@@ -368,6 +368,18 @@ void ToolWindowManager::removeToolWindow(QWidget *toolWindow) {
|
||||
qWarning("unknown tool window");
|
||||
return;
|
||||
}
|
||||
|
||||
// search up to find the first parent manager
|
||||
ToolWindowManager *manager = findClosestParent<ToolWindowManager*>(toolWindow);
|
||||
|
||||
if (!manager) {
|
||||
qWarning("unknown tool window");
|
||||
return;
|
||||
}
|
||||
|
||||
if (!manager->allowClose(toolWindow))
|
||||
return;
|
||||
|
||||
moveToolWindow(toolWindow, NoArea);
|
||||
m_toolWindows.removeOne(toolWindow);
|
||||
m_toolWindowProperties.remove(toolWindow);
|
||||
@@ -1128,6 +1140,23 @@ bool ToolWindowManager::eventFilter(QObject *object, QEvent *event) {
|
||||
return QWidget::eventFilter(object, event);
|
||||
}
|
||||
|
||||
bool ToolWindowManager::allowClose(QWidget *toolWindow) {
|
||||
if (!m_toolWindows.contains(toolWindow)) {
|
||||
qWarning("unknown tool window");
|
||||
return true;
|
||||
}
|
||||
int methodIndex = toolWindow->metaObject()->indexOfMethod(QMetaObject::normalizedSignature("checkAllowClose()"));
|
||||
|
||||
if(methodIndex >= 0) {
|
||||
bool ret = true;
|
||||
toolWindow->metaObject()->method(methodIndex).invoke(toolWindow, Qt::DirectConnection, Q_RETURN_ARG(bool, ret));
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
void ToolWindowManager::tabCloseRequested(int index) {
|
||||
ToolWindowManagerArea* tabWidget = qobject_cast<ToolWindowManagerArea*>(sender());
|
||||
if (!tabWidget) {
|
||||
@@ -1140,15 +1169,8 @@ void ToolWindowManager::tabCloseRequested(int index) {
|
||||
return;
|
||||
}
|
||||
|
||||
int methodIndex = toolWindow->metaObject()->indexOfMethod(QMetaObject::normalizedSignature("checkAllowClose()"));
|
||||
|
||||
if(methodIndex >= 0) {
|
||||
bool ret = true;
|
||||
toolWindow->metaObject()->method(methodIndex).invoke(toolWindow, Qt::DirectConnection, Q_RETURN_ARG(bool, ret));
|
||||
|
||||
if(!ret)
|
||||
return;
|
||||
}
|
||||
if (!allowClose(toolWindow))
|
||||
return;
|
||||
|
||||
if(toolWindowProperties(toolWindow) & ToolWindowManager::HideOnClose)
|
||||
hideToolWindow(toolWindow);
|
||||
|
||||
@@ -300,6 +300,8 @@ private:
|
||||
|
||||
void drawHotspotPixmaps();
|
||||
|
||||
bool allowClose(QWidget *toolWindow);
|
||||
|
||||
// last widget used for adding tool windows, or 0 if there isn't one
|
||||
// (warning: may contain pointer to deleted object)
|
||||
ToolWindowManagerArea* m_lastUsedArea;
|
||||
|
||||
@@ -148,7 +148,7 @@ void ToolWindowManagerWrapper::updateTitle() {
|
||||
setWindowTitle(QStringLiteral("Tool Window"));
|
||||
}
|
||||
|
||||
void ToolWindowManagerWrapper::closeEvent(QCloseEvent *) {
|
||||
void ToolWindowManagerWrapper::closeEvent(QCloseEvent *event) {
|
||||
QList<QWidget*> toolWindows;
|
||||
foreach(ToolWindowManagerArea* tabWidget, findChildren<ToolWindowManagerArea*>()) {
|
||||
if (ToolWindowManager::managerOf(tabWidget) == m_manager) {
|
||||
@@ -156,6 +156,13 @@ void ToolWindowManagerWrapper::closeEvent(QCloseEvent *) {
|
||||
}
|
||||
}
|
||||
|
||||
foreach(QWidget* toolWindow, toolWindows) {
|
||||
if (!m_manager->allowClose(toolWindow)) {
|
||||
event->ignore();
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
foreach(QWidget* toolWindow, toolWindows) {
|
||||
if(m_manager->toolWindowProperties(toolWindow) & ToolWindowManager::HideOnClose)
|
||||
m_manager->hideToolWindow(toolWindow);
|
||||
|
||||
Reference in New Issue
Block a user