1
0
mirror of https://github.com/gryf/wmaker.git synced 2025-12-20 21:08:08 +01:00

Improved hide/unhide animation for applications with multiple windows

(only animate the active window hiding/unhiding, which makes Window Maker
faster and more responsive for such applications).
This commit is contained in:
dan
2005-05-08 00:51:56 +00:00
parent 33f7b63d11
commit 2ea40ff2c5
2 changed files with 18 additions and 6 deletions

View File

@@ -8,7 +8,7 @@ Changes since version 0.91.0:
- fixed issues with compiling on Solaris with openwin
- reduced minimum required version number for the Xft library to 2.1.0
- fixed some compilation issues with gcc-2.9x
- Removed --with-appsdir option and replaced it with --with-gnustepdir. Also,
- removed --with-appsdir option and replaced it with --with-gnustepdir. Also,
default installation path (for non GNUstep users) is now $(prefix)/bin
- fixed bug with infinite loop in some circumstances in fitText() in WINGs
- fixed to allow parallel builds on SMP systems using make -j
@@ -19,6 +19,9 @@ Changes since version 0.91.0:
Window Maker starts to make transition transparent for users.
- fixed issue with window being moved by 1 pixel up and left when the window
move was initiated by the client
- improved hide/unhide animation for applications with multiple windows
(only animate the active window hiding/unhiding, which makes Window Maker
faster and more responsive for such applications).
Changes since version 0.90.0:

View File

@@ -771,6 +771,7 @@ animateResize(WScreen *scr, int x, int y, int w, int h,
}
k = (hiding ? 2 : 3);
switch(style) {
case WIS_TWIST:
steps = (MINIATURIZE_ANIMATION_STEPS_T * k)/3;
@@ -1343,6 +1344,7 @@ wHideApplication(WApplication *wapp)
WScreen *scr;
WWindow *wlist;
int hadfocus;
int animate;
if (!wapp) {
wwarning("trying to hide a non grouped window");
@@ -1362,15 +1364,19 @@ wHideApplication(WApplication *wapp)
wapp->last_focused = wlist;
else
wapp->last_focused = NULL;
animate = !wapp->flags.skip_next_animation;
while (wlist) {
if (wlist->main_window == wapp->main_window) {
if (wlist->flags.focused) {
hadfocus = 1;
}
if (wapp->app_icon)
if (wapp->app_icon) {
hideWindow(wapp->app_icon->icon, wapp->app_icon->x_pos,
wapp->app_icon->y_pos, wlist,
!wapp->flags.skip_next_animation);
wapp->app_icon->y_pos, wlist, animate);
animate = False;
}
}
wlist = wlist->prev;
}
@@ -1449,6 +1455,7 @@ wUnhideApplication(WApplication *wapp, Bool miniwindows, Bool bringToCurrentWS)
WWindow *wlist, *next;
WWindow *focused=NULL;
Bool shouldArrangeIcons = False;
int animate;
if (!wapp)
return;
@@ -1462,6 +1469,8 @@ wUnhideApplication(WApplication *wapp, Bool miniwindows, Bool bringToCurrentWS)
while (wlist->prev)
wlist = wlist->prev;
animate = !wapp->flags.skip_next_animation;
while (wlist) {
next = wlist->next;
@@ -1502,9 +1511,9 @@ wUnhideApplication(WApplication *wapp, Bool miniwindows, Bool bringToCurrentWS)
WMPostNotificationName(WMNChangedState, wlist, "hide");
} else if (wlist->flags.hidden) {
unhideWindow(wapp->app_icon->icon, wapp->app_icon->x_pos,
wapp->app_icon->y_pos, wlist,
!wapp->flags.skip_next_animation,
wapp->app_icon->y_pos, wlist, animate,
bringToCurrentWS);
animate = False;
} else {
if (bringToCurrentWS
&& wlist->frame->workspace != scr->current_workspace) {