mirror of
https://gitee.com/vnotex/vnote.git
synced 2025-07-05 13:59:52 +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_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();
|
initCaptain();
|
||||||
|
|
||||||
setupUI();
|
setupUI();
|
||||||
@ -2036,21 +2042,21 @@ void VMainWindow::onePanelView()
|
|||||||
{
|
{
|
||||||
m_panelViewState = PanelViewState::SinglePanel;
|
m_panelViewState = PanelViewState::SinglePanel;
|
||||||
g_config->setEnableCompactMode(false);
|
g_config->setEnableCompactMode(false);
|
||||||
changePanelView(m_panelViewState);
|
changePanelView(m_panelViewState, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
void VMainWindow::twoPanelView()
|
void VMainWindow::twoPanelView()
|
||||||
{
|
{
|
||||||
m_panelViewState = PanelViewState::TwoPanels;
|
m_panelViewState = PanelViewState::TwoPanels;
|
||||||
g_config->setEnableCompactMode(false);
|
g_config->setEnableCompactMode(false);
|
||||||
changePanelView(m_panelViewState);
|
changePanelView(m_panelViewState, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
void VMainWindow::compactModeView()
|
void VMainWindow::compactModeView()
|
||||||
{
|
{
|
||||||
m_panelViewState = PanelViewState::CompactMode;
|
m_panelViewState = PanelViewState::CompactMode;
|
||||||
g_config->setEnableCompactMode(true);
|
g_config->setEnableCompactMode(true);
|
||||||
changePanelView(m_panelViewState);
|
changePanelView(m_panelViewState, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
void VMainWindow::enableCompactMode(bool p_enabled)
|
void VMainWindow::enableCompactMode(bool p_enabled)
|
||||||
@ -2099,7 +2105,7 @@ void VMainWindow::enableCompactMode(bool p_enabled)
|
|||||||
setTabOrder(directoryTree, m_fileList->getContentWidget());
|
setTabOrder(directoryTree, m_fileList->getContentWidget());
|
||||||
}
|
}
|
||||||
|
|
||||||
void VMainWindow::changePanelView(PanelViewState p_state)
|
void VMainWindow::changePanelView(PanelViewState p_state, bool p_postCheck)
|
||||||
{
|
{
|
||||||
switch (p_state) {
|
switch (p_state) {
|
||||||
case PanelViewState::ExpandMode:
|
case PanelViewState::ExpandMode:
|
||||||
@ -2149,6 +2155,10 @@ void VMainWindow::changePanelView(PanelViewState p_state)
|
|||||||
if (p_state != PanelViewState::ExpandMode) {
|
if (p_state != PanelViewState::ExpandMode) {
|
||||||
expandViewAct->setChecked(false);
|
expandViewAct->setChecked(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (p_postCheck) {
|
||||||
|
m_panelViewTimer->start();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void VMainWindow::updateWindowTitle(const QString &str)
|
void VMainWindow::updateWindowTitle(const QString &str)
|
||||||
@ -3285,3 +3295,80 @@ void VMainWindow::setMenuBarVisible(bool p_visible)
|
|||||||
menuBar()->setFixedHeight(0);
|
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.
|
// Activate Universal Entry.
|
||||||
void activateUniversalEntry();
|
void activateUniversalEntry();
|
||||||
|
|
||||||
|
// Make sure width of the panel is not zero after changePanelView().
|
||||||
|
void postChangePanelView();
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
void closeEvent(QCloseEvent *event) Q_DECL_OVERRIDE;
|
void closeEvent(QCloseEvent *event) Q_DECL_OVERRIDE;
|
||||||
|
|
||||||
@ -271,7 +274,7 @@ private:
|
|||||||
|
|
||||||
// Change the panel view according to @p_state.
|
// Change the panel view according to @p_state.
|
||||||
// Will not change m_panelViewState.
|
// 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.
|
// Whether heading sequence is applicable to current tab.
|
||||||
// Only available for writable Markdown file.
|
// Only available for writable Markdown file.
|
||||||
@ -430,6 +433,9 @@ private:
|
|||||||
// Timer to check the shared memory between instances of VNote.
|
// Timer to check the shared memory between instances of VNote.
|
||||||
QTimer *m_sharedMemTimer;
|
QTimer *m_sharedMemTimer;
|
||||||
|
|
||||||
|
// Timer to check the panel size.
|
||||||
|
QTimer *m_panelViewTimer;
|
||||||
|
|
||||||
// Tray icon.
|
// Tray icon.
|
||||||
QSystemTrayIcon *m_trayIcon;
|
QSystemTrayIcon *m_trayIcon;
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user