2002-08-07 Craig Black <blackc@speakeasy.net>
* src/display.c: (meta_display_open): clear expected focus window
on open
* src/display.h: add expected_focus_window field
* src/window.c: (meta_window_make_fullscreen),
(meta_window_unmake_fullscreen): change meta_window_update_layer()
to meta_stack_update_layer() so build works again.
(meta_window_free), (meta_window_make_fullscreen),
(meta_window_focus), (meta_window_notify_focus): keep track of
expected focus window after sending WM_TAKE_FOCUS event,
previously if a UnmapNotify event arrived before the FocusIn event
we would lose focus, fixes#84564.
2002-07-28 Havoc Pennington <hp@pobox.com>
* src/window.c (meta_window_shade): disable animation when shading
windows, just doesn't really convey the idea anyway.
* src/effects.c: Move to using a shaped window instead of
IncludeInferiors to do the animations, looks a lot better
because we don't have to grab the server.
* src/window.c (meta_window_change_workspace): remove bogus
assertion that was causing a crash
(meta_window_new): auto-fullscreen huge undecorated windows.
* src/keybindings.c (switch_to_workspace): use
meta_window_change_workspace() to avoid same bug in cut-and-paste
code from there
2002-08-04 Havoc Pennington <hp@redhat.com>
* src/frames.c (meta_frames_paint_to_drawable): init button
states for the button backgrounds
* src/themes/Atlanta/metacity-theme-1.xml: adapt to work correctly
with button repositioning
2002-08-04 Havoc Pennington <hp@redhat.com>
* src/frames.c (meta_frames_button_press_event): raise/focus
on click, even if the click was on the client area
(this makes Alt+button1 raise windows again, yay)
* src/stack.c (compute_layer): put panels in the DOCK layer always
(keep them on top of other windows). Still sloppy-focus raised
with respect to other docks.
* configure.in: remove -Wshadow for now as GTK headers make all
kinds of noise with it.
2002-08-02 Mark McLoughlin <mark@skynet.ie>
* src/screen.c: (meta_screen_new): set active_workspace
to NULL. Also actually activate the first workspace instead
of just setting active_workspace. Fixes#87367.
(meta_screen_ensure_workspace_popup): don't re-use our
iterator for setting the entries list, stop iterating
when we've gone beyond the last workspace (there may
be empty spaces in the last row).
* src/workspace.c: (meta_workspace_activate): if no workspace
was previously activated, return.
2002-08-04 Havoc Pennington <hp@redhat.com>
* src/theme.c (free_menu_ops): use MetaMenuIconType not button
type for the size of the menu ops array
(meta_theme_define_int_constant): return TRUE on success (how the
heck did this ever work?)
(meta_theme_define_float_constant): return TRUE on success
(meta_frame_style_validate): allow the "positional" buttons to
be omitted for now.
* src/testgradient.c (render_multi): don't define N_COLORS twice
* src/theme-viewer.c (run_theme_benchmark): don't define
ITERATIONS twice
* src/theme.c (button_rect): handle new button types
(meta_button_type_to_string): update
(meta_button_type_from_string): update
* src/theme.h (enum): add button types for the 6 possible button
positions. No way to reposition buttons still but this will allow
themes to go ahead and support doing so.
2002-08-03 Craig Black <blackc@speakeasy.net>
* src/display.c: (event_callback): Have ButtonPress and UnmapNotify
events account for a null grab window, fixes#87896
2002-08-01 Mark McLoughlin <mark@skynet.ie>
Implements support for _NET_WM_ALLOWED_ACTIONS.
Fixes#84282.
* src/display.[ch]: (meta_display_open): add
_NET_WM_ALLOWED_ACTIONS atoms.
* src/screen.c: (set_supported_hint): set them
as being supported.
* src/window.c:
(set_allowed_actions_hint): impl setting
_NET_WM_ALLOWED_ACTIONS.
(recalc_window_features): use it here, but only
if things have changed.
* src/window.c (recalc_window_features): if a window isn't
resizeable, turn off maximize function. If min size is equal to
max size, turn off resize function.
2002-08-01 Mark McLoughlin <mark@skynet.ie>
* src/session.c:
(save_yourself_possibly_done): send a SaveYourselfDone
if we're skipping this global save.
(save_yourself_callback): don't not save session state
if the save style is Global. Fixes#89390.
* theme-format.txt: update.
2002-07-24 Havoc Pennington <hp@redhat.com>
* src/theme-parser.c (meta_theme_load): look for themes in
~/.themes/NAME/metacity-1/ and datadir/themes/NAME/metacity-1
instead of the old locations.
* src/themes/Makefile.am: install themes to
datadir/themes/NAME/metacity-1/ to match how GTK works, breaking
third-party themes yet again! woot!
2002-07-20 Havoc Pennington <hp@pobox.com>
* src/display.c (meta_display_open): grab display across managing
each screen; XGetInputFocus() on startup.
2002-07-19 Havoc Pennington <hp@pobox.com>
* src/window.c (meta_window_configure_request): disable configure
requests during a user move/resize operation, mostly a workaround
for stoopid apps.
2002-07-23 Havoc Pennington <hp@redhat.com>
* src/themes/Makefile.am (THEMES): put Gorilla back in the build
* src/themes/Gorilla/metacity-theme-1.xml,
src/themes/Crux/metacity-theme-1.xml: fixes from
Sebastien Delestaing so that these themes work properly with
different font sizes.
* src/frames.c (get_control): patch from Balamurali Viswanathan
for #81984 (resize titlebar from the top not the bottom)
2002-07-23 Havoc Pennington <hp@redhat.com>
* src/keybindings.c (meta_display_process_key_event): handle
NULL screen from screen_for_xwindow
* src/display.c (meta_display_screen_for_xwindow): put an error
trap around the XGetWindowAttributes(), should fix the popular
"closing a window results in a crash" bug.
* src/util.c (print_backtrace): support optional backtrace
feature using gnu libc backtrace() call
2002-07-13 Havoc Pennington <hp@pobox.com>
* src/keybindings.c: adapt to virtual modifiers
(meta_display_process_mapping_event): we need to reload the
binding tables now when the modmap changes.
* src/prefs.c (update_binding): parse virtual modifiers, not
plain modmask
* src/common.h (MetaVirtualModifer): new enum
* src/ui.c (meta_ui_parse_accelerator): use
egg_accelerator_parse_virtual()
* src/Makefile.am: add eggaccelerators.[hc] for the virtual
accelerator parsing function
2002-07-12 Havoc Pennington <hp@pobox.com>
* src/session.c (warn_about_lame_clients_and_finish_interact):
don't display the dialog if all the apps were session managed.
2002-07-12 Havoc Pennington <hp@redhat.com>
* src/window.c (meta_window_new): try to maximize windows that
are too big for the work area
* src/place.c (find_next_cascade): don't let the cascade algorithm
place windows off the screen, and fix it to always exhaustively
search the window list for cascade parents.
2002-07-11 Havoc Pennington <hp@pobox.com>
* src/metacity-dialog.c (main): option to display error when a
command fails to run.
* src/keybindings.c (handle_run_command): run commands
in response to keybindings.
* src/prefs.c: add command keybinding stuff
* src/metacity.schemas.in: add keybindings for running commands,
and keys to store the commands themselves.
2002-07-09 Havoc Pennington <hp@pobox.com>
* src/metacity.schemas.in: fix short description for
begin_resize, patch from Jayaraj, #87654
* src/keybindings.c (handle_begin_resize): apply patch from
Jayaraj to actually handle the begin resize keybinding.
2002-07-09 Havoc Pennington <hp@pobox.com>
* src/window.c (constrain_position): don't center vertically for
maximized windows that don't fill the screen, just leave them at
the top.
2002-07-06 Havoc Pennington <hp@pobox.com>
Apply blackc@speakeasy.net patch, bug #83940, to do
mini-workspaces similar to the pager, when switching
spaces.
* src/window.c (update_net_wm_state): actually fill in
wm_state_skip_taskbar, wm_state_skip_pager flags
* src/tabpopup.c: support drawing a mini-workspace similar to the
one the pager draws.
* src/stack.c (meta_stack_list_windows): new function to list
the windows in stacking order
* src/screen.c (meta_screen_ensure_workspace_popup): don't pass in
the ugly default app icon for workspaces
* src/display.c (event_callback): fix from blackc@speakeasy.net
to avoid dereferencing a NULL grab window.
2002-07-06 Havoc Pennington <hp@pobox.com>
* src/display.c (meta_display_open): put _NET_DESKTOP_NAMES in the
array of atom names, so desktop names might work and we don't read
uninitialized memory.
* src/main.c (main): add VERSION/timestamp verbose message.
* src/keybindings.c: implement cycle_windows cycle_panels
* src/metacity.schemas.in: add the cycle_windows cycle_panels
keybindings
* src/prefs.h (META_KEYBINDING_FOCUS_PREVIOUS): replace
FOCUS_PREVIOUS key binding with CYCLE_WINDOWS and CYCLE_PANELS
(not good names really, but I don't have ideas).
* src/common.h: add a grab op for alt+esc window cycling
2002-07-05 Havoc Pennington <hp@pobox.com>
* src/window.c (update_wm_hints): Change default value of input
hint (if not specified) to true instead of false. This is what
some clients assume, such as Visual SlickEdit.
2002-07-02 Havoc Pennington <hp@pobox.com>
* src/window.c (meta_window_show_menu): use new macros to get
whether we allow move/resize correct
* src/frame.c (meta_frame_get_flags): use new macros to get
whether we can move/resize correct, considering
maximized/fullscreen for the move case.
* src/window.h (META_WINDOW_ALLOWS_RESIZE,
META_WINDOW_ALLOWS_MOVE): new macros
* src/keybindings.c (process_keyboard_resize_grab): finish the
right/left resize, patch from Jayaraj #78179.
Has the same old move/resize bug, if it hits a constraint it
starts to break because we move without resizing.
2002-07-02 Mark McLoughlin <mark@skynet.ie>
* src/keybindings.c:
(grab_keyboard), (ungrab_keyboard): rename from
{un}grab_all_keys_and_keyboard and only do an XKeyboardGrab,
the XKeyGrab isn't neccessary.
(meta_screen_grab_all_keys), (meta_screen_ungrab_all_keys),
(meta_window_grab_all_keys), (meta_window_ungrab_all_keys):
update for above change.
(handle_workspace_switch): don't use a MetaWindow when
workspace switching, use the root window instead.
2002-07-01 Mark McLoughlin <mark@skynet.ie>
Fix broken workspace switching from my previous commit.
* src/display.c: (meta_display_begin_grab_op): don't
leak a pointer grab if we fail to grab the keyboard.
* src/keybindings.c: (meta_screen_grab_keys): check
screen->all_keys_grabbed.
(meta_screen_grab_all_keys): regrab our standard
bindings if we fail.
(handle_workspace_switch): revert to our previous
behaviour of using the last focused window to do
the grab upon. Only use the RootWindow if there
isn't anything else to use.
* src/screen.c: (meta_screen_new): initialise
all_keys_grabbed.
2002-06-26 Mark McLoughlin <mark@skynet.ie>
Fixes not being able to tab out of a
workspace which contains no windows.
* src/core.c: (meta_core_begin_grab_op): upd
for meta_display_begin_grab_op change.
(meta_core_get_grab_frame): allow for
grab_window == NULL.
* src/display.[ch]:
(meta_display_screen_for_xwindow): implement.
(meta_display_begin_grab_op): grab on the root window
if window == NULL.
(meta_display_end_grab_op): use grab_screen instead of
grab_window.
* src/keybindings.c:
(grab_all_keys_and_keyboard): split out from
meta_window_grab_all_keys.
(ungrab_all_keys_and_keyboard): split out from
meta_window_ungrab_all_keys.
(meta_screen_grab_all_keys), (meta_screen_ungrab_all_keys):
implement grabbing and ungrabbing on the root window.
(meta_display_process_key_event): if window == NULL,
check the event is from the same screen and process. Only
happens with workspace switching.
(process_workspace_switch_grab): kill window param and
don't use grab_window.
(handle_tab_forward), (handle_begin_move): upd for
meta_display_begin_grab_op change.
(handle_workspace_switch): remove brokeness. Always do
the grab op on the root window.
* src/keybindings.h: add meta_screen_{un}grab_all_keys.
* src/window.c: (meta_window_client_message), (menu_callback):
update for meta_display_begin_grab_op change.