diff --git a/lib/BackgroundManager.vala b/lib/BackgroundManager.vala new file mode 100644 index 00000000..a67fbec2 --- /dev/null +++ b/lib/BackgroundManager.vala @@ -0,0 +1,8 @@ +/* + * SPDX-License-Identifier: GPL-3.0-or-later + * SPDX-FileCopyrightText: 2024 elementary, Inc. (https://elementary.io) + */ + +public interface Gala.BackgroundManagerInterface : Meta.BackgroundGroup { + public abstract Meta.BackgroundActor newest_background_actor { get; } +} diff --git a/lib/meson.build b/lib/meson.build index 8e4f5608..6edf4cd6 100644 --- a/lib/meson.build +++ b/lib/meson.build @@ -3,6 +3,7 @@ gala_lib_sources = files( 'App.vala', 'AppCache.vala', 'AppSystem.vala', + 'BackgroundManager.vala', 'CloseButton.vala', 'Constants.vala', 'DragDropAction.vala', diff --git a/src/Background/BackgroundManager.vala b/src/Background/BackgroundManager.vala index d39abe69..9ff1dd97 100644 --- a/src/Background/BackgroundManager.vala +++ b/src/Background/BackgroundManager.vala @@ -4,7 +4,7 @@ * 2014 Tom Beckmann */ -public class Gala.BackgroundManager : Meta.BackgroundGroup { +public class Gala.BackgroundManager : Meta.BackgroundGroup, Gala.BackgroundManagerInterface { private const double DIM_OPACITY = 0.55; private const int FADE_ANIMATION_TIME = 1000; @@ -13,6 +13,11 @@ public class Gala.BackgroundManager : Meta.BackgroundGroup { public WindowManager wm { get; construct; } public int monitor_index { get; construct; } public bool control_position { get; construct; } + public Meta.BackgroundActor newest_background_actor { + get { + return (new_background_actor != null) ? new_background_actor : background_actor; + } + } private BackgroundSource background_source; private Meta.BackgroundActor background_actor; @@ -64,15 +69,14 @@ public class Gala.BackgroundManager : Meta.BackgroundGroup { transition.remove_on_complete = true; transition.completed.connect (() => { old_background_actor.destroy (); - - changed (); }); old_background_actor.add_transition ("fade-out", transition); } else { old_background_actor.destroy (); - changed (); } + + changed (); } private void update_background_actor (bool animate = true) {