Commit Graph

7637 Commits

Author SHA1 Message Date
514d00698d Add support for a "meta key" which initiates extended WM operations
This patch adds the concept of a special key for WM operations, and
the default is Super_L, which on extended PC hardware is the
"Windows key".  What we do is handle the special case of a press
and release of this key (without any other intervening keys).

Super_L+<key> should still be passed to applications.  In the future
we may want to also take some of these keybindings (e.g. Super+TAB)
though.

http://bugzilla.gnome.org/show_bug.cgi?id=563047
2009-04-24 09:54:18 -04:00
c4a4de0056 Fix return transfer annotations for a number of functions and add docs
Add return transfer annotations (and while I was at it, docs), for
public functions that return MetaDisplay, MetaWindow, and MetaScreen.

http://bugzilla.gnome.org/show_bug.cgi?id=561297

http://bugzilla.gnome.org/show_bug.cgi?id=580027
2009-04-24 09:54:17 -04:00
28a4be2536 Add meta_workspace_set_builtin_struts()
Add a function to set a list of "built-in" struts for a workspace;
these are struts that are combined with the struts of the windows in
the workspace when determining the work area of the workspace.

http://bugzilla.gnome.org/show_bug.cgi?id=561297

http://bugzilla.gnome.org/show_bug.cgi?id=580026
2009-04-24 09:54:17 -04:00
6e9803cd9f Add ::window-added and ::window-removed signals to MetaWorkspace
Add sigals to MetaWorkspace to allow tracking when windows are added
and removed. Note that on window creation that these signals are fired
before the window setup is totally complete, so they need to be used
with some care. (For example, the compositor, if present, has not
been notified of the new window.)

http://bugzilla.gnome.org/show_bug.cgi?id=580025
2009-04-24 09:54:17 -04:00
63b1d6642c Improve handling of errors when calling CompositeNameWindowPixmap
To guard against CompositeNameWindowPixmap failing, just use an
error trap. Previous code used:

 GrabServer/GetWindowAttributes/CompositeNameWindowPixmap/UngrabServer

To prevent BadMatch errors from !viewable, but didn't check the
return value of GetWindowAttributes and didn't check if an error
occured during the error trap. This way is more correct and more
efficient.

http://bugzilla.gnome.org/show_bug.cgi?id=580023
2009-04-24 09:54:17 -04:00
626912a9a4 Merge branch 'gnome-2-26' into master
Conflicts:
	configure.in
	src/core/schema-bindings.c
2009-04-08 16:11:12 -04:00
2e0cd7af5e Fixed focus handling in finish_minize().
When the window being hidden/mimimized has focus, is modal, but is not on the
  currently active workspace (e.g., during workspace switch before the new
  focus window is activated), we must prevent focus being passed to the modal
  window ancestor (otherwise the ancestor ends up being forcefully moved onto
  the active workspace).
2009-04-07 13:02:57 +01:00
8ccb9e04eb Postpone creation of the guard window until we are ready to manage windows.
Creating the gard window when constructing MetaScreen causes the screen to
  go black for the duration of Metacity startup which is uggly. We do not
  actually need that window until we are ready to manage windows on the screen.
2009-04-02 12:25:53 +01:00
8ab9ed5d4e Expose meta_window_get_icon_geometry()
Make meta_window_get_icon_geometry() public, so that it can be used
to from plugins to animate windows minimizing to the correct
position.

Based on a patch from Cosimo Cecchi <cosimoc@gnome.org>

http://bugzilla.gnome.org/show_bug.cgi?id=571109
2009-03-31 17:29:48 -04:00
4253ff8e12 Add a "toggle_recording" keybinding
Add a keybinding (defaulting to <Control><Shift><Alt>r) to record
a screencast of the session. This isn't hooked up to anything in
metacity itself, but a plugin can connect to a signal on MetaScreen.

keybindings.c all-keybindings.h: Add the keybinding
screen.c: Add a ::toggle-recording signal

http://bugzilla.gnome.org/show_bug.cgi?id=575290
2009-03-13 17:06:04 -04:00
fb7b820187 Cleanup: split MetaSide from MetaDirection
The MetaDirection enumeration had META_SIDE_* values in it that
were used in some places where an enum with only four directions
was needed. Split this off into a separate enum called MetaSide
and use that enum name where appropriate.
2009-03-17 16:53:01 -04:00
a47bb96536 Add a MetaScreen:restacked signal and expose MetaWindow.layer
Expose restacking and a window's stack layer to allow a compositor
to insert elements into the window stack in the right location.
(See Bug 571827 – hide panel when screensaver is active)

src/core/stack.h src/include/common.h: Move MetaStackLayer to
 a public header.

src/core/screen.c src/core/screen-private.h src/core/stack.c:
 Add a ::restacked signal emitted after we finish restracking.

src/core/window.h src/include/window.h: Add meta_window_get_layer()
2009-03-12 17:07:27 -04:00
0e256a21a5 Use GDestroyNotify instead of custom type, for better introspectability 2009-03-25 10:50:40 -04:00
3b864f8af5 Delay creation of overlay window until we are ready to show the stage.
The overlay window was created before the plugins are loaded. Because the
  composite extension immediately maps the window, we ended blanking the screen
  while plugins, etc., were loading. This commit reorganizes the code so that
  the overlay window is only created just before we are ready to show the
  stage.

  The significant impact of this change is that plugins cannot manipulate the
  overlay window during their initial loading, i.e., they cannot call the
  input-region API (the plugin should hook into the "show" signal if it needs
  to do anything of this sort).

  The commit also removes the XClearArea() call on the overlay window that
  seems to have served no real purpose.
2009-03-30 16:56:52 +01:00
f78390b094 Notify the compositor of new windows slightly sooner.
In particular, make it so that we call meta_compositor_add_window() on
a new window before calling meta_compositor_sync_stack() to position
it. The list returned by mutter_plugin_get_windows() is only updated
by sync_stack(), but sync_stack() only pays attention to windows that
add_window() has already been called on. So without this change, a
newly-mapped window will not be returned by
mutter_plugin_get_windows() until after the *next* restacking.

http://bugzilla.openedhand.com/show_bug.cgi?id=1512
2009-03-18 15:09:15 -04:00
0b635aafae Make prototype for meta_window_find_root_ancestor() public. 2009-03-19 16:01:32 +00:00
31f48c0cf0 Removed unnecessary g_object_ref/unref() bracketing around g_object_notify(). 2009-03-17 12:28:00 +00:00
cd0ef08783 Added MetaWindow::fullscreen property (read only). 2009-03-17 12:27:13 +00:00
4203fd2993 Added MetaWorkspace::n-windows property (read-only). 2009-03-17 08:54:19 +00:00
54e56a47da Moved meta_window_get_outer_rect() prototype to window.h
Useful for plugins.
2009-03-17 08:35:17 +00:00
8216cbc4f6 Revert a seemingly non-functional and erroneous part of the no-tab-popup change
http://bugzilla.o-hand.com/show_bug.cgi?id=1446
2009-02-12 15:07:40 -05:00
9a4d1d1375 Moved bunch of prototypes from display-private.h to display. 2009-03-12 14:48:22 +00:00
616e140420 Ignore override-redirect windows when restacking based on window groups.
http://bugzilla.gnome.org/show_bug.cgi?id=571616 /
http://bugzilla.openedhand.com/show_bug.cgi?id=1461
2009-02-26 09:59:14 -05:00
050c1e268d Do not use Fixed values with COGL
The COGL API expects floating point values, not fixed point ones.
2009-03-10 12:52:03 +00:00
7afc4310f6 Added no_more_x_calls flag to MutterWindow.
Once the window destruction is initiated, we can still manipulate our
  MutterWindow with clutter API, but we can not longer use any X-based API,
  or MetaWindow API to query it.
2009-02-18 12:13:36 +00:00
39a3bb2c7d Sync up to upstream 2.25.144
Conflicts:

	configure.in
	src/core/main.c
	src/core/prefs.c
	src/core/window.c
	src/include/prefs.h
2009-02-12 17:14:12 +00:00
081272c5a9 Distcheck fixes. 2009-02-12 10:48:59 +00:00
f4bc825cf8 Do not destroy the GLX texture during redecoration.
Just ensure that it is on the top of the internal actor stack.
2009-02-11 14:20:37 +00:00
fb1fc4e7c6 Do not run map effect if the map is because window is getting redecorated. 2009-02-11 14:20:01 +00:00
ed3d222327 Recreate internals of MutterWindow when the decoration status changes. 2009-02-11 12:55:59 +00:00
8c0ae7be83 Turned window decorated flag into MetaWindow::decorated property.
This allows things like the compositor to easily track decoration status.
2009-02-11 12:16:41 +00:00
5780ffad12 Added MutterWindow::no-shadow property
Allows to specify that a window that otherwise would have shadow should not.
2009-02-10 10:22:35 +00:00
770a6f0138 Actually, if the parent of MutterWindow is a container, use the interface.
Just unparenting the window does not automatically remove it from it's
  parent.
2009-02-09 17:01:37 +00:00
16d49695ad Unparent rather than destroy MutterWindows.
clutter_actor_destroy() is pure evil, wreaking havoc in reference tracking.
2009-02-09 16:39:26 +00:00
6893ef034b Intialise *style to NULL.
*style being unitialised raises a warning which causes problems on systems which enable warnings as errors (-Werror).
2009-02-09 14:48:08 +00:00
3e754a6f35 Fixed handling of _NET_WM_WINDOW_OPACITY. 2009-02-06 11:16:33 +00:00
b2da6d86f3 queue resize on window undecorate
* src/core/frame.c: queue resize on window undecorate


svn path=/trunk/; revision=4114
2009-02-05 01:06:15 +00:00
00192b019c Fix description, focus the desktop, not desktop backgroung (Closes bug
2009-02-03  Luca Ferretti  <elle.uca@libero.it>

	* src/include/all-keybindings.h: Fix description, focus the
	desktop, not desktop backgroung (Closes bug #569649)

svn path=/trunk/; revision=4112
2009-02-03 08:39:34 +00:00
21416f453a Wrap g_error calls in braces.
* src/core/schema-bindings.c: Wrap g_error calls in braces.


svn path=/trunk/; revision=4110
2009-02-03 02:21:36 +00:00
e5db44ca90 Set prop_hooks_table to NULL after freeing it.
* src/core/window-props.c:


svn path=/trunk/; revision=4103
2009-02-01 20:47:33 +00:00
a203fb1037 Window properties are looked up in a hash table rather than
by iteration over an array.  Saves ~44us per window, but
        also makes the code cleaner.
	* src/core/display-private.h:
	* src/core/window-props.c:


svn path=/trunk/; revision=4097
2009-01-29 14:32:31 +00:00
8e6c0bec78 some lists failed to keep track of their contents and therefore didn't
* src/core/edge-resistance.c: some lists failed to keep track
          of their contents and therefore didn't free correctly.
          Closes #552303.


svn path=/trunk/; revision=4095
2009-01-28 02:30:30 +00:00
69ae9e4a9d Free name of old theme when new theme is loaded.
* src/core/prefs.c: Free name of old theme when new theme
          is loaded.


svn path=/trunk/; revision=4094
2009-01-28 02:08:09 +00:00
1381f6d5f2 free the result of gdk_text_property_to_utf8_list() even when it returns
* src/ui/ui.c: free the result of gdk_text_property_to_utf8_list()
          even when it returns no data.


svn path=/trunk/; revision=4093
2009-01-28 02:00:33 +00:00
a6c951352f GtkStyle is specific to a particular colormap. Metacity uses different
2009-01-27  Owen Taylor  <otaylor@redhat.com>

       GtkStyle is specific to a particular colormap. Metacity
       uses different colormaps for windows with different
       visuals, so it must specialize the GtkStyle.

       Closes #568365 and #513944.

       * src/ui/frames.[ch]: Keep a GtkStyle for each MetaUIFrame, which is
         obtained by calling gtk_style_attach() on the style for the
         MetaFrames. When the style of the MetaFrames changes, reattach
         everything. When we call gtk_style_set_background() pass in the
         right style.

       * src/ui/themes.[ch]: Create a _with_style() variant of functions that
         previously took the style from widget->style passed in, so we
         can draw with the right style for the colormap.


svn path=/trunk/; revision=4092
2009-01-28 01:47:18 +00:00
0a172cc053 Added a gconf key to swap the meanings of the right and
middle buttons when the modifier key is held down.
        Closes #437910.  Thanks to Matt Kraai for looking over
        the patch.
	* src/core/display.c:
	* src/core/prefs.c:
	* src/include/prefs.h:
	* src/metacity.schemas.in.in:


svn path=/trunk/; revision=4091
2009-01-27 21:05:42 +00:00
f5fa4a3866 All the window properties are now handled using simple
window property handlers.  Closes #549886.
	* src/core/window-private.h:
	* src/core/window-props.c:
	* src/core/window.c:


svn path=/trunk/; revision=4090
2009-01-27 05:03:06 +00:00
8cbcbb0655 More of the window properties are checked using simple
window property handlers.  The ones which remain don't
        actually look up the new value in the ordinary way, and
        so are a little trickier to merge.  Added an "initial"
        flag to be on the safe side that the behaviour is the
        same as before (so we don't do things when a window's
        first mapped that we only used to do when a property
        changed).  Partial fix for bug #549886.
	* src/core/window-props.c:
	* src/core/window-props.h:
	* src/core/window.c:


svn path=/trunk/; revision=4089
2009-01-27 03:53:07 +00:00
35d9d2864f add support for _NET_WM_MOVERESIZE_CANCEL.
* src/core/window.c: add support for _NET_WM_MOVERESIZE_CANCEL.


svn path=/trunk/; revision=4088
2009-01-25 22:59:50 +00:00
77cb0db9c2 add meta_theme_draw_frame_by_name, which is needed for the theme editor.
* src/ui/theme.[ch]: add meta_theme_draw_frame_by_name, which
          is needed for the theme editor.


svn path=/trunk/; revision=4074
2009-01-11 04:48:54 +00:00