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

Reply via email to