mirror of
https://gitee.com/vnotex/vnote.git
synced 2025-07-05 05:49:53 +08:00
MainWindow: bug fix for GUI mess up of toolbars
After toggling between read and edit mode multiple times, the toolbar's buttons may be grey but clickable in edit mode. Add a timer to update them soon after the change.
This commit is contained in:
parent
e5ff101085
commit
19bd159aba
@ -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();
|
||||
});
|
||||
}
|
||||
|
@ -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<QToolBar *> 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;
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user