From 6f96de50c272f160ad6237f9e0bc72e74b184952 Mon Sep 17 00:00:00 2001
From: David Maciejak <david.maciejak@gmail.com>
Date: Fri, 22 Aug 2014 06:31:32 +0700
Subject: [PATCH] wmaker: src/action.c merge duplicate code

This patch is merging some duplicate code related
to animation position.
---
 src/actions.c | 110 ++++++++++++++++++++++++++--------------------------------
 1 file changed, 50 insertions(+), 60 deletions(-)

diff --git a/src/actions.c b/src/actions.c
index ae326a1..8a5ff82 100644
--- a/src/actions.c
+++ b/src/actions.c
@@ -60,12 +60,12 @@ static struct {
 	int steps;
 	int delay;
 } shadePars[5] = {
-	{
-	SHADE_STEPS_UF, SHADE_DELAY_UF}, {
-	SHADE_STEPS_F, SHADE_DELAY_F}, {
-	SHADE_STEPS_M, SHADE_DELAY_M}, {
-	SHADE_STEPS_S, SHADE_DELAY_S}, {
-SHADE_STEPS_US, SHADE_DELAY_US}};
+	{ SHADE_STEPS_UF, SHADE_DELAY_UF },
+	{ SHADE_STEPS_F, SHADE_DELAY_F },
+	{ SHADE_STEPS_M, SHADE_DELAY_M },
+	{ SHADE_STEPS_S, SHADE_DELAY_S },
+	{ SHADE_STEPS_US, SHADE_DELAY_US }
+};
 
 #define UNSHADE         0
 #define SHADE           1
@@ -84,7 +84,8 @@ static int compareTimes(Time t1, Time t2)
 #ifdef ANIMATIONS
 static void shade_animate(WWindow *wwin, Bool what);
 #else
-static inline void shade_animate(WWindow *wwin, Bool what) {
+static inline void shade_animate(WWindow *wwin, Bool what)
+{
 	/*
 	 * This function is empty on purpose, so tell the compiler
 	 * to not warn about parameters being not used
@@ -291,9 +292,9 @@ void wUnshadeWindow(WWindow *wwin)
 static void save_old_geometry(WWindow *wwin, int directions)
 {
 	/* never been saved? */
-	if (! wwin->old_geometry.width)
+	if (!wwin->old_geometry.width)
 		directions |= SAVE_GEOMETRY_X | SAVE_GEOMETRY_WIDTH;
-	if (! wwin->old_geometry.height)
+	if (!wwin->old_geometry.height)
 		directions |= SAVE_GEOMETRY_Y | SAVE_GEOMETRY_HEIGHT;
 
 	if (directions & SAVE_GEOMETRY_X)
@@ -584,8 +585,7 @@ static void find_Maximus_geometry(WWindow *wwin, WArea usableArea, int *new_x, i
 		remember_geometry(wwin, &orig.left, &orig.top, &orig.width, &orig.height);
 		orig.bottom = orig.top + orig.height;
 		orig.right = orig.left + orig.width;
-	}
-	else
+	} else
 		set_window_coords(wwin, &orig);
 
 	/* Try to fully maximize first, then readjust later */
@@ -862,6 +862,7 @@ animateResizeTwist(WScreen *scr, int x, int y, int w, int h, int fx, int fy, int
 		points[3].y = cy + sin(angle + a + WM_PI) * d;
 		points[4].x = cx + cos(angle - a) * d;
 		points[4].y = cy + sin(angle - a) * d;
+
 		XGrabServer(dpy);
 		XDrawLines(dpy, scr->root_win, scr->frame_gc, points, 5, CoordModeOrigin);
 		XFlush(dpy);
@@ -1038,7 +1039,7 @@ static void mapTransientsFor(WWindow *wwin)
 	}
 }
 
-static WWindow *recursiveTransientFor(WWindow * wwin)
+static WWindow *recursiveTransientFor(WWindow *wwin)
 {
 	int i;
 
@@ -1060,7 +1061,35 @@ static WWindow *recursiveTransientFor(WWindow * wwin)
 	return wwin;
 }
 
-void wIconifyWindow(WWindow * wwin)
+static int getAnimationGeometry(WWindow *wwin, int *ix, int *iy, int *iw, int *ih)
+{
+	if (!wwin->screen_ptr->flags.startup && !wPreferences.no_animations
+		&& !wwin->flags.skip_next_animation && wwin->icon != NULL) {
+		if (!wPreferences.disable_miniwindows
+		    && !wwin->flags.net_handle_icon) {
+			*ix = wwin->icon_x;
+			*iy = wwin->icon_y;
+			*iw = wwin->icon->core->width;
+			*ih = wwin->icon->core->height;
+		} else {
+			if (wwin->flags.net_handle_icon) {
+				*ix = wwin->icon_x;
+				*iy = wwin->icon_y;
+				*iw = wwin->icon_w;
+				*ih = wwin->icon_h;
+			} else {
+				*ix = 0;
+				*iy = 0;
+				*iw = wwin->screen_ptr->scr_width;
+				*ih = wwin->screen_ptr->scr_height;
+			}
+		}
+		return 1;
+	}
+	return 0;
+}
+
+void wIconifyWindow(WWindow *wwin)
 {
 	XWindowAttributes attribs;
 	int present;
@@ -1137,6 +1166,9 @@ void wIconifyWindow(WWindow * wwin)
 	unmapTransientsFor(wwin);
 
 	if (present) {
+#ifdef ANIMATIONS
+		int ix, iy, iw, ih;
+#endif
 		XUngrabPointer(dpy, CurrentTime);
 		wWindowUnmap(wwin);
 		/* let all Expose events arrive so that we can repaint
@@ -1150,28 +1182,7 @@ void wIconifyWindow(WWindow * wwin)
 
 		flushExpose();
 #ifdef ANIMATIONS
-		if (!wwin->screen_ptr->flags.startup && !wwin->flags.skip_next_animation
-		    && !wPreferences.no_animations) {
-			int ix, iy, iw, ih;
-
-			if (!wPreferences.disable_miniwindows && !wwin->flags.net_handle_icon) {
-				ix = wwin->icon_x;
-				iy = wwin->icon_y;
-				iw = wwin->icon->core->width;
-				ih = wwin->icon->core->height;
-			} else {
-				if (wwin->flags.net_handle_icon) {
-					ix = wwin->icon_x;
-					iy = wwin->icon_y;
-					iw = wwin->icon_w;
-					ih = wwin->icon_h;
-				} else {
-					ix = 0;
-					iy = 0;
-					iw = wwin->screen_ptr->scr_width;
-					ih = wwin->screen_ptr->scr_height;
-				}
-			}
+		if (getAnimationGeometry(wwin, &ix, &iy, &iw, &ih)) {
 			animateResize(wwin->screen_ptr, wwin->frame_x, wwin->frame_y,
 				      wwin->frame->core->width, wwin->frame->core->height, ix, iy, iw, ih);
 		}
@@ -1291,34 +1302,13 @@ void wDeiconifyWindow(WWindow *wwin)
 	/* if the window is in another workspace, do it silently */
 	if (!netwm_hidden) {
 #ifdef ANIMATIONS
-		if (!wwin->screen_ptr->flags.startup && !wPreferences.no_animations
-		    && !wwin->flags.skip_next_animation && wwin->icon != NULL) {
-			int ix, iy, iw, ih;
-
-			if (!wPreferences.disable_miniwindows
-			    && !wwin->flags.net_handle_icon) {
-				ix = wwin->icon_x;
-				iy = wwin->icon_y;
-				iw = wwin->icon->core->width;
-				ih = wwin->icon->core->height;
-			} else {
-				if (wwin->flags.net_handle_icon) {
-					ix = wwin->icon_x;
-					iy = wwin->icon_y;
-					iw = wwin->icon_w;
-					ih = wwin->icon_h;
-				} else {
-					ix = 0;
-					iy = 0;
-					iw = wwin->screen_ptr->scr_width;
-					ih = wwin->screen_ptr->scr_height;
-				}
-			}
+		int ix, iy, iw, ih;
+		if (getAnimationGeometry(wwin, &ix, &iy, &iw, &ih)) {
 			animateResize(wwin->screen_ptr, ix, iy, iw, ih,
 				      wwin->frame_x, wwin->frame_y,
 				      wwin->frame->core->width, wwin->frame->core->height);
 		}
-#endif	/* ANIMATIONS */
+#endif
 		wwin->flags.skip_next_animation = 0;
 		XGrabServer(dpy);
 		if (!wwin->flags.shaded)
@@ -1970,7 +1960,7 @@ static void shade_animate(WWindow *wwin, Bool what)
 	if (wwin->flags.skip_next_animation || wPreferences.no_animations)
 		return;
 
-	switch(what) {
+	switch (what) {
 	case SHADE:
 		if (!wwin->screen_ptr->flags.startup) {
 			/* do the shading animation */
-- 
1.8.3.2

