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 - fixed issues with compiling on Solaris with openwin
- reduced minimum required version number for the Xft library to 2.1.0 - reduced minimum required version number for the Xft library to 2.1.0
- fixed some compilation issues with gcc-2.9x - 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 default installation path (for non GNUstep users) is now $(prefix)/bin
- fixed bug with infinite loop in some circumstances in fitText() in WINGs - fixed bug with infinite loop in some circumstances in fitText() in WINGs
- fixed to allow parallel builds on SMP systems using make -j - 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. Window Maker starts to make transition transparent for users.
- fixed issue with window being moved by 1 pixel up and left when the window - fixed issue with window being moved by 1 pixel up and left when the window
move was initiated by the client 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: 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); k = (hiding ? 2 : 3);
switch(style) { switch(style) {
case WIS_TWIST: case WIS_TWIST:
steps = (MINIATURIZE_ANIMATION_STEPS_T * k)/3; steps = (MINIATURIZE_ANIMATION_STEPS_T * k)/3;
@@ -1343,6 +1344,7 @@ wHideApplication(WApplication *wapp)
WScreen *scr; WScreen *scr;
WWindow *wlist; WWindow *wlist;
int hadfocus; int hadfocus;
int animate;
if (!wapp) { if (!wapp) {
wwarning("trying to hide a non grouped window"); wwarning("trying to hide a non grouped window");
@@ -1362,15 +1364,19 @@ wHideApplication(WApplication *wapp)
wapp->last_focused = wlist; wapp->last_focused = wlist;
else else
wapp->last_focused = NULL; wapp->last_focused = NULL;
animate = !wapp->flags.skip_next_animation;
while (wlist) { while (wlist) {
if (wlist->main_window == wapp->main_window) { if (wlist->main_window == wapp->main_window) {
if (wlist->flags.focused) { if (wlist->flags.focused) {
hadfocus = 1; hadfocus = 1;
} }
if (wapp->app_icon) if (wapp->app_icon) {
hideWindow(wapp->app_icon->icon, wapp->app_icon->x_pos, hideWindow(wapp->app_icon->icon, wapp->app_icon->x_pos,
wapp->app_icon->y_pos, wlist, wapp->app_icon->y_pos, wlist, animate);
!wapp->flags.skip_next_animation); animate = False;
}
} }
wlist = wlist->prev; wlist = wlist->prev;
} }
@@ -1449,6 +1455,7 @@ wUnhideApplication(WApplication *wapp, Bool miniwindows, Bool bringToCurrentWS)
WWindow *wlist, *next; WWindow *wlist, *next;
WWindow *focused=NULL; WWindow *focused=NULL;
Bool shouldArrangeIcons = False; Bool shouldArrangeIcons = False;
int animate;
if (!wapp) if (!wapp)
return; return;
@@ -1462,6 +1469,8 @@ wUnhideApplication(WApplication *wapp, Bool miniwindows, Bool bringToCurrentWS)
while (wlist->prev) while (wlist->prev)
wlist = wlist->prev; wlist = wlist->prev;
animate = !wapp->flags.skip_next_animation;
while (wlist) { while (wlist) {
next = wlist->next; next = wlist->next;
@@ -1502,9 +1511,9 @@ wUnhideApplication(WApplication *wapp, Bool miniwindows, Bool bringToCurrentWS)
WMPostNotificationName(WMNChangedState, wlist, "hide"); WMPostNotificationName(WMNChangedState, wlist, "hide");
} else if (wlist->flags.hidden) { } else if (wlist->flags.hidden) {
unhideWindow(wapp->app_icon->icon, wapp->app_icon->x_pos, unhideWindow(wapp->app_icon->icon, wapp->app_icon->x_pos,
wapp->app_icon->y_pos, wlist, wapp->app_icon->y_pos, wlist, animate,
!wapp->flags.skip_next_animation,
bringToCurrentWS); bringToCurrentWS);
animate = False;
} else { } else {
if (bringToCurrentWS if (bringToCurrentWS
&& wlist->frame->workspace != scr->current_workspace) { && wlist->frame->workspace != scr->current_workspace) {