kwo pushed a commit to branch master.
commit 8c4fab941be71ca91d9cfce20524bdea73e45b34
Author: Kim Woelders <[email protected]>
Date: Tue Jun 4 22:09:10 2013 +0200
Play raise/lower sounds only if any windows are actually raised/lowered.
---
src/ewin-ops.c | 18 ++++++++++--------
src/ewins.c | 24 ++++++++++++++----------
src/ewins.h | 4 ++--
3 files changed, 26 insertions(+), 20 deletions(-)
diff --git a/src/ewin-ops.c b/src/ewin-ops.c
index d4ad837..7516233 100644
--- a/src/ewin-ops.c
+++ b/src/ewin-ops.c
@@ -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
diff --git a/src/ewins.c b/src/ewins.c
index c66d5d0..848498f 100644
--- a/src/ewins.c
+++ b/src/ewins.c
@@ -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
diff --git a/src/ewins.h b/src/ewins.h
index ec50396..e9d07f0 100644
--- a/src/ewins.h
+++ b/src/ewins.h
@@ -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);
--
------------------------------------------------------------------------------
How ServiceNow helps IT people transform IT departments:
1. A cloud service to automate IT design, transition and operations
2. Dashboards that offer high-level views of enterprise services
3. A single system of record for all IT processes
http://p.sf.net/sfu/servicenow-d2d-j