diff --git a/src/vmainwindow.cpp b/src/vmainwindow.cpp index 2e4b6067..1778a8fd 100644 --- a/src/vmainwindow.cpp +++ b/src/vmainwindow.cpp @@ -124,6 +124,8 @@ VMainWindow::VMainWindow(VSingleInstanceGuard *p_guard, QWidget *p_parent) initSharedMemoryWatcher(); + initUpdateTimer(); + registerCaptainAndNavigationTargets(); } @@ -388,11 +390,11 @@ void VMainWindow::initToolBar() QToolBar *VMainWindow::initViewToolBar(QSize p_iconSize) { - QToolBar *viewToolBar = addToolBar(tr("View")); - viewToolBar->setObjectName("ViewToolBar"); - viewToolBar->setMovable(false); + m_viewToolBar = addToolBar(tr("View")); + m_viewToolBar->setObjectName("ViewToolBar"); + m_viewToolBar->setMovable(false); if (p_iconSize.isValid()) { - viewToolBar->setIconSize(p_iconSize); + m_viewToolBar->setIconSize(p_iconSize); } QAction *fullScreenAct = new QAction(VIconUtils::toolButtonIcon(":/resources/icons/fullscreen.svg"), @@ -458,9 +460,9 @@ QToolBar *VMainWindow::initViewToolBar(QSize p_iconSize) : PanelViewState::VerticalMode); }); - viewToolBar->addAction(expandViewAct); + m_viewToolBar->addAction(expandViewAct); - return viewToolBar; + return m_viewToolBar; } // Enable/disable all actions of @p_widget. @@ -602,14 +604,14 @@ QToolBar *VMainWindow::initEditToolBar(QSize p_iconSize) QToolBar *VMainWindow::initNoteToolBar(QSize p_iconSize) { - QToolBar *noteToolBar = addToolBar(tr("Note Toolbar")); - noteToolBar->setObjectName("NoteToolBar"); - noteToolBar->setMovable(false); + m_noteToolBar = addToolBar(tr("Note Toolbar")); + m_noteToolBar->setObjectName("NoteToolBar"); + m_noteToolBar->setMovable(false); if (p_iconSize.isValid()) { - noteToolBar->setIconSize(p_iconSize); + m_noteToolBar->setIconSize(p_iconSize); } - noteToolBar->addSeparator(); + m_noteToolBar->addSeparator(); // Attachment. m_attachmentList = new VAttachmentList(this); @@ -652,20 +654,20 @@ QToolBar *VMainWindow::initNoteToolBar(QSize p_iconSize) connect(universalEntryAct, &QAction::triggered, this, &VMainWindow::activateUniversalEntry); - noteToolBar->addWidget(m_attachmentBtn); - noteToolBar->addAction(flashPageAct); - noteToolBar->addAction(universalEntryAct); + m_noteToolBar->addWidget(m_attachmentBtn); + m_noteToolBar->addAction(flashPageAct); + m_noteToolBar->addAction(universalEntryAct); - return noteToolBar; + return m_noteToolBar; } QToolBar *VMainWindow::initFileToolBar(QSize p_iconSize) { - QToolBar *fileToolBar = addToolBar(tr("Note")); - fileToolBar->setObjectName("NoteToolBar"); - fileToolBar->setMovable(false); + m_fileToolBar = addToolBar(tr("Note")); + m_fileToolBar->setObjectName("FileToolBar"); + m_fileToolBar->setMovable(false); if (p_iconSize.isValid()) { - fileToolBar->setIconSize(p_iconSize); + m_fileToolBar->setIconSize(p_iconSize); } m_avatarBtn = new QPushButton("VNote", this); @@ -742,16 +744,16 @@ QToolBar *VMainWindow::initFileToolBar(QSize p_iconSize) m_discardExitAct->setEnabled(false); saveNoteAct->setEnabled(false); - fileToolBar->addWidget(m_avatarBtn); - fileToolBar->addAction(newRootDirAct); - fileToolBar->addAction(newNoteAct); - fileToolBar->addAction(deleteNoteAct); - fileToolBar->addAction(noteInfoAct); - fileToolBar->addAction(m_editReadAct); - fileToolBar->addAction(m_discardExitAct); - fileToolBar->addAction(saveNoteAct); + m_fileToolBar->addWidget(m_avatarBtn); + m_fileToolBar->addAction(newRootDirAct); + m_fileToolBar->addAction(newNoteAct); + m_fileToolBar->addAction(deleteNoteAct); + m_fileToolBar->addAction(noteInfoAct); + m_fileToolBar->addAction(m_editReadAct); + m_fileToolBar->addAction(m_discardExitAct); + m_fileToolBar->addAction(saveNoteAct); - return fileToolBar; + return m_fileToolBar; } void VMainWindow::initMenuBar() @@ -2000,6 +2002,8 @@ void VMainWindow::updateActionsStateFromTab(const VEditTab *p_tab) if (!file) { m_findReplaceDialog->closeDialog(); } + + m_updateTimer->start(); } void VMainWindow::handleAreaTabStatusUpdated(const VEditTabInfo &p_info) @@ -3348,3 +3352,17 @@ void VMainWindow::setCaptainModeEnabled(bool p_enabled) { m_captain->setCaptainModeEnabled(p_enabled); } + +void VMainWindow::initUpdateTimer() +{ + m_updateTimer = new QTimer(this); + m_updateTimer->setSingleShot(true); + m_updateTimer->setInterval(200); + connect(m_updateTimer, &QTimer::timeout, + this, [this]() { + m_fileToolBar->update(); + m_viewToolBar->update(); + m_editToolBar->update(); + m_noteToolBar->update(); + }); +} diff --git a/src/vmainwindow.h b/src/vmainwindow.h index 243d56b1..8e7865a1 100644 --- a/src/vmainwindow.h +++ b/src/vmainwindow.h @@ -283,6 +283,8 @@ private: // VNote. void initSharedMemoryWatcher(); + void initUpdateTimer(); + // Init system tray icon and correspondign context menu. void initTrayIcon(); @@ -432,9 +434,14 @@ private: // Menus QMenu *m_viewMenu; - // Edit ToolBar. + QToolBar *m_fileToolBar; + + QToolBar *m_viewToolBar; + QToolBar *m_editToolBar; + QToolBar *m_noteToolBar; + // All the ToolBar. QVector m_toolBars; @@ -454,6 +461,10 @@ private: // Timer to check the shared memory between instances of VNote. QTimer *m_sharedMemTimer; + // Timer to update gui. + // Sometimes the toolbar buttons do not refresh themselves. + QTimer *m_updateTimer; + // Tray icon. QSystemTrayIcon *m_trayIcon;