mirror of
https://github.com/baldurk/renderdoc.git
synced 2026-05-06 10:00:40 +00:00
Add custom properties to ToolWindowManager toolwindows, update titles
* Two properties added - DisallowUserDocking which completely prevents a toolwindow from being dragged or docked other than programmatically. * HideCloseButton also hides the close button that normally appears on the tabs created * Also tabs now watch for title change signals and update the titles in tabs.
This commit is contained in:
@@ -80,6 +80,17 @@ ToolWindowManager::~ToolWindowManager() {
|
||||
}
|
||||
}
|
||||
|
||||
void ToolWindowManager::setToolWindowProperties(QWidget* toolWindow, ToolWindowManager::ToolWindowProperty properties) {
|
||||
m_toolWindowProperties[toolWindow] = properties;
|
||||
ToolWindowManagerArea *area = areaOf(toolWindow);
|
||||
if(area)
|
||||
area->updateToolWindow(toolWindow);
|
||||
}
|
||||
|
||||
ToolWindowManager::ToolWindowProperty ToolWindowManager::toolWindowProperties(QWidget* toolWindow) {
|
||||
return m_toolWindowProperties[toolWindow];
|
||||
}
|
||||
|
||||
void ToolWindowManager::addToolWindow(QWidget *toolWindow, const AreaReference &area) {
|
||||
addToolWindows(QList<QWidget*>() << toolWindow, area);
|
||||
}
|
||||
@@ -97,6 +108,8 @@ void ToolWindowManager::addToolWindows(QList<QWidget *> toolWindows, const ToolW
|
||||
toolWindow->hide();
|
||||
toolWindow->setParent(0);
|
||||
m_toolWindows << toolWindow;
|
||||
m_toolWindowProperties[toolWindow] = ToolWindowProperty(0);
|
||||
QObject::connect(toolWindow, &QWidget::windowTitleChanged, this, &ToolWindowManager::windowTitleChanged);
|
||||
}
|
||||
moveToolWindows(toolWindows, area);
|
||||
}
|
||||
@@ -211,6 +224,7 @@ void ToolWindowManager::removeToolWindow(QWidget *toolWindow) {
|
||||
}
|
||||
moveToolWindow(toolWindow, NoArea);
|
||||
m_toolWindows.removeOne(toolWindow);
|
||||
m_toolWindowProperties.remove(toolWindow);
|
||||
}
|
||||
|
||||
void ToolWindowManager::setSuggestionSwitchInterval(int msec) {
|
||||
@@ -373,6 +387,9 @@ void ToolWindowManager::startDrag(const QList<QWidget *> &toolWindows) {
|
||||
qWarning("ToolWindowManager::execDrag: drag is already in progress");
|
||||
return;
|
||||
}
|
||||
foreach(QWidget* toolWindow, toolWindows) {
|
||||
if(toolWindowProperties(toolWindow) & DisallowUserDocking) { return; }
|
||||
}
|
||||
if (toolWindows.isEmpty()) { return; }
|
||||
m_draggedToolWindows = toolWindows;
|
||||
m_dragIndicator->setPixmap(generateDragPixmap(toolWindows));
|
||||
@@ -675,6 +692,17 @@ void ToolWindowManager::tabCloseRequested(int index) {
|
||||
hideToolWindow(toolWindow);
|
||||
}
|
||||
|
||||
void ToolWindowManager::windowTitleChanged(const QString &title) {
|
||||
QWidget* toolWindow = qobject_cast<QWidget*>(sender());
|
||||
if(!toolWindow) {
|
||||
return;
|
||||
}
|
||||
ToolWindowManagerArea *area = areaOf(toolWindow);
|
||||
if(area) {
|
||||
area->updateToolWindow(toolWindow);
|
||||
}
|
||||
}
|
||||
|
||||
QSplitter *ToolWindowManager::createSplitter() {
|
||||
QSplitter* splitter = new QSplitter();
|
||||
splitter->setChildrenCollapsible(false);
|
||||
|
||||
Reference in New Issue
Block a user