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
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-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
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-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-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>
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-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-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-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-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-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-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-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-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-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