summaryrefslogtreecommitdiff
path: root/src/core/window.c
diff options
context:
space:
mode:
authorClement Lefebvre <[email protected]>2015-11-16 12:28:55 +0000
committerClement Lefebvre <[email protected]>2015-11-16 12:28:55 +0000
commit2153a1cc972d71b68e165680e2c09ddffc820498 (patch)
tree30956de0085aa456dab9a00c1026cbee9b1f6d38 /src/core/window.c
parent228390697c5b89aee45796677cf1c98a8b50ba97 (diff)
parent3ed3babc3ed31c7b03f7475205acc6c5e52bac81 (diff)
downloadmarco-2153a1cc972d71b68e165680e2c09ddffc820498.tar.bz2
marco-2153a1cc972d71b68e165680e2c09ddffc820498.tar.xz
Merge pull request #231 from mate-desktop/we-dont-need-no-animation
Revert animation changes
Diffstat (limited to 'src/core/window.c')
-rw-r--r--src/core/window.c183
1 files changed, 75 insertions, 108 deletions
diff --git a/src/core/window.c b/src/core/window.c
index 08bf58ac..461d38fb 100644
--- a/src/core/window.c
+++ b/src/core/window.c
@@ -483,7 +483,6 @@ meta_window_new_with_attrs (MetaDisplay *display,
window->minimized = FALSE;
window->was_minimized = FALSE;
window->tab_unminimized = FALSE;
- window->effect_pending = META_EFFECT_NONE;
window->iconic = FALSE;
window->mapped = attrs->map_state != IsUnmapped;
/* if already mapped, no need to worry about focus-on-first-time-showing */
@@ -1460,119 +1459,80 @@ static void
finish_minimize (gpointer data)
{
MetaWindow *window = data;
+ /* FIXME: It really sucks to put timestamp pinging here; it'd
+ * probably make more sense in implement_showing() so that it's at
+ * least not duplicated in meta_window_show; but since
+ * finish_minimize is a callback making things just slightly icky, I
+ * haven't done that yet.
+ */
+ guint32 timestamp = meta_display_get_current_time_roundtrip (window->display);
- window->effect_pending = META_EFFECT_NONE;
-}
-
-static void
-finish_unminimize (gpointer data)
-{
- MetaWindow *window = data;
-
- meta_window_show (window);
- window->was_minimized = FALSE;
- window->effect_pending = META_EFFECT_NONE;
-}
-
-static void
-meta_window_animate_minimize (MetaWindow *window)
-{
- MetaRectangle icon_rect, window_rect;
- gboolean result;
-
- /* Check if the window has an icon geometry */
- result = meta_window_get_icon_geometry (window, &icon_rect);
-
- if (!result)
+ meta_window_hide (window);
+ if (window->has_focus)
{
- /* just animate into the corner somehow - maybe
- * not a good idea...
- */
- icon_rect.x = window->screen->rect.width;
- icon_rect.y = window->screen->rect.height;
- icon_rect.width = 1;
- icon_rect.height = 1;
+ meta_workspace_focus_default_window (window->screen->active_workspace,
+ window,
+ timestamp);
}
-
- meta_window_get_outer_rect (window, &window_rect);
-
- meta_effect_run_minimize (window,
- &window_rect,
- &icon_rect,
- finish_minimize,
- window);
}
static void
-meta_window_animate_unminimize (MetaWindow *window)
+implement_showing (MetaWindow *window,
+ gboolean showing)
{
- MetaRectangle icon_rect, window_rect;
- gboolean result;
-
- /* Check if the window has an icon geometry */
- result = meta_window_get_icon_geometry (window, &icon_rect);
+ /* Actually show/hide the window */
+ meta_verbose ("Implement showing = %d for window %s\n",
+ showing, window->desc);
- if (!result)
+ if (!showing)
{
- /* just animate into the corner somehow - maybe
- * not a good idea...
+ gboolean on_workspace;
+
+ on_workspace = meta_window_located_on_workspace (window,
+ window->screen->active_workspace);
+
+ /* Really this effects code should probably
+ * be in meta_window_hide so the window->mapped
+ * test isn't duplicated here. Anyhow, we animate
+ * if we are mapped now, we are supposed to
+ * be minimized, and we are on the current workspace.
*/
- icon_rect.x = window->screen->rect.width;
- icon_rect.y = window->screen->rect.height;
- icon_rect.width = 1;
- icon_rect.height = 1;
- }
+ if (on_workspace && window->minimized && window->mapped &&
+ !meta_prefs_get_reduced_resources ())
+ {
+ MetaRectangle icon_rect, window_rect;
+ gboolean result;
- meta_window_get_outer_rect (window, &window_rect);
+ /* Check if the window has an icon geometry */
+ result = meta_window_get_icon_geometry (window, &icon_rect);
- meta_effect_run_unminimize (window,
- &window_rect,
- &icon_rect,
- finish_unminimize,
- window);
-}
+ if (!result)
+ {
+ /* just animate into the corner somehow - maybe
+ * not a good idea...
+ */
+ icon_rect.x = window->screen->rect.width;
+ icon_rect.y = window->screen->rect.height;
+ icon_rect.width = 1;
+ icon_rect.height = 1;
+ }
-static void
-implement_showing (MetaWindow *window,
- gboolean showing)
-{
- /* Actually show/hide the window */
- meta_verbose ("Implement showing = %d for window %s with effect pending %i\n",
- showing, window->desc, window->effect_pending);
+ meta_window_get_outer_rect (window, &window_rect);
- if (!showing)
- {
- /* Handle pending effects */
- switch(window->effect_pending)
- {
- case META_EFFECT_MINIMIZE:
- /* First hide the window and then animate */
- meta_window_hide(window);
- meta_window_animate_minimize (window);
- break;
- case META_EFFECT_UNMINIMIZE:
- case META_EFFECT_NONE:
- default:
- meta_window_hide(window);
- break;
- }
+ meta_effect_run_minimize (window,
+ &window_rect,
+ &icon_rect,
+ finish_minimize,
+ window);
+ }
+ else
+ {
+ finish_minimize (window);
+ }
}
else
{
- /* Handle pending effects */
- switch(window->effect_pending)
- {
- case META_EFFECT_MINIMIZE:
- break;
- case META_EFFECT_UNMINIMIZE:
- /* First animate then show the window */
- meta_window_animate_unminimize (window);
- break;
- case META_EFFECT_NONE:
- default:
- meta_window_show (window);
- break;
- }
+ meta_window_show (window);
}
}
@@ -2335,6 +2295,24 @@ meta_window_show (MetaWindow *window)
XMapWindow (window->display->xdisplay, window->xwindow);
meta_error_trap_pop (window->display, FALSE);
did_show = TRUE;
+
+ if (window->was_minimized)
+ {
+ MetaRectangle window_rect;
+ MetaRectangle icon_rect;
+
+ window->was_minimized = FALSE;
+
+ if (meta_window_get_icon_geometry (window, &icon_rect))
+ {
+ meta_window_get_outer_rect (window, &window_rect);
+
+ meta_effect_run_unminimize (window,
+ &window_rect,
+ &icon_rect,
+ NULL, NULL);
+ }
+ }
}
if (window->iconic)
@@ -2373,10 +2351,6 @@ meta_window_show (MetaWindow *window)
meta_display_increment_focus_sentinel (window->display);
}
}
- else if (window->was_minimized)
- {
- meta_window_focus(window, timestamp);
- }
set_net_wm_state (window);
@@ -2463,8 +2437,6 @@ meta_window_minimize (MetaWindow *window)
if (!window->minimized)
{
window->minimized = TRUE;
- /* Flag minimize effect pending */
- window->effect_pending = META_EFFECT_MINIMIZE;
meta_window_queue(window, META_QUEUE_CALC_SHOWING);
meta_window_foreach_transient (window,
@@ -2484,8 +2456,6 @@ meta_window_minimize (MetaWindow *window)
window->desc);
}
}
-
- /* Should insert minimize effect here? */
}
void
@@ -2495,15 +2465,12 @@ meta_window_unminimize (MetaWindow *window)
{
window->minimized = FALSE;
window->was_minimized = TRUE;
- window->effect_pending = META_EFFECT_UNMINIMIZE;
meta_window_queue(window, META_QUEUE_CALC_SHOWING);
meta_window_foreach_transient (window,
queue_calc_showing_func,
NULL);
}
-
- /* Should insert unminimize effect here? */
}
static void