Add (transfer none) annotations to mutter_window_get_texture()
and mutter_window_get_meta_window(), and while add doc comments,
actually add some docs as well.
Since this is the most common cause of performance issues, this makes it
clearer when GLX TFP isn't being used. Note, there was a corresponding
fix to clutter_glx_texture_pixmap_using_extension() committed last week
as r3559 in the 0.8 branch.
The metacity core is now directly aware of override redirect windows.
- They get MetaWindows like normal windows, so mutter no longer need to special
case them. The net wm types applicable to override redirects are also
recognised.
- The original positioning/stacking semantics of metacity with respect to OR
windows are maintained, but now it's easier to synchronize the stacking
between the core and mutter.
- mutter no longer needs to manualy track UnmapNotify, MapNotify,
ReparentNotify, CreateNotify and DestroyNotify events; instead map, unmap,
add and remove events can now be consistently delivered via the
MetaCompositor callbacks.
src/core/screen.c src/core/screen-private.h src/include/screen.h:
Make MetaScreen a GObject.
src/core/workspace.c src/core/workspace-private.h src/include/workspace.h:
Make MetaWorkspace a GObject. Rename meta_workspace_free() to
meta_workspace_remove().
http://bugzilla.gnome.org/show_bug.cgi?id=561297
Make MetaWindow into a GObject so that it is accessible to
gobject-introspection (also allows for signals to be added.)
Renames:
meta_window_free() => meta_window_unmanage()
meta_window_get_type() => meta_window_get_window_type()
meta_window_get_type_atom() => meta_window_get_window_type_atom()
When multiple events are generated from a single event (for example,
when a motion event generates an enter/leave pair), events accumulate
in the clutter event queue if the clutter event source is not running.
Add a simple event source that checks clutter_events_pending() and
dispatches events as necessary.
src/core does some things depending on window->mapped, but since we now
leave the window mapped for hidden windows we might get some wrong
descisions.
Also instead of calling meta_window_show when in meta_window_hide for
the case that the window isn't currently mapped, we now simply
XMapWindow.
It's more awkward and error prone, considering plugin ininteractions, to simply
show/hide the actors of hidden windows, and it seems to be more reliable to
reparent them to a hidden group instead.
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)
Calling clutter_actor_show_all() on the stage and overlay_group breaks
the ability for plugins to create initially hidden actors. Call
clutter_actor_show() instead.
If a mutter plugin name (in GConf, or more likely on the command line)
looks like an absolute path, use that path directly rather than
looking for the plugin in the plugins directory.
src/core/main.c: Add --mutter-plugins argument (overrides GConf value)
src/core/prefs.c src/include/prefs.h: Add meta_prefs_override_clutter_plugins()
to set a value for clutter_plugins that overrides the value from GConf
Remove a "got here" leftover, remove unnecessary trailing \n when
calling g_message(), include g_module_error() in the output when
loading a module fails.
If --disable-static is passed to configure, then .a files won't be built
or installed. Make removing them in install-exec-hook not fatal if they
don't exist.
2008-10-27 Thomas Thurman <tthurman@gnome.org>
* src/core/prefs.c (titlebar_handler, handle_preference_update_enum):
Add initialisation which I missed on the previous checkin. Also
an extra comment.
svn path=/trunk/; revision=4004
2008-10-27 Brian Cameron <brian.cameron@sun.com>
Fix some crashes with the new GDM 2.24. Closes#558058.
* src/ui/ui.c (meta_ui_parse_modifier): another null check
* src/core/prefs.c (titlebar_handler, button_layout_handler):
more null checks.
svn path=/trunk/; revision=4003
The clutter_plugins schema key did not define the type of the
elements inside the list, thus making gconftool choke when installing
the Metacity schemas.
Since clutter_plugins is a list of strings, the trivial fix is
to add the corresponding <list_type> element to the schema XML.
We need to be getting ConfigureNotify events for these, so we can respond
to changes in position of these windows. We cannot add this to windows
Metacity manages, as this makes it got mental.
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-23 Thomas Thurman <tthurman@gnome.org>
* src/core/schema-bindings.c: fix stupid thinko which
caused defaults to be incorrect
* src/include/window-bindings.h: "space" needs to be
lowercase
svn path=/trunk/; revision=3992
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-22 Thomas Thurman <tthurman@gnome.org>
Fixes to make distcheck work again.
* src/Makefile.am: include *-binding.h, and make the schema
building work when builddir != srcdir
* po/POTFILES.in (src/core/keybindings.): include *-binding.h
svn path=/trunk/; revision=3985
2008-10-22 Joe Marcus Clarke <marcus@freebsd.org>
* src/core/main.c (meta_finalize, sigterm_handler): new functions
* src/core/main.c (main): add sigterm_handler in case we receive
a SIGTERM. Closes#553980.
svn path=/trunk/; revision=3974
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 Thomas Thurman <tthurman@gnome.org>
Slight transformation of the x-macros used in keybindings
to make them clearer: write handler names out in full
because the old suffix system was confusing to people
skim-reading, and switched the order of the last two
parameters so more would generally fit on a screen.
* src/core/keybindings.c, src/core/schema-bindings.c
src/core/prefs.c: sympathy changes
* src/core/window-bindings.h, src/core/screen-bindings.h:
transformation as above
svn path=/trunk/; revision=3970
2008-10-21 Christian Persch <chpe@gnome.org>
* src/Makefile.am: fix build when schemas are not installed.
Closes#557335.
svn path=/trunk/; revision=3969
2008-10-18 Thomas Thurman <tthurman@gnome.org>
During a discussion with Rodney Dawes about making life easier
for the translators, he pointed out that the short and long
forms of almost all the keybindings say much the same thing
in different words. I believe this is an unconscionable burden
to place on translators, and have therefore merged the short
and long descriptions into the short description. The long
is now a general explanation of the format, plus possibly a
notice about reversibility. Closes#469361, and should solve
the l10n issue previously mentioned.
* src/core/keybindings.c: reflect changes in *-bindings.h
* src/core/schema-bindings.c: reflect changes in *-bindings.h
* src/core/prefs.c: reflect changes in *-bindings.h
* src/core/window-bindings.h: Add flags field, always the same
currently, so that it's the same as screen-bindings.h.
Also, lose ONLY_BOUND_BY_DEFAULT, since we already had a
rather more elegant way to perform the same effect.
And merge the long and short descriptions.
* src/core/screen-bindings.h (, item): Merge the long and
short descriptions.
svn path=/trunk/; revision=3966
2008-10-15 Thomas Thurman <tthurman@gnome.org>
Since Patrick Niklaus's checkin of 2008-08-14 dealt with windows with
no icons not using fallback icons, we don't need fallback icons.
* src/ui/theme.h: remove fallback icons from struct.
* src/core/iconcache.c (meta_read_icons): don't look for fallbacks.
* src/*/ui.[ch] (meta_ui_get_fallback_icons): removed
* src/ui/theme-parser.c (typedef, parse_toplevel_element): don't
parse fallback specifications.
svn path=/trunk/; revision=3958
terse variable names, simplify the plugin interface or consider tweaks
for maintainability.
* Renames plg -> plugin
* Renames mgr ->plugin_mgr (since in a combined window and composite
manager I think "mgr" will end up being ambiguous in places)
* Renames PluginWorkspaceRectangle -> MetaRectangle (We are no longer
concerned about mbwm2 portability)
* Renames a few one letter variable names e.g. a -> window, r ->rect
* Renames some vars to indicate what they represent not their data type,
e.g. group1, group2 ->workspace0, workspace1
* Renames the variable mcw -> mc_window to make it more immediately
obvious what it represents.
* Removes the verbose META_COMPOSITOR_CLUTTER_PLUGIN_SWITCH_WORKSPACE macro,
and just uses metacity_plugin instead.
* Instead of hanging data of the plugins global descriptor, we just use a
standalone static global variable.
* Make do_init a function pointer inside the plugin descriptors instead of
special casing it and using another g_module_symbol call. This also removes
the need for the META_COMPOSITOR_CLUTTER_PLUGIN_INIT_FUNC macro.
* A bunch of anal 80char fixes
* Removes the screen_width,height variables from the plugin descriptor struct
and add a plugin API instead.
2008-10-12 Thomas Thurman <tthurman@gnome.org>
Make the bindings in src/core/*-bindings.h generate
GConf schemas too. Note that there's an i18n issue
(documented in schema-bindings.c) which will be fixed
next checkin.
* src/core/schema-bindings.c: major fixup to make it
ready for use as part of the actual build process.
* src/Makefile.am: added magic to make it call schema-bindings
after it builds it.
* src/core/window-bindings.h: added comments;
also, window menu was listed variously as alt-Space
and alt-Print; it should have been alt-Space.
* src/metacity.schemas.in.in: renamed from s/\.in$//,
sentinel added for the generated bindings,
warning at the top now untrue, and removed.
svn path=/trunk/; revision=3952
2008-10-12 Thomas Thurman <tthurman@gnome.org>
Fix annoying bug where alt-tab and friends would jump
backwards a space on initial movement.
* src/core/screen-bindings.h: although reversed bindings
are necessarily reversible, don't set both bits in the
constant, or when we test for them we'll get confused.
svn path=/trunk/; revision=3950
2008-10-12 Thomas Thurman <tthurman@gnome.org>
An attempt to make life a little easier for our beloved translators;
this has the same behaviour as before, but removes over thirty
translation strings.
* src/core/session.c (start_element_handler): all "attribute not found
on element" strings are identical
* src/ui/theme-parser.c (locate_attributes): allow attribute names to
be preceded with "!" (in the code) to show they're required.
(parse_aspect_ratio, parse_distance, parse_toplevel_element,
parse_style_element, parse_gradient_element, static, parse_border,
parse_style_set_element, parse_draw_op_element): use the new "!"
prefix for locate_attributes(), or in some cases just the identical
constant, for generating this error.
* src/ui/theme.c (check_state, meta_theme_validate): add
translator comments
* src/ui/resizepopup.c (update_size_window): add
translator comments
svn path=/trunk/; revision=3949
The actor's private data created by the compositor is allocated
using g_new(), but since we are allocating a lot of small structures
all the time it's better to use the slice allocator instead.
Also, use a GQuark instead of using a string, so that the quark
lookup is done only once and the rest of the time is just an
integer comparison.
Renamed meta_compositor_clutter_plugin_manager_event_0 to
meta_compositor_clutter_plugin_manager_event_simple and
meta_compositor_clutter_plugin_manager_event_4i to
meta_compositor_clutter_plugin_manager_event_maximize for improved clarity.
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-05 Thomas Thurman <tthurman@gnome.org>
Second half of the switch to using x-macros for keybindings so that
we don't have lots of places with the same information which must
stay in the same order. This time it's screen bindings.
* src/core/screen-bindings.h: New file, containing screen bindings.
* src/core/schema-bindings.c: added ability to output screen bindings.
* src/core/window-bindings.h: tiny tweak to comment
* src/core/keybindings.c: generate function prototypes using s-b.h;
several handlers modified to use ints rather than ints cast into
pointers, or renamed.
* src/include/prefs.h: generate names of bindings using s-b.h;
generate screen_handlers using s-b.h;
arguments to bindings are ints and not ints cast to pointers;
several handler functions renamed to consistent names.
* src/core/prefs.c (meta_prefs_set_num_workspaces, init_bindings):
generate screen_handlers using s-b.h;
generate screen_string_bindings using s-b.h (and add check for
null bindings in init_bindings to enable this simply).
svn path=/trunk/; revision=3941
Check for whether clutter/glx/clutter-glx-texture-pixmap.h is
available in the configure script and if not use
ClutterX11TexturePixmap directly.
glGetTexLevelParameter isn't available on GL ES so instead it checks
whether NPOTs textures are available and assumes the next power of two
size if not.
2008-09-12 Vincent Untz <vuntz@gnome.org>
Install desktop files in both
.../share/applications and .../share/gnome/wm-properties.
Copied in from the 2.23.x branch. Closes#549479.
* src/metacity-wm.desktop.in: new file
* src/.cvsignore: include the above
* src/Makefile.am: install the above
svn path=/trunk/; revision=3886
2008-09-06 Thomas Thurman <tthurman@gnome.org>
An attempt to keep all information about window bindings
in the same place. Screen bindings to come.
* src/core/window-bindings.h: new file, list of all window bindings
* src/include/prefs.h: drop all the existing window-binding macros
* src/core/schema-bindings.c (): output all the schema blocks that
would appear in metacity.schema for these window bindings. This
ought to become part of the build process, and hopefully will soon.
When this works it will also close#469361.
* src/core/keybindings.c: generate handle_* prototypes using
x-macros; populate window_handlers using x-macros; rename several
functions to have consistent names; do_handle_move_to_workspace(),
handle_move_to_workspace_flip(), and handle_move_to_workspace() all
merged into handle_move_to_workspace.
* src/core/prefs.c: generate window_bindings and window_string_bindings
using x-macros; (meta_prefs_set_compositing_manager) fix unrelated
problem with use of GConf functions when GConf was disabled.
* src/core/core.c (meta_core_get_menu_accelerator): binding names
given as literals since this is the only place in the code they
now appear
svn path=/trunk/; revision=3860
2008-09-03 Thomas Thurman <tthurman@gnome.org>
* src/metacity.desktop.in: removed invalid "Window Manager" group
at request of Matthias Clasen.
svn path=/trunk/; revision=3851
2008-09-01 Thomas Thurman <tthurman@gnome.org>
* src/core/workspace.c: When a workspace's list of struts
is freed, free the struts too. Closes#549952, and #468075.
svn path=/trunk/; revision=3840
2008-09-01 Thomas Thurman <tthurman@gnome.org>
Add new move_to_center keybinding, requested by Khanh-Dang Nguyen
Thu Lam; closes#549979.
* src/include/prefs.h (void): add name of new binding
* src/core/prefs.c: added pref for it
* src/core/keybindings.c (handle_move_to_center): new function
* src/metacity.schemas.in: included new binding
svn path=/trunk/; revision=3839
2008-08-31 Thomas Thurman <tthurman@gnome.org>
* src/core/prefs.[ch] (meta_prefs_set_compositing_manager): new
function.
* src/core/main.c (meta_parse_options): turn the compositing
manager on or off as necessary.
svn path=/trunk/; revision=3838
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
So we do not have to query window attributes in the MetaCompWindow constructor
but can pass them as a property (so we can gracefully handle the case where no
attributes can be retrieved).
Fixed up the build files so we do not build xrender compositor when building
clutter backend; moved clutter initialization to meta_ui_init() so commandline
arguments can be passed into clutter_init().
No Expose event processing is necessary, since clutter stage paints
automatically when changes are made to the scenegraph (so we only need to
update our window textures as damaged; everything else just works).
2008-08-18 Eric Piel <e.a.b.piel@tudelft.nl>
* src/core/workspace.c (ensure_work_areas_validated): add a copy of
each strut in a window to the workspace's strut list, instead of
using the copy in the list (which would mean it was double-freed).
Believed to fix#468075.
svn path=/trunk/; revision=3817
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-14 Patrick Niklaus <marex@compiz-fusion.org>
Icons for windows are taken from the desktop theme, not from
the Metacity theme or from the fallback icon that Metacity
provided. Closes#524343.
* src/ui/ui.c: Use GtkIconTheme to load the default window icon.
Assumes the existence of an icon called "window", otherwise
falls back to "gtk-missing-image". Fixes#524343.
* src/ui/preview-widget: See above.
* src/include/common.h: Add META_DEFAULT_ICON_NAME.
* src/Makefile.am: Remove default_icon.png from inlinepixbufs.h.
* src/default_icon.png: Removed.
svn path=/trunk/; revision=3812
2008-07-13 Thomas Thurman <tthurman@gnome.org>
* src/core/display.c (event_callback): meta_display_screen_for_root()
can return NULL, so check for that. Fixes#422242. Also tidying.
svn path=/trunk/; revision=3788
2008-07-13 Elijah Newren <newren gmail com>
* src/core/workspace.c (meta_workspace_free): Don't attempt to
double-free struts, edges and regions if work areas have already
been invalidated at the time of freeing a workspace.
Possible fix to #361804.
svn path=/trunk/; revision=3787
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-06-30 Thomas Thurman <tthurman@gnome.org>
* src/core/bell.[ch]: Move comments for non-statics from the .c to .h.
* Doxyfile: adapt better for C, and make quiet.
svn path=/trunk/; revision=3777
2008-06-30 Thomas Thurman <tthurman@gnome.org>
* src/ui/theme-viewer.c (main): display the theme name
in the title bar. Closes#430198.
svn path=/trunk/; revision=3776
2008-06-29 Thomas Thurman <tthurman@gnome.org>
Allow toggling of non-compositor effects (since there's a
non-Metacity key to do so: /desktop/gnome/interface/enable_animations).
Closes#92867.
* src/include/prefs.h: add META_PREFS_GNOME_ANIMATIONS key and
meta_prefs_get_gnome_animations() function
* src/include/prefs.c: added meta_prefs_get_gnome_animations()
function, and made supporting changes to structs.
* src/core/effects.c (run_handler): checked whether enable_animations
is set before running an effect.
* src/core/effects.c (meta_effect_run_minimize): remove debug message.
svn path=/trunk/; revision=3775
2008-06-29 Thomas Thurman <tthurman@gnome.org>
* src/core/stack.c (stack_sync_to_server): lose meta prefix
since it's static.
* src/core/stack.c (meta_stack_remove, stack_do_window_deletions):
replace our own cast with glib macro designed to do the same thing
svn path=/trunk/; revision=3773
2008-06-28 Thomas Thurman <tthurman@gnome.org>
* src/core/display.c, src/compositor/compositor-xrender.c: add checks
for HAVE_SHAPE where appropriate.
* src/core/xprops.c: fix type error which was causing warnings.
svn path=/trunk/; revision=3772
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-26 Thomas Thurman <tthurman@gnome.org>
Keep the compiler from giving some warnings.
* src/compositor/compositor-xrender.c (xrender_begin_move,
xrender_update_move, xrender_end_move, xrender_free_window): four
functions which were never called and contain no code #iffed out.
* src/tools/metacity-mag.c (grab_area_at_mouse): fixed typecast error.
svn path=/trunk/; revision=3769
2008-06-26 Thomas Thurman <tthurman@gnome.org>
Refactor so the long scary stack functions are less long and scary:
* stack.c (stack_ensure_sorted): the five parts of this long function
broken out into the new functions stack_do_window_deletions,
stack_do_window_additions, stack_do_relayer, stack_do_constrain
(which was already separate: see next) and stack_do_resort.
* stack.c (constrain_stacking): renamed to stack_do_constrain.
* stack.c (stack_ignore_sorted): lose meta prefix since it's static.
svn path=/trunk/; revision=3768
2008-06-13 Thomas Thurman <tthurman@gnome.org>
* src/core/window-props.c: Some commenting.
* src/core/prefs.c: Added unified handling of integer preferences.
Re-ordered fields in existing preferences so that changing to
a union-based system will be easier in the future.
svn path=/trunk/; revision=3758
2008-06-10 Thomas Thurman <tthurman@gnome.org>
* test/tokentest: A preliminary attempt at a test for the
theme expression tokeniser.
svn path=/trunk/; revision=3753
2008-06-05 Thomas Thurman <tthurman@gnome.org>
* src/compositor/compositor-xrender.c (paint_root, destroy_win,
create_root_buffer, paint_windows, repair_screen, window_has_shadow,
xrender_set_active_window, paint_dock_shadows, unmap_win, restack_win,
make_shadow, resize_win, process_property_notify, free_win,
process_configure_notify, process_circulate_notify, add_damage):
defensive programming; check meta_screen_get_compositor_data()
throughout in case it returns NULL. In particular, when this
happened in a certain situation in xrender_set_active_window
this caused a segfault; refs #530702 (and LP#178953 has more data)
but this doesn't close them.
svn path=/trunk/; revision=3751
2008-06-02 Thomas Thurman <tthurman@gnome.org>
* src/core/display.c: make sure compositor things don't get
compiled when we're not using the compositor.
svn path=/trunk/; revision=3748
2008-05-26 Thomas Thurman <tthurman@gnome.org>
* src/Makefile.am: added in two files needed for Iain's
changes earlier to work in a release tarball
svn path=/trunk/; revision=3728
2008-05-24 Iain Holmes <iain@gnome.org>
* src/compositor/compositor-xrender.c: Add Dropdown menu atoms
so we
can add shadows to them. Fixes#517442
Handle tooltips as well. Fixes#517524
svn path=/trunk/; revision=3725
2008-05-24 Iain Holmes <iain@gnome.org>
* src/compositor/compositor.c: Check the compositor isn't NULL
before
dereferencing it. Fixes#534569
(meta_compositor_get_window_pixmap): Actually return a value
svn path=/trunk/; revision=3723
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-13 Robert Escriva <me@robescriva.com>
* src/ui/theme.h (struct): remove color_set flag
* src/ui/theme.c (meta_color_spec_render,
meta_color_spec_new_from_string): remove check of color_set flag
before rendering (we always do it now). Closes#511826.
svn path=/trunk/; revision=3708
2008-05-03 Matt Krai <mkraai@beckman.com>
* src/core/delete.c (io_from_ping_dialog): fix type of "len" variable
(refs #526049)
svn path=/trunk/; revision=3703
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-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-10 Lucas Rocha <lucasr@gnome.org>
* src/Makefile.am: no need to create a symlink to .desktop file in
default-session directory anymore as gnome-session will find
metacity's .desktop in its original place.
svn path=/trunk/; revision=3681
2008-04-03 Thomas Thurman <tthurman@gnome.org>
* src/core/prefs.c (handle_preference_update_bool): preferences
which have a null target don't get updated! (#526016)
svn path=/trunk/; revision=3673
2008-03-29 Lucas Rocha <lucasr.at.mundo@gmail.com>
* src/metacity.desktop.in, src/Makefile.am: make Metacity
install its desktop files in the default session directory
as required by the new gnome-session. (Closes #525051.)
svn path=/trunk/; revision=3669
2008-03-29 Thomas Thurman <tthurman@gnome.org>
* src/ui/preview-widget.c (meta_preview_get_clip_region):
prevent null dereference if the theme was invalid, which
caused crashes in gnome-appearance-properties. No GNOME
bug number, but I believe this is a fix for Launchpad bug
#199402 and its many duplicates.
svn path=/trunk/; revision=3668
2008-03-27 Thomas Thurman <tthurman@gnome.org>
* src/core/session.c (regenerate_save_file, save_state, load_state):
files are saved in ~/.config/metacity/sessions and checked for there
and in ~/.metacity/sessions. Fixes#518596.
svn path=/trunk/; revision=3666
2008-03-27 Thomas Thurman <tthurman@gnome.org>
* src/core/display.c (meta_display_close): fix regression
where Metacity sometimes wouldn't quit when replaced
svn path=/trunk/; revision=3665
2008-03-25 Thomas Thurman <tthurman@gnome.org>
* src/core/display.c (meta_display_queue_retheme_all_windows,
meta_set_syncing, meta_display_set_cursor_theme, disable_compositor,
meta_display_for_x_display, meta_display_open, meta_display_close,
meta_display_ungrab): MetaDisplay becomes a singleton. The static
variable which holds this singleton is renamed "the_display" so as
not to mask the this parameter in the methods.
* src/core/main.c (main):
* src/core/session.c (warn_about_lame_clients_and_finish_inte,
save_state, io_from_warning_dialog):
* src/core/core.c (meta_core_increment_event_serial):
* src/core/delete.c (release_window_with_fd, search_and_destroy_window):
sympathy changes for this, and consequent simplification.
Closes#499301.
svn path=/trunk/; revision=3663
2008-03-21 Thomas Thurman <tthurman@gnome.org>
* src/ui/menu.c (activate_cb, get_workspace_name_with_accel): Workspaces
whose name is the standard name plus a non-empty string are handled
correctly in menus. Closes#453678.
svn path=/trunk/; revision=3657
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-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 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-11 Matthew Wilson <msw@gimp.org>
* src/core/keybindings.c (meta_display_process_key_event, process_event,
find_handler, process_mouse_move_resize_grab): allow moving workspace
while moving window with modifier
* src/core/workspace.c (meta_workspace_activate_with_focus): remove the
correct window on jumping workspace while moving
svn path=/trunk/; revision=3649
2008-03-06 Thomas Thurman <tthurman@gnome.org>
Part three of the great prefs refactor, this time
dealing with string preferences. (This was the most
complicated part, and has been especially tested and
valground before committing. As ever, though, let us
know if you find a problem.)
* src/core/prefs.c (MetaStringPreference): new struct.
* src/core/prefs.c (update_*): replaced with *_handler
* src/core/prefs.c (meta_prefs_init): uses new string prefs
init; uses array of gconf dirs to monitor rather than
repeating code.
* src/core/prefs.c (handle_preference_init_enum): tidying
* src/core/prefs.c (change_notify): uses new string prefs
svn path=/trunk/; revision=3624
2008-03-03 Cosimo Cecchi <anarki@lilik.it>
Add ability to vertically and horizontally maximise
using the mouse, by clicking the titlebar in various
ways. A very similar patch was received from Jason Ribero.
Thanks also go to Tony Houghton and Carlo Wood, who
both submitted patches which solved this differently.
Closes#358674.
* src/include/common.h (MetaActionTitlebar): new values
for the new actions
* src/core/core.c (meta_core_maximize_{vertic|horizont}ally):
new functions.
* src/ui/frames.c (meta_frame_titlebar_event): handle the
new action values
* src/core/window.h: new macros (for regularity, not really
necessary)
* src/core/prefs.c (symtab_titlebar_action): new string
representations of the action values
* src/metacity.schemas.in: documentation
svn path=/trunk/; revision=3619
2008-02-29 Andrea Del Signore <sejerpz@tin.it>
Add support for "spacer" as a button type which adds some
empty space. Closes#509165.
* src/ui/theme.c (meta_frame_layout_calc_geometry),
src/include/common.h (MetaButtonLayout),
src/core/prefs.c (update_button_layout, button_layout_equal),
src/metacity.schemas.in: add spacer support
svn path=/trunk/; revision=3615
2008-02-28 Thomas Thurman <tthurman@gnome.org>
* src/core/compositor.h: removed unnecessary #include which
should have been in Jim's patch (not sure how it slipped
through the tests!)
svn path=/trunk/; revision=3610
2008-02-27 Jim Huang <jserv.tw@gmail.com>
* src/core/spring-model.[ch]: deleted as no longer used
* src/Makefile.am: modified accordingly
svn path=/trunk/; revision=3607
2008-02-25 Thomas Wood <thos@gnome.org>
* src/ui/preview-widget.[ch] (meta_preview_get_clip_region):
allow users of the preview widget to get a mask for windows
in the correct shape for the current theme.
svn path=/trunk/; revision=3596
2008-02-23 Thomas Thurman <tthurman@gnome.org>
Refactor handling of boolean preferences.
* src/core/prefs.c (handle_preference_init_bool,
handle_preference_update_bool): new functions.
* src/core/prefs.c (meta_prefs_init, change_notify):
use the new functions.
* src/core/prefs.c (update_*): several of these removed whose
only purpose was to receive boolean preferences.
* src/core/prefs.c (cleanup_error, get_bool): moved down to make
the flow of ideas more obvious.
* src/core/prefs.c (maybe_give_disable_workarounds_warning): new
function containing duplicated code from elsewhere.
* src/core/prefs.c (init_button_layout): only compiled when
HAVE_GCONF is not defined. Removed a compiler warning.
svn path=/trunk/; revision=3590
2008-02-23 Thomas Thurman <tthurman@gnome.org>
Refactored handling of enumerated preferences.
* src/core/prefs.c (handle_preference_init_enum,
handle_preference_update_enum): new functions.
(meta_prefs_init, change_notify): use regularised
forms and remove old copy-and-pasted code.
Also many small similar functions removed which
only existed to deal with each kind of enum.
Also some amount of correction of which parts were
and weren't inside "#ifdef HAVE_GCONF" blocks.
svn path=/trunk/; revision=3586
2008-02-18 Matthias Clasen <mclasen@redhat.com>
* src/core/window.h: Make skip-taskbar windows appear in the
Ctrl-Alt-Tab list. Closes#106249.
svn path=/trunk/; revision=3580
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-04 Thomas Thurman <tthurman@gnome.org>
* src/core/compositor.c: only use compositor version if
we have a compositor. Closes#514453.
svn path=/trunk/; revision=3552
2008-02-04 Thomas Thurman <tthurman@gnome.org>
* configure.in, src/ui/ui.c: remove workaround for a problem
in GTK 1.3.9(!) which was causing problems. Closes#513737.
svn path=/trunk/; revision=3551
2008-01-28 Michael Meeks <michael.meeks@novell.com>
* src/core/display.c (meta_display_open),
* src/core/compositor.c: fetch & use composite
version, for remote screens that don't match the
compile system's version.
(meta_compositor_manage_screen): bin erroneous FIXME.
(add_win): remove common warning churn for (very)
transient windows
svn path=/trunk/; revision=3550
2008-02-02 Thomas Thurman <tthurman@gnome.org>
* src/Makefile.am: core.h is in include, not core. (Last one, I
promise.)
svn path=/trunk/; revision=3537
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-01-12 Thomas Thurman <tthurman@gnome.org>
* src/core/main.[ch] (meta_get_main_loop): removed as it
was never used.
* src/core/main.c: lots of comments.
* src/core/main.c (version): copyright year is 2008.
* src/core/c-screen.[ch], src/core/c-window.[ch]: removed
files from Søren's compositor which were removed by the
merge with Iain's compositor but reintroduced by the split
to separate subdirectories.
* src/core/display.c: fix comments.
svn path=/trunk/; revision=3515
2008-01-12 Thomas Thurman <tthurman@gnome.org>
* src/core/display.c: change comments from /*! to /** because the
other way makes doxygen think they are Qt comments, which messes
up brief descriptions.
* Doxyfile: check in so other people can generate documentation too.
svn path=/trunk/; revision=3513
2008-01-07 Thomas Thurman <tthurman@gnome.org>
* src/core/display.c: further commenting (trying to keep comment
addings down to once a day at most so you don't all get spammed
too much).
svn path=/trunk/; revision=3511
2008-01-07 Thomas Thurman <tthurman@gnome.org>
* src/core/main.c (main): g_free is a no-op on nulls; there is no
need to test.
svn path=/trunk/; revision=3510
2007-12-25 Iain Holmes <iain@gnome.org>
* src/core/compositor.c: USe the compositor overlay window
instead of
the root window.
svn path=/trunk/; revision=3498
2007-12-21 Paolo Borelli <pborelli@katamail.com>
* src/core/core.c (meta_invalidate_default_icons): do not leak list.
* src/core/edge-resistance.c
(meta_display_compute_resistance_and_snapping_edges): ditto.
* src/core/workspace.c (meta_workspace_index): small cleanup in list
handling.
svn path=/trunk/; revision=3495
2007-12-19 Havoc Pennington <hp@redhat.com>
* src/core/display.c (meta_display_open): fix a third warning
about %d and long int
* src/core/delete.c (io_from_ping_dialog): fix another warning
about long int to %d
* src/core/compositor.c (meta_compositor_new): fix a warning about
long int to %d
* src/core/iconcache.c (meta_read_icons): use
meta_ui_get_fallback_icons() instead of incorrectly including theme.h
* src/ui/ui.c (meta_ui_get_fallback_icons): new function
svn path=/trunk/; revision=3492
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-08 Thomas Thurman <tthurman@gnome.org>
* src/metacity.schemas.in: rewrite long description of
/schemas/apps/metacity/general/focus_new_windows because we
love the translators really. Closes#474889.
svn path=/trunk/; revision=3466
2007-12-08 Thomas Thurman <tthurman@gnome.org>
* src/keybindings.c (meta_display_process_key_event): Recur if the
keypress ended a grab, so it can be processed in its own right.
Closes#112560.
svn path=/trunk/; revision=3464
2007-11-19 Lucas Rocha <lucasr@gnome.org>
* src/main.c (main): try to get the session client ID from
DESKTOP_AUTOSTART_ID environment variable in case the --sm-client-id
is not used. Closes#498033.
svn path=/trunk/; revision=3415
2007-11-17 Benjamin Gramlich <benjamin.gramlich@gmail.com>
* src/theme-parser.c (meta_theme_load): make our theme
search compliant to the XDG Base Directory Specification.
Closes#480026.
svn path=/trunk/; revision=3411
2007-11-15 Thomas Thurman <thomas@thurman.org.uk>
* src/api.[ch]: remove almost-unused files.
* src/colors.[ch]: move the used parts of api.[ch] in here.
Closes#496947.
svn path=/trunk/; revision=3401
2007-11-11 Thomas Thurman <thomas@thurman.org.uk>
* src/window.c (meta_window_show): adjust expression which decides
whether new windows should not go on top, so that restacking happens
only the first time a window is mapped. Thanks to Olav Vitters for
pointing out the problem. Re-fixes #486445.
svn path=/trunk/; revision=3386
2007-11-11 Alex R.M. Turner <armtuk@gmail.com>
* src/tabpopup.c (tab_entry_new, meta_ui_tab_popup_new): Instruct the
GtkLabel in the tabpopup to ellipsize text that is too big. Set the
maximum window width of the tabpopup to screen_width/4, which seems a
sensible size for the popup.
svn path=/trunk/; revision=3385
2007-11-09 Elijah Newren <newren gmail com>
* src/window.c (meta_window_new_with_attrs): If a window is
launched without any kind of launch timestamp, grab the current
time and stash it away. When transients of that window are also
launched without a timestamp, we can use the stashed timestamp
from the parent. Fixes#488468.
svn path=/trunk/; revision=3381
2007-11-09 Federico Mena Quintero <federico@novell.com>
* src/window.c (intervening_user_event_occurred): When the window
doesn't have a user time nor an initial timestamp set, act as if
there always was an intervening user event. This causes
un-timestamped windows to *not* get the focus. Fixes
http://bugzilla.gnome.org/show_bug.cgi?id=488468
Signed-off-by: Federico Mena Quintero <federico@gnu.org>
svn path=/trunk/; revision=3378
2007-10-28 Jans Granseuer <jensgr@gmx.net>
* src/preview-widget.c (meta_preview_finalize): Free title of
preview when the preview is destroyed. Closes#469682.
svn path=/trunk/; revision=3365
2007-10-27 Alex R.M. Turner <armtuk@gmail.com>
* src/tabpopup.c (tab_entry_new): Truncate the string to
max_char_per_title before adding bold tags and fix general flow of
function.
svn path=/trunk/; revision=3363
2007-10-16 Thomas Thurman <thomas@thurman.org.uk>
* src/window.c (window_would_be_covered): new function.
* src/window.c (meta_window_show): rewrite assertion not
to put window on top in terms of window_would_be_covered();
remove assertion because it's no longer valid; explicitly
don't focus windows that shouldn't be focussed; closes#486445.
svn path=/trunk/; revision=3358
2007-09-15 Elijah Newren <newren gmail com>
* src/session.c (warn_about_lame_clients_and_finish_interact):
Patch from Alexey Rusakov to prevent a crash on logout with
metacity subsequently not being restored in future sessions.
Fixes#433253.
svn path=/trunk/; revision=3340
Tue Aug 7 13:26:49 2007 Søren Sandmann <sandmann@redhat.com>
* src/window.c (meta_window_notify_focus): Don't maintain a
passive grab on windows when raise-on-click is FALSE - bug
461577.
svn path=/trunk/; revision=3293
2007-08-06 Thomas Thurman <thomas@thurman.org.uk>
If KEY_AUTO_RAISE_DELAY is undefined or non-integer, it is not treated
as zero.
* src/prefs.c (meta_prefs_init): check type of key, and behave sensibly
if it's unexpected.
* src/prefs.c (find_and_update_list_binding): remove old comment.
svn path=/trunk/; revision=3287
2007-08-02 Thomas Thurman <thomas@thurman.org.uk>
Move "close" to bottom of window menu; allow workspace list to appear
at any position in the menu. Closes#104026.
* src/menu.c (MetaMenuItemType): added new MENU_ITEM_WORKSPACE_LIST
item.
* src/menu.c (menuitems): reordered "close", added a workspace list.
* src/menu.c (menu_item_new): return null for workspace lists.
* src/menu.c (meta_window_menu_new): handle workspace lists.
svn path=/trunk/; revision=3283
2007-06-31 Thomas Thurman <thomas@thurman.org.uk>
* src/window.c (meta_window_show_menu): windows which are
always on top have the "stick" menu option insensitive. (#460997).
svn path=/trunk/; revision=3282
2007-06-23 Thomas Thurman <thomas@thurman.org.uk>
* src/window.h (MetaWindow): Put all bitfields together to
help with optimisation. Closes#450271 (for real this time).
svn path=/trunk/; revision=3281
2007-07-22 Rob Bradford <rob@robster.org.uk>
Fix a bug where the window can be focused without being raised
if the maximize is aborted. Fixes#459027.
* src/frames.c (meta_frames_button_press_event,
meta_frames_button_release_event): When maximising only focus
the window once the button press is released.
svn path=/trunk/; revision=3273
2007-07-22 Cosimo Cecchi <anarki@lilik.it>
Unset fullscreen is an allowed action where relevant. Fixes#449427.
* src/window.c (set_allowed_actions_hint): Separate FULLSCREEN action from RESIZE action.
svn path=/trunk/; revision=3272