]> git.lyx.org Git - lyx.git/blobdiff - src/frontends/qt4/GuiView.cpp
do what the FIXME suggested
[lyx.git] / src / frontends / qt4 / GuiView.cpp
index a53ebfbf3759f90ae30c091512fa239b295e1a0f..45a252f592373c8deab9265d0bd1d514b77a1e6e 100644 (file)
@@ -291,7 +291,7 @@ GuiView::GuiView(int id)
                this, SLOT(clearMessage()));
 
        // We don't want to keep the window in memory if it is closed.
-       setAttribute(Qt::WA_QuitOnClose, false);
+       setAttribute(Qt::WA_DeleteOnClose, true);
 
 #ifndef Q_WS_MACX
        // assign an icon to main form. We do not do it under Qt/Mac,
@@ -378,7 +378,7 @@ void GuiView::closeEvent(QCloseEvent * close_event)
                }
 
                std::vector<int> const & ids = guiApp->viewIds();
-               for (int i = 0; i != ids.size(); ++i) {
+               for (size_type i = 0; i != ids.size(); ++i) {
                        if (id_ == ids[i])
                                continue;
                        if (guiApp->view(ids[i]).workArea(*b)) {
@@ -433,20 +433,7 @@ void GuiView::closeEvent(QCloseEvent * close_event)
        }
 
        guiApp->unregisterView(id_);
-       if (guiApp->viewCount() > 0) {
-               // Just close the window and do nothing else if this is not the
-               // last window.
-               close_event->accept();
-               return;
-       }
-
-       quitting = true;
-
-       // this is the place where we leave the frontend.
-       // it is the only point at which we start quitting.
        close_event->accept();
-       // quit the event loop
-       qApp->quit();
 }
 
 
@@ -583,6 +570,10 @@ bool GuiView::event(QEvent * e)
        //      break;
 
        case QEvent::WindowActivate: {
+               if (this == guiApp->currentView()) {
+                       setFocus();
+                       return QMainWindow::event(e);
+               }
                guiApp->setCurrentView(*this);
                if (d.current_work_area_) {
                        BufferView & bv = d.current_work_area_->bufferView();
@@ -1783,8 +1774,6 @@ bool GuiView::dispatch(FuncRequest const & cmd)
                        break;
 
                case LFUN_DIALOG_HIDE: {
-                       if (quitting)
-                               break;
                        guiApp->hideDialogs(to_utf8(cmd.argument()), 0);
                        break;
                }
@@ -1917,11 +1906,10 @@ void GuiView::lfunUiToggle(FuncRequest const & cmd)
                int l, t, r, b;
                getContentsMargins(&l, &t, &r, &b);
                //are the frames in default state?
+               d.current_work_area_->setFrameStyle(QFrame::NoFrame);
                if (l == 0) {
-                       d.current_work_area_->setFrameStyle(QFrame::NoFrame);
                        setContentsMargins(-2, -2, -2, -2);
                } else {
-                       d.current_work_area_->setFrameStyle(QFrame::NoFrame);
                        setContentsMargins(0, 0, 0, 0);
                }
                return;
@@ -1984,10 +1972,10 @@ void GuiView::restartCursor()
 }
 
 
-void GuiView::updateCompletion(bool start, bool keep)
+void GuiView::updateCompletion(Cursor & cur, bool start, bool keep)
 {
        if (d.current_work_area_)
-               d.current_work_area_->completer().updateVisibility(start, keep);
+               d.current_work_area_->completer().updateVisibility(cur, start, keep);
 }
 
 namespace {
@@ -2094,13 +2082,6 @@ bool GuiView::isDialogVisible(string const & name) const
 
 void GuiView::hideDialog(string const & name, Inset * inset)
 {
-       // Don't send the signal if we are quitting, because on MSVC it is
-       // destructed before the cut stack in CutAndPaste.cpp, and this method
-       // is called from some inset destructor if the cut stack is not empty
-       // on exit.
-       if (quitting)
-               return;
-
        map<string, DialogPtr>::const_iterator it = d.dialogs_.find(name);
        if (it == d.dialogs_.end())
                return;