mirror of
https://github.com/gryf/wmaker.git
synced 2025-12-21 05:18:06 +01:00
Option to raise bouncing appicons
If the appicon is not in the dock/clip, or the dock/clip is not set to "Keep on Top", there's a good chance you won't actually see the bouncing because some other window is covering the appicon. Besides adding the option to raise bouncing windows, this patch adds a utility method to move a window back into its correct stacking position after it has been messed with using XRaiseWindow. Signed-off-by: Brad Jorsch <anomie@users.sourceforge.net>
This commit is contained in:
committed by
Carlos R. Mafra
parent
5b24997446
commit
ece6d213aa
@@ -157,6 +157,46 @@ static void moveFrameToUnder(WCoreWindow * under, WCoreWindow * frame)
|
||||
XRestackWindows(dpy, wins, 2);
|
||||
}
|
||||
|
||||
/*
|
||||
*----------------------------------------------------------------------
|
||||
* CommitStackingForWindow--
|
||||
* Reorders the stacking for the specified window, so that it has the
|
||||
* stacking order in the internal window stacking lists.
|
||||
*
|
||||
* Side effects:
|
||||
* Windows may be restacked.
|
||||
*----------------------------------------------------------------------
|
||||
*/
|
||||
void CommitStackingForWindow(WCoreWindow * frame)
|
||||
{
|
||||
int level = frame->stacking->window_level;
|
||||
WScreen *scr = frame->screen_ptr;
|
||||
|
||||
if (frame->stacking->above == NULL) {
|
||||
WMBagIterator iter;
|
||||
WCoreWindow *above = WMBagLast(scr->stacking_list, &iter);
|
||||
int i, last = above->stacking->window_level;
|
||||
|
||||
/* find the 1st level above us which has windows in it */
|
||||
for (i = level + 1, above = NULL; i <= last; i++) {
|
||||
above = WMGetFromBag(scr->stacking_list, i);
|
||||
if (above != NULL)
|
||||
break;
|
||||
}
|
||||
|
||||
if (above != frame && above != NULL) {
|
||||
while (above->stacking->under)
|
||||
above = above->stacking->under;
|
||||
moveFrameToUnder(above, frame);
|
||||
} else {
|
||||
/* no window above us */
|
||||
XRaiseWindow(dpy, frame->window);
|
||||
}
|
||||
} else {
|
||||
moveFrameToUnder(frame->stacking->above, frame);
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
*----------------------------------------------------------------------
|
||||
* wRaiseFrame--
|
||||
|
||||
Reference in New Issue
Block a user