2002-10-28 Havoc Pennington <hp@pobox.com>
* src/window.c, src/display.c: store the window menu on the
display and blow it away when a window closes, so we don't
get funny stuck menus. Patch from Martin Garton #87514
2002-10-27 Havoc Pennington <hp@pobox.com>
* src/window.c (meta_window_free): move
meta_window_shutdown_group() much earlier in the destroy process.
May fix#96928 tracked down by Kjartan Maraas and Martin Garton.
* src/group.c (meta_window_get_group): never add window to a group
after we've started unmanaging the window
2002-10-26 Havoc Pennington <hp@pobox.com>
* src/iconcache.c: include config.h
* src/group.c: include config.h
* src/frame.c: include config.h
* src/core.c: include config.h so it doesn't crash all over the
place due to #ifdef HAVE_STARTUP_NOTIFICATION
* src/util.c (meta_print_backtrace): export from this file
* src/main.c (log_handler): print backtrace here
2002-10-26 Havoc Pennington <hp@pobox.com>
* src/xprops.c (meta_prop_get_text_property): new function
(meta_prop_get_wm_hints): new function
(meta_prop_get_class_hint): new function
2002-10-26 Havoc Pennington <hp@pobox.com>
* src/window.c (meta_window_new): use multi-value-get on a couple
of properties for testing
* src/xprops.c (meta_prop_get_values): implement multi-value-get
* src/window.c (update_mwm_hints): XFree motif hints as we changed
it to use Xmalloc
* src/xprops.c: massively rework this to set up a
get-multiple-properties-at-once API.
* src/async-getprop.c (ag_Xmalloc): new function
2002-10-25 Havoc Pennington <hp@pobox.com>
Add "busy cursor on app startup" support, conditionally - works
only if libstartup-notification is found, and in practice requires
a GTK patch that's not in yet.
* src/screen.c: monitor startup events and set busy cursor if
appropriate
* src/display.c (meta_display_open): create SnDisplay
* configure.in: check for startup notification,
and add the cute "configure summary" at the end
2002-10-24 Havoc Pennington <hp@redhat.com>
* src/theme.c (meta_frame_layout_calc_geometry): if only one
right-corner button, use right_right_background not
right_left_background
2002-10-24 Havoc Pennington <hp@pobox.com>
* src/window.c (meta_window_get_icon_geometry): make public
* src/screen.c (meta_screen_ensure_tab_popup): put the alt+tab
highlight-window indicator on the icon, not the window itself,
if the window is minimized.
2002-10-21 Havoc Pennington <hp@redhat.com>
Optimizations for managing new windows (do not all take effect if
METACITY_DEBUG=1). Bug #96404
* src/keybindings.c (meta_change_keygrab): use error trap nesting
and conditionalize on meta_is_verbose() to avoid a ton of XSync
* src/display.c (meta_change_button_grab): ditto
Throughout: move to new error trap setup to save on XSync calls,
new setup is:
* src/errors.c (meta_error_trap_push_with_return): new function,
an error trap that needs to care about return value and thus
sync even if an outer trap still exists
(meta_error_trap_pop_with_return): new function
(meta_error_trap_pop): add "last_request_was_roundtrip"
argument allowing us to avoid XSync() if we just did
a GetProperty or whatever.
* src/util.c (meta_warning): flush the warning file descriptor
* src/Makefile.am (INCLUDES): define G_LOG_DOMAIN
2002-10-20 Havoc Pennington <hp@pobox.com>
* src/keybindings.c (handle_raise_or_lower): check above->mapped
before deciding if it overlaps the window being raiselowered,
fix from Stephane Chauveau
2002-10-18 Havoc Pennington <hp@redhat.com>
* src/window.c (meta_window_refresh_resize_popup): only create the
resize popup if width_inc or height_inc are > 1
* src/resizepopup.c: Clear out all the weird tickmark cruft,
saves us about 2.5K of binary size, whee
(meta_ui_resize_popup_new): take display/screen arguments and make
multihead-safe #94349
2002-10-18 Havoc Pennington <hp@redhat.com>
* src/keybindings.c (do_choose_window): don't start the cycle
process if the binding for switching windows has no modifier bits,
just focus the window immediately.
* src/prefs.c, src/keybindings.c: add a keybinding to move between
windows that goes in the opposite direction. This is mostly
useful if you want to bind unmodified keys to the switch windows
functions, e.g. if you have "Forward" and "Back" keys on your
keyboard. Patch from Shilad Sen <shilad sourcelight com>
2002-10-18 Havoc Pennington <hp@redhat.com>
* src/prefs.c, src/frames.c: add "what happens when you double
click the titlebar" setting, patch from Sean Middleditch bug
#95625. This is basically an "add Windows emulation mode" patch.
2002-10-18 Havoc Pennington <hp@redhat.com>
* src/metacity.schemas.in: move window-click to Super+click not
Alt+click by default. Super should be the Windows key on keyboards
that have one and are so configured. Prepare for the FAQ on this.
2002-10-18 Havoc Pennington <hp@pobox.com>
* src/stack.c (constrain_stacking): replace the old
apply_constraints with wacky new approach involving graphing all
the constraints then walking the graph. Fixes#94876 and probably
other stacking bugs as well, thanks to Arvind for tracking down
the issue.
(compute_layer): add FIXME and reference to bug #96140
2002-10-17 Havoc Pennington <hp@redhat.com>
* src/stack.c (apply_constraints): don't place
transient-for-whole-group windows above _each other_, only
above other windows in the group that aren't themselves
transient-for-whole-group. Should help with part of #94876
2002-10-17 Havoc Pennington <hp@redhat.com>
* src/stack.c (apply_constraints): fix memory leak of
group_windows, and don't use the variable name "tmp" twice. Shadow
variables bad.
2002-10-17 Havoc Pennington <hp@redhat.com>
* src/tools/metacity-window-demo.c (dialog_cb): add code to create
big stacks of dialogs transient for each other, for testing.
2002-10-16 Havoc Pennington <hp@redhat.com>
* src/workspace.c: workspaces are all per-screen now, fix
accordingly
* src/core.c: fix multihead workspace stuff
* src/keybindings.c: multihead-rama
* src/screen.c (meta_screen_show_desktop): new functions to
replace display equivalents
* src/display.c (meta_display_get_workspace_by_screen_index): get
rid of this
(meta_display_get_workspace_by_index): get rid of this
(event_callback): handle _NET_SHOWING_DESKTOP message per-screen
* src/screen.c (meta_screen_get_workspace_by_index): new function
* src/screen.h (struct _MetaScreen): move workspace list, and
showing_desktop flag, to be per-screen
* src/window.c (window_query_root_pointer): return whether pointer
is on window's screen
(meta_window_handle_mouse_grab_op_event): don't use coordinates
from other screens when updating a window operation on the current
screen. I can't believe no one has reported this...
2002-10-16 Havoc Pennington <hp@pobox.com>
* src/window.c (meta_window_client_message): update window layer
when above/below state is changed. Fixed by Ross Burton.
2002-10-14 Federico Mena Quintero <federico@ximian.com>
* src/display.c (event_callback): Ignore EnterNotify events when
the detail field is set to NotifyInferior. Fixes#95747.
2002-10-12 Havoc Pennington <hp@pobox.com>
* src/metacity.schemas.in: button layout key
* src/prefs.c: Add button layout gconf key
(change_notify): use some "else if" instead of "if" where we
should have been
2002-10-11 Havoc Pennington <hp@redhat.com>
* src/display.c (event_callback): don't raise window on button 2
click, only on button 1 and button 3.
* src/frames.c (meta_frames_button_press_event): lower on button 2
press on frame
* src/core.c (meta_core_user_lower): new function
2002-10-11 Havoc Pennington <hp@pobox.com>
* src/stack.c (window_is_fullscreen_size): make the checks here
allow windows larger than the screen in addition to
exactly-screen-size
* src/window.c (meta_window_configure_request): delete the "try to
auto-enter-fullscreen-state" hack here, because it was broken, and
the changes to the stacking code to move screen-size focused
windows to the fullscreen layer should work better.
(meta_window_new): remove auto-fullscreen hack from here too
2002-10-09 Havoc Pennington <hp@pobox.com>
* src/stack.c (apply_constraints): also keep utility/menu/toolbar
windows above their whole group.
(get_standalone_layer): don't use META_LAYER_FOCUSED_WINDOW, but
only use META_LAYER_FULLSCREEN while the fullscreen window has
focus. Also, put screen-sized windows in the fullscreen layer,
even if we didn't dare to actually put them in the fullscreen
state.