changeset 13614:5cb93c6d8aab

Important subwindows are not closable now. A close button is still displayed, which seems to be q Qt bug.
author Jacob Dawid <jacob.dawid@googlemail.com>
date Wed, 17 Aug 2011 15:20:11 +0200
parents 8728061cd0ec
children 6ab76213ea74
files gui/src/IRCWidget.cpp gui/src/IRCWidget.h gui/src/MainWindow.cpp gui/src/MainWindow.h
diffstat 4 files changed, 42 insertions(+), 23 deletions(-) [+]
line wrap: on
line diff
--- 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 ();
 }
--- 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);
 
--- 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
--- 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;