mirror of
https://gitee.com/vnotex/vnote.git
synced 2025-07-05 05:49:53 +08:00
auto judge 0 width/height splitter after changing panel view
This commit is contained in:
parent
960426579b
commit
9c80a9dcae
@ -91,6 +91,12 @@ VMainWindow::VMainWindow(VSingleInstanceGuard *p_guard, QWidget *p_parent)
|
||||
m_panelViewState = PanelViewState::TwoPanels;
|
||||
}
|
||||
|
||||
m_panelViewTimer = new QTimer(this);
|
||||
m_panelViewTimer->setSingleShot(true);
|
||||
m_panelViewTimer->setInterval(500);
|
||||
connect(m_panelViewTimer, &QTimer::timeout,
|
||||
this, &VMainWindow::postChangePanelView);
|
||||
|
||||
initCaptain();
|
||||
|
||||
setupUI();
|
||||
@ -2036,21 +2042,21 @@ void VMainWindow::onePanelView()
|
||||
{
|
||||
m_panelViewState = PanelViewState::SinglePanel;
|
||||
g_config->setEnableCompactMode(false);
|
||||
changePanelView(m_panelViewState);
|
||||
changePanelView(m_panelViewState, true);
|
||||
}
|
||||
|
||||
void VMainWindow::twoPanelView()
|
||||
{
|
||||
m_panelViewState = PanelViewState::TwoPanels;
|
||||
g_config->setEnableCompactMode(false);
|
||||
changePanelView(m_panelViewState);
|
||||
changePanelView(m_panelViewState, true);
|
||||
}
|
||||
|
||||
void VMainWindow::compactModeView()
|
||||
{
|
||||
m_panelViewState = PanelViewState::CompactMode;
|
||||
g_config->setEnableCompactMode(true);
|
||||
changePanelView(m_panelViewState);
|
||||
changePanelView(m_panelViewState, true);
|
||||
}
|
||||
|
||||
void VMainWindow::enableCompactMode(bool p_enabled)
|
||||
@ -2099,7 +2105,7 @@ void VMainWindow::enableCompactMode(bool p_enabled)
|
||||
setTabOrder(directoryTree, m_fileList->getContentWidget());
|
||||
}
|
||||
|
||||
void VMainWindow::changePanelView(PanelViewState p_state)
|
||||
void VMainWindow::changePanelView(PanelViewState p_state, bool p_postCheck)
|
||||
{
|
||||
switch (p_state) {
|
||||
case PanelViewState::ExpandMode:
|
||||
@ -2149,6 +2155,10 @@ void VMainWindow::changePanelView(PanelViewState p_state)
|
||||
if (p_state != PanelViewState::ExpandMode) {
|
||||
expandViewAct->setChecked(false);
|
||||
}
|
||||
|
||||
if (p_postCheck) {
|
||||
m_panelViewTimer->start();
|
||||
}
|
||||
}
|
||||
|
||||
void VMainWindow::updateWindowTitle(const QString &str)
|
||||
@ -3285,3 +3295,80 @@ void VMainWindow::setMenuBarVisible(bool p_visible)
|
||||
menuBar()->setFixedHeight(0);
|
||||
}
|
||||
}
|
||||
|
||||
void VMainWindow::postChangePanelView()
|
||||
{
|
||||
const int minVal = 10;
|
||||
bool needUpdate = false;
|
||||
QList<int> sizes = m_mainSplitter->sizes();
|
||||
switch (m_panelViewState) {
|
||||
case PanelViewState::SinglePanel:
|
||||
if (sizes[1] == 0) {
|
||||
sizes[1] = minVal;
|
||||
needUpdate = true;
|
||||
}
|
||||
|
||||
if (sizes[2] == 0) {
|
||||
sizes[2] = minVal;
|
||||
needUpdate = true;
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
case PanelViewState::TwoPanels:
|
||||
if (sizes[0] == 0) {
|
||||
sizes[0] = minVal;
|
||||
needUpdate = true;
|
||||
}
|
||||
|
||||
if (sizes[1] == 0) {
|
||||
sizes[1] = minVal;
|
||||
needUpdate = true;
|
||||
}
|
||||
|
||||
if (sizes[2] == 0) {
|
||||
sizes[2] = minVal;
|
||||
needUpdate = true;
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
case PanelViewState::CompactMode:
|
||||
{
|
||||
if (sizes[0] == 0) {
|
||||
sizes[0] = minVal;
|
||||
needUpdate = true;
|
||||
}
|
||||
|
||||
if (sizes[2] == 0) {
|
||||
sizes[2] = minVal;
|
||||
needUpdate = true;
|
||||
}
|
||||
|
||||
bool naviUpdate = false;
|
||||
QList<int> naviSizes = m_naviSplitter->sizes();
|
||||
if (naviSizes[0] == 0) {
|
||||
naviSizes[0] = minVal;
|
||||
naviUpdate = true;
|
||||
}
|
||||
|
||||
if (naviSizes[1] == 0) {
|
||||
naviSizes[1] = minVal;
|
||||
naviUpdate = true;
|
||||
}
|
||||
|
||||
if (naviUpdate) {
|
||||
m_naviSplitter->setSizes(naviSizes);
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
if (needUpdate) {
|
||||
m_mainSplitter->setSizes(sizes);
|
||||
}
|
||||
}
|
||||
|
@ -189,6 +189,9 @@ private slots:
|
||||
// Activate Universal Entry.
|
||||
void activateUniversalEntry();
|
||||
|
||||
// Make sure width of the panel is not zero after changePanelView().
|
||||
void postChangePanelView();
|
||||
|
||||
protected:
|
||||
void closeEvent(QCloseEvent *event) Q_DECL_OVERRIDE;
|
||||
|
||||
@ -271,7 +274,7 @@ private:
|
||||
|
||||
// Change the panel view according to @p_state.
|
||||
// Will not change m_panelViewState.
|
||||
void changePanelView(PanelViewState p_state);
|
||||
void changePanelView(PanelViewState p_state, bool p_postCheck = false);
|
||||
|
||||
// Whether heading sequence is applicable to current tab.
|
||||
// Only available for writable Markdown file.
|
||||
@ -430,6 +433,9 @@ private:
|
||||
// Timer to check the shared memory between instances of VNote.
|
||||
QTimer *m_sharedMemTimer;
|
||||
|
||||
// Timer to check the panel size.
|
||||
QTimer *m_panelViewTimer;
|
||||
|
||||
// Tray icon.
|
||||
QSystemTrayIcon *m_trayIcon;
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user