Commit Graph

381 Commits

Author SHA1 Message Date
Robert Bragg
0058271aaa Re-works the approach to supporting live preview to handle stacking.
We can't easily use a metacity layer to hide windows as that means we
loose our original stacking position. (Metacity's stack positions are
only valid within a single layer) We now have a "guard window" per
screen that is a fullscreen override redirect that is lowered to the
bottom of the stack. Hidden windows now remain in their original layer
so the stacking position remains valid, but all hidden windows get
XRestacked under the guard window.

A new compositor hook is also added to inform it when a window becomes
hidden/unhidded, this lets us map/unmap the corresponding actor.

missing files in preview commit (TODO: rebase -i and squash this later)
2008-11-03 14:50:22 +00:00
Robert Bragg
368346571a Ensure window->compositor_private is initialised in meta_window_new_with_attrs 2008-10-31 12:57:47 +00:00
Robert Bragg
6d8baea4c2 [stacking] Simplifies the way compositor code has to handle stacking
The compositor now gets handed a GList of MetaWindows when the stacking
gets syncd with the X server.
2008-10-30 22:09:48 +00:00
Tomas Frydrych
ce2bfc008d mutter_window_get_description()
Human redable description useful for debugging, now accessible to plugins and
  and also for override redirect windows.
2008-10-30 08:30:42 +00:00
Tomas Frydrych
07c1003905 Live previews for hidden windows.
ClutterActors for hidden windows (such windows on different than active
workspaces and windows that are minimized) are available, and reflect the
actual state of the window. This is intended for use in task-switchers etc.

This feature is disabled by default (due to increased demand on resources),
and can be enabled through the metacity/general/live_hidden_windows gconf key.

A trivial sample window switcher is included in the scratch plugin (activated
by clicking on the slide out panel).
2008-10-24 10:07:24 +01:00
Thomas Thurman
ab9bdf228b Support _NET_WM_STATE_STICKY (i.e. allow third-party apps to decide
2008-10-23  Thomas Thurman  <tthurman@gnome.org>

        Support _NET_WM_STATE_STICKY (i.e. allow third-party apps to decide
        whether a window is on all workspaces).  Bug found by Ka-Hing
        Cheung.  Closes #557536.

        * src/core/window.c (set_net_wm_state): report it
        * src/core/window.c (meta_window_client_message): set sticky
          if we receive it
        * src/core/window-props.c: set sticky if we find it
        * src/core/atomnames.h: add _NET_WM_STATE_STICKY


svn path=/trunk/; revision=3991
2008-10-23 04:09:14 +00:00
Thomas Thurman
f186d90dd3 minimised windows are necessarily obscured.
2008-10-22  Thomas Thurman  <tthurman@gnome.org>

        * src/core/window.c (meta_window_set_demands_attention): minimised
          windows are necessarily obscured.


svn path=/trunk/; revision=3971
2008-10-22 03:21:23 +00:00
Robert Bragg
f65d898f80 Merge branch 'master' into bob/clutter
Conflicts:

	src/core/prefs.c
	src/include/prefs.h
2008-10-06 12:54:34 +01:00
William Lachance
a49f986c67 Pass modified mouse button events down to panel windows instead of dealing
2008-10-06  William Lachance  <wrlach@gmail.com>

        Pass modified mouse button events down to panel windows
        instead of dealing with them ourselves.  Closes #554428.

        * src/core/display.c (prefs_changed_callback): don't grab mouse
          buttons on panels
        * src/core/window.c (meta_window_new_with_attrs): ditto


svn path=/trunk/; revision=3942
2008-10-06 01:34:17 +00:00
Tomas Frydrych
9b3a0d1ad8 Basic plugin infastructure and a sample simple plugin. 2008-09-18 16:09:11 +01:00
Tomas Frydrych
438ac55cb1 update to upstream 2.25.1
Merge commit '49cc773eb4801fb0ee3cddeeb1d27042f4a46e2e' into clutter
2008-09-03 19:48:23 +01:00
Thomas Thurman
9c82331009 moving all messages about properties to the top, as a start at #549886
2008-08-30  Thomas Thurman  <tthurman@gnome.org>

        * src/core/window.c (process_property_notify): moving all
	messages about properties to the top, as a start at #549886


svn path=/trunk/; revision=3837
2008-08-30 21:37:13 +00:00
Tomas Frydrych
1f29679c0d Basic CM minimize effect
Added minimize hook to the compositor, hooked up into MetaWindow, implemented
in the clutter compositor.
2008-08-19 11:47:30 +01:00
Tomas Frydrych
e6e6aecb93 Exposed MetaWindowType so it can be used by compositor backends.
meta_window_get_type:
meta_window_get_type_atom:
Accessors for window type/type atom.
2008-08-18 15:42:38 +01:00
Tomas Frydrych
e1965914a3 Synced with Metacity 2.23.89 (r3800)
Merge commit '51de9ef8605f7a195ef360afb3a504488125611f' into clutter
2008-08-18 11:11:32 +01:00
Ted Percival
4fb40b57a9 Ensure the user_rect is set sanely for windows that start maximized.
2008-08-16  Ted Percival  <ted@midg3t.net>

        Ensure the user_rect is set sanely for windows that start maximized.
        Prevents maximized windows from warping across the screen.
        Fixes bug #504692.

        * src/core/window.c (save_user_placement): renamed version of
        meta_window_save_user_rect().
        * src/core/window.c (force_save_user_placement): similar, but will
        always save user_rect even if the window is maximised or fullscreen.
        * src/core/window.c (meta_window_move_resize_internal): unplaced
        windows have force_save_user_placement() called instead of
        save_user_placement().


svn path=/trunk/; revision=3816
2008-08-16 03:09:40 +00:00
Thomas Thurman
6bf62be4d0 This function can now officially return NULL. Two windows can't belong to
2008-07-12  Thomas Thurman  <tthurman@gnome.org>

        * src/core/group.c (meta_window_get_group): This function can now
        officially return NULL.
        * src/core/window.c (meta_window_same_application): Two windows can't
        belong to the same application unless they both belong to some
        application.  (Both belonging to no application is not the same.)
        
        Closes #453022.

svn path=/trunk/; revision=3785
2008-07-13 03:26:39 +00:00
Thomas Thurman
6039694eff Some refactoring, simplifying, and commenting of the non-composited
2008-06-28  Thomas Thurman  <tthurman@gnome.org>

        Some refactoring, simplifying, and commenting of the non-composited
        effects code.  effects.c could still do with some polish, which will
        come along later.

        * src/core/effects.h (meta_push_effect_handler): removed since it's
          never used and does nothing very useful.
        * src/core/effects.h (meta_pop_effect_handler): removed since its
          only effect is to crash the program.
        * src/core/effects.h (META_MINIMIZE_ANIMATION_LENGTH,
          META_SHADE_ANIMATION_LENGTH): move to effects.c because they're used
          nowhere else.
        * src/core/effects.c: there were three versions of the box-zoom effect.
          Remove the one which was never used, and make only the ones which
          are used with certain configure settings be compiled.
        * src/core/effects.h (meta_effect_end): move to effects.c, make static,
          and rename to effect_free.
        * src/core/effects.h (meta_effects_draw_box_animation): move to
          effects.c, make static, and rename to draw_box_animation.
        * src/core/effects.h (MetaEffectType): remove the values which weren't
          used.
        * src/core/window.c (meta_window_shade): remove commented-out code to
          call effect for shading.
        * src/core/effects.h (MetaEffectFinish): remove useless MetaEffect
          parameter.
        * src/core/window.c (finish_minimize): remove MetaEffect parameter.


svn path=/trunk/; revision=3771
2008-06-29 03:20:52 +00:00
Matthew Allum
fa2f76d4d4 Now with slightly broken window close animations and lot of debug info. 2008-06-09 17:50:56 +01:00
Iain Holmes
3405f3d8c8 Applied patch from Ed Catmur to fix #528787
2008-05-19  Iain Holmes  <iain@gnome.org>

        * src/core/window.c: Applied patch from Ed Catmur to fix #528787



svn path=/trunk/; revision=3716
2008-05-19 00:14:09 +00:00
Iain Holmes
f141692ca2 src/include/frame.h src/include/display.h src/include/xprops.h
2008-05-19  Iain Holmes  <iain@gnome.org>

        * src/include/frame.h
        * src/include/display.h
        * src/include/xprops.h
        * src/include/compositor.h
        * src/include/types.h
        * src/include/window.h
        * src/include/errors.h
        * src/include/screen.h: New basic public API for compositor.

        * src/compositor/*: Separate the compositor out into its own 
separate
        directory and set it up for backends. Initial XRender backend.

        * src/core/compositor.[ch]: Remove

        * src/core/frame.h
        * src/core/screen.h
        * src/core/display.h
        * src/core/window.h: Rename to -private.h so as not to clash 
with the
        new files in include

        * src/core/delete.c
        * src/core/workspace.h
        * src/core/stack.[ch]
        * src/core/keybindings.[ch]
        * src/core/errors.c
        * src/core/effects.[ch]
        * src/core/core.c
        * src/core/group.h
        * src/core/edge-resistance.[ch]
        * src/core/window-props.[ch]
        * src/core/constraints.h
        * src/core/bell.[ch]
        * src/core/iconcache.h
        * src/core/session.[ch]
        * src/core/main.c
        * src/core/place.h
        * src/core/xprops.c
        * src/ui/tabpopup.c: Use the new -private headers

        * src/core/display.c
        * src/core/frame.c
        * src/core/window.c
        * src/core/screen.c: Add the API functions required by the 
compositor

        * src/Makefile.am: Relocate the new files



svn path=/trunk/; revision=3715
2008-05-19 00:00:09 +00:00
Thomas Thurman
b455ac62d2 All information should live in exactly one place. This means that the list
2008-05-02  Thomas Thurman  <tthurman@gnome.org>

        All information should live in exactly one place.  This means
        that the list of atoms should not be replicated anywhere.
        Therefore, we include it via x-macros.  Closes #530843.

        * src/core/atomnames.h: added list of atom names
        * src/Makefile.am: added reference to new file
        * src/core/display.h
        * src/core/display.c (twice)
        * src/core/screen.c: #included atomnames.h instead of having
          an enormous list of atoms
        * src/core/group-props.c
        * src/core/window.c
        * src/core/compositor.c
        * src/core/window-props.c
        * src/core/delete.c
        * src/core/workspace.c
        * src/core/stack.c
        * src/core/keybindings.c
        * src/core/iconcache.c
        * src/core/group.c
        * src/core/xprops.c: changed to new, simpler identifiers
          for atoms


svn path=/trunk/; revision=3702
2008-05-02 18:49:01 +00:00
Chris Wang
2d895ce875 XGetWindowAttributes can return an error value, and if it does its other
2008-04-29  Chris Wang  <chris.wang@sun.com>

        * src/core/window.c (meta_window_new): XGetWindowAttributes
          can return an error value, and if it does its other results
          are invalid! (#530485)


svn path=/trunk/; revision=3698
2008-04-29 13:33:39 +00:00
Owen Taylor
58ef1592a5 Don't immediately unminimize an initially iconic window (#491090)
2008-03-28  Owen Taylor  <otaylor@redhat.com>

        * src/core/window.c (meta_window_new_with_attrs): Don't
        immediately unminimize an initially iconic window (#491090)


svn path=/trunk/; revision=3667
2008-03-28 18:44:59 +00:00
Iain Holmes
f2b400b82c Add a screen argument. (process_property_notify): Damage the whole screen
2008-03-19  Iain Holmes  <iain@gnome.org>

        * src/core/compositor.c (meta_compositor_set_active_window): Add 
a
        screen argument.
        (process_property_notify): Damage the whole screen when the 
background
        changes. Fixes 522599
        (add_repair): Use the idle instead of the timeout. Fixes 522166
        (unmap_win): If the window is also focus window NULLify it.

        * src/core/window.c (meta_window_notify_focus): Notify when a 
window
        has lost focus, pass in screen as well.


svn path=/trunk/; revision=3654
2008-03-19 00:47:01 +00:00
Iain Holmes
e629364582 Allow shaped windows _with frames_ to have shadows.
2008-03-18  Iain Holmes  <iain@gnome.org>

        * src/core/compositor.c (window_has_shadow): Allow shaped 
windows
        _with frames_ to have shadows.
        (meta_compositor_set_active_window): Watch for the focus of 
windows
        and change the size of the drop shadows.
        (generate_shadows): Create differently sized shadows.
        (meta_compositor_get_window_pixmap): Get the xwindow correctly.

        * src/core/window.c (meta_window_notify_focus): Set the active 
window
        in the compositor.


svn path=/trunk/; revision=3653
2008-03-18 23:42:20 +00:00
Marco Pesenti Gritti
7d239b0d45 newly created windows can't be considered to be above themselves; fixes
2008-03-18  Marco Pesenti Gritti  <mpgritti@gmail.com>

        * src/core/window.c (window_would_be_covered): newly created windows
	can't be considered to be above themselves; fixes bug #519188.


svn path=/trunk/; revision=3650
2008-03-18 12:22:25 +00:00
Thomas Thurman
85631aec0f Lots of tiny fixes to make sure we compile with "gcc -ansi -Werror".
2008-02-27  Thomas Thurman  <tthurman@gnome.org>

	Lots of tiny fixes to make sure we compile with
	"gcc -ansi -Werror".


svn path=/trunk/; revision=3606
2008-02-27 04:39:10 +00:00
Thomas Thurman
07939f235f When resizing a window with the keyboard, stay one pixels from the edges
2008-02-18  Thomas Thurman  <tthurman@gnome.org>

        * src/core/window.c (warp_grab_pointer): When
	resizing a window with the keyboard, stay one 
	pixels from the edges so that the cursor remains
	resting on a window edge even if we escape,
	whatever side it was on. Closes #436257.


svn path=/trunk/; revision=3578
2008-02-18 00:21:50 +00:00
Alex R.M. Turner
18b63e9b5f Have the list also pull windows that are in other workspaces that have the
2008-02-01  Alex R.M. Turner  <armtuk@gmail.com>

        * src/core/display.c (meta_get_tab_entry_list): Have the list also pull 
          windows that are in other workspaces that have the  
          wm_state_needs_attention flag set
        * src/core/window.c (meta_window_set_demands_attention): Make windows that
          are on other workspaces that demand attention that aren't obscured
          count as being obscured
        Bug #333548.

svn path=/trunk/; revision=3533
2008-02-02 04:05:16 +00:00
Havoc Pennington
72b08c82b1 sort source files into these directories according to which part of the WM
2007-12-19  Havoc Pennington  <hp@redhat.com>

	* src/ui, src/core, src/include: sort source files into these
	directories according to which part of the WM they are supposed to
	be in. In an eventual plan, we should also create
	src/compositor/render, src/compositor/fallback and move some of
	the compositor stuff into that.
	
	* autogen.sh: require a newer automake, so we don't have to use
	a recursive build

	* src/ui/tabpopup.c: put in a hack to make the build temporarily
	work, want to commit the large rearrangement before fixing this
	not to include workspace.h or frame.h

	* src/core/iconcache.c (meta_read_icons): temporarily break this
	to get the build to work, want to commit the large rearrangement
	before fixing this file not to include theme.h


svn path=/trunk/; revision=3491
2007-12-19 21:17:50 +00:00