# HG changeset patch # User Jacob Dawid # Date 1313587211 -7200 # Node ID 5cb93c6d8aab0fb6864d118f63a62a87bcfd2ddb # Parent 8728061cd0ec016bd991002efebf2ee06b2f52bb Important subwindows are not closable now. A close button is still displayed, which seems to be q Qt bug. diff --git a/gui/src/IRCWidget.cpp b/gui/src/IRCWidget.cpp --- a/gui/src/IRCWidget.cpp +++ b/gui/src/IRCWidget.cpp @@ -360,6 +360,16 @@ } void +IRCWidget::maybeIdentifyOnNickServ () +{ + if (m_autoIdentification) + { + m_ircClientInterface->sendPrivateMessage("NickServ", QString ("identify %1"). + arg (m_nickServPassword)); + } +} + +void IRCWidget::focusInEvent (QFocusEvent *focusEvent) { Q_UNUSED (focusEvent); @@ -380,13 +390,6 @@ m_chatMessageTextEdit->setEnabled (true); m_chatWindow->setEnabled (true); m_chatMessageTextEdit->setFocus (); - - - if (m_autoIdentification) - { - m_ircClientInterface->sendPrivateMessage("NickServ", QString ("identify %1"). - arg (m_nickServPassword)); - } } void @@ -413,4 +416,5 @@ m_nickButton->setText (nick); QSettings *settings = ResourceManager::instance ()->settings (); settings->setValue ("IRCNick", nick); + maybeIdentifyOnNickServ (); } diff --git a/gui/src/IRCWidget.h b/gui/src/IRCWidget.h --- a/gui/src/IRCWidget.h +++ b/gui/src/IRCWidget.h @@ -77,6 +77,8 @@ void showChangeUserNickPopup (); void sendMessage (QString); + void maybeIdentifyOnNickServ (); + signals: void unreadMessages (bool yes); diff --git a/gui/src/MainWindow.cpp b/gui/src/MainWindow.cpp --- a/gui/src/MainWindow.cpp +++ b/gui/src/MainWindow.cpp @@ -287,10 +287,10 @@ m_octaveTerminal->openTerminal (); // Octave Terminal subwindow. - m_octaveTerminalSubWindow = - m_centralMdiArea->addSubWindow (m_octaveTerminal, - Qt::WindowTitleHint | Qt:: - WindowMinMaxButtonsHint); + m_octaveTerminalSubWindow = new NonClosableMdiSubWindow (this); + m_octaveTerminalSubWindow->setWidget (m_octaveTerminal); + m_centralMdiArea->addSubWindow (m_octaveTerminalSubWindow, Qt::WindowTitleHint | Qt::WindowMinMaxButtonsHint); + m_octaveTerminalSubWindow->setObjectName ("OctaveTerminalSubWindow"); m_octaveTerminalSubWindow->setWindowTitle (tr ("Terminal")); m_octaveTerminalSubWindow @@ -299,10 +299,10 @@ m_octaveTerminalSubWindow->setStatusTip (tr ("Enter your commands into the Octave terminal.")); // Documentation subwindow. - m_documentationWidgetSubWindow = - m_centralMdiArea->addSubWindow (m_documentationWidget, - Qt::WindowTitleHint | Qt:: - WindowMinMaxButtonsHint); + m_documentationWidgetSubWindow = new NonClosableMdiSubWindow (this); + m_documentationWidgetSubWindow->setWidget (m_documentationWidget); + m_centralMdiArea->addSubWindow (m_documentationWidgetSubWindow, Qt::WindowTitleHint | Qt::WindowMinMaxButtonsHint); + m_documentationWidgetSubWindow->setObjectName ("DocumentationWidgetSubWindow"); m_documentationWidgetSubWindow->setWindowTitle (tr ("Documentation")); m_documentationWidgetSubWindow @@ -311,11 +311,10 @@ m_documentationWidgetSubWindow->setStatusTip (tr ("Browse the Octave documentation for help.")); // Chat subwindow. - m_ircWidgetSubWindow = m_centralMdiArea->addSubWindow (m_ircWidget, - Qt:: - WindowTitleHint | - Qt:: - WindowMinMaxButtonsHint); + m_ircWidgetSubWindow = new NonClosableMdiSubWindow (this); + m_ircWidgetSubWindow->setWidget (m_ircWidget); + m_centralMdiArea->addSubWindow (m_ircWidgetSubWindow, Qt::WindowTitleHint | Qt::WindowMinMaxButtonsHint); + m_ircWidgetSubWindow->setObjectName ("ChatWidgetSubWindow"); m_ircWidgetSubWindow->setWindowTitle (tr ("Chat")); m_ircWidgetSubWindow diff --git a/gui/src/MainWindow.h b/gui/src/MainWindow.h --- a/gui/src/MainWindow.h +++ b/gui/src/MainWindow.h @@ -37,6 +37,20 @@ #include "IRCWidget.h" #include "lexer/lexeroctavegui.h" +class NonClosableMdiSubWindow : public QMdiSubWindow +{ + Q_OBJECT +public: + explicit NonClosableMdiSubWindow (QWidget *parent = 0) + : QMdiSubWindow (parent) { } + virtual ~NonClosableMdiSubWindow () { } +protected: + void closeEvent (QCloseEvent *closeEvent) + { + closeEvent->ignore (); + } +}; + /** * \class MainWindow * @@ -101,9 +115,9 @@ BrowserWidget *m_documentationWidget; IRCWidget *m_ircWidget; - QMdiSubWindow *m_octaveTerminalSubWindow; - QMdiSubWindow *m_documentationWidgetSubWindow; - QMdiSubWindow *m_ircWidgetSubWindow; + NonClosableMdiSubWindow *m_octaveTerminalSubWindow; + NonClosableMdiSubWindow *m_documentationWidgetSubWindow; + NonClosableMdiSubWindow *m_ircWidgetSubWindow; // Dock widgets. VariablesDockWidget *m_variablesDockWidget;