connect(&d.statusbar_timer_, SIGNAL(timeout()),
this, SLOT(clearMessage()));
- // Qt bug? signal lastWindowClosed does not work
- setAttribute(Qt::WA_QuitOnClose, false);
+ // We don't want to keep the window in memory if it is closed.
setAttribute(Qt::WA_DeleteOnClose, true);
+
#ifndef Q_WS_MACX
// assign an icon to main form. We do not do it under Qt/Mac,
// since the icon is provided in the application bundle.
}
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)) {
}
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();
}
// 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();
break;
case LFUN_DIALOG_HIDE: {
- if (quitting)
- break;
guiApp->hideDialogs(to_utf8(cmd.argument()), 0);
break;
}
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;
if (d.current_work_area_)
d.current_work_area_->startBlinkingCursor();
- // Take this occasion to update the toobars and layout list.
+ // Take this occasion to update the other GUI elements.
updateLayoutList();
updateToolbars();
+ updateStatusBar();
}
-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 {
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;