2006-03-29 Elijah Newren <newren gmail com>
Fix grouping in the presence of ancestors; caught by Björn.
#336184
* src/group.c (meta_window_compute_group): Use new
meta_window_find_root_ancestor() function to get ancestor; for the
computed group, use the ancestor's group instead of the ancestor
itself
* src/window.[ch] (meta_window_find_root_ancestor,
meta_window_raise): split meta_window_find_root_ancestor()
functionality of meta_window_raise() and make it available
elsewhere
2006-03-29 Thomas Thurman <thomas@thurman.org.uk>
* src/window.c, src/window.h (meta_window_set_demands_attention,
meta_window_unset_demands_attention): mark a window as needing
or not needing the user's attention
* src/window.c (meta_window_show, window_activate,
meta_window_focus, meta_window_configure_request,
meta_window_client_message): use the new set/unset
demands attention functions. Fixes#305822.
Tue Mar 28 09:57:26 2006 Søren Sandmann <sandmann@redhat.com>
* src/c-screen.c (meta_screen_info_add_window): Also check for overlay_window.
* src/c-screen.c (meta_screen_info_redirect): Trap errors out of
unredirect().
2006-03-25 Thomas Thurman <thomas@thurman.org.uk>
* src/window.c, src/window.h (update_net_wm_state,
update_mwm_hints, update_wm_class, update_transient_for):
deleted and moved into window-props.c
(meta_window_new_with_attrs): added constructing field
and four new initial properties (as above)
(meta_window_recalc_features,
meta_window_recalc_window_type): new functions
* src/window-props.c (init_net_wm_state, reload_net_wm_state
init_mwm_hints, reload_mwm_hints, init_wm_class,
reload_mwm_class, init_transient_for, reload_transient_for):
new functions, moved in from window.c
(meta_display_init_window_prop_hooks): initialise new properties
2006-03-16 Ray Strode <rstrode@redhat.com>
Add patch from Elijah Newren to fix type
for compositing_manager schema entry (bug 335901)
* src/metacity.schemas.in: Change type from "boolean" to "bool"
and default value from "FALSE" to "false"
Mon Mar 20 11:50:44 2006 Søren Sandmann <sandmann@redhat.com>
* src/c-screen.c (meta_screen_info_redirect): Put the desktop into
a magnifier.
* src/c-screen.c (struct MetaScreenInfo): Add a CmMagnifier
* src/c-screen.c (meta_screen_info_redirect): Move some of the gl
window related stuff here.
2006-03-03 Thomas Thurman <thomas@thurman.org.uk>
Always set _NET_WM_STATE when a window is shown or
hidden, even if it wasn't mapped.
* src/window.c (meta_window_hide, meta_window_show):
call set_net_wm_state unconditionally
2006-03-16 Elijah Newren <newren gmail com>
Add debugging information for edge resistance
* src/edge-resistance.c (cache_edges): print out the edges that
are being cached if in verbose mode,
(meta_window_edge_resistance_for_move,
meta_window_edge_resistance_for_resize): if edge resistance kicked
in then print out a message about it
* src/util.c:
* src/util.h:
Add META_DEBUG_EDGE_RESISTANCE to MetaDebugTopic enum list
Wed Mar 15 16:30:09 2006 Søren Sandmann <sandmann@redhat.com>
* src/compositor.c (set_geometry): Use set_target_rect() instead
of set_size().
* src/c-screen.c: Add set_target_rect() as a way of scaling windows.
* src/window.c (meta_window_handle_mouse_grab_op_event): Turn
updates on after a button release.
* src/window.c (meta_window_move_resize_internal): Fix
indentation.
Tue Mar 14 11:57:46 2006 Søren Sandmann <sandmann@redhat.com>
* src/compositor.c: Comment out wobbling
* src/compositor.c (blow_up): remove this function
* src/compositor.c (process_configure_notify): Uncomment
set_size().
* src/c-screen.c (meta_screen_info_set_updates): When updates are
true, set all the properties such as size and shape.
* src/c-screen.c (meta_screen_info_add_window): Create a special
WindowInfo structure for each window.
* src/c-screen.c (meta_screen_info_set_size): Set size and output
shape of the drawable node.
2006-03-06 Ryan Lortie <desrt@desrt.ca>
* src/window.c (meta_window_free): Only unmaximise window before
freeing if the window is actually maximised. #333563.
Wed Mar 3 13:25:03 2006 Søren Sandmann <sandmann@redhat.com>
* src/compositor.c, src/c-screen.[ch]: Split the ScreenInfo data
structure into separate, new files c-screen.[ch].
* src/errors.c (x_error_handler): Forward foreign errors to
foreign displays.
* src/errors.c (meta_errors_register_foreign_display): Implement
this function
* src/errors.h: Add new meta_errors_register_foreign_display()
Tue Feb 28 14:49:23 2006 Søren Sandmann <sandmann@redhat.com>
* src/compositor.c: Put the windows in a stacker rather than
do the traversing outselves.
2006-02-27 Elijah Newren <newren gmail com>
Patch from Thomas Thurman to prevent setting cycle_windows to
keybindings that won't work. #329676
* src/prefs.c (update_binding):
Make sure that bindings which require a modifier key are set to a
keybinding with one or else that the binding is reverted.
* src/ui.[ch] (meta_ui_accelerator_name):
New function
2006-02-27 Elijah Newren <newren gmail com>
Patch from Thomas Thurman to work around buggy application
grouping with transient windows. #328211
* src/group.c (meta_window_compute_group):
Put transients in the same group with their parent, always.
* src/window.c (update_transient_for):
Update group too
Sat Feb 25 11:46:14 2006 Søren Sandmann <sandmann@redhat.com>
* src/display.c (meta_display_begin_grab_op): Call
meta_compositor_begin_move if there is a compositor
* src/compositor.c (meta_compositor_begin/update/end_move):
Implement those functions.
* src/spring-model.[ch]: New files
Thu Feb 23 15:40:52 2006 Søren Sandmann <sandmann@redhat.com>
* src/compositor.c (meta_compositor_manage_screen): Don't attempt
to manage the screen if it already is managed.
* src/compositor.c (meta_compositor_unmanage_screen): Synchronize
the display.
2006-02-19 Thomas Thurman <thomas thurman org uk>
Removed "move to another workspace" menu when there are
exactly two workspaces. Fixes#151183.
* src/menu.c (meta_window_menu_new): clear
META_MENU_OP_WORKSPACES bit when n_workspaces==2
Fri Feb 17 11:56:35 2006 Søren Sandmann <sandmann@redhat.com>
* src/screen.c (meta_screen_free): Only uncomposite the screen if
there is a compositor.
* src/compositor.c (meta_compositor_new): Warn and fail if the
server doesn't have composite
Thu Feb 16 15:24:42 2006 Søren Sandmann <sandmann@redhat.com>
* src/screen.c (meta_screen_composite_all_windows): New function.
* src/prefs.[ch], src/metacity.schemas.in: Add new
compositing_manager key.
* src/display.c (prefs_changed_callback): Handle
META_PREF_COMPOSITOR_MANAGER
* src/display.c (event_callback): Only call
meta_compositor_process_event() if there is in fact a compositor.
* src/display.c (enable/disable_compositor): Add code to
enable/disable compositor at runtime
Wed Feb 15 14:47:50 2006 Søren Sandmann <sandmann@redhat.com>
* src/compositor.c (meta_compositor_unminimize): Add unused wobbly
unminimize animation by Kristian
* src/compositor.c (meta_compositor_minimize): Add wobbly minimize
animation by Kristian.
* src/compositor.c: Add support for turning updates on and off.
* src/window.c (meta_window_move_resize_internal): Use
sync counter to make composited resizing tear free
2006-02-13 Elijah Newren <newren gmail com>
* src/keybindings.c (process_tab_grab):
We had that prev_window code in multiple places and it was all
identical. Let's just stick it in one place to make the function
easier to read.
2006-02-11 Thomas Thurman <thomas thurman org uk>
Disable alt-f7 if a window can't be moved, and alt-f8 if it
can't be resized. Fixes#328920.
* src/keybindings.c (handle_begin_move, handle_begin_resize):
check window->has_*_func before beginning operation
2006-02-11 Elijah Newren <newren gmail com>
Add a man page for metacity. Original version taken from Debian
(written by Thom May and Akira Tagoh) and updated by Luke Morton
and Philip O'Brien. Necessary auto-fu supplied by Philip O'Brien.
Fixes#321279.
2006-02-11 Elijah Newren <newren gmail com>
* src/stack.h (enum MetaStackLayer):
* src/stack.c (get_standalone_layer):
actually use META_LAYER_TOP but just manually make it equal to
META_LAYER_DOCK. Add a note point to the EWMH for why we do this.
#330717
2006-02-10 Thomas Thurman <thomas thurman org uk>
Avoid a memory leak when checking which workspace(s) a window is
on. Fixes#322059.
* src/workspace.h (struct MetaWorkspace):
* src/workspace.c (meta_workspace_new, meta_workspace_free):
added list_containing_self member to MetaWorkspace
* src/window.c (meta_window_get_workspaces): use
window->workspace->list_containing_self instead of allocating (and
leaking) such a list on the fly.
2006-02-09 Thomas Thurman <thomas thurman org uk>
* src/testboxes.c (test_regions_okay, test_clamping_to_region):
add messages to explain that warnings are harmless
2006-02-03 Thomas Thurman <thomas thurman org uk>
* src/display.c (event_callback): produce warning when invalid
events with no timestamp are received, rather than failing an
assertion
2006-01-30 Elijah Newren <newren gmail com>
* src/display.[ch] (struct MetaDisplay), meta_display_open,
meta_display_set_input_focus_window,
meta_display_focus_the_no_focus_window): Track the active_screen,
(event_callback): If the mouse enters a window on a different
screen, activate the default window on the new screen. May need
to be modified for click-to-focus; we'll wait for feedback. Fixes
#319348.
2006-01-23 Elijah Newren <newren gmail com>
* src/display.c (meta_display_check_threshold_reached): change the
order of the ||'ed items in the if to avoid using an uninitialized
value
* src/prefs.c (meta_prefs_init): fix a couple uninitialized value
problems
2006-01-21 Elijah Newren <newren gmail com>
Patch from Christian Kirbach to prevent a critical warning crasher
when switching themes. #327847.
* src/theme.c (meta_theme_free): since themes are only constructed
as needed and may be NULL, check for that before freeing theme
hash tables
2006-01-21 Elijah Newren <newren gmail com>
* src/common.h (enum MetaActionDoubleClickTitlebar):
* src/frames.c (meta_frames_button_press_event):
* src/prefs.c (action_double_click_titlebar_from_string):
* src/metacity.schemas.in:
Patch from Dick Marinus to add a minimize
double-click-titlebar-action; slightly modified to also include a
none action. #300210.
2006-01-20 Elijah Newren <newren gmail com>
* src/constraints.c (setup_constraint_info): fixed_directions is
only meant for explicit user interactions; disable it for
everything else. There are other bugs and improvements that could
be made with fixed_directions that I should be filing too, but at
least put a FIXME there for now--I'm so lame. Fixes#327822.
2006-01-20 Elijah Newren <newren gmail com>
Avoid flashing when closing a maximized window. Fixes#317254.
* src/window.c (unmaximize_window_before_freeing): new function
that just fixes the net_wm_state and sends a configure_notify,
(meta_window_free): use unmaximize_window_before_freeing() instead
of meta_window_unmaximize() to avoid flicker
2006-01-20 Elijah Newren <newren gmail com>
Fix unitialized value problem when in raise-on-click mode. Søren,
#327572.
* src/display.c (meta_display_check_threshold_reached): make
function be a no op if raise_on_click!=FALSE
* src/display.h (struct MetaDisplay): point out that
grab_initial_[xy] and grab_threshold_movement_reached are only for
raise_on_click==FALSE mode.
2006-01-20 Elijah Newren <newren gmail com>
Patch from Søren to fix some reading-from-free'd-data errors.
#327575
* src/edge-resistance.c (meta_display_cleanup_edges): store the
edges in a hash table so that we can still read their values
within the loop from the other array they are stored in, then free
them all at the end.
2006-01-20 Elijah Newren <newren gmail com>
Fix various initialization and default issues, especially for
--disable-gconf. Make --disable-gconf actually work. #326661.
* configure.in: Fix compilation with --disable-gconf
* src/metacity.schemas.in: Add a note that if any defaults are
changed in this file, src/prefs.c may need to be updated to
reflect the change
* src/prefs.c: set various static global vars to the right default
value, (meta_prefs_init): get the titlebar_font and current_theme
handled better when not using gconf, (struct MetaSimpleKeyMapping,
screen_string_bindings, window_string_bindings): helper vars to
allow some keybindings to work even without gconf,
(init_bindings): initialize bindings for the without-gconf case
too, (init_commands): make sure these are all NULL for the
non-gconf case so that we don't access random memory,
(init_workspace_names): just give these all a default name for the
non-gconf case,
(meta_prefs_change_workspace_name): actually change the name for
the non-gconf case too
2006-01-20 Elijah Newren <newren gmail com>
More careful error handling of values returned by GConf. Fixes
#326615.
* src/prefs.c (get_bool): new helper function, (meta_prefs_init):
use get_bool to handle the case of a gconf key not existing,
(update_cursor_size): sanity check for sane values
2006-01-20 Elijah Newren <newren gmail com>
Prevent rapidly repeated visual bells from hanging metacity.
Fixes#322032.
* src/display.h (struct MetaDisplay): add a last_bell_time field,
(XSERVER_TIME_IS_BEFORE_ASSUMING_REAL_TIMESTAMPS macro,
XERVER_TIME_IS_BEFORE macro): add parentheses around usage of
macro parameter
* src/display.c (meta_display_open): initialize last_bell_time,
(event_callback): don't allow more than one bell per second
2006-01-20 Elijah Newren <newren gmail com>
Patch from Björn Lindqvist to fix#98340.
* src/screen.c (meta_screen_ensure_tab_popup): Make sure an
outline border is shown even if a window frame's width is 0.
Also, correctly handle window outlines in showing desktop mode.
Thu Jan 19 18:05:47 2006 Søren Sandmann <sandmann@redhat.com>
* src/compositor.c (meta_compositor_manage_screen):
g_object_unref() rather than ws_region_unref().
2006-01-16 Elijah Newren <newren gmail com>
* src/window-props.c: manually define HOST_NAME_MAX if not already
defined to fix Solaris compilation issue. Caught by Damien
Carbery, patch from Havoc. #326745
2006-01-15 Kyle Ambroff <kambroff@csus.edu>
* src/workspace.c (focus_ancestor_or_mru_window):
If no valid window is found in the MRU list, then set focus to the
desktop window. (#317405)
2006-01-15 Elijah Newren <newren@gmail.com>
Fix accidental overzealous focus holding by the terminal
introduced by the original patch in bug 326159. Windows launched
from panel icons, the panel menu, or global keybindings should get
focus now. #326159.
* src/display.c (meta_display_open, event_callback):
* src/display.h (struct MetaDisplay):
* src/keybindings.c (process_event):
* src/window.c (meta_window_set_user_time):
Add a new allow_terminal_deactivation field to MetaDisplay and use
it to track whether the user's last action was interaction with
the terminal or some outside action (global keybinding, clicking
on a dock, etc.) likely to launch a new window.
* src/window.c (window_state_on_map):
Allow the focus switch from a terminal to something else if
allow_terminal_deactiviation is true.
* src/keybindings.c (handle_panel_keybinding):
Remove some unneeded code.
Fri Jan 13 14:40:19 2006 Søren Sandmann <sandmann@redhat.com>
* configure.in: Add a dependency on libcm when building with
compositor.
* src/window.c (meta_window_hide): Make this function static.
* src/window.c (implement_showing): Use meta_compositor_minimize()
to do a weird minimize effect.
* src/compositor.[ch]: Beginning of new GL based compositor.
* src/screen.h (struct _MetaScreen): Add void pointer to
compositor data.
* src/screen.c (meta_screen_new): Remove obsolete compositor
stuff; initialize compositor_data. Don't composite manage screen
out of this function.
* src/errors.c (x_error_handler): Check that display is non-NULL
before using it. Add comment about how that can happen.
* src/display.c (meta_display_{begin,end}_grab_op): Remove
explicity damage of windows.
* src/display.c (meta_display_open): Composite manage all the
screens.
2006-01-10 Elijah Newren <newren@gmail.com>
Add a raise on click option, basically only because all the major
distros are patching it in anyway. See #326156.
* src/metacity.schemas.in: add the new gconf key and explanation
* src/prefs.[ch] (#define KEY_RAISE_ON_CLICK, static gboolean
raise_on_click, update_raise_on_click, meta_prefs_init,
change_notify, meta_prefs_get_raise_on_click,
meta_preference_to_string):
Add all the normal preference handling stuff for this new
raise-on-click option.
* src/core.c (meta_core_show_window_menu):
* src/display.c (event_callback, meta_display_begin_grab_op):
* src/window.c (window_activate, meta_window_configure_request, ):
Only raise the window if in raise_on_click mode.
* src/display.c (meta_display_begin_grab_op,
meta_display_end_grab_op, meta_display_check_threshold_reached):
* src/display.h (struct MetaDisplay):
* src/window.c (meta_window_handle_mouse_grab_op_event):
if not in raise-on-click mode only raise on button release if the
click didn't start a move or resize operation; needs a few extra
MetaDisplay fields to handle this
* src/core.c (meta_core_user_lower_and_unfocus):
no need to do the MRU shuffling if not maintaining the stacking
order == MRU order invariant
* src/frames.c (meta_frames_button_press_event):
* src/window.c (meta_window_begin_grab_op):
remove an unneeded window raising that is already handled elsewhere
2006-01-10 Elijah Newren <newren@gmail.com>
Don't "steal" focus from terminal windows for new window mappings
as the difference in usage between terminals and other apps seems
to suggest this difference in treatment. See #326159 for details,
feedback welcome.
* src/window.[ch] (__window_is_terminal): New function, currently
an ugly hack and should be replaced by a new property set by
applications if the behavior works to our liking,
(window_state_on_map): don't transfer focus to new windows from
terminals unless the new window is a transient of the focused
terminal
* src/keybindigns.c (handle_panel_keybinding): panel run dialog
keybinding should be counted as an explicit transfer of focus to
the new window, so override the
don't-transfer-focus-from-terminals in this case
2006-01-09 Elijah Newren <newren@gmail.com>
More thorough handling of source indication. Part of #326041.
* src/window.c (window_activate): new function based off the old
meta_window_activate but which also takes source indication into
account, (meta_window_active): just call window_activate() with
the necessary source indication to get the behavior wanted,
(meta_window_client_message): check source indication too for
_net_active_window messages
* src/window.h (enum MetaClientType): convenience enum for source
indication handling