mirror of
https://gitee.com/vnotex/vnote.git
synced 2025-07-05 13:59:52 +08:00
bugfix in VFileList and VEditArea
1. Clear selection before setting current item in VFileList; 2. Status change of non-active tabs shoud not be propagated upwards;
This commit is contained in:
parent
5b4984f59a
commit
f4708e427f
@ -68,7 +68,7 @@ void VEditArea::insertSplitWindow(int idx)
|
|||||||
VEditWindow *win = new VEditWindow(vnote, this);
|
VEditWindow *win = new VEditWindow(vnote, this);
|
||||||
splitter->insertWidget(idx, win);
|
splitter->insertWidget(idx, win);
|
||||||
connect(win, &VEditWindow::tabStatusChanged,
|
connect(win, &VEditWindow::tabStatusChanged,
|
||||||
this, &VEditArea::curTabStatusChanged);
|
this, &VEditArea::handleEditWindowStatusChanged);
|
||||||
connect(win, &VEditWindow::requestSplitWindow,
|
connect(win, &VEditWindow::requestSplitWindow,
|
||||||
this, &VEditArea::handleSplitWindowRequest);
|
this, &VEditArea::handleSplitWindowRequest);
|
||||||
connect(win, &VEditWindow::requestRemoveSplit,
|
connect(win, &VEditWindow::requestRemoveSplit,
|
||||||
@ -81,6 +81,15 @@ void VEditArea::insertSplitWindow(int idx)
|
|||||||
this, &VEditArea::handleCurHeaderChanged);
|
this, &VEditArea::handleCurHeaderChanged);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void VEditArea::handleEditWindowStatusChanged(const VFile *p_file,
|
||||||
|
const VEditTab *p_editTab,
|
||||||
|
bool p_editMode)
|
||||||
|
{
|
||||||
|
if (splitter->widget(curWindowIndex) == sender()) {
|
||||||
|
emit curTabStatusChanged(p_file, p_editTab, p_editMode);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void VEditArea::removeSplitWindow(VEditWindow *win)
|
void VEditArea::removeSplitWindow(VEditWindow *win)
|
||||||
{
|
{
|
||||||
if (!win) {
|
if (!win) {
|
||||||
@ -194,6 +203,7 @@ void VEditArea::updateWindowStatus()
|
|||||||
emit curHeaderChanged(VAnchor());
|
emit curHeaderChanged(VAnchor());
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
VEditWindow *win = getWindow(curWindowIndex);
|
VEditWindow *win = getWindow(curWindowIndex);
|
||||||
win->requestUpdateTabStatus();
|
win->requestUpdateTabStatus();
|
||||||
win->requestUpdateOutline();
|
win->requestUpdateOutline();
|
||||||
|
@ -90,6 +90,9 @@ private slots:
|
|||||||
void handleReplaceAll(const QString &p_text, uint p_options,
|
void handleReplaceAll(const QString &p_text, uint p_options,
|
||||||
const QString &p_replaceText);
|
const QString &p_replaceText);
|
||||||
void handleFindDialogClosed();
|
void handleFindDialogClosed();
|
||||||
|
void handleEditWindowStatusChanged(const VFile *p_file,
|
||||||
|
const VEditTab *p_editTab,
|
||||||
|
bool p_editMode);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void setupUI();
|
void setupUI();
|
||||||
|
@ -550,7 +550,14 @@ void VEditWindow::noticeStatus(int index)
|
|||||||
|
|
||||||
void VEditWindow::handleTabStatusChanged()
|
void VEditWindow::handleTabStatusChanged()
|
||||||
{
|
{
|
||||||
noticeTabStatus(currentIndex());
|
int idx = indexOf(dynamic_cast<QWidget *>(sender()));
|
||||||
|
if (idx == currentIndex()) {
|
||||||
|
noticeTabStatus(idx);
|
||||||
|
} else {
|
||||||
|
// Only update the tab status. Do no propagate upwards.
|
||||||
|
updateTabInfo(idx);
|
||||||
|
updateAllTabsSequence();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void VEditWindow::updateFileInfo(const VFile *p_file)
|
void VEditWindow::updateFileInfo(const VFile *p_file)
|
||||||
|
@ -201,7 +201,7 @@ void VFileList::newFile()
|
|||||||
}
|
}
|
||||||
QVector<QListWidgetItem *> items = updateFileListAdded();
|
QVector<QListWidgetItem *> items = updateFileListAdded();
|
||||||
Q_ASSERT(items.size() == 1);
|
Q_ASSERT(items.size() == 1);
|
||||||
fileList->setCurrentItem(items[0]);
|
fileList->setCurrentItem(items[0], QItemSelectionModel::ClearAndSelect);
|
||||||
// Qt seems not to update the QListWidget correctly. Manually force it to repaint.
|
// Qt seems not to update the QListWidget correctly. Manually force it to repaint.
|
||||||
fileList->update();
|
fileList->update();
|
||||||
|
|
||||||
@ -529,7 +529,7 @@ bool VFileList::locateFile(const VFile *p_file)
|
|||||||
}
|
}
|
||||||
QListWidgetItem *item = findItem(p_file);
|
QListWidgetItem *item = findItem(p_file);
|
||||||
if (item) {
|
if (item) {
|
||||||
fileList->setCurrentItem(item);
|
fileList->setCurrentItem(item, QItemSelectionModel::ClearAndSelect);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
@ -615,7 +615,7 @@ bool VFileList::handleKeyNavigation(int p_key, bool &p_succeed)
|
|||||||
ret = true;
|
ret = true;
|
||||||
auto it = m_keyMap.find(keyChar);
|
auto it = m_keyMap.find(keyChar);
|
||||||
if (it != m_keyMap.end()) {
|
if (it != m_keyMap.end()) {
|
||||||
fileList->setCurrentItem(it.value());
|
fileList->setCurrentItem(it.value(), QItemSelectionModel::ClearAndSelect);
|
||||||
fileList->setFocus();
|
fileList->setFocus();
|
||||||
}
|
}
|
||||||
} else if (keyChar == m_majorKey) {
|
} else if (keyChar == m_majorKey) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user