From 043c911a20da226037cb0c49b4950fd8c0f3c568 Mon Sep 17 00:00:00 2001 From: Mandrake Date: Tue, 21 Sep 1999 02:28:57 +0000 Subject: [PATCH] Mon Sep 20 19:41:17 PDT 1999 (Mandrake) yet more kde fixes. Hopefully most of the window operations menu in kpanel should work now SVN revision: 349 --- src/ChangeLog | 8 +++ src/E.h | 2 +- src/evhandlers.c | 14 ++-- src/kde.c | 167 +++++++++++++++++++++++++++++++++++++++-------- src/menus.c | 2 +- 5 files changed, 155 insertions(+), 38 deletions(-) diff --git a/src/ChangeLog b/src/ChangeLog index c8b97202..95331d29 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -2078,3 +2078,11 @@ menu. Added some group issues to TODO file. I hope I get to finish that during this week. + +------------------------------------------------------------------------------- + +Mon Sep 20 19:41:17 PDT 1999 +(Mandrake) + +yet more kde fixes. Hopefully most of the window operations menu in kpanel + should work now diff --git a/src/E.h b/src/E.h index f60b4fc8..64bf0b8a 100644 --- a/src/E.h +++ b/src/E.h @@ -2256,7 +2256,7 @@ void KDE_UpdateFocusedWindow(void); void KDE_SetNumDesktops(void); void KDE_NewWindow(EWin * ewin); void KDE_RemoveWindow(EWin * ewin); -void KDE_UpdateTitle(EWin * ewin); +void KDE_UpdateClient(EWin * ewin); /* sound.c functions */ Sample *LoadWav(char *file); diff --git a/src/evhandlers.c b/src/evhandlers.c index 8386c56e..1775b117 100644 --- a/src/evhandlers.c +++ b/src/evhandlers.c @@ -185,6 +185,7 @@ HandleClientMessage(XEvent * ev) EDBUG_RETURN_; } } + if (mode.kde_support) KDE_ProcessClientMessage(&(ev->xclient)); @@ -1024,7 +1025,7 @@ HandleProperty(XEvent * ev) UpdateBorderInfo(ewin); CalcEwinSizes(ewin); if (mode.kde_support) - KDE_UpdateTitle(ewin); + KDE_UpdateClient(ewin); } if ((ewin->iconified) && (pm != ewin->client.icon_pmap)) { @@ -1052,6 +1053,8 @@ HandleProperty(XEvent * ev) } } UngrabX(); + if (mode.kde_support) + KDE_ClientChange(win, ev->xproperty.atom); } else if (win == root.win) { @@ -1061,14 +1064,9 @@ HandleProperty(XEvent * ev) KDE_HintChange(ev->xproperty.atom); } } - else + else if (mode.kde_support) { - /* could be a KDE hint change */ - if (mode.kde_support) - { - KDE_ClientChange(win, ev->xproperty.atom); - } - + KDE_ClientChange(win, ev->xproperty.atom); } EDBUG_RETURN_; } diff --git a/src/kde.c b/src/kde.c index 4d4f0fc9..730370be 100644 --- a/src/kde.c +++ b/src/kde.c @@ -173,7 +173,7 @@ KDE_UpdateFocusedWindow(void) } else { - if (getSimpleHint(root.win, KDE_ACTIVE_WINDOW)) + if (*(getSimpleHint(root.win, KDE_ACTIVE_WINDOW))) deleteHint(root.win, KDE_ACTIVE_WINDOW); } @@ -199,21 +199,47 @@ KDE_NewWindow(EWin * ewin) if (!ewin) EDBUG_RETURN_; - if (!getSimpleHint(ewin->client.win, KDE_WIN_TITLE)) + if (!(ewin->internal)) { - if (!(ewin->internal)) + if (!ewin->kde_hint) { XChangeProperty(disp, ewin->client.win, KDE_WIN_TITLE, XA_STRING, 8, PropModeReplace, (unsigned char *)ewin->client.title, strlen(ewin->client.title) + 1); - if (!ewin->kde_hint) + + if (ewin->sticky) { - ewin->kde_hint = 1; - KDE_SendMessagesToModules(KDE_MODULE_WIN_ADD, ewin->client.win); + setSimpleHint(ewin->client.win, KDE_WIN_STICKY, 1); } + else + { + setSimpleHint(ewin->client.win, KDE_WIN_STICKY, 0); + } + + if (ewin->iconified) + { + setSimpleHint(ewin->client.win, KDE_WIN_ICONIFIED, 1); + } + else + { + setSimpleHint(ewin->client.win, KDE_WIN_ICONIFIED, 0); + } + + if (ewin->toggle) + { + setSimpleHint(ewin->client.win, KDE_WIN_MAXIMIZED, 1); + } + else + { + setSimpleHint(ewin->client.win, KDE_WIN_MAXIMIZED, 0); + } + + ewin->kde_hint = 1; + KDE_SendMessagesToModules(KDE_MODULE_WIN_ADD, ewin->client.win); } } + EDBUG_RETURN_; } @@ -298,11 +324,53 @@ KDE_AddModule(Window win) { if (!(lst[i]->internal)) { - XChangeProperty(disp, lst[i]->client.win, KDE_WIN_TITLE, + XChangeProperty(disp, lst[i]->client.win, + KDE_WIN_TITLE, XA_STRING, 8, PropModeReplace, (unsigned char *)lst[i]->client.title, strlen(lst[i]->client.title) + 1); - + if (lst[i]->sticky) + { + if (!getSimpleHint(lst[i]->client.win, + KDE_WIN_STICKY)) + setSimpleHint(lst[i]->client.win, + KDE_WIN_STICKY, 1); + } + else + { + if (getSimpleHint(lst[i]->client.win, + KDE_WIN_STICKY)) + setSimpleHint(lst[i]->client.win, + KDE_WIN_STICKY, 0); + } + if (lst[i]->iconified) + { + if (!getSimpleHint(lst[i]->client.win, + KDE_WIN_ICONIFIED)) + setSimpleHint(lst[i]->client.win, + KDE_WIN_ICONIFIED, 1); + } + else + { + if (getSimpleHint(lst[i]->client.win, + KDE_WIN_ICONIFIED)) + setSimpleHint(lst[i]->client.win, + KDE_WIN_ICONIFIED, 0); + } + if (lst[i]->toggle) + { + if (!getSimpleHint(lst[i]->client.win, + KDE_WIN_MAXIMIZED)) + setSimpleHint(lst[i]->client.win, + KDE_WIN_MAXIMIZED, 1); + } + else + { + if (getSimpleHint(lst[i]->client.win, + KDE_WIN_MAXIMIZED)) + setSimpleHint(lst[i]->client.win, + KDE_WIN_MAXIMIZED, 0); + } KDE_ClientMessage(win, KDE_MODULE_WIN_ADD, lst[i]->client.win, CurrentTime); lst[i]->kde_hint = 1; @@ -498,7 +566,7 @@ KDE_Init(void) KDE_SetNumDesktops(); - /* and we tell the root window to announce we're KDE compliant */ +/* and we tell the root window to announce we're KDE compliant */ setSimpleHint(root.win, KDE_RUNNING, 1); mode.kde_support = 1; @@ -558,7 +626,13 @@ KDE_Shutdown(void) { if (getSimpleHint(lst[i]->win, KDE_WIN_TITLE)) deleteHint(lst[i]->win, KDE_WIN_TITLE); - + if (getSimpleHint(lst[i]->win, KDE_WIN_MAXIMIZED)) + deleteHint(lst[i]->win, KDE_WIN_MAXIMIZED); + if (getSimpleHint(lst[i]->win, KDE_WIN_ICONIFIED)) + deleteHint(lst[i]->win, KDE_WIN_ICONIFIED); + if (getSimpleHint(lst[i]->win, KDE_WIN_STICKY)) + deleteHint(lst[i]->win, KDE_WIN_STICKY); + lst[i]->kde_hint = 0; } Efree(lst); } @@ -618,31 +692,37 @@ KDE_ClientChange(Window win, Atom a) if (a == KDE_WIN_STICKY) { - if (getSimpleHint(win, KDE_WIN_STICKY)) + if (*(getSimpleHint(win, KDE_WIN_STICKY))) { - MakeWindowSticky(ewin); + if (!(ewin->sticky)) + MakeWindowSticky(ewin); } else { - MakeWindowUnSticky(ewin); + if (ewin->sticky) + MakeWindowUnSticky(ewin); } } else if (a == KDE_WIN_MAXIMIZED) { - if (getSimpleHint(ewin->client.win, KDE_WIN_MAXIMIZED)) + if (*(getSimpleHint(ewin->client.win, KDE_WIN_MAXIMIZED))) { - ewin->toggle = 0; - MaxSize(ewin, "conservative"); + if (!(ewin->toggle)) + { + MaxSize(ewin, "conservative"); + } } else { - ewin->toggle = 1; - MaxSize(ewin, "conservative"); + if (ewin->toggle) + { + MaxSize(ewin, "conservative"); + } } } else if (a == KDE_WIN_ICONIFIED) { - if (getSimpleHint(ewin->client.win, KDE_WIN_ICONIFIED)) + if (*(getSimpleHint(ewin->client.win, KDE_WIN_ICONIFIED))) { if (!ewin->iconified) { @@ -665,12 +745,12 @@ KDE_ClientChange(Window win, Atom a) { if (getSimpleHint(win, KDE_WIN_DESKTOP)) { - long *desktop; + long desktop; - desktop = getSimpleHint(win, KDE_WIN_DESKTOP) - 1; - if (ewin->desktop != *desktop) + desktop = *(getSimpleHint(win, KDE_WIN_DESKTOP)) - 1; + if (ewin->desktop != desktop) { - MoveEwinToDesktop(ewin, *desktop); + MoveEwinToDesktop(ewin, desktop); } } @@ -954,7 +1034,7 @@ KDE_ProcessClientMessage(XClientMessageEvent * event) } else if (event->message_type == KDE_MODULE) { - if (getSimpleHint(event->data.l[0], KDE_MODULE)) + if (*(getSimpleHint(event->data.l[0], KDE_MODULE))) { KDE_AddModule(event->data.l[0]); } @@ -978,7 +1058,7 @@ KDE_ModuleAssert(Window win) EDBUG(6, "KDE_ModuleAssert"); - if (getSimpleHint(win, KDE_MODULE)) + if (*(getSimpleHint(win, KDE_MODULE))) { KDE_AddModule(win); } @@ -1042,7 +1122,8 @@ KDE_SetRootArea(void) EDBUG(6, "KDE_SetRootArea"); if (getSimpleHint(root.win, KDE_CURRENT_DESKTOP)) - if (*(getSimpleHint(root.win, KDE_CURRENT_DESKTOP)) == desks.current + 1) + if (*(getSimpleHint(root.win, KDE_CURRENT_DESKTOP)) == + desks.current + 1) EDBUG_RETURN_; setSimpleHint(root.win, KDE_CURRENT_DESKTOP, desks.current + 1); @@ -1114,10 +1195,10 @@ KDE_HintChange(Atom a) } void -KDE_UpdateTitle(EWin * ewin) +KDE_UpdateClient(EWin * ewin) { - EDBUG(6, "KDE_UpdateTitle"); + EDBUG(6, "KDE_UpdateClient"); if (!ewin) EDBUG_RETURN_; @@ -1126,6 +1207,36 @@ KDE_UpdateTitle(EWin * ewin) XA_STRING, 8, PropModeReplace, (unsigned char *)ewin->client.title, strlen(ewin->client.title) + 1); + if (ewin->sticky) + { + if (!getSimpleHint(ewin->client.win, KDE_WIN_STICKY)) + setSimpleHint(ewin->client.win, KDE_WIN_STICKY, 1); + } + else + { + if (*(getSimpleHint(ewin->client.win, KDE_WIN_STICKY))) + setSimpleHint(ewin->client.win, KDE_WIN_STICKY, 0); + } + if (ewin->iconified) + { + if (!*(getSimpleHint(ewin->client.win, KDE_WIN_ICONIFIED))) + setSimpleHint(ewin->client.win, KDE_WIN_ICONIFIED, 1); + } + else + { + if (*(getSimpleHint(ewin->client.win, KDE_WIN_ICONIFIED))) + setSimpleHint(ewin->client.win, KDE_WIN_ICONIFIED, 0); + } + if (ewin->toggle) + { + if (!*(getSimpleHint(ewin->client.win, KDE_WIN_MAXIMIZED))) + setSimpleHint(ewin->client.win, KDE_WIN_MAXIMIZED, 1); + } + else + { + if (*(getSimpleHint(ewin->client.win, KDE_WIN_MAXIMIZED))) + setSimpleHint(ewin->client.win, KDE_WIN_MAXIMIZED, 0); + } if (!(ewin->internal)) KDE_SendMessagesToModules(KDE_MODULE_WIN_CHANGE, ewin->client.win); diff --git a/src/menus.c b/src/menus.c index acfb70f2..b816159b 100644 --- a/src/menus.c +++ b/src/menus.c @@ -1714,7 +1714,7 @@ CreateMenuFromThemes(char *name, MenuStyle * ms) EDBUG_RETURN(m); } -int +int BorderNameCompare(Border * b1, Border * b2) { if (b1 && b2)