|
|
@@ -127,6 +127,12 @@ void DockWidgetHelper::setupDocks()
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+static void addWidgetToDock(QDockWidget *p_dock, QWidget *p_widget)
|
|
|
+{
|
|
|
+ p_dock->setWidget(p_widget);
|
|
|
+ p_dock->setFocusProxy(p_widget);
|
|
|
+}
|
|
|
+
|
|
|
void DockWidgetHelper::setupNavigationDock()
|
|
|
{
|
|
|
auto dock = createDockWidget(DockIndex::NavigationDock, tr("Navigation"), m_mainWindow);
|
|
|
@@ -134,8 +140,7 @@ void DockWidgetHelper::setupNavigationDock()
|
|
|
dock->setObjectName(QStringLiteral("NavigationDock.vnotex"));
|
|
|
dock->setAllowedAreas(Qt::AllDockWidgetAreas);
|
|
|
|
|
|
- dock->setWidget(m_mainWindow->m_notebookExplorer);
|
|
|
- dock->setFocusProxy(m_mainWindow->m_notebookExplorer);
|
|
|
+ addWidgetToDock(dock, m_mainWindow->m_notebookExplorer);
|
|
|
m_mainWindow->addDockWidget(Qt::LeftDockWidgetArea, dock);
|
|
|
}
|
|
|
|
|
|
@@ -146,8 +151,7 @@ void DockWidgetHelper::setupOutlineDock()
|
|
|
dock->setObjectName(QStringLiteral("OutlineDock.vnotex"));
|
|
|
dock->setAllowedAreas(Qt::AllDockWidgetAreas);
|
|
|
|
|
|
- dock->setWidget(m_mainWindow->m_outlineViewer);
|
|
|
- dock->setFocusProxy(m_mainWindow->m_outlineViewer);
|
|
|
+ addWidgetToDock(dock, m_mainWindow->m_outlineViewer);
|
|
|
m_mainWindow->addDockWidget(Qt::RightDockWidgetArea, dock);
|
|
|
}
|
|
|
|
|
|
@@ -158,8 +162,7 @@ void DockWidgetHelper::setupConsoleDock()
|
|
|
dock->setObjectName(QStringLiteral("ConsoleDock.vnotex"));
|
|
|
dock->setAllowedAreas(Qt::AllDockWidgetAreas);
|
|
|
|
|
|
- dock->setWidget(m_mainWindow->m_consoleViewer);
|
|
|
- dock->setFocusProxy(m_mainWindow->m_consoleViewer);
|
|
|
+ addWidgetToDock(dock, m_mainWindow->m_consoleViewer);
|
|
|
m_mainWindow->addDockWidget(Qt::BottomDockWidgetArea, dock);
|
|
|
dock->hide();
|
|
|
}
|
|
|
@@ -171,8 +174,7 @@ void DockWidgetHelper::setupSearchDock()
|
|
|
dock->setObjectName(QStringLiteral("SearchDock.vnotex"));
|
|
|
dock->setAllowedAreas(Qt::AllDockWidgetAreas);
|
|
|
|
|
|
- dock->setWidget(m_mainWindow->m_searchPanel);
|
|
|
- dock->setFocusProxy(m_mainWindow->m_searchPanel);
|
|
|
+ addWidgetToDock(dock, m_mainWindow->m_searchPanel);
|
|
|
m_mainWindow->addDockWidget(Qt::LeftDockWidgetArea, dock);
|
|
|
}
|
|
|
|
|
|
@@ -183,8 +185,7 @@ void DockWidgetHelper::setupSnippetDock()
|
|
|
dock->setObjectName(QStringLiteral("SnippetDock.vnotex"));
|
|
|
dock->setAllowedAreas(Qt::AllDockWidgetAreas);
|
|
|
|
|
|
- dock->setWidget(m_mainWindow->m_snippetPanel);
|
|
|
- dock->setFocusProxy(m_mainWindow->m_snippetPanel);
|
|
|
+ addWidgetToDock(dock, m_mainWindow->m_snippetPanel);
|
|
|
m_mainWindow->addDockWidget(Qt::LeftDockWidgetArea, dock);
|
|
|
}
|
|
|
|
|
|
@@ -195,8 +196,7 @@ void DockWidgetHelper::setupHistoryDock()
|
|
|
dock->setObjectName(QStringLiteral("HistoryDock.vnotex"));
|
|
|
dock->setAllowedAreas(Qt::AllDockWidgetAreas);
|
|
|
|
|
|
- dock->setWidget(m_mainWindow->m_historyPanel);
|
|
|
- dock->setFocusProxy(m_mainWindow->m_historyPanel);
|
|
|
+ addWidgetToDock(dock, m_mainWindow->m_historyPanel);
|
|
|
m_mainWindow->addDockWidget(Qt::LeftDockWidgetArea, dock);
|
|
|
}
|
|
|
|
|
|
@@ -207,8 +207,7 @@ void DockWidgetHelper::setupTagDock()
|
|
|
dock->setObjectName(QStringLiteral("TagDock.vnotex"));
|
|
|
dock->setAllowedAreas(Qt::AllDockWidgetAreas);
|
|
|
|
|
|
- dock->setWidget(m_mainWindow->m_tagExplorer);
|
|
|
- dock->setFocusProxy(m_mainWindow->m_tagExplorer);
|
|
|
+ addWidgetToDock(dock, m_mainWindow->m_tagExplorer);
|
|
|
m_mainWindow->addDockWidget(Qt::LeftDockWidgetArea, dock);
|
|
|
}
|
|
|
|
|
|
@@ -219,8 +218,7 @@ void DockWidgetHelper::setupLocationListDock()
|
|
|
dock->setObjectName(QStringLiteral("LocationListDock.vnotex"));
|
|
|
dock->setAllowedAreas(Qt::AllDockWidgetAreas);
|
|
|
|
|
|
- dock->setWidget(m_mainWindow->m_locationList);
|
|
|
- dock->setFocusProxy(m_mainWindow->m_locationList);
|
|
|
+ addWidgetToDock(dock, m_mainWindow->m_locationList);
|
|
|
m_mainWindow->addDockWidget(Qt::BottomDockWidgetArea, dock);
|
|
|
dock->hide();
|
|
|
}
|
|
|
@@ -354,6 +352,12 @@ void DockWidgetHelper::updateDockWidgetTabBar()
|
|
|
if (cnt == 1) {
|
|
|
iconOnly = false;
|
|
|
}
|
|
|
+
|
|
|
+ bool isSideBar = iconOnly && (tabShape == QTabBar::RoundedWest || tabShape == QTabBar::TriangularWest);
|
|
|
+ if (tabBar->property(PropertyDefs::c_mainWindowSideBar).toBool() != isSideBar) {
|
|
|
+ WidgetUtils::setPropertyDynamically(tabBar, PropertyDefs::c_mainWindowSideBar, isSideBar);
|
|
|
+ }
|
|
|
+
|
|
|
for (int i = 0; i < cnt; ++i) {
|
|
|
auto dock = reinterpret_cast<QDockWidget *>(tabBar->tabData(i).toULongLong());
|
|
|
if (!dock) {
|
|
|
@@ -366,7 +370,11 @@ void DockWidgetHelper::updateDockWidgetTabBar()
|
|
|
} else if (dock->windowTitle().isEmpty()) {
|
|
|
dock->setWindowTitle(dock->property(PropertyDefs::c_dockWidgetTitle).toString());
|
|
|
}
|
|
|
- tabBar->setTabIcon(i, getDockIcon(static_cast<DockIndex>(dockIdx)));
|
|
|
+ tabBar->setTabIcon(i, getDockIcon(static_cast<DockIndex>(dockIdx), isSideBar));
|
|
|
+
|
|
|
+ if (dock->property(PropertyDefs::c_mainWindowSideBar).toBool() != isSideBar) {
|
|
|
+ WidgetUtils::setPropertyDynamically(dock, PropertyDefs::c_mainWindowSideBar, isSideBar);
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
|
|
|
@@ -510,21 +518,35 @@ QVector<void *> DockWidgetHelper::getVisibleNavigationItems()
|
|
|
return items;
|
|
|
}
|
|
|
|
|
|
-const QIcon &DockWidgetHelper::getDockIcon(DockIndex p_dockIndex)
|
|
|
+const QIcon &DockWidgetHelper::getDockIcon(DockIndex p_dockIndex, bool p_isSideBar)
|
|
|
{
|
|
|
static const auto fg = VNoteX::getInst().getThemeMgr().paletteColor("widgets#mainwindow#dockwidget_tabbar#icon#fg");
|
|
|
static const auto selectedFg = VNoteX::getInst().getThemeMgr().paletteColor("widgets#mainwindow#dockwidget_tabbar#icon#selected#fg");
|
|
|
+ static auto sideBarFg = VNoteX::getInst().getThemeMgr().paletteColor("widgets#mainwindow#side_bar#icon#fg");
|
|
|
+ static auto sideBarSelectedFg = VNoteX::getInst().getThemeMgr().paletteColor("widgets#mainwindow#side_bar#icon#selected#fg");
|
|
|
+
|
|
|
+ if (sideBarFg.isEmpty()) {
|
|
|
+ sideBarFg = fg;
|
|
|
+ }
|
|
|
+ if (sideBarSelectedFg.isEmpty()) {
|
|
|
+ sideBarSelectedFg = selectedFg;
|
|
|
+ }
|
|
|
+
|
|
|
const auto area = m_mainWindow->dockWidgetArea(m_docks[p_dockIndex]);
|
|
|
const int newAngle = rotationAngle(area);
|
|
|
- if (m_dockIcons[p_dockIndex].m_rotationAngle != newAngle && area != Qt::NoDockWidgetArea) {
|
|
|
+ if ((m_dockIcons[p_dockIndex].m_rotationAngle != newAngle
|
|
|
+ || m_dockIcons[p_dockIndex].m_isSideBar != p_isSideBar)
|
|
|
+ && area != Qt::NoDockWidgetArea) {
|
|
|
QVector<IconUtils::OverriddenColor> colors;
|
|
|
- colors.push_back(IconUtils::OverriddenColor(fg, QIcon::Normal));
|
|
|
+ colors.push_back(IconUtils::OverriddenColor(p_isSideBar ? sideBarFg : fg, QIcon::Normal));
|
|
|
// FIXME: the Selected Mode is not used by the selected tab of a QTabBar.
|
|
|
- colors.push_back(IconUtils::OverriddenColor(selectedFg, QIcon::Selected));
|
|
|
+ colors.push_back(IconUtils::OverriddenColor(p_isSideBar ? sideBarSelectedFg : selectedFg,
|
|
|
+ QIcon::Selected));
|
|
|
|
|
|
auto iconFile = VNoteX::getInst().getThemeMgr().getIconFile(iconFileName(p_dockIndex));
|
|
|
m_dockIcons[p_dockIndex].m_icon = IconUtils::fetchIcon(iconFile, colors, newAngle);
|
|
|
m_dockIcons[p_dockIndex].m_rotationAngle = newAngle;
|
|
|
+ m_dockIcons[p_dockIndex].m_isSideBar = p_isSideBar;
|
|
|
}
|
|
|
|
|
|
return m_dockIcons[p_dockIndex].m_icon;
|