Play raise/lower sounds only if any windows are actually raised/lowered.

This commit is contained in:
Kim Woelders 2013-06-04 22:09:10 +02:00
parent 4f866801f7
commit 8c4fab941b
3 changed files with 26 additions and 20 deletions

View File

@ -1475,28 +1475,30 @@ void
EwinOpRaise(EWin * ewin, int source __UNUSED__)
{
EWin **gwins;
int i, num;
int i, num, changed;
SoundPlay(SOUND_RAISE);
gwins = ListWinGroupMembersForEwin(ewin, GROUP_ACTION_STACKING,
Mode.nogroup, &num);
for (i = 0; i < num; i++)
EwinRaise(gwins[i]);
for (i = changed = 0; i < num; i++)
changed += EwinRaise(gwins[i]);
Efree(gwins);
if (changed)
SoundPlay(SOUND_RAISE);
}
void
EwinOpLower(EWin * ewin, int source __UNUSED__)
{
EWin **gwins;
int i, num;
int i, num, changed;
SoundPlay(SOUND_LOWER);
gwins = ListWinGroupMembersForEwin(ewin, GROUP_ACTION_STACKING,
Mode.nogroup, &num);
for (i = 0; i < num; i++)
EwinLower(gwins[i]);
for (i = changed = 0; i < num; i++)
changed += EwinLower(gwins[i]);
Efree(gwins);
if (changed)
SoundPlay(SOUND_LOWER);
}
void

View File

@ -1435,15 +1435,15 @@ EwinReparent(EWin * ewin, Win parent)
EwinWithdraw(ewin, parent);
}
void
int
EwinRaise(EWin * ewin)
{
static int call_depth = 0;
EWin **lst;
int i, num;
int i, num, numt;
if (call_depth > 256)
return;
return 0;
call_depth++;
num = EoRaise(ewin);
@ -1455,8 +1455,8 @@ EwinRaise(EWin * ewin)
if (num == 0) /* Quit if stacking is unchanged */
goto done;
lst = EwinListTransients(ewin, &num, 1);
for (i = 0; i < num; i++)
lst = EwinListTransients(ewin, &numt, 1);
for (i = 0; i < numt; i++)
EwinRaise(lst[i]);
Efree(lst);
@ -1468,17 +1468,19 @@ EwinRaise(EWin * ewin)
done:
call_depth--;
return num;
}
void
int
EwinLower(EWin * ewin)
{
static int call_depth = 0;
EWin **lst;
int i, num;
int i, num, numt;
if (call_depth > 256)
return;
return 0;
call_depth++;
num = EoLower(ewin);
@ -1490,8 +1492,8 @@ EwinLower(EWin * ewin)
if (num == 0) /* Quit if stacking is unchanged */
goto done;
lst = EwinListTransientFor(ewin, &num);
for (i = 0; i < num; i++)
lst = EwinListTransientFor(ewin, &numt);
for (i = 0; i < numt; i++)
EwinLower(lst[i]);
Efree(lst);
@ -1503,6 +1505,8 @@ EwinLower(EWin * ewin)
done:
call_depth--;
return num;
}
void

View File

@ -357,8 +357,8 @@ int DrawEwinShapeNeedsGrab(int mode);
Window EwinGetClientXwin(const EWin * ewin);
void EwinShapeSet(EWin * ewin);
void EwinRaise(EWin * ewin);
void EwinLower(EWin * ewin);
int EwinRaise(EWin * ewin);
int EwinLower(EWin * ewin);
void EwinShow(EWin * ewin);
void EwinHide(EWin * ewin);
void EwinKill(EWin * ewin);