[fusion-commits] Animation plugin: Changes to 'master' (cba3e37b16e5b9e3176abcd13f80b19c789f1ae3)
cornelius at server.beryl-project.org
cornelius at server.beryl-project.org
Sat Jul 14 20:20:10 CEST 2007
New commits:
commit cba3e37b16e5b9e3176abcd13f80b19c789f1ae3
Merge: acbd508bdf0eaca6f8e6d587ba8df181bf35c31a 70b162824144be7821e804067416c4e4d76a67d4
Author: Erkin Bahceci <erkinbah at gmail.com>
Date: Sat Jul 14 14:18:28 2007 -0400
Merge branch 'master' of git+ssh://cornelius@git.opencompositing.org/git/fusion/plugins/animation
commit acbd508bdf0eaca6f8e6d587ba8df181bf35c31a
Author: Erkin Bahceci <erkinbah at gmail.com>
Date: Sat Jul 14 14:15:32 2007 -0400
Implement multiple effect selection. Rename create -> open.
And a little cleanup.
animation-internal.h | 61 ++---
animation.c | 829 ++++++++++++++++++++++++--------------------------
animation.xml.in | 761 +++++++++++++++-------------------------------
beamup.c | 4 +-
burn.c | 2 +-
curvedfold.c | 2 +-
magiclamp.c | 2 +-
zoomside.c | 20 +-
8 files changed, 683 insertions(+), 998 deletions(-)
Modified: fusion/plugins/animation/animation-internal.h
===================================================================
--- fusion/plugins/animation/animation-internal.h
+++ fusion/plugins/animation/animation-internal.h
@@ -154,7 +154,7 @@ typedef enum
WindowEventMinimize,
WindowEventUnminimize,
WindowEventClose,
- WindowEventCreate,
+ WindowEventOpen,
WindowEventFocus,
WindowEventShade,
WindowEventUnshade
@@ -345,36 +345,26 @@ typedef struct _AnimDisplay
typedef enum
{
- // Match settings
- ANIM_SCREEN_OPTION_MINIMIZE_MATCH = 0,
- ANIM_SCREEN_OPTION_CLOSE1_MATCH,
- ANIM_SCREEN_OPTION_CLOSE2_MATCH,
- ANIM_SCREEN_OPTION_CREATE1_MATCH,
- ANIM_SCREEN_OPTION_CREATE2_MATCH,
- ANIM_SCREEN_OPTION_FOCUS_MATCH,
- ANIM_SCREEN_OPTION_SHADE_MATCH,
// Event settings
+ ANIM_SCREEN_OPTION_OPEN_EFFECT,
+ ANIM_SCREEN_OPTION_OPEN_DURATION,
+ ANIM_SCREEN_OPTION_OPEN_MATCH,
+ ANIM_SCREEN_OPTION_OPEN_RANDOM_EFFECTS,
+ ANIM_SCREEN_OPTION_CLOSE_EFFECT,
+ ANIM_SCREEN_OPTION_CLOSE_DURATION,
+ ANIM_SCREEN_OPTION_CLOSE_MATCH,
+ ANIM_SCREEN_OPTION_CLOSE_RANDOM_EFFECTS,
ANIM_SCREEN_OPTION_MINIMIZE_EFFECT,
ANIM_SCREEN_OPTION_MINIMIZE_DURATION,
+ ANIM_SCREEN_OPTION_MINIMIZE_MATCH,
ANIM_SCREEN_OPTION_MINIMIZE_RANDOM_EFFECTS,
- ANIM_SCREEN_OPTION_CLOSE1_EFFECT,
- ANIM_SCREEN_OPTION_CLOSE1_DURATION,
- ANIM_SCREEN_OPTION_CLOSE1_RANDOM_EFFECTS,
- ANIM_SCREEN_OPTION_CREATE1_EFFECT,
- ANIM_SCREEN_OPTION_CREATE1_DURATION,
- ANIM_SCREEN_OPTION_CREATE1_RANDOM_EFFECTS,
- ANIM_SCREEN_OPTION_CLOSE2_EFFECT,
- ANIM_SCREEN_OPTION_CLOSE2_DURATION,
- ANIM_SCREEN_OPTION_CLOSE2_RANDOM_EFFECTS,
- ANIM_SCREEN_OPTION_CREATE2_EFFECT,
- ANIM_SCREEN_OPTION_CREATE2_DURATION,
- ANIM_SCREEN_OPTION_CREATE2_RANDOM_EFFECTS,
ANIM_SCREEN_OPTION_FOCUS_EFFECT,
ANIM_SCREEN_OPTION_FOCUS_DURATION,
+ ANIM_SCREEN_OPTION_FOCUS_MATCH,
ANIM_SCREEN_OPTION_SHADE_EFFECT,
ANIM_SCREEN_OPTION_SHADE_DURATION,
+ ANIM_SCREEN_OPTION_SHADE_MATCH,
ANIM_SCREEN_OPTION_SHADE_RANDOM_EFFECTS,
- ANIM_SCREEN_OPTION_ROLLUP_FIXED_INTERIOR,
// Misc. settings
ANIM_SCREEN_OPTION_ALL_RANDOM,
ANIM_SCREEN_OPTION_TIME_STEP,
@@ -420,13 +410,14 @@ typedef enum
ANIM_SCREEN_OPTION_MAGIC_LAMP_MAX_WAVES,
ANIM_SCREEN_OPTION_MAGIC_LAMP_WAVE_AMP_MIN,
ANIM_SCREEN_OPTION_MAGIC_LAMP_WAVE_AMP_MAX,
- ANIM_SCREEN_OPTION_MAGIC_LAMP_CREATE_START_WIDTH,
+ ANIM_SCREEN_OPTION_MAGIC_LAMP_OPEN_START_WIDTH,
+ ANIM_SCREEN_OPTION_ROLLUP_FIXED_INTERIOR,
ANIM_SCREEN_OPTION_SIDEKICK_NUM_ROTATIONS,
ANIM_SCREEN_OPTION_SIDEKICK_SPRINGINESS,
ANIM_SCREEN_OPTION_SIDEKICK_ZOOM_FROM_CENTER,
ANIM_SCREEN_OPTION_VACUUM_MOVING_END,
ANIM_SCREEN_OPTION_VACUUM_GRID_RES,
- ANIM_SCREEN_OPTION_VACUUM_CREATE_START_WIDTH,
+ ANIM_SCREEN_OPTION_VACUUM_OPEN_START_WIDTH,
ANIM_SCREEN_OPTION_WAVE_WIDTH,
ANIM_SCREEN_OPTION_WAVE_AMP,
ANIM_SCREEN_OPTION_ZOOM_FROM_CENTER,
@@ -445,7 +436,6 @@ typedef struct _AnimScreen
PaintWindowProc paintWindow;
DamageWindowRectProc damageWindowRect;
AddWindowGeometryProc addWindowGeometry;
- //DrawWindowGeometryProc drawWindowGeometry;
DrawWindowTextureProc drawWindowTexture;
WindowResizeNotifyProc windowResizeNotify;
@@ -472,24 +462,13 @@ typedef struct _AnimScreen
// was started
Bool animInProgress;
- AnimEffect minimizeEffect;
- AnimEffect create1Effect;
- AnimEffect create2Effect;
- AnimEffect close1Effect;
- AnimEffect close2Effect;
- AnimEffect focusEffect;
- AnimEffect shadeEffect;
-
- AnimEffect close1RandomEffects[NUM_CLOSE_EFFECT];
- AnimEffect close2RandomEffects[NUM_CLOSE_EFFECT];
- AnimEffect create1RandomEffects[NUM_CLOSE_EFFECT];
- AnimEffect create2RandomEffects[NUM_CLOSE_EFFECT];
+
+ AnimEffect openRandomEffects[NUM_CLOSE_EFFECT];
+ AnimEffect closeRandomEffects[NUM_CLOSE_EFFECT];
AnimEffect minimizeRandomEffects[NUM_MINIMIZE_EFFECT];
AnimEffect shadeRandomEffects[NUM_SHADE_EFFECT];
- unsigned int nClose1RandomEffects;
- unsigned int nClose2RandomEffects;
- unsigned int nCreate1RandomEffects;
- unsigned int nCreate2RandomEffects;
+ unsigned int nCloseRandomEffects;
+ unsigned int nOpenRandomEffects;
unsigned int nMinimizeRandomEffects;
unsigned int nShadeRandomEffects;
} AnimScreen;
Modified: fusion/plugins/animation/animation.c
===================================================================
--- fusion/plugins/animation/animation.c
+++ fusion/plugins/animation/animation.c
@@ -87,7 +87,7 @@ CompMetadata animMetadata;
* elements of these arrays are added or removed.
*/
-static AnimEffect minimizeEffectType[] = {
+static AnimEffect minimizeEffects[] = {
AnimEffectNone,
AnimEffectRandom,
AnimEffectBeamUp,
@@ -107,7 +107,7 @@ static AnimEffect minimizeEffectType[] = {
AnimEffectZoom
};
-static AnimEffect closeEffectType[] = {
+static AnimEffect closeEffects[] = {
AnimEffectNone,
AnimEffectRandom,
AnimEffectBeamUp,
@@ -129,14 +129,14 @@ static AnimEffect closeEffectType[] = {
AnimEffectZoom
};
-static AnimEffect focusEffectType[] = {
+static AnimEffect focusEffects[] = {
AnimEffectNone,
AnimEffectDodge,
AnimEffectFocusFade,
AnimEffectWave
};
-static AnimEffect shadeEffectType[] = {
+static AnimEffect shadeEffects[] = {
AnimEffectNone,
AnimEffectRandom,
AnimEffectCurvedFold,
@@ -197,7 +197,7 @@ void defaultMinimizeAnimInit(CompScreen * s, CompWindow * w)
defaultAnimInit(s, w);
}
-static Bool
+static inline Bool
defaultLetOthersDrawGeoms (CompScreen *s, CompWindow *w)
{
return TRUE;
@@ -240,6 +240,156 @@ animStoreRandomEffectList (CompOptionValue *value,
*targetCount = count;
}
+
+static Bool
+matchWithString(CompWindow *w, const char *matchStr)
+{
+ CompDisplay *d = w->screen->display;
+ CompMatch match;
+
+ matchInit (&match);
+ matchAddFromString (&match, (char *)matchStr);
+ matchUpdate (d, &match);
+
+ return matchEval (&match, w);
+}
+
+// Can be moved to the Workarounds plugin when
+// it is ready to be included and enabled by default in plugins-main.
+static unsigned int
+getActualWinType(CompWindow *w)
+{
+ if (isQtTransientWindow(w))
+ return CompWindowTypeDropdownMenuMask;
+
+ // Match Mozilla (Firefox, Thunderbird, etc.) menus
+ // and Java menus
+ if (matchWithString (w, "(type=Normal & override_redirect=1) | \
+ name=sun-awt-X11-XMenuWindow | name=sun-awt-X11-XWindowPeer"))
+ return CompWindowTypeDropdownMenuMask;
+
+ // Match Qt3 and Qt4 tooltips, respectively
+ // Requires the Regexp plugin
+ if (matchWithString(w, "role=toolTipTip | role=qtooltip_label"))
+ return CompWindowTypeTooltipMask;
+
+ // Match Java normal windows
+ if (w->resName &&
+ strcmp(w->resName, "sun-awt-X11-XFramePeer") == 0)
+ return CompWindowTypeNormalMask;
+
+ // Match Java dialog windows
+ if (w->resName &&
+ strcmp(w->resName, "sun-awt-X11-XDialogPeer") == 0)
+ return CompWindowTypeDialogMask;
+
+ return w->wmType;
+}
+
+// Can be removed when getActualWinType is moved.
+static Bool
+matchEvalProxy(CompMatch *match, CompWindow *w)
+{
+ Bool result;
+
+ // Backup window type
+ int winType = w->wmType;
+
+ w->wmType = getActualWinType(w);
+
+ result = matchEval(match, w);
+
+ // Restore window type
+ w->wmType = winType;
+
+ return result;
+}
+
+// Assumes events in the metadata are in
+// [Open, Close, Minimize, Focus, Shade] order
+// and effects among those are in alphabetical order
+// but with "(Event) None" first and "(Event) Random" last.
+static AnimEffect
+getMatchingAnimSelection (CompWindow *w,
+ WindowEvent event,
+ float *duration)
+{
+ ANIM_SCREEN(w->screen);
+
+ if (duration == NULL)
+ {
+ compLogMessage
+ (w->screen->display, "animation", CompLogLevelError,
+ "%s:%d: Null duration passed.", __FILE__, __LINE__);
+ return AnimEffectNone;
+ }
+ CompOptionValue *valMatch;
+ CompOptionValue *valEffect;
+ CompOptionValue *valDuration;
+ AnimEffect *effects;
+
+ switch (event)
+ {
+ case WindowEventOpen:
+ effects = closeEffects;
+ valMatch = &as->opt[ANIM_SCREEN_OPTION_OPEN_MATCH].value;
+ valEffect = &as->opt[ANIM_SCREEN_OPTION_OPEN_EFFECT].value;
+ valDuration = &as->opt[ANIM_SCREEN_OPTION_OPEN_DURATION].value;
+ break;
+ case WindowEventClose:
+ effects = closeEffects;
+ valMatch = &as->opt[ANIM_SCREEN_OPTION_CLOSE_MATCH].value;
+ valEffect = &as->opt[ANIM_SCREEN_OPTION_CLOSE_EFFECT].value;
+ valDuration = &as->opt[ANIM_SCREEN_OPTION_CLOSE_DURATION].value;
+ break;
+ case WindowEventMinimize:
+ case WindowEventUnminimize:
+ effects = minimizeEffects;
+ valMatch = &as->opt[ANIM_SCREEN_OPTION_MINIMIZE_MATCH].value;
+ valEffect = &as->opt[ANIM_SCREEN_OPTION_MINIMIZE_EFFECT].value;
+ valDuration = &as->opt[ANIM_SCREEN_OPTION_MINIMIZE_DURATION].value;
+ break;
+ case WindowEventFocus:
+ effects = focusEffects;
+ valMatch = &as->opt[ANIM_SCREEN_OPTION_FOCUS_MATCH].value;
+ valEffect = &as->opt[ANIM_SCREEN_OPTION_FOCUS_EFFECT].value;
+ valDuration = &as->opt[ANIM_SCREEN_OPTION_FOCUS_DURATION].value;
+ break;
+ case WindowEventShade:
+ case WindowEventUnshade:
+ effects = shadeEffects;
+ valMatch = &as->opt[ANIM_SCREEN_OPTION_SHADE_MATCH].value;
+ valEffect = &as->opt[ANIM_SCREEN_OPTION_SHADE_EFFECT].value;
+ valDuration = &as->opt[ANIM_SCREEN_OPTION_SHADE_DURATION].value;
+ break;
+ case WindowEventNone:
+ return AnimEffectNone;
+ }
+
+ int nRows = valMatch->list.nValue;
+ if (nRows != valEffect->list.nValue ||
+ nRows != valDuration->list.nValue)
+ {
+ compLogMessage
+ (w->screen->display, "animation", CompLogLevelError,
+ "Number of animation selection effects, durations, matches, and options are not the same.");
+ return AnimEffectNone;
+ }
+
+ // Find the first row that matches this window for this event
+ int i;
+ for (i = 0; i < nRows; i++)
+ {
+ if (!matchEvalProxy (&valMatch->list.value[i].match, w))
+ continue;
+
+ *duration = valDuration->list.value[i].f;
+
+ return effects[valEffect->list.value[i].i];
+ }
+ return AnimEffectNone;
+}
+
static inline AnimEffect
animGetAnimEffect (AnimEffect effect,
AnimEffect *randomEffects,
@@ -343,7 +493,7 @@ float defaultAnimProgress(AnimWindow * aw)
forwardProgress = MIN(forwardProgress, 1);
forwardProgress = MAX(forwardProgress, 0);
- if (aw->curWindowEvent == WindowEventCreate ||
+ if (aw->curWindowEvent == WindowEventOpen ||
aw->curWindowEvent == WindowEventUnminimize ||
aw->curWindowEvent == WindowEventUnshade ||
aw->curWindowEvent == WindowEventFocus)
@@ -364,7 +514,7 @@ float sigmoidAnimProgress(AnimWindow * aw)
(sigmoid(forwardProgress) - sigmoid(0)) /
(sigmoid(1) - sigmoid(0));
- if (aw->curWindowEvent == WindowEventCreate ||
+ if (aw->curWindowEvent == WindowEventOpen ||
aw->curWindowEvent == WindowEventUnminimize ||
aw->curWindowEvent == WindowEventUnshade ||
aw->curWindowEvent == WindowEventFocus)
@@ -624,107 +774,76 @@ animSetScreenOptions(CompPlugin *plugin,
switch (index)
{
- case ANIM_SCREEN_OPTION_MINIMIZE_EFFECT:
- if (compSetIntOption(o, value))
- {
- as->minimizeEffect = minimizeEffectType[o->value.i];
- return TRUE;
- }
- break;
- case ANIM_SCREEN_OPTION_CLOSE1_EFFECT:
- if (compSetIntOption(o, value))
- {
- as->close1Effect = closeEffectType[o->value.i];
- return TRUE;
- }
- break;
- case ANIM_SCREEN_OPTION_CLOSE2_EFFECT:
- if (compSetIntOption(o, value))
- {
- as->close2Effect = closeEffectType[o->value.i];
- return TRUE;
- }
- break;
- case ANIM_SCREEN_OPTION_CREATE1_EFFECT:
- if (compSetIntOption(o, value))
- {
- as->create1Effect = closeEffectType[o->value.i];
- return TRUE;
- }
- break;
- case ANIM_SCREEN_OPTION_CREATE2_EFFECT:
- if (compSetIntOption(o, value))
+ case ANIM_SCREEN_OPTION_OPEN_MATCH:
+ if (compSetOptionList(o, value))
{
- as->create2Effect = closeEffectType[o->value.i];
- return TRUE;
+ int i;
+ for (i = 0; i < o->value.list.nValue; i++)
+ matchUpdate (screen->display, &o->value.list.value[i].match);
}
break;
- case ANIM_SCREEN_OPTION_FOCUS_EFFECT:
- if (compSetIntOption(o, value))
+ case ANIM_SCREEN_OPTION_CLOSE_MATCH:
+ if (compSetOptionList(o, value))
{
- as->focusEffect = focusEffectType[o->value.i];
- return TRUE;
+ int i;
+ for (i = 0; i < o->value.list.nValue; i++)
+ matchUpdate (screen->display, &o->value.list.value[i].match);
}
break;
- case ANIM_SCREEN_OPTION_SHADE_EFFECT:
- if (compSetIntOption(o, value))
+ case ANIM_SCREEN_OPTION_MINIMIZE_MATCH:
+ if (compSetOptionList(o, value))
{
- as->shadeEffect = shadeEffectType[o->value.i];
- return TRUE;
+ int i;
+ for (i = 0; i < o->value.list.nValue; i++)
+ matchUpdate (screen->display, &o->value.list.value[i].match);
}
break;
- case ANIM_SCREEN_OPTION_MINIMIZE_RANDOM_EFFECTS:
+ case ANIM_SCREEN_OPTION_FOCUS_MATCH:
if (compSetOptionList(o, value))
{
- animStoreRandomEffectList (&o->value,
- minimizeEffectType + RANDOM_EFFECT_OFFSET,
- NUM_MINIMIZE_EFFECT - RANDOM_EFFECT_OFFSET,
- as->minimizeRandomEffects,
- &as->nMinimizeRandomEffects);
- return TRUE;
+ int i;
+ for (i = 0; i < o->value.list.nValue; i++)
+ matchUpdate (screen->display, &o->value.list.value[i].match);
}
break;
- case ANIM_SCREEN_OPTION_CLOSE1_RANDOM_EFFECTS:
+ case ANIM_SCREEN_OPTION_SHADE_MATCH:
if (compSetOptionList(o, value))
{
- animStoreRandomEffectList (&o->value,
- closeEffectType + RANDOM_EFFECT_OFFSET,
- NUM_CLOSE_EFFECT - RANDOM_EFFECT_OFFSET,
- as->close1RandomEffects,
- &as->nClose1RandomEffects);
- return TRUE;
+ int i;
+ for (i = 0; i < o->value.list.nValue; i++)
+ matchUpdate (screen->display, &o->value.list.value[i].match);
}
break;
- case ANIM_SCREEN_OPTION_CLOSE2_RANDOM_EFFECTS:
+ case ANIM_SCREEN_OPTION_OPEN_RANDOM_EFFECTS:
if (compSetOptionList(o, value))
{
animStoreRandomEffectList (&o->value,
- closeEffectType + RANDOM_EFFECT_OFFSET,
+ closeEffects + RANDOM_EFFECT_OFFSET,
NUM_CLOSE_EFFECT - RANDOM_EFFECT_OFFSET,
- as->close2RandomEffects,
- &as->nClose2RandomEffects);
+ as->openRandomEffects,
+ &as->nOpenRandomEffects);
return TRUE;
}
break;
- case ANIM_SCREEN_OPTION_CREATE1_RANDOM_EFFECTS:
+ case ANIM_SCREEN_OPTION_CLOSE_RANDOM_EFFECTS:
if (compSetOptionList(o, value))
{
animStoreRandomEffectList (&o->value,
- closeEffectType + RANDOM_EFFECT_OFFSET,
+ closeEffects + RANDOM_EFFECT_OFFSET,
NUM_CLOSE_EFFECT - RANDOM_EFFECT_OFFSET,
- as->create1RandomEffects,
- &as->nCreate1RandomEffects);
+ as->closeRandomEffects,
+ &as->nCloseRandomEffects);
return TRUE;
}
break;
- case ANIM_SCREEN_OPTION_CREATE2_RANDOM_EFFECTS:
+ case ANIM_SCREEN_OPTION_MINIMIZE_RANDOM_EFFECTS:
if (compSetOptionList(o, value))
{
animStoreRandomEffectList (&o->value,
- closeEffectType + RANDOM_EFFECT_OFFSET,
- NUM_CLOSE_EFFECT - RANDOM_EFFECT_OFFSET,
- as->create2RandomEffects,
- &as->nCreate2RandomEffects);
+ minimizeEffects + RANDOM_EFFECT_OFFSET,
+ NUM_MINIMIZE_EFFECT - RANDOM_EFFECT_OFFSET,
+ as->minimizeRandomEffects,
+ &as->nMinimizeRandomEffects);
return TRUE;
}
break;
@@ -732,7 +851,7 @@ animSetScreenOptions(CompPlugin *plugin,
if (compSetOptionList(o, value))
{
animStoreRandomEffectList (&o->value,
- shadeEffectType + RANDOM_EFFECT_OFFSET,
+ shadeEffects + RANDOM_EFFECT_OFFSET,
NUM_SHADE_EFFECT - RANDOM_EFFECT_OFFSET,
as->shadeRandomEffects,
&as->nShadeRandomEffects);
@@ -748,37 +867,31 @@ animSetScreenOptions(CompPlugin *plugin,
}
static const CompMetadataOptionInfo animScreenOptionInfo[] = {
- { "minimize_match", "match", 0, 0, 0 },
- { "close1_match", "match", 0, 0, 0 },
- { "close2_match", "match", 0, 0, 0 },
- { "create1_match", "match", 0, 0, 0 },
- { "create2_match", "match", 0, 0, 0 },
- { "focus_match", "match", 0, 0, 0 },
- { "shade_match", "match", 0, 0, 0 },
- { "minimize_effect", "int", RESTOSTRING (0, LAST_MINIMIZE_EFFECT), 0, 0 },
- { "minimize_duration", "float", "<min>0.1</min>", 0, 0 },
+ // Event settings
+ { "open_effect", "list", "<type>int</type>" RESTOSTRING (0, LAST_CLOSE_EFFECT), 0, 0 },
+ { "open_duration", "list", "<type>float</type><min>0.02</min>", 0, 0 },
+ { "open_match", "list", "<type>match</type>", 0, 0 },
+ { "open_random_effects", "list", "<type>int</type>" RESTOSTRING (0, LAST_RANDOM_CLOSE_EFFECT), 0, 0 },
+ { "close_effect", "list", "<type>int</type>" RESTOSTRING (0, LAST_CLOSE_EFFECT), 0, 0 },
+ { "close_duration", "list", "<type>float</type><min>0.02</min>", 0, 0 },
+ { "close_match", "list", "<type>match</type>", 0, 0 },
+ { "close_random_effects", "list", "<type>int</type>" RESTOSTRING (0, LAST_RANDOM_CLOSE_EFFECT), 0, 0 },
+ { "minimize_effect", "list", "<type>int</type>" RESTOSTRING (0, LAST_MINIMIZE_EFFECT), 0, 0 },
+ { "minimize_duration", "list", "<type>float</type><min>0.02</min>", 0, 0 },
+ { "minimize_match", "list", "<type>match</type>", 0, 0 },
{ "minimize_random_effects", "list", "<type>int</type>" RESTOSTRING (0, LAST_RANDOM_MINIMIZE_EFFECT), 0, 0 },
- { "close1_effect", "int", RESTOSTRING (0, LAST_CLOSE_EFFECT), 0, 0 },
- { "close1_duration", "float", "<min>0.1</min>", 0, 0 },
- { "close1_random_effects", "list", "<type>int</type>" RESTOSTRING (0, LAST_RANDOM_CLOSE_EFFECT), 0, 0 },
- { "create1_effect", "int", RESTOSTRING (0, LAST_CLOSE_EFFECT), 0, 0 },
- { "create1_duration", "float", "<min>0.1</min>", 0, 0 },
- { "create1_random_effects", "list", "<type>int</type>" RESTOSTRING (0, LAST_RANDOM_CLOSE_EFFECT), 0, 0 },
- { "close2_effect", "int", RESTOSTRING (0, LAST_CLOSE_EFFECT), 0, 0 },
- { "close2_duration", "float", "<min>0.1</min>", 0, 0 },
- { "close2_random_effects", "list", "<type>int</type>" RESTOSTRING (0, LAST_RANDOM_CLOSE_EFFECT), 0, 0 },
- { "create2_effect", "int", RESTOSTRING (0, LAST_CLOSE_EFFECT), 0, 0 },
- { "create2_duration", "float", "<min>0.1</min>", 0, 0 },
- { "create2_random_effects", "list", "<type>int</type>" RESTOSTRING (0, LAST_RANDOM_CLOSE_EFFECT), 0, 0 },
- { "focus_effect", "int", RESTOSTRING (0, LAST_FOCUS_EFFECT), 0, 0 },
- { "focus_duration", "float", "<min>0.1</min>", 0, 0 },
- { "shade_effect", "int", RESTOSTRING (0, LAST_SHADE_EFFECT), 0, 0 },
- { "shade_duration", "float", "<min>0.1</min>", 0, 0 },
+ { "focus_effect", "list", "<type>int</type>" RESTOSTRING (0, LAST_FOCUS_EFFECT), 0, 0 },
+ { "focus_duration", "list", "<type>float</type><min>0.02</min>", 0, 0 },
+ { "focus_match", "list", "<type>match</type>", 0, 0 },
+ { "shade_effect", "list", "<type>int</type>" RESTOSTRING (0, LAST_SHADE_EFFECT), 0, 0 },
+ { "shade_duration", "list", "<type>float</type><min>0.02</min>", 0, 0 },
+ { "shade_match", "list", "<type>match</type>", 0, 0 },
{ "shade_random_effects", "list", "<type>int</type>" RESTOSTRING (0, LAST_RANDOM_SHADE_EFFECT), 0, 0 },
- { "rollup_fixed_interior", "bool", 0, 0, 0 },
+ // Misc. settings
{ "all_random", "bool", 0, 0, 0 },
{ "time_step", "int", "<min>1</min>", 0, 0 },
{ "time_step_intense", "int", "<min>1</min>", 0, 0 },
+ // Effect settings
{ "beam_size", "float", "<min>0.1</min>", 0, 0 },
{ "beam_spacing", "int", "<min>1</min>", 0, 0 },
{ "beam_color", "color", 0, 0, 0 },
@@ -819,13 +932,14 @@ static const CompMetadataOptionInfo animScreenOptionInfo[] = {
{ "magic_lamp_max_waves", "int", "<min>3</min>", 0, 0 },
{ "magic_lamp_amp_min", "float", "<min>200</min>", 0, 0 },
{ "magic_lamp_amp_max", "float", "<min>200</min>", 0, 0 },
- { "magic_lamp_create_start_width", "int", "<min>0</min>", 0, 0 },
+ { "magic_lamp_open_start_width", "int", "<min>0</min>", 0, 0 },
+ { "rollup_fixed_interior", "bool", 0, 0, 0 },
{ "sidekick_num_rotations", "float", "<min>0</min>", 0, 0 },
{ "sidekick_springiness", "float", "<min>0</min><max>1</max>", 0, 0 },
{ "sidekick_zoom_from_center", "int", RESTOSTRING (0, LAST_ZOOM_FROM_CENTER), 0, 0 },
{ "vacuum_moving_end", "bool", 0, 0, 0 },
{ "vacuum_grid_res", "int", "<min>4</min>", 0, 0 },
- { "vacuum_create_start_width", "int", "<min>0</min>", 0, 0 },
+ { "vacuum_open_start_width", "int", "<min>0</min>", 0, 0 },
{ "wave_width", "float", "<min>0</min>", 0, 0 },
{ "wave_amp", "float", "<min>0</min>", 0, 0 },
{ "zoom_from_center", "int", RESTOSTRING (0, LAST_ZOOM_FROM_CENTER), 0, 0 },
@@ -1270,70 +1384,6 @@ getHostedOnWin (AnimScreen *as,
aw->winThisIsPaintedBefore = wHost;
}
-static Bool
-matchWithString(CompWindow *w, const char *matchStr)
-{
- CompDisplay *d = w->screen->display;
- CompMatch match;
-
- matchInit (&match);
- matchAddFromString (&match, (char *)matchStr);
- matchUpdate (d, &match);
-
- return matchEval (&match, w);
-}
-
-// Can be moved to the Workarounds plugin when
-// it is ready to be included and enabled by default in plugins-main.
-static unsigned int
-getActualWinType(CompWindow *w)
-{
- if (isQtTransientWindow(w))
- return CompWindowTypeDropdownMenuMask;
-
- // Match Mozilla (Firefox, Thunderbird, etc.) menus
- // and Java menus
- if (matchWithString (w, "(type=Normal & override_redirect=1) | \
- name=sun-awt-X11-XMenuWindow | name=sun-awt-X11-XWindowPeer"))
- return CompWindowTypeDropdownMenuMask;
-
- // Match Qt3 and Qt4 tooltips, respectively
- // Requires the Regexp plugin
- if (matchWithString(w, "role=toolTipTip | role=qtooltip_label"))
- return CompWindowTypeTooltipMask;
-
- // Match Java normal windows
- if (w->resName &&
- strcmp(w->resName, "sun-awt-X11-XFramePeer") == 0)
- return CompWindowTypeNormalMask;
-
- // Match Java dialog windows
- if (w->resName &&
- strcmp(w->resName, "sun-awt-X11-XDialogPeer") == 0)
- return CompWindowTypeDialogMask;
-
- return w->wmType;
-}
-
-// Can be removed when getActualWinType is moved.
-static Bool
-matchEvalProxy(CompMatch *match, CompWindow *w)
-{
- Bool result;
-
- // Backup window type
- int winType = w->wmType;
-
- w->wmType = getActualWinType(w);
-
- result = matchEval(match, w);
-
- // Restore window type
- w->wmType = winType;
-
- return result;
-}
-
static Bool inline
otherPluginsActive(AnimScreen *as)
{
@@ -1351,15 +1401,17 @@ initiateFocusAnimation(CompWindow *w)
if (aw->curWindowEvent != WindowEventNone || otherPluginsActive(as))
return;
- if (matchEvalProxy
- (&as->opt[ANIM_SCREEN_OPTION_FOCUS_MATCH].value.match, w) &&
- as->focusEffect &&
+ float duration = 0.2f;
+ AnimEffect chosenEffect =
+ getMatchingAnimSelection (w, WindowEventFocus, &duration);
+
+ if (chosenEffect &&
// On unminimization, focus event is fired first.
// When this happens and minimize is in progress,
// don't prevent rewinding of minimize when unminimize is fired
// right after this focus event.
aw->curWindowEvent != WindowEventMinimize &&
- animEnsureModel(w, WindowEventFocus, as->focusEffect))
+ animEnsureModel(w, WindowEventFocus, chosenEffect))
{
CompWindow *wStart = NULL;
CompWindow *wEnd = NULL;
@@ -1376,8 +1428,10 @@ initiateFocusAnimation(CompWindow *w)
raised = restackInfo->raised;
}
- if (as->focusEffect == AnimEffectFocusFade ||
- as->focusEffect == AnimEffectDodge)
+ // FOCUS event!
+
+ if (chosenEffect == AnimEffectFocusFade ||
+ chosenEffect == AnimEffectDodge)
{
// Find union region of all windows that will be
// faded through by w. If the region is empty, don't
@@ -1418,7 +1472,7 @@ initiateFocusAnimation(CompWindow *w)
XUnionRegion(fadeRegion, thisAndSubjectIntersection,
fadeRegion);
- if (as->focusEffect == AnimEffectDodge &&
+ if (chosenEffect == AnimEffectDodge &&
!XEmptyRegion(thisAndSubjectIntersection))
{
AnimWindow *adw = GET_ANIM_WINDOW(dw, as);
@@ -1437,8 +1491,8 @@ initiateFocusAnimation(CompWindow *w)
if (XEmptyRegion(fadeRegion))
return; // empty -> won't be drawn
- if ((as->focusEffect == AnimEffectFocusFade ||
- as->focusEffect == AnimEffectDodge) && wOldAbove)
+ if ((chosenEffect == AnimEffectFocusFade ||
+ chosenEffect == AnimEffectDodge) && wOldAbove)
{
// Store this window in the next window
// so that this is drawn before that,
@@ -1449,9 +1503,9 @@ initiateFocusAnimation(CompWindow *w)
float dodgeMaxStartProgress =
numDodgingWins *
as->opt[ANIM_SCREEN_OPTION_DODGE_GAP_RATIO].value.f *
- as->opt[ANIM_SCREEN_OPTION_FOCUS_DURATION].value.f;
+ duration;
- if (as->focusEffect == AnimEffectDodge)
+ if (chosenEffect == AnimEffectDodge)
{
CompWindow *wDodgeChainLastVisited = NULL;
@@ -1493,8 +1547,7 @@ initiateFocusAnimation(CompWindow *w)
transformTotalProgress;
adw->animTotalTime =
- transformTotalProgress * 1000 *
- as->opt[ANIM_SCREEN_OPTION_FOCUS_DURATION].value.f;
+ transformTotalProgress * 1000 * duration;
adw->animRemainingTime = adw->animTotalTime;
if (maxTransformTotalProgress < transformTotalProgress)
@@ -1567,15 +1620,11 @@ initiateFocusAnimation(CompWindow *w)
aw->dodgeChainStart = wDodgeChainLastVisited;
}
- aw->animTotalTime = maxTransformTotalProgress * 1000 *
- as->opt[ANIM_SCREEN_OPTION_FOCUS_DURATION].value.f;
+ aw->animTotalTime =
+ maxTransformTotalProgress * 1000 * duration;
}
}
- // FOCUS event!
-
- //printf("FOCUS event! %X\n", (unsigned)w->id);
-
if (aw->curWindowEvent != WindowEventNone)
{
postAnimationCleanup(w, TRUE);
@@ -1583,10 +1632,9 @@ initiateFocusAnimation(CompWindow *w)
animActivateEvent(s, TRUE);
aw->curWindowEvent = WindowEventFocus;
- aw->curAnimEffect = as->focusEffect;
- if (as->focusEffect != AnimEffectDodge)
- aw->animTotalTime =
- as->opt[ANIM_SCREEN_OPTION_FOCUS_DURATION].value.f * 1000;
+ aw->curAnimEffect = chosenEffect;
+ if (chosenEffect != AnimEffectDodge)
+ aw->animTotalTime = duration * 1000;
aw->animRemainingTime = aw->animTotalTime;
// Store coords in this viewport to omit 3d effect
@@ -1602,14 +1650,15 @@ initiateFocusAnimation(CompWindow *w)
static Bool
relevantForFadeFocus(CompWindow *nw)
{
- ANIM_SCREEN(nw->screen);
-
if (!((nw->wmType &
// these two are to be used as "host" windows
// to host the painting of windows being focused
// at a stacking order lower than them
(CompWindowTypeDockMask | CompWindowTypeSplashMask)) ||
- matchEval(&as->opt[ANIM_SCREEN_OPTION_FOCUS_MATCH].value.match, nw)))
+ nw->wmType == CompWindowTypeNormalMask ||
+ nw->wmType == CompWindowTypeDialogMask ||
+ nw->wmType == CompWindowTypeUtilMask ||
+ nw->wmType == CompWindowTypeUnknownMask))
{
return FALSE;
}
@@ -1645,8 +1694,8 @@ static void animPreparePaintScreen(CompScreen * s, int msSinceLastPaint)
ANIM_SCREEN(s);
- if (as->focusEffect == AnimEffectFocusFade ||
- as->focusEffect == AnimEffectDodge)
+ //if (as->focusEffect == AnimEffectFocusFade ||
+ //as->focusEffect == AnimEffectDodge)
{
if (as->aWinWasRestackedJustNow)
{
@@ -1710,7 +1759,7 @@ static void animPreparePaintScreen(CompScreen * s, int msSinceLastPaint)
initiateFocusAnimation(w);
}
}
- if (as->focusEffect == AnimEffectDodge)
+ //if (as->focusEffect == AnimEffectDodge)
{
for (w = s->reverseWindows; w; w = w->prev)
{
@@ -2459,11 +2508,6 @@ animDrawWindowGeometry(CompWindow * w)
{
ANIM_WINDOW(w);
- //if (aw->animRemainingTime > 0 &&
- // !animEffectProperties[aw->curAnimEffect].letOthersDrawGeoms)
- //{
- //printf("animDrawWindowGeometry: %X: coords: %d, %d, %f\n",
- // (unsigned)w->id, WIN_X (w), WIN_Y (w), aw->animRemainingTime);
aw->nDrawGeometryCalls++;
ANIM_SCREEN(w->screen);
@@ -2842,19 +2886,19 @@ static void animHandleEvent(CompDisplay * d, XEvent * event)
if (w->pendingUnmaps && onCurrentDesktop(w)) // Normal -> Iconic
{
ANIM_WINDOW(w);
+
+ float duration = 0.2f;
+ AnimEffect chosenEffect =
+ getMatchingAnimSelection (w, WindowEventShade, &duration);
+
if (w->shaded)
{
// SHADE event!
- //printf("SHADE event! %X\n", (unsigned)w->id);
-
aw->nowShaded = TRUE;
- if (as->shadeEffect &&
- matchEvalProxy
- (&as->opt[ANIM_SCREEN_OPTION_SHADE_MATCH].value.match, w))
+ if (chosenEffect)
{
- //IPCS_SetBool(IPCS_OBJECT(w), aw->animatedAtom, TRUE);
Bool startingNew = TRUE;
if (aw->curWindowEvent != WindowEventNone)
@@ -2886,7 +2930,7 @@ static void animHandleEvent(CompDisplay * d, XEvent * event)
{
AnimEffect effectToBePlayed;
effectToBePlayed = animGetAnimEffect(
- as->shadeEffect,
+ chosenEffect,
as->shadeRandomEffects,
as->nShadeRandomEffects,
as->opt[ANIM_SCREEN_OPTION_ALL_RANDOM].value.b);
@@ -2896,9 +2940,7 @@ static void animHandleEvent(CompDisplay * d, XEvent * event)
break;
aw->curAnimEffect = effectToBePlayed;
-
- aw->animTotalTime =
- as->opt[ANIM_SCREEN_OPTION_SHADE_DURATION].value.f * 1000;
+ aw->animTotalTime = duration * 1000;
aw->animRemainingTime = aw->animTotalTime;
}
@@ -2923,94 +2965,93 @@ static void animHandleEvent(CompDisplay * d, XEvent * event)
}
}
else if (!w->invisible &&
- as->minimizeEffect &&
- animGetWindowIconGeometry(w, &aw->icon) &&
- matchEvalProxy
- (&as->opt[ANIM_SCREEN_OPTION_MINIMIZE_MATCH].value.match, w))
+ animGetWindowIconGeometry(w, &aw->icon))
{
// MINIMIZE event!
- //printf("MINIMIZE event! %X\n", (unsigned)w->id);
+ aw->newState = IconicState;
- Bool startingNew = TRUE;
+ chosenEffect =
+ getMatchingAnimSelection (w, WindowEventMinimize, &duration);
- if (aw->curWindowEvent != WindowEventNone)
+ if (chosenEffect)
{
- if (aw->curWindowEvent != WindowEventUnminimize)
- {
- postAnimationCleanup(w, TRUE);
- }
- else
+ Bool startingNew = TRUE;
+
+ if (aw->curWindowEvent != WindowEventNone)
{
- // Play the unminimize effect backwards from where it left
- aw->animRemainingTime =
- aw->animTotalTime - aw->animRemainingTime;
+ if (aw->curWindowEvent != WindowEventUnminimize)
+ {
+ postAnimationCleanup(w, TRUE);
+ }
+ else
+ {
+ // Play the unminimize effect backwards from where it left
+ aw->animRemainingTime =
+ aw->animTotalTime - aw->animRemainingTime;
- // avoid window remains
- if (aw->animRemainingTime == 0)
- aw->animRemainingTime = 1;
+ // avoid window remains
+ if (aw->animRemainingTime == 0)
+ aw->animRemainingTime = 1;
- startingNew = FALSE;
- if (aw->animOverrideProgressDir == 0)
- aw->animOverrideProgressDir = 2;
- else if (aw->animOverrideProgressDir == 1)
- aw->animOverrideProgressDir = 0;
+ startingNew = FALSE;
+ if (aw->animOverrideProgressDir == 0)
+ aw->animOverrideProgressDir = 2;
+ else if (aw->animOverrideProgressDir == 1)
+ aw->animOverrideProgressDir = 0;
+ }
}
- }
- if (startingNew)
- {
- AnimEffect effectToBePlayed;
+ if (startingNew)
+ {
+ AnimEffect effectToBePlayed;
- effectToBePlayed = animGetAnimEffect(
- as->minimizeEffect,
- as->minimizeRandomEffects,
- as->nMinimizeRandomEffects,
- as->opt[ANIM_SCREEN_OPTION_ALL_RANDOM].value.b);
-
- // handle empty random effect list
- if (effectToBePlayed == AnimEffectNone)
- break;
-
- aw->curAnimEffect = effectToBePlayed;
-
- aw->animTotalTime =
- as->opt[ANIM_SCREEN_OPTION_MINIMIZE_DURATION].value.f * 1000;
-
- aw->animRemainingTime = aw->animTotalTime;
- }
+ effectToBePlayed = animGetAnimEffect(
+ chosenEffect,
+ as->minimizeRandomEffects,
+ as->nMinimizeRandomEffects,
+ as->opt[ANIM_SCREEN_OPTION_ALL_RANDOM].value.b);
- aw->newState = IconicState;
- animActivateEvent(w->screen, TRUE);
- aw->curWindowEvent = WindowEventMinimize;
+ // handle empty random effect list
+ if (effectToBePlayed == AnimEffectNone)
+ break;
- // Store coords in this viewport to omit 3d effect
- // painting in other viewports
- aw->lastKnownCoords.x = w->attrib.x;
- aw->lastKnownCoords.y = w->attrib.y;
+ aw->curAnimEffect = effectToBePlayed;
+ aw->animTotalTime = duration * 1000;
+ aw->animRemainingTime = aw->animTotalTime;
+ }
- if (!animEnsureModel
- (w, WindowEventMinimize, aw->curAnimEffect))
- {
- postAnimationCleanup(w, TRUE);
- }
- else
- {
- /*
- if (!animGetWindowIconGeometry(w, &aw->icon))
- {
- // minimize to bottom-center if there is no window list
- aw->icon.x = w->screen->width / 2;
- aw->icon.y = w->screen->height;
- aw->icon.width = 100;
- aw->icon.height = 20;
- }
- */
+ animActivateEvent(w->screen, TRUE);
+ aw->curWindowEvent = WindowEventMinimize;
- aw->unmapCnt++;
- w->unmapRefCnt++;
+ // Store coords in this viewport to omit 3d effect
+ // painting in other viewports
+ aw->lastKnownCoords.x = w->attrib.x;
+ aw->lastKnownCoords.y = w->attrib.y;
- addWindowDamage(w);
+ if (!animEnsureModel
+ (w, WindowEventMinimize, aw->curAnimEffect))
+ {
+ postAnimationCleanup(w, TRUE);
+ }
+ else
+ {
+ /*
+ if (!animGetWindowIconGeometry(w, &aw->icon))
+ {
+ // minimize to bottom-center if there is no window list
+ aw->icon.x = w->screen->width / 2;
+ aw->icon.y = w->screen->height;
+ aw->icon.width = 100;
+ aw->icon.height = 20;
+ }
+ */
+
+ aw->unmapCnt++;
+ w->unmapRefCnt++;
+
+ addWindowDamage(w);
+ }
}
}
}
@@ -3023,42 +3064,30 @@ static void animHandleEvent(CompDisplay * d, XEvent * event)
if (!(w->resName || isQtTransientWindow(w)))
break;
- AnimEffect windowsCloseEffect = AnimEffectNone;
- int whichClose = 1; // either 1 or 2
-
- if (as->close1Effect &&
- matchEvalProxy
- (&as->opt[ANIM_SCREEN_OPTION_CLOSE1_MATCH].value.match, w))
- {
- windowsCloseEffect = as->close1Effect;
- }
- else if (as->close2Effect &&
- matchEvalProxy
- (&as->opt[ANIM_SCREEN_OPTION_CLOSE2_MATCH].value.match, w))
- {
- windowsCloseEffect = as->close2Effect;
- whichClose = 2;
- }
+ float duration = 0.2f;
+ AnimEffect chosenEffect =
+ getMatchingAnimSelection (w, WindowEventClose, &duration);
// CLOSE event!
- if (windowsCloseEffect)
+ aw->state = NormalState;
+ aw->newState = WithdrawnState;
+
+ if (chosenEffect)
{
int tmpSteps = 0;
- //printf("CLOSE event! %X\n", (unsigned)w->id);
-
Bool startingNew = TRUE;
if (aw->animRemainingTime > 0 &&
- aw->curWindowEvent != WindowEventCreate)
+ aw->curWindowEvent != WindowEventOpen)
{
tmpSteps = aw->animRemainingTime;
aw->animRemainingTime = 0;
}
if (aw->curWindowEvent != WindowEventNone)
{
- if (aw->curWindowEvent == WindowEventCreate)
+ if (aw->curWindowEvent == WindowEventOpen)
{
// Play the create effect backward from where it left
aw->animRemainingTime =
@@ -3092,11 +3121,9 @@ static void animHandleEvent(CompDisplay * d, XEvent * event)
{
AnimEffect effectToBePlayed;
effectToBePlayed = animGetAnimEffect(
- windowsCloseEffect,
- (whichClose == 1) ? as->close1RandomEffects :
- as->close2RandomEffects,
- (whichClose == 1) ? as->nClose1RandomEffects :
- as->nClose2RandomEffects,
+ chosenEffect,
+ as->closeRandomEffects,
+ as->nCloseRandomEffects,
as->opt[ANIM_SCREEN_OPTION_ALL_RANDOM].value.b);
// handle empty random effect list
@@ -3104,17 +3131,10 @@ static void animHandleEvent(CompDisplay * d, XEvent * event)
break;
aw->curAnimEffect = effectToBePlayed;
-
- aw->animTotalTime =
- as->opt[whichClose == 1 ?
- ANIM_SCREEN_OPTION_CLOSE1_DURATION :
- ANIM_SCREEN_OPTION_CLOSE2_DURATION].value.f * 1000;
-
+ aw->animTotalTime = duration * 1000;
aw->animRemainingTime = aw->animTotalTime;
}
- aw->state = NormalState;
- aw->newState = WithdrawnState;
animActivateEvent(w->screen, TRUE);
aw->curWindowEvent = WindowEventClose;
@@ -3137,11 +3157,11 @@ static void animHandleEvent(CompDisplay * d, XEvent * event)
if (aw->curAnimEffect == AnimEffectMagicLamp)
aw->icon.width =
MAX(aw->icon.width,
- as->opt[ANIM_SCREEN_OPTION_MAGIC_LAMP_CREATE_START_WIDTH].value.i);
+ as->opt[ANIM_SCREEN_OPTION_MAGIC_LAMP_OPEN_START_WIDTH].value.i);
else if (aw->curAnimEffect == AnimEffectVacuum)
aw->icon.width =
MAX(aw->icon.width,
- as->opt[ANIM_SCREEN_OPTION_VACUUM_CREATE_START_WIDTH].value.i);
+ as->opt[ANIM_SCREEN_OPTION_VACUUM_OPEN_START_WIDTH].value.i);
aw->unmapCnt++;
w->unmapRefCnt++;
@@ -3149,17 +3169,12 @@ static void animHandleEvent(CompDisplay * d, XEvent * event)
addWindowDamage(w);
}
}
- else if ((as->create1Effect &&
- matchEvalProxy
- (&as->opt[ANIM_SCREEN_OPTION_CREATE1_MATCH].value.match, w)) ||
- (as->create2Effect &&
- matchEvalProxy
- (&as->opt[ANIM_SCREEN_OPTION_CREATE2_MATCH].value.match, w)))
+ else if (getMatchingAnimSelection (w, WindowEventOpen, &duration))
{
// stop the current animation and prevent it from rewinding
if (aw->animRemainingTime > 0 &&
- aw->curWindowEvent != WindowEventCreate)
+ aw->curWindowEvent != WindowEventOpen)
{
aw->animRemainingTime = 0;
}
@@ -3169,10 +3184,8 @@ static void animHandleEvent(CompDisplay * d, XEvent * event)
postAnimationCleanup(w, TRUE);
}
// set some properties to make sure this window will use the
- // correct create effect the next time it's "created"
+ // correct open effect the next time it's "opened"
- aw->state = NormalState;
- aw->newState = WithdrawnState;
animActivateEvent(w->screen, TRUE);
aw->curWindowEvent = WindowEventClose;
@@ -3367,12 +3380,15 @@ static void animHandleEvent(CompDisplay * d, XEvent * event)
{
ad->activeWindow = d->activeWindow;
w = findWindowAtDisplay(d, d->activeWindow);
-
+
if (w)
{
- ANIM_SCREEN(w->screen);
- if (!(as->focusEffect == AnimEffectFocusFade ||
- as->focusEffect == AnimEffectDodge))
+ float duration = 0.2f;
+ AnimEffect chosenEffect =
+ getMatchingAnimSelection (w, WindowEventFocus, &duration);
+
+ if (!(chosenEffect == AnimEffectFocusFade ||
+ chosenEffect == AnimEffectDodge))
initiateFocusAnimation(w);
}
}
@@ -3388,23 +3404,24 @@ static Bool animDamageWindowRect(CompWindow * w, Bool initial, BoxPtr rect)
ANIM_SCREEN(w->screen);
- if (initial) // Unminimize or Create
+ if (initial) // Unminimize or Open
{
ANIM_WINDOW(w);
+ float duration = 0.2f;
+ AnimEffect chosenEffect;
+
if (aw->state == IconicState)
{
+ chosenEffect =
+ getMatchingAnimSelection (w, WindowEventUnminimize, &duration);
+
if (!w->invisible &&
- as->minimizeEffect &&
- !as->fadeDesktopActive &&
- matchEvalProxy
- (&as->opt[ANIM_SCREEN_OPTION_MINIMIZE_MATCH].value.match, w))
+ chosenEffect &&
+ !as->fadeDesktopActive)
{
// UNMINIMIZE event!
- //printf("UNMINIMIZE event! %X\n", (unsigned)w->id);
-
- //IPCS_SetBool(IPCS_OBJECT(w), aw->animatedAtom, TRUE);
Bool startingNew = TRUE;
if (aw->curWindowEvent != WindowEventNone)
@@ -3437,7 +3454,7 @@ static Bool animDamageWindowRect(CompWindow * w, Bool initial, BoxPtr rect)
{
AnimEffect effectToBePlayed;
effectToBePlayed = animGetAnimEffect(
- as->minimizeEffect,
+ chosenEffect,
as->minimizeRandomEffects,
as->nMinimizeRandomEffects,
as->opt[ANIM_SCREEN_OPTION_ALL_RANDOM].value.b);
@@ -3449,10 +3466,7 @@ static Bool animDamageWindowRect(CompWindow * w, Bool initial, BoxPtr rect)
if (playEffect)
{
aw->curAnimEffect = effectToBePlayed;
-
- aw->animTotalTime =
- as->opt[ANIM_SCREEN_OPTION_MINIMIZE_DURATION].value.f * 1000;
-
+ aw->animTotalTime = duration * 1000;
aw->animRemainingTime = aw->animTotalTime;
}
}
@@ -3489,15 +3503,14 @@ static Bool animDamageWindowRect(CompWindow * w, Bool initial, BoxPtr rect)
}
else if (aw->nowShaded)
{
+ chosenEffect =
+ getMatchingAnimSelection (w, WindowEventUnshade, &duration);
+
// UNSHADE event!
- //printf("UNSHADE event! %X\n", (unsigned)w->id);
- //IPCS_SetBool(IPCS_OBJECT(w), aw->animatedAtom, TRUE);
aw->nowShaded = FALSE;
- if (as->shadeEffect &&
- matchEvalProxy
- (&as->opt[ANIM_SCREEN_OPTION_SHADE_MATCH].value.match, w))
+ if (chosenEffect)
{
Bool startingNew = TRUE;
@@ -3531,7 +3544,7 @@ static Bool animDamageWindowRect(CompWindow * w, Bool initial, BoxPtr rect)
{
AnimEffect effectToBePlayed;
effectToBePlayed = animGetAnimEffect(
- as->shadeEffect,
+ chosenEffect,
as->shadeRandomEffects,
as->nShadeRandomEffects,
as->opt[ANIM_SCREEN_OPTION_ALL_RANDOM].value.b);
@@ -3543,9 +3556,7 @@ static Bool animDamageWindowRect(CompWindow * w, Bool initial, BoxPtr rect)
if (playEffect)
{
aw->curAnimEffect = effectToBePlayed;
-
- aw->animTotalTime =
- as->opt[ANIM_SCREEN_OPTION_SHADE_DURATION].value.f * 1000;
+ aw->animTotalTime = duration * 1000;
aw->animRemainingTime = aw->animTotalTime;
}
}
@@ -3573,25 +3584,13 @@ static Bool animDamageWindowRect(CompWindow * w, Bool initial, BoxPtr rect)
{
aw->created = TRUE;
- AnimEffect windowsCreateEffect = AnimEffectNone;
+ float duration = 0.2f;
+ AnimEffect chosenEffect =
+ getMatchingAnimSelection (w, WindowEventOpen, &duration);
- int whichCreate = 1; // either 1 or 2
+ // OPEN event!
- if (as->create1Effect &&
- matchEvalProxy
- (&as->opt[ANIM_SCREEN_OPTION_CREATE1_MATCH].value.match, w))
- {
- windowsCreateEffect = as->create1Effect;
- }
- else if (as->create2Effect &&
- matchEvalProxy
- (&as->opt[ANIM_SCREEN_OPTION_CREATE2_MATCH].value.match, w))
- {
- windowsCreateEffect = as->create2Effect;
- whichCreate = 2;
- }
-
- if (windowsCreateEffect &&
+ if (chosenEffect &&
// don't animate windows that don't have properties
// like the fullscreen darkening layer of gksudo
(w->resName || isQtTransientWindow(w)) &&
@@ -3600,10 +3599,6 @@ static Bool animDamageWindowRect(CompWindow * w, Bool initial, BoxPtr rect)
(!as->switcherActive || as->switcherWinOpeningSuppressed) &&
getMousePointerXY(w->screen, &aw->icon.x, &aw->icon.y))
{
- // CREATE event!
-
- //printf("CREATE event! %X\n", (unsigned)w->id);
-
Bool startingNew = TRUE;
if (aw->curWindowEvent != WindowEventNone)
@@ -3636,11 +3631,9 @@ static Bool animDamageWindowRect(CompWindow * w, Bool initial, BoxPtr rect)
{
AnimEffect effectToBePlayed;
effectToBePlayed = animGetAnimEffect(
- windowsCreateEffect,
- (whichCreate == 1) ? as->create1RandomEffects :
- as->create2RandomEffects,
- (whichCreate == 1) ? as->nCreate1RandomEffects :
- as->nCreate2RandomEffects,
+ chosenEffect,
+ as->openRandomEffects,
+ as->nOpenRandomEffects,
as->opt[ANIM_SCREEN_OPTION_ALL_RANDOM].value.b);
// handle empty random effect list
@@ -3650,12 +3643,7 @@ static Bool animDamageWindowRect(CompWindow * w, Bool initial, BoxPtr rect)
if (playEffect)
{
aw->curAnimEffect = effectToBePlayed;
-
- aw->animTotalTime =
- as->opt[whichCreate == 1 ?
- ANIM_SCREEN_OPTION_CREATE1_DURATION :
- ANIM_SCREEN_OPTION_CREATE2_DURATION].value.f * 1000;
-
+ aw->animTotalTime = duration * 1000;
aw->animRemainingTime = aw->animTotalTime;
}
}
@@ -3663,7 +3651,7 @@ static Bool animDamageWindowRect(CompWindow * w, Bool initial, BoxPtr rect)
if (playEffect)
{
animActivateEvent(w->screen, TRUE);
- aw->curWindowEvent = WindowEventCreate;
+ aw->curWindowEvent = WindowEventOpen;
aw->icon.width = FAKE_ICON_SIZE;
aw->icon.height = FAKE_ICON_SIZE;
@@ -3671,17 +3659,15 @@ static Bool animDamageWindowRect(CompWindow * w, Bool initial, BoxPtr rect)
if (aw->curAnimEffect == AnimEffectMagicLamp)
aw->icon.width =
MAX(aw->icon.width,
- as->opt[ANIM_SCREEN_OPTION_MAGIC_LAMP_CREATE_START_WIDTH].value.i);
+ as->opt[ANIM_SCREEN_OPTION_MAGIC_LAMP_OPEN_START_WIDTH].value.i);
else if (aw->curAnimEffect == AnimEffectVacuum)
aw->icon.width =
MAX(aw->icon.width,
- as->opt[ANIM_SCREEN_OPTION_VACUUM_CREATE_START_WIDTH].value.i);
+ as->opt[ANIM_SCREEN_OPTION_VACUUM_OPEN_START_WIDTH].value.i);
aw->icon.x -= aw->icon.width / 2;
aw->icon.y -= aw->icon.height / 2;
- aw->state = IconicState; // we're doing this as a hack, it may not be necessary
-
// Store coords in this viewport to omit 3d effect
// painting in other viewports
if (aw->lastKnownCoords.x != NOT_INITIALIZED)
@@ -3689,7 +3675,7 @@ static Bool animDamageWindowRect(CompWindow * w, Bool initial, BoxPtr rect)
aw->lastKnownCoords.x = w->attrib.x;
aw->lastKnownCoords.y = w->attrib.y;
}
- if (animEnsureModel(w, WindowEventCreate, aw->curAnimEffect))
+ if (animEnsureModel(w, WindowEventOpen, aw->curAnimEffect))
{
addWindowDamage(w);
}
@@ -3722,7 +3708,7 @@ static void animWindowResizeNotify(CompWindow * w, int dx, int dy, int dwidth, i
ANIM_WINDOW(w);
// Don't let transient window open anim be interrupted with a resize notify
- if (!(aw->curWindowEvent == WindowEventCreate &&
+ if (!(aw->curWindowEvent == WindowEventOpen &&
(isQtTransientWindow(w) ||
(w->wmType &
(CompWindowTypeDropdownMenuMask |
@@ -3944,8 +3930,9 @@ static void animFiniDisplay(CompPlugin * p, CompDisplay * d)
static Bool animInitScreen(CompPlugin * p, CompScreen * s)
{
AnimScreen *as;
-
- ANIM_DISPLAY(s->display);
+ CompDisplay *d = s->display;
+
+ ANIM_DISPLAY(d);
as = calloc(1, sizeof(AnimScreen));
if (!as)
@@ -3971,54 +3958,30 @@ static Bool animInitScreen(CompPlugin * p, CompScreen * s)
as->animInProgress = FALSE;
- as->minimizeEffect = minimizeEffectType[
- as->opt[ANIM_SCREEN_OPTION_MINIMIZE_EFFECT].value.i];
- as->create1Effect = closeEffectType[
- as->opt[ANIM_SCREEN_OPTION_CREATE1_EFFECT].value.i];
- as->create2Effect = closeEffectType[
- as->opt[ANIM_SCREEN_OPTION_CREATE2_EFFECT].value.i];
- as->close1Effect = closeEffectType[
- as->opt[ANIM_SCREEN_OPTION_CLOSE1_EFFECT].value.i];
- as->close2Effect = closeEffectType[
- as->opt[ANIM_SCREEN_OPTION_CLOSE2_EFFECT].value.i];
- as->focusEffect = focusEffectType[
- as->opt[ANIM_SCREEN_OPTION_FOCUS_EFFECT].value.i];
- as->shadeEffect = shadeEffectType[
- as->opt[ANIM_SCREEN_OPTION_SHADE_EFFECT].value.i];
-
animStoreRandomEffectList (
&as->opt[ANIM_SCREEN_OPTION_MINIMIZE_RANDOM_EFFECTS].value,
- minimizeEffectType + RANDOM_EFFECT_OFFSET,
+ minimizeEffects + RANDOM_EFFECT_OFFSET,
NUM_MINIMIZE_EFFECT - RANDOM_EFFECT_OFFSET,
as->minimizeRandomEffects,
&as->nMinimizeRandomEffects);
+
animStoreRandomEffectList (
- &as->opt[ANIM_SCREEN_OPTION_CLOSE1_RANDOM_EFFECTS].value,
- closeEffectType + RANDOM_EFFECT_OFFSET,
- NUM_CLOSE_EFFECT - RANDOM_EFFECT_OFFSET,
- as->close1RandomEffects,
- &as->nClose1RandomEffects);
- animStoreRandomEffectList (
- &as->opt[ANIM_SCREEN_OPTION_CLOSE2_RANDOM_EFFECTS].value,
- closeEffectType + RANDOM_EFFECT_OFFSET,
- NUM_CLOSE_EFFECT - RANDOM_EFFECT_OFFSET,
- as->close2RandomEffects,
- &as->nClose2RandomEffects);
- animStoreRandomEffectList (
- &as->opt[ANIM_SCREEN_OPTION_CREATE1_RANDOM_EFFECTS].value,
- closeEffectType + RANDOM_EFFECT_OFFSET,
+ &as->opt[ANIM_SCREEN_OPTION_CLOSE_RANDOM_EFFECTS].value,
+ closeEffects + RANDOM_EFFECT_OFFSET,
NUM_CLOSE_EFFECT - RANDOM_EFFECT_OFFSET,
- as->create1RandomEffects,
- &as->nCreate1RandomEffects);
+ as->closeRandomEffects,
+ &as->nCloseRandomEffects);
+
animStoreRandomEffectList (
- &as->opt[ANIM_SCREEN_OPTION_CREATE2_RANDOM_EFFECTS].value,
- closeEffectType + RANDOM_EFFECT_OFFSET,
+ &as->opt[ANIM_SCREEN_OPTION_OPEN_RANDOM_EFFECTS].value,
+ closeEffects + RANDOM_EFFECT_OFFSET,
NUM_CLOSE_EFFECT - RANDOM_EFFECT_OFFSET,
- as->create2RandomEffects,
- &as->nCreate2RandomEffects);
+ as->openRandomEffects,
+ &as->nOpenRandomEffects);
+
animStoreRandomEffectList (
&as->opt[ANIM_SCREEN_OPTION_SHADE_RANDOM_EFFECTS].value,
- shadeEffectType + RANDOM_EFFECT_OFFSET,
+ shadeEffects + RANDOM_EFFECT_OFFSET,
NUM_SHADE_EFFECT - RANDOM_EFFECT_OFFSET,
as->shadeRandomEffects,
&as->nShadeRandomEffects);
@@ -4038,7 +4001,6 @@ static Bool animInitScreen(CompPlugin * p, CompScreen * s)
WRAP(as, s, damageWindowRect, animDamageWindowRect);
WRAP(as, s, addWindowGeometry, animAddWindowGeometry);
WRAP(as, s, drawWindowTexture, animDrawWindowTexture);
- //WRAP(as, s, drawWindowGeometry, animDrawWindowGeometry);
WRAP(as, s, windowResizeNotify, animWindowResizeNotify);
WRAP(as, s, windowMoveNotify, animWindowMoveNotify);
WRAP(as, s, windowGrabNotify, animWindowGrabNotify);
@@ -4070,7 +4032,6 @@ static void animFiniScreen(CompPlugin * p, CompScreen * s)
UNWRAP(as, s, damageWindowRect);
UNWRAP(as, s, addWindowGeometry);
UNWRAP(as, s, drawWindowTexture);
- //UNWRAP(as, s, drawWindowGeometry);
UNWRAP(as, s, windowResizeNotify);
UNWRAP(as, s, windowMoveNotify);
UNWRAP(as, s, windowGrabNotify);
Modified: fusion/plugins/animation/animation.xml.in
===================================================================
--- fusion/plugins/animation/animation.xml.in
+++ fusion/plugins/animation/animation.xml.in
@@ -13,18 +13,25 @@
<plugin>fade</plugin>
</relation>
</deps>
+
<screen>
+
<group>
<_short>Close Animation</_short>
<subgroup>
- <_short>Close Animation (Dialogs & Windows)</_short>
- <option name="close1_effect" type="int">
+ <_short>Animation Selection</_short>
+ <option name="close_effect" type="list">
<_short>Close Effect</_short>
<_long>The animation effect shown when closing a window.</_long>
+ <type>int</type>
<min>0</min>
<max>18</max>
- <default>18</default>
+ <default>
+ <value>18</value>
+ <value>8</value>
+ <value>8</value>
+ </default>
<desc>
<value>0</value>
<_name>None</_name>
@@ -102,17 +109,46 @@
<_name>Zoom</_name>
</desc>
</option>
- <option name="close1_duration" type="float">
- <_short>Animation Duration</_short>
+ <option name="close_duration" type="list">
+ <_short>Duration</_short>
<_long>Animation duration in seconds for close effect.</_long>
- <default>0.2</default>
+ <type>float</type>
<min>0.1</min>
<max>10</max>
- <precision>0.02</precision>
+ <precision>0.01</precision>
+ <default>
+ <value>0.2</value>
+ <value>0.15</value>
+ <value>0.15</value>
+ </default>
+ </option>
+ <option name="close_match" type="list">
+ <_short>Window Match</_short>
+ <_long>The windows that will be animated.</_long>
+ <type>match</type>
+ <default>
+ <value>(type=Normal | Dialog | ModalDialog | Utility | Unknown)</value>
+ <value>(type=Menu | PopupMenu | DropdownMenu) & !(name=gnome-screensaver)</value>
+ <value>(type=Tooltip | Notification)</value>
+ </default>
</option>
- <option name="close1_random_effects" type="list">
- <_short>Random Effect Pool</_short>
- <_long>Pool of effects to be chosen from if Random effect is selected. Click reset to restore full list. If the list is empty, the default effect will be used.</_long>
+ <option name="close_options" type="list">
+ <_short> </_short>
+ <_long>(This part will be used in the near future. This place-holder is here now to prevent problems when it starts being used.)</_long>
+ <type>string</type>
+ <default>
+ <value></value>
+ <value></value>
+ <value></value>
+ </default>
+ </option>
+ </subgroup>
+
+ <subgroup>
+ <_short>Random Effects</_short>
+ <option name="close_random_effects" type="list">
+ <_short>Pool</_short>
+ <_long>Pool of effects to be chosen from if Random effect is selected. Click reset to restore full list.</_long>
<type>int</type>
<min>0</min>
<max>16</max>
@@ -204,21 +240,26 @@
<_name>Zoom</_name>
</desc>
</option>
- <option name="close1_match" type="match">
- <_short>Window Match</_short>
- <_long>The windows that will be animated.</_long>
- <default>(type=Normal | Dialog | ModalDialog | Utility | Unknown)</default>
- </option>
</subgroup>
+ </group>
+
+ <group>
+ <_short>Open Animation</_short>
+
<subgroup>
- <_short>Close Animation (Menus & Tooltips)</_short>
- <option name="close2_effect" type="int">
- <_short>Close Effect</_short>
- <_long>The animation effect shown when closing a window.</_long>
+ <_short>Animation Selection</_short>
+ <option name="open_effect" type="list">
+ <_short>Open Effect</_short>
+ <_long>The animation effect shown when creating a window.</_long>
+ <type>int</type>
<min>0</min>
<max>18</max>
- <default>8</default>
+ <default>
+ <value>18</value>
+ <value>8</value>
+ <value>8</value>
+ </default>
<desc>
<value>0</value>
<_name>None</_name>
@@ -296,17 +337,46 @@
<_name>Zoom</_name>
</desc>
</option>
- <option name="close2_duration" type="float">
- <_short>Animation Duration</_short>
- <_long>Animation duration in seconds for close effect.</_long>
- <default>0.15</default>
+ <option name="open_duration" type="list">
+ <_short>Duration</_short>
+ <_long>Animation duration in seconds for open effect.</_long>
+ <type>float</type>
<min>0.1</min>
<max>10</max>
- <precision>0.02</precision>
+ <precision>0.01</precision>
+ <default>
+ <value>0.2</value>
+ <value>0.15</value>
+ <value>0.15</value>
+ </default>
+ </option>
+ <option name="open_match" type="list">
+ <_short>Window Match</_short>
+ <_long>The windows that will be animated.</_long>
+ <type>match</type>
+ <default>
+ <value>(type=Normal | Dialog | ModalDialog | Utility | Unknown)</value>
+ <value>(type=Menu | PopupMenu | DropdownMenu) & !(name=gnome-screensaver)</value>
+ <value>(type=Tooltip | Notification)</value>
+ </default>
</option>
- <option name="close2_random_effects" type="list">
- <_short>Random Effect Pool</_short>
- <_long>Pool of effects to be chosen from if Random effect is selected. Click reset to restore full list. If the list is empty, the default effect will be used.</_long>
+ <option name="open_options" type="list">
+ <_short> </_short>
+ <_long>(This part will be used in the near future. This place-holder is here now to prevent problems when it starts being used.)</_long>
+ <type>string</type>
+ <default>
+ <value></value>
+ <value></value>
+ <value></value>
+ </default>
+ </option>
+ </subgroup>
+
+ <subgroup>
+ <_short>Random Effects</_short>
+ <option name="open_random_effects" type="list">
+ <_short>Pool</_short>
+ <_long>Pool of effects to be chosen from if Random effect is selected. Click reset to restore full list.</_long>
<type>int</type>
<min>0</min>
<max>16</max>
@@ -398,25 +468,24 @@
<_name>Zoom</_name>
</desc>
</option>
- <option name="close2_match" type="match">
- <_short>Window Match</_short>
- <_long>The windows that will be animated.</_long>
- <default>(type=Menu | PopupMenu | DropdownMenu | Tooltip | Notification) & !(name=gnome-screensaver)</default>
- </option>
</subgroup>
+
</group>
<group>
- <_short>Create Animation</_short>
+ <_short>Minimize Animation</_short>
<subgroup>
- <_short>Create Animation (Dialogs & Windows)</_short>
- <option name="create1_effect" type="int">
- <_short>Create Effect</_short>
- <_long>The animation effect shown when creating a window.</_long>
+ <_short>Animation Selection</_short>
+ <option name="minimize_effect" type="list">
+ <_short>Minimize Effect</_short>
+ <_long>The animation effect shown when minimizing a window.</_long>
+ <type>int</type>
<min>0</min>
- <max>18</max>
- <default>18</default>
+ <max>16</max>
+ <default>
+ <value>13</value>
+ </default>
<desc>
<value>0</value>
<_name>None</_name>
@@ -483,31 +552,46 @@
</desc>
<desc>
<value>16</value>
- <_name>Vacuum</_name>
- </desc>
- <desc>
- <value>17</value>
- <_name>Wave</_name>
- </desc>
- <desc>
- <value>18</value>
<_name>Zoom</_name>
</desc>
</option>
- <option name="create1_duration" type="float">
- <_short>Animation Duration</_short>
- <_long>Animation duration in seconds for create effect.</_long>
- <default>0.2</default>
+ <option name="minimize_duration" type="list">
+ <_short>Duration</_short>
+ <_long>Animation duration in seconds for minimize effect.</_long>
+ <type>float</type>
+ <default>
+ <value>0.3</value>
+ </default>
<min>0.1</min>
<max>10</max>
- <precision>0.02</precision>
+ <precision>0.01</precision>
</option>
- <option name="create1_random_effects" type="list">
- <_short>Random Effect Pool</_short>
- <_long>Pool of effects to be chosen from if Random effect is selected. Click reset to restore full list. If the list is empty, the default effect will be used.</_long>
+ <option name="minimize_match" type="list">
+ <_short>Window Match</_short>
+ <_long>The windows that will be animated.</_long>
+ <type>match</type>
+ <default>
+ <value>(type=Normal | Dialog | ModalDialog | Utility | Unknown)</value>
+ </default>
+ </option>
+ <option name="minimize_options" type="list">
+ <_short> </_short>
+ <_long>(This part will be used in the near future. This place-holder is here now to prevent problems when it starts being used.)</_long>
+ <type>string</type>
+ <default>
+ <value></value>
+ </default>
+ </option>
+ </subgroup>
+
+ <subgroup>
+ <_short>Random Effects</_short>
+ <option name="minimize_random_effects" type="list">
+ <_short>Pool</_short>
+ <_long>Pool of effects to be chosen from if Random effect is selected. Click reset to restore full list.</_long>
<type>int</type>
<min>0</min>
- <max>16</max>
+ <max>14</max>
<default>
<value>0</value>
<value>1</value>
@@ -524,8 +608,6 @@
<value>12</value>
<value>13</value>
<value>14</value>
- <value>15</value>
- <value>16</value>
</default>
<desc>
<value>0</value>
@@ -585,32 +667,27 @@
</desc>
<desc>
<value>14</value>
- <_name>Vacuum</_name>
- </desc>
- <desc>
- <value>15</value>
- <_name>Wave</_name>
- </desc>
- <desc>
- <value>16</value>
<_name>Zoom</_name>
</desc>
</option>
- <option name="create1_match" type="match">
- <_short>Window Match</_short>
- <_long>Window that should animate with this effect when created.</_long>
- <default>(type=Normal | Dialog | ModalDialog | Utility | Unknown)</default>
- </option>
</subgroup>
+ </group>
+
+ <group>
+ <_short>Shade Animation</_short>
+
<subgroup>
- <_short>Create Animation (Menus & Tooltips)</_short>
- <option name="create2_effect" type="int">
- <_short>Create Effect</_short>
- <_long>The animation effect shown when creating a window.</_long>
+ <_short>Animation Selection</_short>
+ <option name="shade_effect" type="list">
+ <_short>Shade Effect</_short>
+ <_long>The animation effect shown when shading a window.</_long>
+ <type>int</type>
<min>0</min>
- <max>18</max>
- <default>8</default>
+ <max>4</max>
+ <default>
+ <value>4</value>
+ </default>
<desc>
<value>0</value>
<_name>None</_name>
@@ -621,465 +698,134 @@
</desc>
<desc>
<value>2</value>
- <_name>Beam Up</_name>
- </desc>
- <desc>
- <value>3</value>
- <_name>Burn</_name>
- </desc>
- <desc>
- <value>4</value>
<_name>Curved Fold</_name>
</desc>
<desc>
- <value>5</value>
- <_name>Domino</_name>
- </desc>
- <desc>
- <value>6</value>
- <_name>Dream</_name>
- </desc>
- <desc>
- <value>7</value>
- <_name>Explode</_name>
- </desc>
- <desc>
- <value>8</value>
- <_name>Fade</_name>
- </desc>
- <desc>
- <value>9</value>
- <_name>Glide 1</_name>
- </desc>
- <desc>
- <value>10</value>
- <_name>Glide 2</_name>
- </desc>
- <desc>
- <value>11</value>
+ <value>3</value>
<_name>Horizontal Folds</_name>
</desc>
<desc>
- <value>12</value>
- <_name>Leaf Spread</_name>
- </desc>
- <desc>
- <value>13</value>
- <_name>Magic Lamp</_name>
- </desc>
- <desc>
- <value>14</value>
- <_name>Razr</_name>
- </desc>
- <desc>
- <value>15</value>
- <_name>Sidekick</_name>
- </desc>
- <desc>
- <value>16</value>
- <_name>Vacuum</_name>
- </desc>
- <desc>
- <value>17</value>
- <_name>Wave</_name>
- </desc>
- <desc>
- <value>18</value>
- <_name>Zoom</_name>
+ <value>4</value>
+ <_name>Roll Up</_name>
</desc>
</option>
- <option name="create2_duration" type="float">
- <_short>Animation Duration</_short>
- <_long>Animation duration in seconds for create effect.</_long>
- <default>0.15</default>
+ <option name="shade_duration" type="list">
+ <_short>Duration</_short>
+ <_long>Animation duration in seconds for shade effect.</_long>
+ <type>float</type>
+ <default>
+ <value>0.3</value>
+ </default>
<min>0.1</min>
<max>10</max>
- <precision>0.02</precision>
+ <precision>0.01</precision>
+ </option>
+ <option name="shade_match" type="list">
+ <_short>Window Match</_short>
+ <_long>Window that should animate with this effect when shaded.</_long>
+ <type>match</type>
+ <default>
+ <value>(type=Normal | Dialog | ModalDialog | Utility | Unknown)</value>
+ </default>
+ </option>
+ <option name="shade_options" type="list">
+ <_short> </_short>
+ <_long>(This part will be used in the near future. This place-holder is here now to prevent problems when it starts being used.)</_long>
+ <type>string</type>
+ <default>
+ <value></value>
+ </default>
</option>
- <option name="create2_random_effects" type="list">
- <_short>Random Effect Pool</_short>
- <_long>Pool of effects to be chosen from if Random effect is selected. Click reset to restore full list. If the list is empty, the default effect will be used.</_long>
+ </subgroup>
+
+ <subgroup>
+ <_short>Random Effects</_short>
+ <option name="shade_random_effects" type="list">
+ <_short>Pool</_short>
+ <_long>Pool of effects to be chosen from if Random effect is selected. Click reset to restore full list.</_long>
<type>int</type>
<min>0</min>
- <max>16</max>
+ <max>2</max>
<default>
<value>0</value>
<value>1</value>
<value>2</value>
- <value>3</value>
- <value>4</value>
- <value>5</value>
- <value>6</value>
- <value>7</value>
- <value>8</value>
- <value>9</value>
- <value>10</value>
- <value>11</value>
- <value>12</value>
- <value>13</value>
- <value>14</value>
- <value>15</value>
- <value>16</value>
</default>
<desc>
<value>0</value>
- <_name>Beam Up</_name>
+ <_name>Curved Fold</_name>
</desc>
<desc>
<value>1</value>
- <_name>Burn</_name>
+ <_name>Horizontal Folds</_name>
</desc>
<desc>
<value>2</value>
- <_name>Curved Fold</_name>
- </desc>
- <desc>
- <value>3</value>
- <_name>Domino</_name>
+ <_name>Roll Up</_name>
</desc>
+ </option>
+ </subgroup>
+
+ </group>
+
+ <group>
+ <_short>Focus Animation</_short>
+ <subgroup>
+ <_short>Animation Selection</_short>
+ <option name="focus_effect" type="list">
+ <_short>Focus Effect</_short>
+ <_long>The animation effect shown when focusing a window.</_long>
+ <type>int</type>
+ <min>0</min>
+ <max>3</max>
+ <default>
+ <value>0</value>
+ </default>
<desc>
- <value>4</value>
- <_name>Dream</_name>
+ <value>0</value>
+ <_name>None</_name>
</desc>
<desc>
- <value>5</value>
- <_name>Explode</_name>
+ <value>1</value>
+ <_name>Dodge</_name>
</desc>
<desc>
- <value>6</value>
+ <value>2</value>
<_name>Fade</_name>
</desc>
<desc>
- <value>7</value>
- <_name>Glide 1</_name>
- </desc>
- <desc>
- <value>8</value>
- <_name>Glide 2</_name>
- </desc>
- <desc>
- <value>9</value>
- <_name>Horizontal Folds</_name>
- </desc>
- <desc>
- <value>10</value>
- <_name>Leaf Spread</_name>
- </desc>
- <desc>
- <value>11</value>
- <_name>Magic Lamp</_name>
- </desc>
- <desc>
- <value>12</value>
- <_name>Razr</_name>
- </desc>
- <desc>
- <value>13</value>
- <_name>Sidekick</_name>
- </desc>
- <desc>
- <value>14</value>
- <_name>Vacuum</_name>
- </desc>
- <desc>
- <value>15</value>
+ <value>3</value>
<_name>Wave</_name>
</desc>
- <desc>
- <value>16</value>
- <_name>Zoom</_name>
- </desc>
</option>
- <option name="create2_match" type="match">
+ <option name="focus_duration" type="list">
+ <_short>Duration</_short>
+ <_long>Animation duration in seconds for focus effect.</_long>
+ <type>float</type>
+ <min>0.1</min>
+ <max>10</max>
+ <precision>0.01</precision>
+ <default>
+ <value>0.3</value>
+ </default>
+ </option>
+ <option name="focus_match" type="list">
<_short>Window Match</_short>
- <_long>Window that should animate with this effect when created.</_long>
- <default>(type=Menu | PopupMenu | DropdownMenu | Tooltip | Notification) & !(name=gnome-screensaver)</default>
+ <_long>Window that should animate with this effect when focused.</_long>
+ <type>match</type>
+ <default>
+ <value>(type=Normal | Dialog | ModalDialog | Utility | Unknown)</value>
+ </default>
</option>
- </subgroup>
- </group>
-
- <group>
- <_short>Minimize Animation</_short>
- <option name="minimize_effect" type="int">
- <_short>Minimize Effect</_short>
- <_long>The animation effect shown when minimizing a window.</_long>
- <min>0</min>
- <max>16</max>
- <default>13</default>
- <desc>
- <value>0</value>
- <_name>None</_name>
- </desc>
- <desc>
- <value>1</value>
- <_name>Random</_name>
- </desc>
- <desc>
- <value>2</value>
- <_name>Beam Up</_name>
- </desc>
- <desc>
- <value>3</value>
- <_name>Burn</_name>
- </desc>
- <desc>
- <value>4</value>
- <_name>Curved Fold</_name>
- </desc>
- <desc>
- <value>5</value>
- <_name>Domino</_name>
- </desc>
- <desc>
- <value>6</value>
- <_name>Dream</_name>
- </desc>
- <desc>
- <value>7</value>
- <_name>Explode</_name>
- </desc>
- <desc>
- <value>8</value>
- <_name>Fade</_name>
- </desc>
- <desc>
- <value>9</value>
- <_name>Glide 1</_name>
- </desc>
- <desc>
- <value>10</value>
- <_name>Glide 2</_name>
- </desc>
- <desc>
- <value>11</value>
- <_name>Horizontal Folds</_name>
- </desc>
- <desc>
- <value>12</value>
- <_name>Leaf Spread</_name>
- </desc>
- <desc>
- <value>13</value>
- <_name>Magic Lamp</_name>
- </desc>
- <desc>
- <value>14</value>
- <_name>Razr</_name>
- </desc>
- <desc>
- <value>15</value>
- <_name>Sidekick</_name>
- </desc>
- <desc>
- <value>16</value>
- <_name>Zoom</_name>
- </desc>
- </option>
- <option name="minimize_duration" type="float">
- <_short>Animation Duration</_short>
- <_long>Animation duration in seconds for minimize effect.</_long>
- <default>0.3</default>
- <min>0.1</min>
- <max>10</max>
- <precision>0.02</precision>
- </option>
- <option name="minimize_random_effects" type="list">
- <_short>Random Effect Pool</_short>
- <_long>Pool of effects to be chosen from if Random effect is selected. Click reset to restore full list. If the list is empty, the default effect will be used.</_long>
- <type>int</type>
- <min>0</min>
- <max>14</max>
- <default>
- <value>0</value>
- <value>1</value>
- <value>2</value>
- <value>3</value>
- <value>4</value>
- <value>5</value>
- <value>6</value>
- <value>7</value>
- <value>8</value>
- <value>9</value>
- <value>10</value>
- <value>11</value>
- <value>12</value>
- <value>13</value>
- <value>14</value>
- </default>
- <desc>
- <value>0</value>
- <_name>Beam Up</_name>
- </desc>
- <desc>
- <value>1</value>
- <_name>Burn</_name>
- </desc>
- <desc>
- <value>2</value>
- <_name>Curved Fold</_name>
- </desc>
- <desc>
- <value>3</value>
- <_name>Domino</_name>
- </desc>
- <desc>
- <value>4</value>
- <_name>Dream</_name>
- </desc>
- <desc>
- <value>5</value>
- <_name>Explode</_name>
- </desc>
- <desc>
- <value>6</value>
- <_name>Fade</_name>
- </desc>
- <desc>
- <value>7</value>
- <_name>Glide 1</_name>
- </desc>
- <desc>
- <value>8</value>
- <_name>Glide 2</_name>
- </desc>
- <desc>
- <value>9</value>
- <_name>Horizontal Folds</_name>
- </desc>
- <desc>
- <value>10</value>
- <_name>Leaf Spread</_name>
- </desc>
- <desc>
- <value>11</value>
- <_name>Magic Lamp</_name>
- </desc>
- <desc>
- <value>12</value>
- <_name>Razr</_name>
- </desc>
- <desc>
- <value>13</value>
- <_name>Sidekick</_name>
- </desc>
- <desc>
- <value>14</value>
- <_name>Zoom</_name>
- </desc>
- </option>
- <option name="minimize_match" type="match">
- <_short>Window Match</_short>
- <_long>The windows that will be animated.</_long>
- <default>(type=Normal | Dialog | ModalDialog | Utility | Unknown)</default>
- </option>
- </group>
-
- <group>
- <_short>Shade Animation</_short>
- <option name="shade_effect" type="int">
- <_short>Shade Effect</_short>
- <_long>The animation effect shown when shading a window.</_long>
- <min>0</min>
- <max>4</max>
- <default>4</default>
- <desc>
- <value>0</value>
- <_name>None</_name>
- </desc>
- <desc>
- <value>1</value>
- <_name>Random</_name>
- </desc>
- <desc>
- <value>2</value>
- <_name>Curved Fold</_name>
- </desc>
- <desc>
- <value>3</value>
- <_name>Horizontal Folds</_name>
- </desc>
- <desc>
- <value>4</value>
- <_name>Roll Up</_name>
- </desc>
- </option>
- <option name="shade_duration" type="float">
- <_short>Animation Duration</_short>
- <_long>Animation duration in seconds for shade effect.</_long>
- <default>0.3</default>
- <min>0.1</min>
- <max>10</max>
- <precision>0.02</precision>
- </option>
- <option name="shade_random_effects" type="list">
- <_short>Random Effect Pool</_short>
- <_long>Pool of effects to be chosen from if Random effect is selected. Click reset to restore full list. If the list is empty, the default effect will be used.</_long>
- <type>int</type>
- <min>0</min>
- <max>2</max>
- <default>
- <value>0</value>
- <value>1</value>
- <value>2</value>
- </default>
- <desc>
- <value>0</value>
- <_name>Curved Fold</_name>
- </desc>
- <desc>
- <value>1</value>
- <_name>Horizontal Folds</_name>
- </desc>
- <desc>
- <value>2</value>
- <_name>Roll Up</_name>
- </desc>
- </option>
- <option name="shade_match" type="match">
- <_short>Window Match</_short>
- <_long>Window that should animate with this effect when shaded.</_long>
- <default>(type=Normal | Dialog | ModalDialog | Utility | Unknown)</default>
- </option>
- </group>
-
- <group>
- <_short>Focus Animation</_short>
- <option name="focus_effect" type="int">
- <_short>Focus Effect</_short>
- <_long>The animation effect shown when focusing a window.</_long>
- <min>0</min>
- <max>3</max>
- <default>0</default>
- <desc>
- <value>0</value>
- <_name>None</_name>
- </desc>
- <desc>
- <value>1</value>
- <_name>Dodge</_name>
- </desc>
- <desc>
- <value>2</value>
- <_name>Fade</_name>
- </desc>
- <desc>
- <value>3</value>
- <_name>Wave</_name>
- </desc>
- </option>
- <option name="focus_duration" type="float">
- <_short>Animation Duration</_short>
- <_long>Animation duration in seconds for focus effect.</_long>
- <default>0.3</default>
- <min>0.1</min>
- <max>10</max>
- <precision>0.02</precision>
- </option>
- <option name="focus_match" type="match">
- <_short>Window Match</_short>
- <_long>Window that should animate with this effect when focused.</_long>
- <default>(type=Normal | Dialog | ModalDialog | Utility | Unknown)</default>
- </option>
+ <option name="focus_options" type="list">
+ <_short> </_short>
+ <_long>(This part will be used in the near future. This place-holder is here now to prevent problems when it starts being used.)</_long>
+ <type>string</type>
+ <default>
+ <value></value>
+ </default>
+ </option>
+ </subgroup>
</group>
<group>
@@ -1305,7 +1051,7 @@
</desc>
<desc>
<value>2</value>
- <_name>Create/Close Only</_name>
+ <_name>Open/Close Only</_name>
</desc>
<desc>
<value>3</value>
@@ -1365,7 +1111,7 @@
</desc>
<desc>
<value>2</value>
- <_name>Create/Close Only</_name>
+ <_name>Open/Close Only</_name>
</desc>
<desc>
<value>3</value>
@@ -1382,7 +1128,7 @@
<default>0.5</default>
<min>0</min>
<max>1</max>
- <precision>0.02</precision>
+ <precision>0.01</precision>
</option>
</subgroup>
@@ -1403,7 +1149,7 @@
<default>0.7</default>
<min>0.02</min>
<max>3</max>
- <precision>0.02</precision>
+ <precision>0.01</precision>
</option>
<option name="wave_amp" type="float">
<_short>Wave Amplitude</_short>
@@ -1452,9 +1198,9 @@
<max>2000</max>
<precision>5</precision>
</option>
- <option name="magic_lamp_create_start_width" type="int">
- <_short>Magic Lamp Create Start Width</_short>
- <_long>Starting width of create effect and ending width of close effect for Magic Lamp.</_long>
+ <option name="magic_lamp_open_start_width" type="int">
+ <_short>Magic Lamp Open Start Width</_short>
+ <_long>Starting width of open effect and ending width of close effect for Magic Lamp.</_long>
<default>30</default>
<min>0</min>
<max>500</max>
@@ -1475,9 +1221,9 @@
<min>2</min>
<max>200</max>
</option>
- <option name="vacuum_create_start_width" type="int">
- <_short>Vacuum Create Start Width</_short>
- <_long>Starting width of create effect and ending width of close effect for Vacuum.</_long>
+ <option name="vacuum_open_start_width" type="int">
+ <_short>Vacuum Open Start Width</_short>
+ <_long>Starting width of open effect and ending width of close effect for Vacuum.</_long>
<default>30</default>
<min>0</min>
<max>500</max>
@@ -1660,4 +1406,3 @@
</screen>
</plugin>
</compiz>
-
Modified: fusion/plugins/animation/beamup.c
===================================================================
--- fusion/plugins/animation/beamup.c
+++ fusion/plugins/animation/beamup.c
@@ -199,7 +199,7 @@ Bool fxBeamUpModelStep(CompScreen * s, CompWindow * w, float time)
stepSize = new - old;
- if (aw->curWindowEvent == WindowEventCreate ||
+ if (aw->curWindowEvent == WindowEventOpen ||
aw->curWindowEvent == WindowEventUnminimize ||
aw->curWindowEvent == WindowEventUnshade)
{
@@ -286,7 +286,7 @@ fxBeamupUpdateWindowAttrib(AnimScreen * as,
forwardProgress = MIN(forwardProgress, 1);
forwardProgress = MAX(forwardProgress, 0);
- if (aw->curWindowEvent == WindowEventCreate ||
+ if (aw->curWindowEvent == WindowEventOpen ||
aw->curWindowEvent == WindowEventUnminimize)
{
forwardProgress = forwardProgress * forwardProgress;
Modified: fusion/plugins/animation/burn.c
===================================================================
--- fusion/plugins/animation/burn.c
+++ fusion/plugins/animation/burn.c
@@ -295,7 +295,7 @@ Bool fxBurnModelStep(CompScreen * s, CompWindow * w, float time)
stepSize = new - old;
- if (aw->curWindowEvent == WindowEventCreate ||
+ if (aw->curWindowEvent == WindowEventOpen ||
aw->curWindowEvent == WindowEventUnminimize ||
aw->curWindowEvent == WindowEventUnshade)
{
Modified: fusion/plugins/animation/curvedfold.c
===================================================================
--- fusion/plugins/animation/curvedfold.c
+++ fusion/plugins/animation/curvedfold.c
@@ -158,7 +158,7 @@ fxFoldUpdateWindowAttrib(AnimScreen * as,
{
ANIM_WINDOW(w);
- if (aw->curWindowEvent == WindowEventCreate ||
+ if (aw->curWindowEvent == WindowEventOpen ||
aw->curWindowEvent == WindowEventClose ||
((aw->curWindowEvent == WindowEventMinimize ||
aw->curWindowEvent == WindowEventUnminimize) &&
Modified: fusion/plugins/animation/magiclamp.c
===================================================================
--- fusion/plugins/animation/magiclamp.c
+++ fusion/plugins/animation/magiclamp.c
@@ -296,7 +296,7 @@ Bool fxMagicLampModelStep(CompScreen * s, CompWindow * w, float time)
Model *model = aw->model;
- if ((aw->curWindowEvent == WindowEventCreate ||
+ if ((aw->curWindowEvent == WindowEventOpen ||
aw->curWindowEvent == WindowEventClose) &&
((aw->curAnimEffect == AnimEffectMagicLamp &&
as->opt[ANIM_SCREEN_OPTION_MAGIC_LAMP_MOVING_END].value.b) ||
Modified: fusion/plugins/animation/zoomside.c
===================================================================
--- fusion/plugins/animation/zoomside.c
+++ fusion/plugins/animation/zoomside.c
@@ -79,7 +79,7 @@ void fxZoomInit(CompScreen * s, CompWindow * w)
aw->curWindowEvent == WindowEventUnminimize) &&
as->opt[ANIM_SCREEN_OPTION_SIDEKICK_ZOOM_FROM_CENTER].value.i ==
ZoomFromCenterMin) ||
- ((aw->curWindowEvent == WindowEventCreate ||
+ ((aw->curWindowEvent == WindowEventOpen ||
aw->curWindowEvent == WindowEventClose) &&
as->opt[ANIM_SCREEN_OPTION_SIDEKICK_ZOOM_FROM_CENTER].value.i ==
ZoomFromCenterCreate))) ||
@@ -90,7 +90,7 @@ void fxZoomInit(CompScreen * s, CompWindow * w)
aw->curWindowEvent == WindowEventUnminimize) &&
as->opt[ANIM_SCREEN_OPTION_ZOOM_FROM_CENTER].value.i ==
ZoomFromCenterMin) ||
- ((aw->curWindowEvent == WindowEventCreate ||
+ ((aw->curWindowEvent == WindowEventOpen ||
aw->curWindowEvent == WindowEventClose) &&
as->opt[ANIM_SCREEN_OPTION_ZOOM_FROM_CENTER].value.i ==
ZoomFromCenterCreate))))
@@ -103,14 +103,14 @@ void fxZoomInit(CompScreen * s, CompWindow * w)
// allow extra time for spring damping / deceleration
if ((aw->curWindowEvent == WindowEventUnminimize ||
- aw->curWindowEvent == WindowEventCreate) &&
+ aw->curWindowEvent == WindowEventOpen) &&
fxZoomGetSpringiness(as, aw) > 1e-4)
{
aw->animTotalTime /= SPRINGY_ZOOM_PERCEIVED_T;
}
else if ((aw->curAnimEffect == AnimEffectZoom ||
aw->curAnimEffect == AnimEffectSidekick) &&
- (aw->curWindowEvent == WindowEventCreate ||
+ (aw->curWindowEvent == WindowEventOpen ||
aw->curWindowEvent == WindowEventClose))
{
aw->animTotalTime /= NONSPRINGY_ZOOM_PERCEIVED_T;
@@ -141,13 +141,13 @@ void fxZoomAnimProgress(AnimScreen * as,
int animProgressDir = 1;
if (aw->curWindowEvent == WindowEventUnminimize ||
- aw->curWindowEvent == WindowEventCreate)
+ aw->curWindowEvent == WindowEventOpen)
animProgressDir = 2;
if (aw->animOverrideProgressDir != 0)
animProgressDir = aw->animOverrideProgressDir;
if ((animProgressDir == 1 &&
(aw->curWindowEvent == WindowEventUnminimize ||
- aw->curWindowEvent == WindowEventCreate)) ||
+ aw->curWindowEvent == WindowEventOpen)) ||
(animProgressDir == 2 &&
(aw->curWindowEvent == WindowEventMinimize ||
aw->curWindowEvent == WindowEventClose)))
@@ -171,7 +171,7 @@ void fxZoomAnimProgress(AnimScreen * as,
// springy only when appearing
if ((aw->curWindowEvent == WindowEventUnminimize ||
- aw->curWindowEvent == WindowEventCreate) &&
+ aw->curWindowEvent == WindowEventOpen) &&
!neverSpringy)
{
springiness = fxZoomGetSpringiness(as, aw);
@@ -203,14 +203,14 @@ void fxZoomAnimProgress(AnimScreen * as,
*moveProgress = nonSpringyProgress;
}
if (aw->curWindowEvent == WindowEventUnminimize ||
- aw->curWindowEvent == WindowEventCreate)
+ aw->curWindowEvent == WindowEventOpen)
*moveProgress = 1 - *moveProgress;
if (backwards)
*moveProgress = 1 - *moveProgress;
float scProgress = nonSpringyProgress;
if (aw->curWindowEvent == WindowEventUnminimize ||
- aw->curWindowEvent == WindowEventCreate)
+ aw->curWindowEvent == WindowEventOpen)
scProgress = 1 - scProgress;
if (backwards)
scProgress = 1 - scProgress;
@@ -284,7 +284,7 @@ fxZoomUpdateWindowTransform(CompScreen *s, CompWindow *w, CompTransform *wTransf
if (fxZoomGetSpringiness(as, aw) == 0.0f &&
(aw->curAnimEffect == AnimEffectZoom ||
aw->curAnimEffect == AnimEffectSidekick) &&
- (aw->curWindowEvent == WindowEventCreate ||
+ (aw->curWindowEvent == WindowEventOpen ||
aw->curWindowEvent == WindowEventClose))
{
matrixTranslate (wTransform,
More information about the commits
mailing list