2002-12-09 Havoc Pennington <hp@pobox.com>
* AUTHORS: add myself here, bug #100789
* src/display.c (meta_display_set_grab_op_cursor): drop
PointerMotionHintMask
* src/window.c (meta_window_handle_mouse_grab_op_event): don't use
XQueryPointer, as we aren't using PointerMotionHint now
* src/display.c (event_callback): rearrange a bit of code
for slight speedup and clarity
* src/window.c (update_resize)
(meta_window_handle_mouse_grab_op_event): implement
usage of the _METACITY_UPDATE_COUNTER
(meta_window_handle_mouse_grab_op_event): fix code that
used event->xbutton with a motion event
* src/display.c (meta_display_open): add new atoms, and
initialize Xsync if we have it
(grab_op_is_resizing): new function
(meta_display_begin_grab_op): create an alarm monitoring
window's _METACITY_UPDATE_COUNTER
(meta_spew_event): conditionalize this on WITH_VERBOSE_MODE
and print alarm events.
* src/window.c (meta_window_new): fetch _METACITY_UPDATE_COUNTER
* configure.in (HAVE_XSYNC): check for Xsync extension
2002-12-08 Havoc Pennington <hp@pobox.com>
* README: updates
* src/window.c (MAX_RESIZES_PER_SECOND): change to 20 instead of
30, just as an experiment.
(MOVE_THRESHOLD): change 15 to 20
(RESIZE_THRESHOLD): change 15 to 20
* src/util.c (ensure_logfile): kill this function when verbose
mode is disabled.
2002-12-08 Havoc Pennington <hp@pobox.com>
* src/window.c (meta_window_fill_vertical)
(meta_window_fill_horizontal): new functions to resize to
fill screen
* src/keybindings.c: add vert, horiz maximize
* src/prefs.c: had vert, horiz maximize
* src/metacity.schemas.in: shorten some overlong short
descriptions that make the keybindings capplet look ugly.
Add maximize_vertically, maximize_horizontally keys.
2002-12-08 Havoc Pennington <hp@pobox.com>
* src/prefs.c (meta_prefs_get_application_based): make this always
return FALSE for now, to avoid bug reports.
* src/util.c (ensure_logfile): put "opened log file" message on
stderr so it will normally land in ~/.xsession-errors
* configure.in: remove extra AC_ARG_PROGRAM
* src/display.c (event_callback): handle the toggle-verbose message
* src/tools/metacity-message.c: add a toggle-verbose message, been
meaning to do this for a while.
* src/util.c (meta_set_verbose): if verbose mode is enabled and we
don't support it, then exit.
* src/prefs.c: allow building without gconf (currently means some
prefs are no-ops)
* src/util.c, src/util.h: support defining macros to
kill all verbose output entirely. (Removes the code and strings
associated with it)
* configure.in: don't get METACITY_PROPS_LIBS if not building the
config dialog.
(HAVE_GCONF): allow building sans gconf, if you are size-sensitive
and not using gnome.
(WITH_VERBOSE_MODE): add ability to disable all the verbose debug
spew strings, to shrink the binary.
(--disable-sm): allow SM support to be forced on or off
(--disable-startup-notification): allow forcing this on or off
2002-11-30 Havoc Pennington <hp@pobox.com>
* src/screen.c (STARTUP_TIMEOUT): lengthen to 15 seconds
* src/util.c (utf8_fputs): hmm, return a value
* src/screen.c (meta_screen_apply_startup_properties): new
function to apply initial workspace based on startup sequence.
* src/window.c (meta_window_new): load _NET_STARTUP_ID
(meta_window_get_startup_id): new function
* src/window-props.c (meta_display_init_window_prop_hooks): add
hooks for _NET_STARTUP_ID
* src/display.c (event_callback): send property events to
groups.
* src/xprops.c (meta_prop_get_values): make a type of INVALID
mean to ignore that property (don't fetch its value).
* src/group.c (meta_group_property_notify): new function
* src/screen.c (set_supported_hint): support _NET_STARTUP_ID
* src/display.c (meta_display_open): add _NET_STARTUP_ID to atoms
we initialize
* src/group-private.h: private header shared between
group-props.c, group.c
* src/group-props.h, src/group-props.c: new files to contain
functions for retrieving group properties
* src/window.c (meta_window_same_application): change this a bit
to work with new definition of group
* src/group.c (meta_window_get_group): always create a group for
every window, using the window's own ID as group leader if
required.
* src/window.c (update_wm_hints): handle changes to group leader
* src/group.c (meta_window_group_leader_changed): new function
* src/display.h (struct _MetaDisplay): _NET_WM_WINDOW_TYPE_SPLASH,
not SPLASHSCREEN. Reported by Gregory Merchan and Matthias Clasen.
* src/screen.c (startup_sequence_timeout): when timing out a
startup sequence, send a remove message, don't just time it out
locally.
2002-11-22 Havoc Pennington <hp@pobox.com>
* src/window.c (meta_window_change_workspace): patch from
Hidetoshi Tajima to move a window's transients when moving
the window between workspaces. #98900
2002-11-21 Havoc Pennington <hp@pobox.com>
* src/display.c (meta_display_open): init ret_to to
RevertToPointerRoot out of sheer paranoia; don't want no
RevertToNone in my code!
2002-11-19 Havoc Pennington <hp@pobox.com>
* src/window.c (meta_window_client_message): do a
recalc_window_features after setting new wm_state in order
to update skip_pager in addition to wm_state_skip_pager
(set_net_wm_state): base _NET_WM_STATE on skip_pager not
wm_state_skip_pager, ditto for skip_taskbar
2002-11-03 Havoc Pennington <hp@pobox.com>
* src/window.c (meta_window_new): use window-props.h stuff for a
couple of properties
(implement_showing): fix printf string
* src/xprops.c (meta_prop_free_values): new function
* src/window-props.h, src/window-props.c: start moving code that
handles loading window properties into this file.
2002-11-03 Havoc Pennington <hp@pobox.com>
* src/window.c (meta_window_calc_showing): split into "see if we
should be showing" and "actually show/hide" functions
(idle_calc_showing): rework to first unmap all newly-hidden
windows from bottom to top then map all newly-showing windows from
top to bottom resulting in fewer exposes, #95220
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/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-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-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-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-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-04 Arvind Samptur <arvind.samptur@wipro.com>
* src/window.c (meta_window_change_workspace): call meta_window_unstick
before adding window to workspace.
(menu_callback): call meta_workspace_activate before meta_window_change_workspace.
This would avoid us running an extra loop for determining the window workspace list.
Patches from Jeyasudha and Arvind. Fixes#92575
2002-10-01 Havoc Pennington <hp@pobox.com>
* src/screen.c (meta_screen_resize_func): make it static
* src/stack.c (get_standalone_layer): put above/below windows
in an appropriate layer.
* src/screen.c (set_supported_hint): say we support above/below
* src/display.h (struct _MetaDisplay): add _NET_WM_STATE_ABOVE,
_NET_WM_STATE_BELOW atoms
* src/window.c (meta_window_client_message): handle above/below
state messages
(set_net_wm_state): handler above/below state
(update_net_wm_state): handle above/below states
2002-10-01 Havoc Pennington <hp@pobox.com>
* src/window.c (constrain_position): always align fullscreen
windows to top, as we do with maximized windows.
2002-09-28 Havoc Pennington <hp@pobox.com>
* src/window.c, src/stack.c: Rewrite stack code to work a lot
differently. Should be better now, and not lose relative positions
of windows when moving among layers. Also should now be possible
to get session management to restore the stacking order. Probably
breaks some stuff, and makes all the stack.c changes I made
yesterday sort of irrelevant.
2002-09-24 Havoc Pennington <hp@redhat.com>
* src/window.c (meta_window_save_rect): new function,
only saves rect after checking current state, #93795
(meta_window_make_fullscreen): use new function
(meta_window_maximize): use new function
2002-09-24 Havoc Pennington <hp@redhat.com>
* src/window.c (meta_window_update_layer): new function
* src/stack.c (compute_layer): put focused window in a layer above
all other windows, in click-to-focus mode. #93022
* src/window.c (meta_window_notify_focus): update window layer on
focus change.
2002-09-22 Havoc Pennington <hp@pobox.com>
* src/window.c (recalc_window_features): small reordering of
code
* src/display.c (meta_spew_event): more spew for MapNotify,
UnmapNotify
* src/window.c (recalc_window_features): spew more stuff
* src/display.c (meta_spew_event): spew override_redirect field of
ConfigureNotify
2002-08-24 Havoc Pennington <hp@redhat.com>
* src/window.c (process_property_notify): recalculate mapped-ness
of frame after toggling decorations on/off, so that windows don't
disappear when decorations are toggled on.
* src/tools/metacity-window-demo.c (toggle_decorated_cb): add a
test for toggling decoration state on the fly
2002-08-24 Havoc Pennington <hp@redhat.com>
* src/window.c (update_sm_hints): hack around bug in kmail etc.
where SM_CLIENT_ID was set on the window, not the client leader.
* src/theme.c (meta_frame_layout_calc_geometry): don't round
corners unless we have enough frame to chop off.
2002-08-24 Havoc Pennington <hp@redhat.com>
* src/util.c: translate some strings that should have been, and
convert to locale encoding before printing stuff.
* src/stack.c (group_member_is_fullscreen): if window itself is
fullscreen, return TRUE immediately.
* src/window.c (meta_window_configure_request): add hack to
fullscreenize large undecorated windows.
2002-08-15 Havoc Pennington <hp@pobox.com>
* src/window.c (recalc_window_features): leave has_fullscreen_func
set to TRUE if the window is screen sized and undecorated, even if
the window isn't resizable. idea from Christian - Manny Calavera -
Neumair
* src/keybindings.c (handle_toggle_fullscreen)
(handle_toggle_maximize): these disabled fullscreen/maximize if
the window wasn't resizable, should have used has_fullscreen_func
has_maximize_func instead.
2002-08-15 Havoc Pennington <hp@pobox.com>
* src/keybindings.c: implement raise/lower
* src/metacity.schemas.in: add raise/lower
* src/prefs.c: add "raise" and "lower" prefs to keybindings
* src/display.c (meta_display_set_grab_op_cursor): assert that
the screen arg is non-NULL in appropriate cases
2002-08-14 Jayaraj Rajappan <jayaraj.rajappan@wipro.com>
* src/display.c (meta_display_set_grab_op_cursor):
In XGrabPointer, set the confine_to argument to the root window
of the screen the window is on.
* src/display.h: add screen argument.
* src/window.c (meta_window_update_resize_grab_op):
pass screen argument as NULL.
2002-08-12 Havoc Pennington <hp@redhat.com>
* src/stack.c (compute_layer): window is in fullscreen layer if
any member of its group is fullscreen
* src/window.c (meta_window_unmake_fullscreen): update layer for
whole window group
(meta_window_make_fullscreen): ditto
* src/util.c (meta_unsigned_long_hash): move hash/equal funcs for
Window in here.
* src/group.c: track window groups so we can do stuff with them.
2002-08-10 Havoc Pennington <hp@pobox.com>
* src/xprops.c (meta_prop_get_motif_hints): allow Motif hints to
be smaller than expected; GLUT for example seems to set a smaller
struct. #89841
* src/window.c (update_mwm_hints): use g_free on motif hints as we
don't use the XGetWindowProperty return directly anymore
2002-08-10 Havoc Pennington <hp@pobox.com>
* src/window.c (meta_window_free): be sure window is
mapped if we unmanage it and it's not withdrawn;
bug #90369
* src/screen.c (meta_screen_new): change string
s/override/replace/ bug #89077
* src/theme.c (scale_and_alpha_pixbuf): dump the
sometimes-use-NEAREST-instead-of-BILINEAR optimization,
bug #87489
2002-08-10 Havoc Pennington <hp@pobox.com>
* src/window.c (menu_callback): raise window when moving to
another workspace bug #88896
* src/keybindings.c (switch_to_workspace): raise window when
moving between spaces
2002-08-10 Havoc Pennington <hp@pobox.com>
* src/window.c (update_resize): track time to avoid sending a
deluge of move/resize requests, suggestion from
xavier.bestel@free.fr bug #86830. Not really sure if this will
make a difference or not. We'll see I guess.
(update_move): do same on move though it seems less important
here.
* src/display.h (struct _MetaDisplay): store the
last time we sent a move/resize event.
2002-08-08 Craig Black <blackc@speakeasy.net>
Patch to provide extra cues to the user when using
window menu move and resize, #85724.
* src/common.h: add new cursors
* src/display.c: (grab_op_is_mouse)
(meta_display_create_x_cursor), (xcursor_for_op),
(meta_display_set_grab_op_cursor),
(meta_display_begin_grab_op):
The keyboard move and resize grab ops now also use the mouse.
Allow the grab cursor to be changed during the grab op.
Hold onto the initial grab position in case of reset.
* src/display.h: save the initial grab position
* src/keybindings.c: (process_keyboard_move_grab),
(process_keyboard_resize_grab), (handle_begin_move),
(handle_begin_resize):
The keyboard move and resize grab ops now also use the mouse.
* src/window.c: (meta_window_client_message), (menu_callback),
(update_move), (update_resize),
(meta_window_handle_mouse_grab_op_event), (warp_pointer),
(meta_window_warp_pointer), (meta_window_begin_grab_op),
(meta_window_update_resize_grab_op):
When moving or resizing a window use the last grab position
in computing change increment.
Provide support for warping the mouse pointer.
* src/window.h: new warp pointer and grab op helper functions
2002-08-08 Craig Black <blackc@speakeasy.net>
* src/display.h: update comment
* src/window.c: (meta_window_focus): also set expected
focus window when setting input focus.