Browse Source

bug-fix: save wrong geometry state in single panel view

Le Tan 8 years ago
parent
commit
226263f77c
4 changed files with 15 additions and 1 deletions
  1. 4 1
      src/utils/vvim.cpp
  2. 3 0
      src/vedit.h
  3. 4 0
      src/vmainwindow.cpp
  4. 4 0
      src/vmdtab.cpp

+ 4 - 1
src/utils/vvim.cpp

@@ -1311,7 +1311,10 @@ bool VVim::handleKeyPressEvent(int key, int modifiers, int *p_autoIndentPos)
     case Qt::Key_Escape:
     {
         // Clear selection and enter normal mode.
-        clearSelection();
+        bool ret = clearSelection();
+        if (!ret && checkMode(VimMode::Normal)) {
+            emit m_editor->requestCloseFindReplaceDialog();
+        }
 
         setMode(VimMode::Normal);
         break;

+ 3 - 0
src/vedit.h

@@ -154,6 +154,9 @@ signals:
     // Selection changed by mouse.
     void selectionChangedByMouse(bool p_hasSelection);
 
+    // Request the edit tab to close find and replace dialog.
+    void requestCloseFindReplaceDialog();
+
 public slots:
     virtual void highlightCurrentLine();
 

+ 4 - 0
src/vmainwindow.cpp

@@ -1538,6 +1538,10 @@ void VMainWindow::closeEvent(QCloseEvent *event)
 
 void VMainWindow::saveStateAndGeometry()
 {
+    // In one panel view, it will save the wrong state that the directory tree
+    // panel has a width of zero.
+    twoPanelView();
+
     vconfig.setMainWindowGeometry(saveGeometry());
     vconfig.setMainWindowState(saveState());
     vconfig.setToolsDockChecked(toolDock->isVisible());

+ 4 - 0
src/vmdtab.cpp

@@ -323,6 +323,10 @@ void VMdTab::setupMarkdownEditor()
             this, &VEditTab::statusMessage);
     connect(m_editor, &VEdit::vimStatusUpdated,
             this, &VEditTab::vimStatusUpdated);
+    connect(m_editor, &VEdit::requestCloseFindReplaceDialog,
+            this, [this](){
+                this->m_editArea->getFindReplaceDialog()->closeDialog();
+            });
 
     m_editor->reloadFile();
     m_stacks->addWidget(m_editor);