void MainWindow::neovimError(NeovimConnector::NeovimError err) { showIfDelayed(); switch(err) { case NeovimConnector::FailedToStart: m_errorWidget->setText("Unable to start nvim: " + m_nvim->errorString()); break; default: m_errorWidget->setText(m_nvim->errorString()); } m_errorWidget->showReconnect(m_nvim->canReconnect()); m_errorWidget->setVisible(true); }
/** The Neovim process has exited */ void MainWindow::neovimExited(int status) { showIfDelayed(); if (m_nvim->errorCause() != NeovimConnector::NoError) { m_errorWidget->setText(m_nvim->errorString()); m_errorWidget->showReconnect(m_nvim->canReconnect()); m_errorWidget->setVisible(true); } else if (status != 0) { m_errorWidget->setText(QString("Neovim exited with status code (%1)").arg(status)); m_errorWidget->showReconnect(m_nvim->canReconnect()); m_errorWidget->setVisible(true); } else { close(); } }
void MainWindow::neovimWidgetResized(const QSize& newSize) { showIfDelayed(); if ((windowState() & Qt::WindowMaximized)) { if (newSize.width() > width() || newSize.height() > height()) { // If the Neovim shell is larger than the main window, resize it // to fit // TODO: size() is not ideal, if the mainwindow has toolbars, or // docks this will be incorrect m_shell->resizeNeovim(size()); } } else { // Dont use ::adjustSize() here, it does not respect the new sizeHint() resize(sizeHint()); } }
/// Call show() after a 1s delay or when Neovim attachment /// is complete, whichever comes first void MainWindow::delayedShow(DelayedShow type) { m_delayedShow = type; if (m_nvim->errorCause() != NeovimConnector::NoError) { showIfDelayed(); return; } if (type != DelayedShow::Disabled) { QTimer *t = new QTimer(this); t->setSingleShot(true); t->setInterval(1000); connect(m_shell, &Shell::neovimResized, this, &MainWindow::showIfDelayed); connect(t, &QTimer::timeout, this, &MainWindow::showIfDelayed); t->start(); } }