[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: KDE/kdelibs/kdeui/windowmanagement
From: Patrick Spendrin <ps_ml () gmx ! de>
Date: 2009-07-22 11:31:24
Message-ID: 1248262284.138659.26316.nullmailer () svn ! kde ! org
[Download RAW message or body]
SVN commit 1000951 by sengels:
make kwindowsystem work again on windows
M +40 -10 kwindowsystem_win.cpp
--- trunk/KDE/kdelibs/kdeui/windowmanagement/kwindowsystem_win.cpp #1000950:1000951
@@ -170,16 +170,19 @@
if(!pRegisterShellHook) pRegisterShellHook = \
(PtrRegisterShellHook)QLibrary::resolve("shell32",(LPCSTR)0xb5);
//get the id for the shellhook message
- if(WM_SHELLHOOK==-1) WM_SHELLHOOK = RegisterWindowMessage(TEXT("SHELLHOOK"));
+ if(WM_SHELLHOOK==-1) {
+ WM_SHELLHOOK = RegisterWindowMessage(TEXT("SHELLHOOK"));
+// kDebug() << "WM_SHELLHOOK:" << WM_SHELLHOOK << winId();
+ }
bool shellHookRegistered = false;
if(pRegisterShellHook) {
-// kDebug()<<"use RegisterShellHook";
- shellHookRegistered = pRegisterShellHook(winId(),RSH_REGISTER);
- if(!shellHookRegistered)
+ shellHookRegistered = pRegisterShellHook(winId(),RSH_TASKMGR);
+ if(!shellHookRegistered) {
shellHookRegistered = pRegisterShellHook(winId(),RSH_TASKMGR);
+ kDebug() << "second try using RegisterShellHook gave:" << \
shellHookRegistered; + }
} else {
- kDebug()<<"use RegisterShellHookWindow";
//i'm not sure if i have to do this, and what happens if some other process \
uses KWindowSystem //if(pSetTaskmanWindow)
// pSetTaskmanWindow(winId());
@@ -190,7 +193,7 @@
if(!shellHookRegistered)
//use a timer and poll the windows ?
- kDebug()<<"Could not create shellhook to receive WindowManager Events";
+ kDebug() << "Could not create shellhook to receive WindowManager Events";
//fetch window infos
reloadStackList();
@@ -211,7 +214,30 @@
*/
bool KWindowSystemPrivate::winEvent ( MSG * message, long * result )
{
+ if(message->wParam == 15) return QWidget::winEvent(message,result);
+
+ /*
+ check winuser.h for the following codes
+ HSHELL_WINDOWCREATED 1
+ HSHELL_WINDOWDESTROYED 2
+ HSHELL_ACTIVATESHELLWINDOW 3
+ HSHELL_WINDOWACTIVATED 4
+ HSHELL_GETMINRECT 5
+ HSHELL_RUDEAPPACTIVATED 32768 + 4 = 32772
+ HSHELL_REDRAW 6
+ HSHELL_FLASH 32768 + 6 = 32774
+ HSHELL_TASKMAN 7
+ HSHELL_LANGUAGE 8
+ HSHELL_SYSMENU 9
+ HSHELL_ENDTASK 10
+ HSHELL_ACCESSIBILITYSTATE 11
+ HSHELL_APPCOMMAND 12
+ HSHELL_WINDOWREPLACED 13
+ HSHELL_WINDOWREPLACING 14
+ */
if (message->message == WM_SHELLHOOK) {
+// kDebug() << "what has happened?:" << message->wParam << message->message;
+
switch(message->wParam) {
case HSHELL_WINDOWCREATED:
KWindowSystem::s_d_func()->windowAdded(reinterpret_cast<WId>(message->lParam));
@@ -223,15 +249,15 @@
case HSHELL_RUDEAPPACTIVATED:
KWindowSystem::s_d_func()->windowActivated(reinterpret_cast<WId>(message->lParam));
break;
+ case HSHELL_GETMINRECT:
+ KWindowSystem::s_d_func()->windowStateChanged(reinterpret_cast<WId>(message->lParam));
+ break;
case HSHELL_REDRAW: //the caption has changed
KWindowSystem::s_d_func()->windowRedraw(reinterpret_cast<WId>(message->lParam));
break;
case HSHELL_FLASH:
KWindowSystem::s_d_func()->windowFlash(reinterpret_cast<WId>(message->lParam));
break;
- case HSHELL_GETMINRECT:
- KWindowSystem::s_d_func()->windowStateChanged(reinterpret_cast<WId>(message->lParam));
- break;
}
}
return QWidget::winEvent(message,result);
@@ -290,20 +316,24 @@
void KWindowSystemPrivate::windowAdded (WId wid)
{
+// kDebug() << "window added!";
KWindowSystem::s_d_func()->reloadStackList();
emit KWindowSystem::self()->windowAdded(wid);
+ emit KWindowSystem::self()->activeWindowChanged(wid);
emit KWindowSystem::self()->stackingOrderChanged();
}
void KWindowSystemPrivate::windowRemoved (WId wid)
{
- KWindowSystem::s_d_func()->reloadStackList();
+// kDebug() << "window removed!";
emit KWindowSystem::self()->windowRemoved(wid);
emit KWindowSystem::self()->stackingOrderChanged();
+ KWindowSystem::s_d_func()->reloadStackList();
}
void KWindowSystemPrivate::windowActivated (WId wid)
{
+// kDebug() << "window activated!";
KWindowSystem::s_d_func()->reloadStackList();
emit KWindowSystem::self()->activeWindowChanged(wid);
emit KWindowSystem::self()->stackingOrderChanged();
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic