[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    branches/KDE/4.3/kdepim/kalarm
From:       David Jarvie <djarvie () kde ! org>
Date:       2009-10-31 22:10:24
Message-ID: 1257027024.227469.25178.nullmailer () svn ! kde ! org
[Download RAW message or body]

SVN commit 1043157 by djarvie:

Bug 211696: If dual screens, show alarm in other screen if active window is full screen


 M  +8 -8      lib/desktop.cpp  
 M  +2 -2      lib/desktop.h  
 M  +10 -13    messagewin.cpp  
 M  +1 -1      messagewin.h  


--- branches/KDE/4.3/kdepim/kalarm/lib/desktop.cpp #1043156:1043157
@@ -1,7 +1,7 @@
 /*
  *  desktop.cpp  -  desktop functions
  *  Program:  kalarm
- *  Copyright  © 2008 by David Jarvie <djarvie@kde.org>
+ *  Copyright  © 2008,2009 by David Jarvie <djarvie@kde.org>
  *
  *  This program is free software; you can redistribute it and/or modify
  *  it under the terms of the GNU General Public License as published by
@@ -21,23 +21,23 @@
 #include "desktop.h"
 #ifdef Q_WS_X11
 #include <kwindowsystem.h>
-#else
+#endif
 #include <QApplication>
 #include <QDesktopWidget>
-#endif
 
 namespace KAlarm {
 
 /******************************************************************************
-* Return the size of the usable area of the desktop.
+* Return the size of the usable area of the desktop, optionally for a specific
+* screen in a multi-head setup.
 */
-QRect desktopWorkArea()
+QRect desktopWorkArea(int screen)
 {
 #ifdef Q_WS_X11
-	return KWindowSystem::workArea();
-#else
-	return qApp->desktop()->availableGeometry();
+	if (screen < 0)
+		return KWindowSystem::workArea();
 #endif
+	return qApp->desktop()->availableGeometry(screen);
 }
 
 } // namespace KAlarm
--- branches/KDE/4.3/kdepim/kalarm/lib/desktop.h #1043156:1043157
@@ -1,7 +1,7 @@
 /*
  *  desktop.h  -  desktop functions
  *  Program:  kalarm
- *  Copyright  © 2008 by David Jarvie <djarvie@kde.org>
+ *  Copyright  © 2008,2009 by David Jarvie <djarvie@kde.org>
  *
  *  This program is free software; you can redistribute it and/or modify
  *  it under the terms of the GNU General Public License as published by
@@ -25,7 +25,7 @@
 
 namespace KAlarm {
 
-QRect desktopWorkArea();
+QRect desktopWorkArea(int screen = -1);
 
 } // namespace KAlarm
 
--- branches/KDE/4.3/kdepim/kalarm/messagewin.cpp #1043156:1043157
@@ -508,7 +508,7 @@
 				topLayout->addSpacing(vspace);
 				topLayout->addStretch();
 				// Don't include any horizontal margins if message is 2/3 screen width
-				if (text->sizeHint().width() >= mDesktopArea.width()*2/3)
+				if (text->sizeHint().width() >= KAlarm::desktopWorkArea(mScreenNumber).width()*2/3)
 					topLayout->addWidget(text, 1, Qt::AlignHCenter);
 				else
 				{
@@ -1495,7 +1495,7 @@
 	}
 
 	// Limit the size to fit inside the working area of the desktop
-	QSize desktop  = KAlarm::desktopWorkArea().size();
+	QSize desktop  = KAlarm::desktopWorkArea(mScreenNumber).size();
 	QSize frameThickness = frameGeometry().size() - geometry().size();  // title bar & window frame
 	return desired.boundedTo(desktop - frameThickness);
 }
@@ -1529,7 +1529,7 @@
 			KAlarm::readConfigWindowSize("FileMessage", s);
 		resize(s);
 
-		QRect desk = KAlarm::desktopWorkArea();
+		QRect desk = KAlarm::desktopWorkArea(mScreenNumber);
 		QRect frame = frameGeometry();
 
 		mButtonDelay = Preferences::messageButtonDelay() * 1000;
@@ -1602,7 +1602,7 @@
 void MessageWin::moveEvent(QMoveEvent* e)
 {
 	MainWindowBase::moveEvent(e);
-	theApp()->setSpreadWindowsState(isSpread(KAlarm::desktopWorkArea().topLeft()));
+	theApp()->setSpreadWindowsState(isSpread(KAlarm::desktopWorkArea(mScreenNumber).topLeft()));
 	if (mPositioning)
 	{
 		// The window has just been initially positioned
@@ -1624,7 +1624,7 @@
 		if (width() > s.width()  ||  height() > s.height())
 			resize(s);
 	}
-	theApp()->setSpreadWindowsState(isSpread(KAlarm::desktopWorkArea().topLeft()));
+	theApp()->setSpreadWindowsState(isSpread(KAlarm::desktopWorkArea(mScreenNumber).topLeft()));
 }
 
 /******************************************************************************
@@ -1958,7 +1958,7 @@
 */
 bool MessageWin::getWorkAreaAndModal()
 {
-	mDesktopArea = KAlarm::desktopWorkArea();
+	mScreenNumber = -1;
 	bool modal = Preferences::modalMessages();
 	if (modal)
 	{
@@ -1975,26 +1975,23 @@
 			{
 				// There are multiple screens
 				QRect winRect = wi.frameGeometry();
-				int screen = desktop->screenNumber(MainWindow::mainMainWindow());  // KAlarm's screen
-				if (!winRect.intersects(desktop->screenGeometry(screen)))
+				mScreenNumber = desktop->screenNumber(MainWindow::mainMainWindow());  // KAlarm's screen
+				if (!winRect.intersects(desktop->screenGeometry(mScreenNumber)))
 					modal = true;   // full screen window isn't on KAlarm's screen
 				else
 				{
 					for (int s = 0;  s < numScreens;  ++s)
 					{
-						if (s != screen
+						if (s != mScreenNumber
 						&&  !winRect.intersects(desktop->screenGeometry(s)))
 						{
 							// The full screen window isn't on this screen
-							screen = s;
+							mScreenNumber = s;
 							modal = true;
 							break;
 						}
 					}
-					if (!modal)
-						return modal;
 				}
-				mDesktopArea = desktop->availableGeometry(screen);
 			}
 		}
 	}
--- branches/KDE/4.3/kdepim/kalarm/messagewin.h #1043156:1043157
@@ -160,10 +160,10 @@
 		QCheckBox*          mDontShowAgainCheck;
 		DeferAlarmDlg*      mDeferDlg;
 		QDateTime           mDeferLimit;      // last time to which the message can currently be deferred
-		QRect               mDesktopArea;     // usable area of desktop (excluding panel etc.)
 		int                 mFlags;           // event flags
 		int                 mLateCancel;
 		int                 mButtonDelay;     // delay (ms) after window is shown before buttons are enabled
+		int                 mScreenNumber;    // screen to display on, or -1 for default
 		bool                mErrorWindow;     // the window is simply an error message
 		bool                mNoPostAction;    // don't execute any post-alarm action
 		bool                mRecreating;      // window is about to be deleted and immediately recreated
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic