2006-07-24 Björn Lindqvist <bjourne@gmail.com>
* src/display.c (meta_display_grab_window_buttons): Grab
Alt+Shift+Button1 as well to partially fix operation ordering
issues when trying to snap-move windows. Part of #112478.
2006-06-10 Elijah Newren <newren gmail com>
Patch from Aidan Delaney to tidy tabpopup.c by factoring out
tab_entry_new(). #166890.
* src/tabpopup.c (tab_entry_new): new function,
(meta_ui_tab_popup_new): use tab_entry_new() to remove a big chunk
of code, plus a few other small cleanups.
2006-05-29 Elijah Newren <newren gmail com>
* HACKING: Slightly more detailed instructions on setting up a
build environment to mention relevant development tools in
addition to the needed development libraries.
Fri May 26 16:48:29 2006 Søren Sandmann <sandmann@redhat.com>
* src/effects.c (meta_effect_run_unminimize): Run an unminimize effect
* src/window.c (meta_window_unminimize): Store a "was_minimized"
boolean in the window.
* src/window.c (meta_window_show): If the window was minimized,
run an unminimize animation.
* src/c-window.c (meta_comp_window_run_unminimize): Add an
unminimize animation, running the minimize one in reverse.
2006-05-26 Elijah Newren <newren gmail com>
* src/display.c (meta_display_close): Fix a crash on exit/logout
from assuming a compositor would always exist
Thu May 25 15:56:43 2006 Søren Sandmann <sandmann@redhat.com>
* src/effects.h (struct MetaEffect): Move duplicated window field
outside the union
* src/compositor.c: delete duplicated code to get at the window.
Thu May 25 15:17:29 2006 Søren Sandmann <sandmann@redhat.com>
* src/c-window.c: Fix compilation in non-compositor case, by
moving the stack functions into the HAVE_COMPOSITOR defines.
Thu May 25 15:11:58 2006 Søren Sandmann <sandmann@redhat.com>
* src/c-window.h: Add a destroy notifier to the window.
* src/c-screen.c (on_window_destroy): New function.
* src/c-screen.c (meta_comp_screen_add_window): Use the destroy
notifier here.
* src/c-window.c (generate_phases): New function. Simplify the
minimize animation a lot by generating all the rectangle
information into an array, then processing that.
Wed May 24 22:15:01 2006 Søren Sandmann <sandmann@redhat.com>
* src/compositor.c (do_effect): Make sure windows are kept on top
of the panel during minimize.
Wed May 24 21:17:59 2006 Søren Sandmann <sandmann@redhat.com>
* src/compositor.c (do_effect): Shrink the window instead of
explode it.
* src/compositor.c (do_effect): don't read the frame if it is
NULL.
* src/c-window.c (meta_comp_window_run_minimize): Resurrect the
shrinking minimize animation.
* src/c-window.c (meta_comp_window_fade_in): Make dialogs 90%
translucent.
* src/c-window.c (update_fade): End at end_fade, not 1.0.
Wed May 24 16:37:11 2006 Søren Sandmann <sandmann@redhat.com>
* src/c-window.c (private_metacity_window): New function
* src/c-window.c (meta_comp_window_refresh_attrs): Map metacity's
own windows directly.
Wed May 24 14:36:42 2006 Søren Sandmann <sandmann@redhat.com>
* src/c-window.c (meta_comp_window_{freeze,thaw}_stack: Add a
stack-freeze feature to CWindow.
* src/c-screen.c (meta_comp_screen_restack): Don't restack if the
window is frozen.
Wed May 24 12:57:32 2006 Søren Sandmann <sandmann@redhat.com>
* src/c-window.c (meta_comp_window_free): return TRUE when the
window is actually freed.
* src/compositor.c (do_effect): Disable updating before exploding
the window.
* src/c-window.c: Make MetaCompWindow refcounted.
* src/c-window.[ch]: New functions meta_comp_window_{show,hide}
* src/c-screen.c (meta_comp_screen_unmap): Call
meta_comp_window_hide() instead of directly setting the viewable
status of the node.
* src/c-screen.c (meta_comp_screen_remove_window): Only remove the
window when it is actually freed.
Tue May 23 16:36:04 2006 Søren Sandmann <sandmann@redhat.com>
* src/compositor.c (do_effect): Also use explode when windows close.
* src/c-window.c (meta_comp_window_explode): Add refcounting to
comp window, and use it in the explosion effect
* src/effects.h (struct MetaEffect): Add new MetaCloseEffect.
* src/display.c (event_callback): Run it from the UnmapNotify
event handler.
Tue May 23 15:23:58 2006 Søren Sandmann <sandmann@redhat.com>
* src/c-window.c (send_sync_request): New function to send a sync
request to newly mapped windows.
(on_request_alarm): Show the window here.
Mon May 22 17:35:52 2006 Søren Sandmann <sandmann@redhat.com>
* src/effects.[ch]: Beginning of new layer that abstracts
transition effects.
New functions:
(meta_push_effect_handler): Install an effect handler
(meta_pop_effect_handler): Remove last effect handler
(meta_effect_run_minimize): Create a minimize effect and pass it
to the handler.
(meta_effect_end): Called by handler when the effect is finished.
* src/compositor.c: Move explosion code form there to src/c-window.c.
* src/c-screen.c: Delete explosion related code.
2006-05-22 Björn Lindqvist <bjourne@gmail.com>
* common.h (enum MetaCursor):
* display.c (meta_display_create_x_cursor): Make mouse cursor when
moving windows become a hand. Fixes#337376.
2006-05-18 Björn Lindqvist <bjourne@gmail.com>
* resizepopup.c: Remove the unused attributes resize_gravity,
width_inc, height_inc, min_width, min_height, frame_left,
frame_right, frame_top, frame_bottom, tick_origin_x, tick_origin_y
from the MetaResizePopup struct. Delete all code that references
those attributes.
2006-05-15 Elijah Newren <newren gmail com>
* src/screen.c (reload_xinerama_infos): Patch from
jylefort@FreeBSD.org to prevent a crash when changing resolution.
Fixes#340847.
2006-05-15 Björn Lindqvist <bjourne@gmail.com>
* places.[ch] (intcmp, window_get_edges,
get_windows_showing_on_same_screen, get_vertical_edges,
get_horizontal_edges, meta_window_find_next_vertical_edge,
meta_window_find_next_horizontal_edge,
meta_window_find_nearest_vertical_edge,
meta_window_find_nearest_horizontal_edge): Remove the preceeding
functions as they are all obsoleted by the new edge-resistance
stuff. Fixes#341561.
2006-04-25 Elijah Newren <newren gmail com>
* HACKING: Clarify that gnome-common is needed now that autogen.sh
has been rewritten to use gnome-autogen.sh
Fri May 5 12:50:58 2006 Søren Sandmann <sandmann@redhat.com>
* src/c-window.c (has_counter): Some experimental code to handle
sync counter notifications on a window.
* src/c-screen.c (meta_comp_screen_add_window): Pass a MetaDisplay
2006-04-25 Elijah Newren <newren gmail com>
Clear _NET_WM_VISIBLE_NAME (and the ICON_ equivalent) when no
longer being used. Fixes#330671.
* src/window.[ch] (struct MetaWindow): new
using_net_wm_visible_name and using_net_wm_visible_icon_name bits,
(meta_window_new_with_attrs): initialize these new bits to false
* src/window-props.c (set_title_text, set_window_title, set_icon_title):
if the _NET_WM_VISIBLE_(ICON_)NAME property was previously set but
doesn't need to be this time, make sure to clear it
Thu May 4 13:30:04 2006 Søren Sandmann <sandmann@redhat.com>
* src/ui.h: Delete unused META_PRIORITY_COMPOSITE
* src/ui.c: Delete argument from meta_ui_get_display().
* src/c-window.c: Remove the xid->window hashtable and associated
code.
* src/c-screen.[ch]: Rename MetaScreenInfo to MetaCompScreen. Put the
xid->windows table here instaed of as a static variable. Also make
sure that CompWindows are freed when the screen is unredirected.
* src/display.c: Delete non USE_GDK_DISPLAY case, as it didn't
work and hasn't been compiled for a long time.
* src/display.[ch] (meta_display_open): Remove argument as it was
always NULL (and couldn't possibly be anything else in the
USE_GDK_DISPLAY case).
Tue May 2 17:12:54 2006 Søren Sandmann <sandmann@redhat.com>
* src/c-window.[ch]: New files
* src/c-screen.c: Move WindowInfo struct to new c-window.[ch]
files. Delete various bits of obsolete, commented-out code.
Fri Apr 28 12:53:23 2006 Søren Sandmann <sandmann@redhat.com>
* src/core.c (get_window): New function.
* src/core.c: Use get_window() instead of cutted-and-pasted code
all over the place.
2006-04-25 Elijah Newren <newren gmail com>
* autogen.sh: Nuke the old version, copy one from gcalctool that
uses gnome-autogen.sh. Seems to fix the
translations-aren't-included-in-the-tarball problem. Fix from
Rodney in IRC.
2006-04-25 Elijah Newren <newren gmail com>
* NEWS: 2.15.1 release
* configure.in: belated post-release version bump to 2.15.1
* src/Makefile.am: Include boxes.h so that control-center won't
fail to build #339708.
2006-04-20 Brian Pepple <bdpepple@gmail.com>
#337951.
* po/LINGUAS: New file listing all supported languages.
* configure.in: Use po/LINGUAS instead of including all languages
directly in this file. See the wiki for more information:
http://live.gnome.org/GnomeGoals/PoLinguas.
2006-04-19 Thomas Andersen <phomes@gmail.com>
* src/window-props.c (reload_transient_for): warn and ignore if
transient_for is set to a non-top-level window. Fixes#335524.
2006-04-19 Björn Lindqvist <bjourne@gmail.com>
* src/frames.c (struct CachedPixels, meta_frames_destroy,
invalidate_cache, generate_pixmap, populate_cache,
cached_pixels_draw, meta_frames_expose_event,
meta_frames_paint_to_drawable):
Replace while loops iterating over sequences with for loops. Also,
replace the attributes in the CachedPixels struct with a list of
four CachedFramePiece:s, this allows iteration over the four
pixmaps instead of treating each one separately. Fixes#338359.
2006-04-18 Björn Lindqvist <bjourne@gmail.com>
* makefile.am: Add boxes.{c,h} to libmetacity_private
* src/theme-parser.c (check_expression):
* src/theme-viewer.c (run_position_expression_tests):
Use meta_rect ().
* src/theme.c: Replace while loops iterating over sequences with
for loops.
* src/theme.c, src/theme.h (struct _MetaPositionExprEnv,
meta_draw_op_draw, meta_draw_op_list_draw,
meta_theme_draw_menu_icon): Use MetaRectangles in function
prototypes instead of x, y, with, height ints where applicable.
2004-04-17 Thomas Thurman <thomas@thurman.org.uk>
* keybindings.c (count_bindings, rebuild_binding_table):
* prefs.c (change_notify, screen_bindings,
window_bindings, init_bindings, update_binding,
find_and_update_list_binding, update_list_binding,
meta_prefs_get_window_binding): Allow any keybinding pref
to be specified either with <foo>, a string, or <foo>_list,
a list of strings, or both. Fixes#164831.
2006-04-16 Elijah Newren <newren gmail com>
Patch from Dan Sanders to fix#334899.
* window.c (meta_window_new_with_attrs): Unminimize ancestors of
new windows when mapped; this prevents e.g. confirmation windows
from causing applications to appear locked when closing via the
window list.
2006-04-15 Elijah Newren <newren gmail com>
Patch from Dan Sanders to fix#335076.
* src/core.c (meta_core_maximize, meta_core_toggle_maximize,
meta_core_unmaximize):
* src/window.c (meta_window_client_message):
Raise windows on maximize/unmaximize.
2006-04-14 Thomas Thurman <thomas@thurman.org.uk>
Add a tabbing function, bound to alt-f6 by default, to cycle
through the windows of the current application. Fixes#164831.
* src/common.h: two new MetaGrabOpts values for group switching
* src/display.c (ping_data_free, meta_display_in_grab_op,
IN_TAB_CHAIN): adapt to new MetaGrabOpts
* src/display.h: new enum value for MetaTabList for group switching
* src/keybindings.c (meta_display_process_key_event):
adapt to new MetaGrabOpts
(process_tab_grab): adapt to new MetaGrabOpts, and use switch
statement for cancelling instead of if statement
* src/metacity.schemas.in: new keybindings
* src/prefs.c, src/prefs.h: handle new keybindings
* src/window.h: define META_WINDOW_IN_GROUP_TAB_CHAIN macro
2006-04-14 Elijah Newren <newren gmail com>
* HACKING: Include reasons why gdk/gtk.h and core includes like
display.h/window.h must be kept separate. Taken from a private
email from Havoc.
2006-04-12 Elijah Newren <newren gmail com>
Patch from Ron Yorston to add a focus_new_windows option. Default
is 'smart' (focus by default but normal focus-stealing-prevention
can kick in); 'strict' is current other choice (like 'smart'
except that programs launched by the terminal will not be
focused). Fixes remainder of #326159. Should also close#152004
and a bunch of others.
* src/common.h:
Add a MetaFocusNewWindows enum giving the current types allowed
* src/display.h:
Update docs on allow_terminal_deactivation to note that it is only
relevant when focus_new_windows is 'strict'
* src/prefs.c:
* src/prefs.h:
* src/metacity.schemas.in: add the new gconf key and explanation
* src/prefs.[ch] (#define KEY_FOCUS_NEW_WINDOWS, static gboolean
focus_new_windows, update_focus_new_windows, meta_prefs_init,
change_notify, meta_prefs_get_focus_new_windows,
meta_preference_to_string):
Add all the normal preference handling stuff for this new
focus-new-windows option.
* src/window.c (window_state_on_map, meta_window_set_user_time):
Don't focus windows launched from a terminal
Mon Apr 10 16:44:51 2006 Søren Sandmann <sandmann@redhat.com>
* src/c-screen.c (is_menu): Check if the window is a menu and make
it 90% opaque in that case.
* src/c-screen.c (claim_selection): Handle CM_Sn selection
properly.
* src/c-screen.c: Remove debug spew
* src/screen.c (meta_screen_composite_all_windows): Remove debug spew
2006-03-27 Gora Mohanty <gmohanty@cvs.gnome.org>
* src/metacity.schemas.in:
* src/theme.c:
Changes strings to make them more readable, and more translatable.
Fixes#335720.
2006-04-02 Elijah Newren <newren gmail com>
Fix constraints bug causing negative width windows and crashes.
#336651
* src/constraints.c (constrain_partially_onscreen): Don't
accidentally shove & resize the window by requiring more pixels to
be onscreen than the size of the window.
Fri Mar 31 16:44:56 2006 Søren Sandmann <sandmann@redhat.com>
* src/c-screen.c (meta_screen_info_unredirect): Release the GL
window here. Disconect from the magnifier, not the stacker.
Fri Mar 31 12:24:26 2006 Søren Sandmann <sandmann@redhat.com>
* src/c-screen.c (meta_screen_info_redirect): Only use magnifier
when USE_MAGNIFIER is set.
* src/compositor.c (meta_compositor_free_window): Only wobble when
USE_WOBBLE is set.
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
2006-01-09 Elijah Newren <newren@gmail.com>
Make the taskbar less flash happy and fix up some related stacking
issues. #326035.
* src/window.c (windows_overlap): new function,
(meta_window_show): if a window is denied focus but doesn't
overlap with the focus window there is no need to set the demands
attention hint nor stack that window below the focus window,
(meta_window_get_outer_rect): we're not modifying the window so
declare it to be const
2006-01-09 Elijah Newren <newren@gmail.com>
Fix window outline for minimized windows when using alt-esc.
#325092.
* src/display.c (meta_display_begin_grab_op): Specify the showing
type of tabbing operation (Alt tab vs. alt-esc) in addition to the
listing type of tabbing operation (docks vs normal windows) to
meta_screen_ensure_tab_popup().
* src/display.h (enum MetaTabShowType): new convenience enum
* src/screen.[ch] (meta_screen_ensure_tab_popup): require the
showing type be specified in addition to the tabbing type; put the
outline around the window instead of the icon when in alt-esc
mode.
2006-01-09 Elijah Newren <newren@gmail.com>
Fix reduced resources resize handling for windows with sizing or
resizing constraints. #325774.
* src/display.c (meta_display_end_grab_op): Provide constraints.c
with the correct gravity information.
2006-01-09 Elijah Newren <newren@gmail.com>
Be more strict about what is considered a valid region with
partial struts. Fixes#322070.
* src/boxes.[ch]:
(meta_rectangle_expand_region_conditionally):
new function behaving like meta_rectangle_expand_region() but
which only does so when the width and height of the rectangles
meet a certain threshold
(replace_rect_with_list):
Remove a compiling warning
* src/constraints.c:
(constrain_partially_onscreen):
provide minimum thresholds in each direction for the size of the
rectangles to avoid cases where only a single pixel thick layer of
a window might be showing
2006-01-09 Elijah Newren <newren@gmail.com>
* src/bell.c (meta_bell_notify_frame_destroy): Use the right
function to remove the timeout so that we don't crash if removed
at an inopportune time. Fixes#322031.
2006-01-09 Elijah Newren <newren@gmail.com>
* src/edge-resistance.c (apply_edge_resistance): Remove the
"pull-away" edge resistance. Fixes another of the zillions of
issues covered in #321905.
2006-01-09 Elijah Newren <newren@gmail.com>
* src/edge-resistance.c (apply_edge_resistance): Revert to the old
edge resistance behavior for keyboard movement/resizing based
resistance. Not only makes the code much simpler and shorter, but
also fixes another of the zillions of issues covered in #321905.
2006-01-09 Elijah Newren <newren@gmail.com>
* src/edge-resistance.c (apply_edge_resistance): Remove the
timeout resistance at screen/xinerama edges for the whiners.
Okay, it made sense. Fixes another of the zillions of issues
covered in #321905.
2006-01-09 Elijah Newren <newren@gmail.com>
* src/edge-resistance.c (apply_edge_resistance): Make extra
timeout edge resistance apply even if one edge already offscreen.
Fixes another of the zillions of issues covered in #321905.
2006-01-09 Elijah Newren <newren@gmail.com>
Allow edge resistance at both sides of a window and also when
edges don't overlap but are a single pixel away from doing so.
Fixes one of the zillions of issues covered in #321905.
* src/boxes.[ch]:
(meta_rectangle_edges_align):
new function to handle the overlap or off by one determining
whether edge resistance should kick in for an edge.
(meta_rectangle_edge_cmp_ignore_type):
new function to sort edges but ignore the type so that e.g. left &
right edges of windows can be used interchangeably.
(meta_rectangle_edge_cmp):
now uses meta_rectangle_edge_cmp_ignore_type() to do most the work
and just adds an extra condition
* src/edge-resistance.c:
(find_nearest_position):
use meta_rectangle_edges_align() now to determine whether the
edges align,
(apply_edge_resistance, apply_edge_resistance_to_each_side):
have the edge resistance kick in if either the beginning or ending
positions would cause overlap in the given direction -- fixes an
uncommon but annoying corner case,
(apply_edge_snapping, apply_edge_resistance_to_each_side,
meta_display_cleanup_edges,
stupid_sort_requiring_extra_pointer_dereference, cache_edges):
mix edges from both sides now
2006-01-09 Elijah Newren <newren@gmail.com>
Plug a few leaks. Fixes#309178.
* src/main.c (main): remove an unneeded g_set_prgname() call, free
some strings allocated by the GOptions parsing
2006-01-02 Elijah Newren <newren@gmail.com>
Patch from Björn Lindqvist to fix a logic error. #322149.
* src/window.c (update_resize): && should have been ||.
2005-12-27 Elijah Newren <newren@gmail.com>
Make the workspace switcher work with dual-head (non-xinerama)
setups. Fixes#319423.
* src/display.c (meta_display_open, event_callback,
meta_display_focus_the_no_focus_window):
* src/display.h (struct MetaDisplay,
meta_display_focus_the_no_focus_window):
* src/keybindings.c (primary_modifier_still_pressed):
* src/screen.c (meta_screen_new):
* src/screen.h (struct MetaScreen):
* src/window.c (meta_window_new_with_attrs, meta_window_show):
* src/workspace.c (meta_workspace_focus_default_window):
Replace display->no_focus_window with a no_focus_window for each
screen.
* src/display.[ch] (meta_display_xwindow_is_a_no_focus_window,
event_callback):
* src/window.c (meta_window_new_with_attrs):
New utility function, meta_display_xwindow_is_a_no_focus_window(),
for checking if the given xwindow is a no_focus_window for one of
the screens.
2005-12-27 Elijah Newren <newren@gmail.com>
* src/tabpopup.c (meta_ui_tab_popup_new): since the title is going
to be treated as markup, escape it. Fixes#324846.
2005-12-12 Elijah Newren <newren@gmail.com>
* src/window.c (update_net_frame_extents): make the debugging
message actually correspond to the code. Patch from Björn
Lindqvist. Fixes#322051.