aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar Fabio Bas2012-01-04 15:27:54 +0000
committerGravatar Fabio Bas2012-01-04 15:27:54 +0000
commit4f42723091cd266dd08dabebc1e085a445588d96 (patch)
tree3083a5c14e330650ec85b02d7c81400d2c5a6632
parentreverted part of r6016, it was too aggressive (diff)
downloadKVIrc-4f42723091cd266dd08dabebc1e085a445588d96.tar.gz
KVIrc-4f42723091cd266dd08dabebc1e085a445588d96.tar.bz2
KVIrc-4f42723091cd266dd08dabebc1e085a445588d96.zip
a batch of window-management related fixes, they should alleviate (read: fix) the following problems:
- mainwindow titlebar displays the name of more than one chanel/subwindow at a time; - when a subwindow gets "maximized->minimized->maximized->restored" it loses its geometry - (consequence of the previous fix) some windows geometry is incoherent in thew config file and results in splitter resizing - at shutdown, the currently maximized subwindow reports an incorrect geometry git-svn-id: https://svn.kvirc.de/svn/trunk/kvirc@6018 17fca916-40b9-46aa-a4ea-0a15b648b75c
-rw-r--r--src/kvirc/kernel/KviApplication.cpp2
-rw-r--r--src/kvirc/ui/KviMainWindow.cpp103
-rw-r--r--src/kvirc/ui/KviMdiChild.cpp11
-rw-r--r--src/kvirc/ui/KviMdiChild.h1
-rw-r--r--src/kvirc/ui/KviMdiManager.cpp183
-rw-r--r--src/kvirc/ui/KviMdiManager.h23
-rw-r--r--src/kvirc/ui/KviTreeWindowList.cpp2
-rw-r--r--src/kvirc/ui/KviWindow.cpp6
-rw-r--r--src/kvirc/ui/KviWindowListBase.cpp2
9 files changed, 160 insertions, 173 deletions
diff --git a/src/kvirc/kernel/KviApplication.cpp b/src/kvirc/kernel/KviApplication.cpp
index dc77f7e77..383d5086d 100644
--- a/src/kvirc/kernel/KviApplication.cpp
+++ b/src/kvirc/kernel/KviApplication.cpp
@@ -198,7 +198,7 @@ KviApplication::KviApplication(int &argc,char ** argv)
setOrganizationName("KVIrc");
#ifdef COMPILE_ON_MAC
- // Disable the native menubar on MacOSX as in Qt 4.6 it's quite buggy and
+ // Disable the native menubar on MacOSX as until Qt 4.7 it's quite buggy and
// *very* often crashes in QMenuBar::macUpdateMenuBar()->QAction::isVisible().
// FIXME: Check it with later Qt versions
KviEnvironment::setVariable("QT_MAC_NO_NATIVE_MENUBAR","1");
diff --git a/src/kvirc/ui/KviMainWindow.cpp b/src/kvirc/ui/KviMainWindow.cpp
index d8223c173..beb4ec473 100644
--- a/src/kvirc/ui/KviMainWindow.cpp
+++ b/src/kvirc/ui/KviMainWindow.cpp
@@ -408,7 +408,8 @@ void KviMainWindow::saveWindowProperties(KviWindow * wnd,const QString &szSectio
g_pWinPropertiesConfig->writeEntry("IsMaximized",wnd->isMaximized());
}
- g_pWinPropertiesConfig->writeEntry("WinRect",wnd->normalGeometry());
+ if(wnd->normalGeometry().isValid())
+ g_pWinPropertiesConfig->writeEntry("WinRect",wnd->normalGeometry());
wnd->saveProperties(g_pWinPropertiesConfig);
}
@@ -441,7 +442,7 @@ void KviMainWindow::closeWindow(KviWindow *wnd)
// hide it
if(wnd->mdiParent())
- m_pMdi->hideChild(wnd->mdiParent());
+ wnd->mdiParent()->hide();
else
wnd->hide();
@@ -497,6 +498,7 @@ void KviMainWindow::addWindow(KviWindow *wnd,bool bShow)
wnd->getConfigGroupName(group);
bool bGroupSettings = false;
+ bool bDefaultDocking=false;
if(g_pWinPropertiesConfig->hasGroup(group))
{
@@ -514,70 +516,68 @@ void KviMainWindow::addWindow(KviWindow *wnd,bool bShow)
} else {
g_pWinPropertiesConfig->setGroup("no_settings_group");
wnd->loadProperties(g_pWinPropertiesConfig); // load it anyway (will set defaults if windows don't remember properties)
- goto default_docking; // no settings stored
+ bDefaultDocking=true; // no settings stored
}
}
+ wnd->loadProperties(g_pWinPropertiesConfig); // load it anyway (will set defaults if windows don't remember properties)
+
+ if(KVI_OPTION_BOOL(KviOption_boolWindowsRememberProperties) && !bDefaultDocking)
{
- wnd->loadProperties(g_pWinPropertiesConfig); // load it anyway (will set defaults if windows don't remember properties)
+ bool bDocked = g_pWinPropertiesConfig->readBoolEntry("IsDocked",true);
+ QRect rect = g_pWinPropertiesConfig->readRectEntry("WinRect",QRect(10,10,500,380));
+ if(!rect.isValid())
+ rect = QRect(10,10,500,380);
- if(KVI_OPTION_BOOL(KviOption_boolWindowsRememberProperties))
+ if(bDocked)
{
- bool bDocked = g_pWinPropertiesConfig->readBoolEntry("IsDocked",true);
- QRect rect = g_pWinPropertiesConfig->readRectEntry("WinRect",QRect(10,10,500,380));
+ // when group settings are used, we always cascade the windows
+ // this means that windows that have no specialized config group name
+ // are always cascaded : this is true for consoles, queries (and other windows) but not channels (and some other windows)
+ // FIXME: Since the introduction of QMdiArea cascading (and positioning of windows in general) no longer works
+ KviMdiChild * lpC = dockWindow(wnd);
+ lpC->setGeometry(rect);
+ wnd->triggerCreationEvents();
+ if(bShow)
+ {
+ m_pMdi->showAndActivate(lpC);
+ // Handle the special case of this top level widget not being the active one.
+ // In this situation the child will not get the focusInEvent
+ // and thus will not call out childWindowActivated() method
+ if(!isActiveWindow())
+ childWindowActivated(wnd);
+ }
+ } else {
+ bool bMaximized = g_pWinPropertiesConfig->readBoolEntry("IsMaximized",false);
+
+ wnd->setGeometry(rect);
+ wnd->triggerCreationEvents();
- if(bDocked)
+ if(bShow)
{
- // when group settings are used, we always cascade the windows
- // this means that windows that have no specialized config group name
- // are always cascaded : this is true for consoles, queries (and other windows) but not channels (and some other windows)
- // FIXME: Since the introduction of QMdiArea cascading (and positioning of windows in general) no longer works
- KviMdiChild * lpC = dockWindow(wnd);
- lpC->setGeometry(rect);
- wnd->triggerCreationEvents();
- if(bShow)
- {
- m_pMdi->showAndActivate(lpC);
- // Handle the special case of this top level widget not being the active one.
- // In this situation the child will not get the focusInEvent
- // and thus will not call out childWindowActivated() method
- if(!isActiveWindow())
- childWindowActivated(wnd);
- }
+ if(bMaximized)
+ wnd->maximize();
} else {
- bool bMaximized = g_pWinPropertiesConfig->readBoolEntry("IsMaximized",false);
-
- wnd->setGeometry(rect);
- wnd->triggerCreationEvents();
-
- if(bShow)
- {
- if(bMaximized)
- wnd->maximize();
- } else {
- wnd->setWindowState(wnd->windowState() | Qt::WindowMinimized);
- if(bMaximized)
- wnd->setWindowState(wnd->windowState() | Qt::WindowMaximized);
- }
- wnd->show();
- wnd->youAreUndocked();
- if(bShow)
- {
- wnd->raise();
- wnd->setFocus();
- }
+ wnd->setWindowState(wnd->windowState() | Qt::WindowMinimized);
+ if(bMaximized)
+ wnd->setWindowState(wnd->windowState() | Qt::WindowMaximized);
+ }
+ wnd->show();
+ wnd->youAreUndocked();
+ if(bShow)
+ {
+ wnd->raise();
+ wnd->setFocus();
}
- goto docking_done;
}
- }
-default_docking:
- {
+ } else {
+
KviMdiChild * lpC = dockWindow(wnd);
// FIXME: Since the introduction of QMdiArea cascading (and positioning of windows in general) no longer works
// Emulate cascading in some way....
int offset = (m_pWinList->count() * 10) % 100;
- lpC->setGeometry(QRect(offset,offset,500,400));
+ lpC->setGeometry(offset, offset, 500, 400);
wnd->triggerCreationEvents();
if(bShow)
{
@@ -589,7 +589,8 @@ default_docking:
childWindowActivated(wnd);
}
}
-docking_done:
+
+
// we like to have an active window.. but don't trigger the events until it is really shown
if(!g_pActiveWindow)
{
diff --git a/src/kvirc/ui/KviMdiChild.cpp b/src/kvirc/ui/KviMdiChild.cpp
index 1622a96bc..7c36c3637 100644
--- a/src/kvirc/ui/KviMdiChild.cpp
+++ b/src/kvirc/ui/KviMdiChild.cpp
@@ -37,6 +37,7 @@
#include "KviOptions.h"
#include "kvi_settings.h"
#include "KviIconManager.h"
+#include "KviMainWindow.h"
#include "KviWindow.h"
#include "KviTalPopupMenu.h"
#include "KviIrcConnection.h"
@@ -59,8 +60,6 @@ KviMdiChild::KviMdiChild(KviMdiManager * par, const char * name)
m_pManager = par;
m_pClient = 0;
- setGeometry(QRect(10,10,500,380));
-
connect(systemMenu(), SIGNAL(aboutToShow()), this, SLOT(updateSystemPopup()));
connect(this, SIGNAL(windowStateChanged(Qt::WindowStates, Qt::WindowStates)), this, SLOT(windowStateChangedEvent(Qt::WindowStates, Qt::WindowStates)));
@@ -176,9 +175,11 @@ void KviMdiChild::restore()
void KviMdiChild::maximize()
{
if(isVisible())
+ {
showMaximized();
- else
- setWindowState(windowState() & Qt::WindowMaximized);
+ } else {
+ setWindowState(windowState() & Qt::WindowMaximized & ~Qt::WindowMaximized);
+ }
}
void KviMdiChild::minimize()
@@ -186,7 +187,7 @@ void KviMdiChild::minimize()
if(isVisible())
showMinimized();
else
- setWindowState(windowState() & Qt::WindowMinimized);
+ setWindowState((windowState() & Qt::WindowMinimized) & ~Qt::WindowMaximized);
}
void KviMdiChild::updateCaption()
diff --git a/src/kvirc/ui/KviMdiChild.h b/src/kvirc/ui/KviMdiChild.h
index 0a3f7da61..3c2833784 100644
--- a/src/kvirc/ui/KviMdiChild.h
+++ b/src/kvirc/ui/KviMdiChild.h
@@ -90,7 +90,6 @@ private:
void updateCaption();
public:
-
/**
* \brief Sets the client widget which is shown in the subwindow
* \param w The new client widget which is docked into our KviMdiChild
diff --git a/src/kvirc/ui/KviMdiManager.cpp b/src/kvirc/ui/KviMdiManager.cpp
index 2af6c400f..3010f55f8 100644
--- a/src/kvirc/ui/KviMdiManager.cpp
+++ b/src/kvirc/ui/KviMdiManager.cpp
@@ -71,6 +71,8 @@ KviMdiManager::KviMdiManager(QWidget * parent,const char *pcName)
{
setObjectName(pcName);
setFrameShape(NoFrame);
+ setOption(QMdiArea::DontMaximizeSubWindowOnActivation, true);
+
m_bInSDIMode = KVI_OPTION_BOOL(KviOption_boolMdiManagerInSdiMode);
m_pWindowPopup = new KviTalPopupMenu(this);
@@ -125,15 +127,15 @@ void KviMdiManager::manageChild(KviMdiChild * lpC)
{
addSubWindow((QMdiSubWindow*)lpC);
- if(!m_bInSDIMode)
- if(KVI_OPTION_BOOL(KviOption_boolAutoTileWindows))
- tile();
+ if(!m_bInSDIMode && KVI_OPTION_BOOL(KviOption_boolAutoTileWindows))
+ tile();
}
void KviMdiManager::showAndActivate(KviMdiChild * lpC)
{
if(m_bInSDIMode)
{
+ ensureNoMaximized(lpC);
lpC->showMaximized();
} else {
//qDebug("Showing window %x->%x",lpC,lpC->client());
@@ -142,48 +144,39 @@ void KviMdiManager::showAndActivate(KviMdiChild * lpC)
if(KVI_OPTION_BOOL(KviOption_boolAutoTileWindows))
tile();
}
- setActiveSubWindow(lpC);
+
lpC->setFocus();
//qDebug("show and activate window %x->%x: geometry is %d,%d,%d,%d, visible is %d",lpC,lpC->client(),lpC->geometry().x(),lpC->geometry().y(),lpC->geometry().width(),lpC->geometry().height(),lpC->isVisible());
}
-KviMdiChild * KviMdiManager::topChild()
-{
- return (KviMdiChild*)activeSubWindow();
-}
-
-void KviMdiManager::hideChild(KviMdiChild *lpC)
-{
- focusPreviousTopChild(lpC);
- lpC->hide();
-}
-
void KviMdiManager::destroyChild(KviMdiChild *lpC)
{
removeSubWindow(lpC);
delete lpC;
- if(!m_bInSDIMode)
- {
- if(KVI_OPTION_BOOL(KviOption_boolAutoTileWindows))
- tile();
- }
+ if(!m_bInSDIMode && KVI_OPTION_BOOL(KviOption_boolAutoTileWindows))
+ tile();
}
void KviMdiManager::setIsInSDIMode(bool bMode)
{
// qDebug("Sdi Mode %d", bMode);
m_bInSDIMode = bMode;
+
if(!m_bInSDIMode)
- if(KVI_OPTION_BOOL(KviOption_boolAutoTileWindows))tile();
+ {
+ ensureNoMaximized();
+
+ if(KVI_OPTION_BOOL(KviOption_boolAutoTileWindows))
+ tile();
+ }
};
void KviMdiManager::focusPreviousTopChild(KviMdiChild * pExcludeThis)
{
KviMdiChild * lpC = NULL;
- //QList<QMdiSubWindow *> tmp = subWindowList(QMdiArea::ActivationHistoryOrder);
QList<QMdiSubWindow *> tmp = subWindowList(QMdiArea::StackingOrder);
QListIterator<QMdiSubWindow*> wl(tmp);
wl.toBack();
@@ -211,8 +204,10 @@ void KviMdiManager::focusPreviousTopChild(KviMdiChild * pExcludeThis)
return;
if(isInSDIMode())
+ {
+ ensureNoMaximized(lpC);
lpC->maximize();
- else {
+ } else {
if(KVI_OPTION_BOOL(KviOption_boolAutoTileWindows))
tile();
}
@@ -348,19 +343,19 @@ void KviMdiManager::menuActivated(int id)
setActiveSubWindow(lpC);
}
-void KviMdiManager::ensureNoMaximized()
+void KviMdiManager::ensureNoMaximized(KviMdiChild * lpExclude)
{
- QList<QMdiSubWindow *> tmp = subWindowList(QMdiArea::StackingOrder);
-
+ QList<QMdiSubWindow*> tmp = subWindowList(QMdiArea::StackingOrder);
+ QListIterator<QMdiSubWindow*> it(tmp);
KviMdiChild * lpC;
- for(int i = 0; i < tmp.count(); i++)
+ while (it.hasNext())
{
- if (tmp.at(i)->inherits("KviMdiChild"))
- {
- lpC = (KviMdiChild *) tmp.at(i);
- if(lpC->state() == KviMdiChild::Maximized)lpC->restore();
- }
+ lpC = (KviMdiChild *) it.next();
+ if(lpExclude == lpC)
+ continue;
+ if(lpC->windowState() & Qt::WindowMaximized)
+ lpC->setWindowState(lpC->windowState() & ~Qt::WindowMaximized);
}
}
@@ -387,111 +382,115 @@ void KviMdiManager::cascadeWindows()
void KviMdiManager::cascadeMaximized()
{
cascadeSubWindows();
- QList<QMdiSubWindow *> tmp = subWindowList();
+
+ QList<QMdiSubWindow*> tmp = subWindowList(QMdiArea::StackingOrder);
+ QListIterator<QMdiSubWindow*> it(tmp);
KviMdiChild * lpC;
- for(int i = 0; i < tmp.count(); i++)
+ while (it.hasNext())
{
- if (tmp.at(i)->inherits("KviMdiChild"))
- {
- lpC = (KviMdiChild *) tmp.at(i);
- if(lpC->state() != KviMdiChild::Minimized)
- {
- QPoint pnt(lpC->pos());
- QSize curSize(viewport()->width() - pnt.x(),viewport()->height() - pnt.y());
- if((lpC->minimumSize().width() > curSize.width()) ||
- (lpC->minimumSize().height() > curSize.height()))lpC->resize(lpC->minimumSize());
- else lpC->resize(curSize);
- }
- }
+ lpC = (KviMdiChild *) it.next();
+ if(lpC->windowState() & Qt::WindowMinimized)
+ continue;
+
+ QPoint pnt(lpC->pos());
+ QSize curSize(viewport()->width() - pnt.x(),viewport()->height() - pnt.y());
+ if((lpC->minimumSize().width() > curSize.width()) ||
+ (lpC->minimumSize().height() > curSize.height()))lpC->resize(lpC->minimumSize());
+ else lpC->resize(curSize);
}
}
void KviMdiManager::expandVertical()
{
ensureNoMaximized();
- QList<QMdiSubWindow *> tmp = subWindowList(QMdiArea::StackingOrder);
+
+ QList<QMdiSubWindow*> tmp = subWindowList(QMdiArea::StackingOrder);
+ QListIterator<QMdiSubWindow*> it(tmp);
KviMdiChild * lpC;
- for(int i = 0; i < tmp.count(); i++)
+ while (it.hasNext())
{
- if (tmp.at(i)->inherits("KviMdiChild"))
- {
- lpC = (KviMdiChild *) tmp.at(i);
- if(lpC->state() != KviMdiChild::Minimized)
- {
- lpC->move(lpC->x(),0);
- lpC->resize(lpC->width(),viewport()->height());
- }
- }
+ lpC = (KviMdiChild *) it.next();
+ if(lpC->windowState() & Qt::WindowMinimized)
+ continue;
+
+ lpC->move(lpC->x(),0);
+ lpC->resize(lpC->width(),viewport()->height());
}
}
void KviMdiManager::expandHorizontal()
{
ensureNoMaximized();
- QList<QMdiSubWindow *> tmp = subWindowList(QMdiArea::StackingOrder);
+
+ QList<QMdiSubWindow*> tmp = subWindowList(QMdiArea::StackingOrder);
+ QListIterator<QMdiSubWindow*> it(tmp);
KviMdiChild * lpC;
- for(int i = 0; i < tmp.count(); i++)
+ while (it.hasNext())
{
- if (tmp.at(i)->inherits("KviMdiChild"))
- {
- lpC = (KviMdiChild *) tmp.at(i);
- if(lpC->state() != KviMdiChild::Minimized)
- {
- lpC->move(0,lpC->y());
- lpC->resize(viewport()->width(),lpC->height());
- }
- }
+ lpC = (KviMdiChild *) it.next();
+ if(lpC->windowState() & Qt::WindowMinimized)
+ continue;
+
+ lpC->move(0,lpC->y());
+ lpC->resize(viewport()->width(),lpC->height());
}
}
void KviMdiManager::minimizeAll()
{
- QList<QMdiSubWindow *> tmp = subWindowList(QMdiArea::StackingOrder);
-
+ QList<QMdiSubWindow*> tmp = subWindowList(QMdiArea::StackingOrder);
+ QListIterator<QMdiSubWindow*> it(tmp);
KviMdiChild * lpC;
- for(int i = 0; i < tmp.count(); i++)
+ while (it.hasNext())
{
- if (tmp.at(i)->inherits("KviMdiChild"))
- {
- lpC = (KviMdiChild *) tmp.at(i);
- if(lpC->state() != KviMdiChild::Minimized) lpC->minimize();
- }
+ lpC = (KviMdiChild *) it.next();
+ if(lpC->windowState() & Qt::WindowMinimized)
+ continue;
+
+ lpC->minimize();
}
}
void KviMdiManager::restoreAll()
{
- QList<QMdiSubWindow *> tmp = subWindowList(QMdiArea::StackingOrder);
-
+ QList<QMdiSubWindow*> tmp = subWindowList(QMdiArea::StackingOrder);
+ QListIterator<QMdiSubWindow*> it(tmp);
KviMdiChild * lpC;
- for(int i = 0; i < tmp.count(); i++)
+ while (it.hasNext())
{
- if (tmp.at(i)->inherits("KviMdiChild"))
- {
- lpC = (KviMdiChild *) tmp.at(i);
- if(lpC->state() == KviMdiChild::Minimized) lpC->restore();
- }
+ lpC = (KviMdiChild *) it.next();
+ if(!(lpC->windowState() & Qt::WindowMinimized))
+ continue;
+
+ lpC->restore();
}
- if(!m_bInSDIMode)
- if(KVI_OPTION_BOOL(KviOption_boolAutoTileWindows))tile();
+
+ if(!m_bInSDIMode && KVI_OPTION_BOOL(KviOption_boolAutoTileWindows))
+ tile();
}
int KviMdiManager::getVisibleChildCount()
{
- QList<QMdiSubWindow *> l = subWindowList();
-
+ QList<QMdiSubWindow*> tmp = subWindowList(QMdiArea::StackingOrder);
+ QListIterator<QMdiSubWindow*> it(tmp);
+ KviMdiChild * lpC;
int cnt = 0;
- int i = 0;
- for(i = 0; i < l.count(); i++)
+
+ while (it.hasNext())
{
- if(!l.at(i)->isMinimized()) cnt++;
+ lpC = (KviMdiChild *) it.next();
+ if(lpC->windowState() & Qt::WindowMinimized)
+ continue;
+
+ cnt++;
}
+
return cnt;
}
@@ -542,7 +541,7 @@ void KviMdiManager::tileAllInternal(int maxWnds, bool bHorizontal) //int maxWnds
ensureNoMaximized();
if (g_pApp->kviClosingDown()) return;
- KviMdiChild * lpTop = topChild();
+ KviMdiChild * lpTop = (KviMdiChild*)activeSubWindow();
if (!lpTop) return;
int numVisible = getVisibleChildCount();
diff --git a/src/kvirc/ui/KviMdiManager.h b/src/kvirc/ui/KviMdiManager.h
index 552917a4a..cebcb7dc8 100644
--- a/src/kvirc/ui/KviMdiManager.h
+++ b/src/kvirc/ui/KviMdiManager.h
@@ -81,12 +81,7 @@ protected:
/// Holds the tiling popup
KviTalPopupMenu * m_pTileMethodPopup;
public:
- /**
- * \brief Get the currently active window
- * \return KviMdiChild *
- */
- KviMdiChild * topChild();
-
+
/**
* \brief Add an KviMdiChild to the area
* \param lpC The KviMdiChild
@@ -106,7 +101,7 @@ public:
* \return KviTalPopupMenu *
*/
inline KviTalPopupMenu * windowPopup() { return m_pWindowPopup; };
-
+
/**
* \brief Move the focus the the previous active window
* \return void
@@ -121,13 +116,6 @@ public:
void destroyChild(KviMdiChild * lpC);
/**
- * \brief Hides the specified child and focuses some other child
- * \param lpC The KviMdiChild which will be hidden.
- * \return void
- */
- void hideChild(KviMdiChild * lpC);
-
- /**
* \brief Get all visible subwindows
* \return int
*/
@@ -157,12 +145,11 @@ protected:
private:
/**
- * \brief Make sure that no KviMdiChild is maximized
+ * \brief Ensure that no KviMdiChild is maximized
+ * \param lpExclude a window to be excluded from the checks
* \return void
- *
- * Goes trough all KviMdiChild objects and checks for maximized mode and restores that windows
*/
- void ensureNoMaximized();
+ void ensureNoMaximized(KviMdiChild * lpExclude=0);
/**
* \brief The internal member which provides the tiling methods
diff --git a/src/kvirc/ui/KviTreeWindowList.cpp b/src/kvirc/ui/KviTreeWindowList.cpp
index 80a14471d..f46cbff58 100644
--- a/src/kvirc/ui/KviTreeWindowList.cpp
+++ b/src/kvirc/ui/KviTreeWindowList.cpp
@@ -249,7 +249,7 @@ void KviTreeWindowListTreeWidget::mousePressEvent(QMouseEvent *e)
} else {
//left click activate/deactivate window
if((g_pActiveWindow != wnd) || (wnd->isMinimized()))
- wnd->restore();
+ g_pMainWindow->setActiveWindow(wnd);
else
wnd->minimize();
diff --git a/src/kvirc/ui/KviWindow.cpp b/src/kvirc/ui/KviWindow.cpp
index 5f0f31559..f1c0286f9 100644
--- a/src/kvirc/ui/KviWindow.cpp
+++ b/src/kvirc/ui/KviWindow.cpp
@@ -1125,7 +1125,7 @@ void KviWindow::moveEvent(QMoveEvent * pEvent)
void KviWindow::minimize()
{
if(mdiParent())
- mdiParent()->showMinimized();
+ mdiParent()->minimize();
else
showMinimized();
}
@@ -1133,7 +1133,7 @@ void KviWindow::minimize()
void KviWindow::maximize()
{
if(mdiParent())
- mdiParent()->showMaximized();
+ mdiParent()->maximize();
else
showMaximized();
autoRaise();
@@ -1158,7 +1158,7 @@ bool KviWindow::isMaximized()
void KviWindow::restore()
{
if(mdiParent())
- mdiParent()->showNormal();
+ mdiParent()->restore();
else
showNormal();
autoRaise();
diff --git a/src/kvirc/ui/KviWindowListBase.cpp b/src/kvirc/ui/KviWindowListBase.cpp
index 57ccf6867..81535d371 100644
--- a/src/kvirc/ui/KviWindowListBase.cpp
+++ b/src/kvirc/ui/KviWindowListBase.cpp
@@ -287,7 +287,7 @@ void KviWindowListButton::mousePressEvent(QMouseEvent *e)
m_pWindow->delayedClose();
} else {
if((g_pActiveWindow != m_pWindow) || (m_pWindow->isMinimized()))
- m_pWindow->restore();
+ g_pMainWindow->setActiveWindow(m_pWindow);
else
m_pWindow->minimize();
}