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.
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-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.
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-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-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-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-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.
2002-06-22 Havoc Pennington <hp@pobox.com>
Partially fix Jacob's SM bugs.
* src/window.c (meta_window_apply_session_info): restore the extra
stuff we're saving, except stack position I didn't figure out yet.
* src/session.c: save stack position, minimized, maximized,
in the session file.
2002-06-21 Havoc Pennington <hp@pobox.com>
Theme breakage! Themes have to implement "border" frames
now, see Atlanta for an example. Fixes#84285
* src/tools/metacity-window-demo.c (do_appwindow): add a
border-only window
* src/window.c (update_mwm_hints): read border only from the MWM
hints
* src/window.h (struct _MetaWindow): add border_only flag
* src/core.c (meta_core_get_frame_type): report border type if
required
* src/common.h (enum): add META_FRAME_TYPE_BORDER
2002-06-20 Mark McLoughlin <mark@skynet.ie>
* src/window.c: (meta_window_visible_on_workspace): sticky
windows aren't visibile on all screens. Check the workspace
is on the same screen as the window.
* src/workspace.c: (meta_workspace_list_windows): use
meta_window_visible_on_workspace here.
2002-06-17 Havoc Pennington <hp@pobox.com>
* src/stack.c (meta_stack_get_default_focus_window): don't use a
minimized window as the next focus window, patch from
blackc@speakeasy.net
2002-06-09 Havoc Pennington <hp@pobox.com>
* src/place.c (meta_window_place): don't run constrain_placement
on windows we allow to go anywhere (docks, etc.). Fixes
positioning of panel windows in certain cases.
2002-06-08 Havoc Pennington <hp@pobox.com>
Yeah I know maximization is broken, I'm too tired to fix it.
Probably because of the change to update_struts() that was
supposed to fix the 100% CPU bug.
* src/place.c (meta_window_place): don't run docks and things
through the placement algorithm. Thought it might fix
metacity-window-demo but it didn't.
* src/window.c (constrain_size): only get work area when needed
(meta_window_new): init the do_not_cover field
2002-06-08 Havoc Pennington <hp@pobox.com>
* src/screen.c (meta_screen_get_xinerama_for_window):
short-circuit the "only one xinerama" case, and use outer rect of
window instead of window->rect, so we get root window coords.
* src/theme.c (meta_frame_layout_get_borders): if fullscreen all
frame edges are zero-width.
* src/frame.c (meta_frame_get_flags): init fullscreen flag.
* src/common.h (enum): add META_FRAME_FULLSCREEN frame flag
* src/place.c: fix up calls to meta_window_get_work_area
* src/window.c (meta_window_get_work_area): add an arg for whether
the work area is for the screen or the xinerama subscreen.
(constrain_position): fix up calls to meta_window_get_work_area
(constrain_size): ditto
* src/screen.c (meta_screen_new): add METACITY_DEBUG_XINERAMA
environment variable which simulates xinerama on a single head.
2002-06-08 Havoc Pennington <hp@pobox.com>
* src/window.c (update_struts): only invalidate things if the
struts actually change, since the panel likes to set them over and
over. May fix the infinite loop that caused 100% CPU usage.
2002-06-06 Havoc Pennington <hp@pobox.com>
* src/screen.c (meta_screen_get_current_xinerama): implement
* src/place.c (meta_window_place): cascade windows on the active
Xinerama screen
* src/window.c (meta_window_move_resize_internal): strip out the
#if 0 cruft about guessing fullscreen mode
(constrain_position, constrain_size): fullscreen/maximize to the
Xinerama head, not the whole screen
(meta_window_get_work_area): autocreate struts at the Xinerama
physical screen edges for the screen the window is on.
* src/screen.c (meta_screen_get_xinerama_for_window): someone
snuck in a for loop, fix it. ;-)
2002-06-04 Havoc Pennington <hp@redhat.com>
* src/window.c (update_wm_hints): fix for how we read the input
hint, from Hidetoshi Tajima
(meta_window_show): from Hidetoshi, don't autofocus windows with
input = FALSE wm_take_focus = FALSE when they first appear. We do
allow these windows to be focused (so keynav works), but they
don't get focused automatically. Now how do we keep them out of
the task list?
2002-06-03 Havoc Pennington <hp@pobox.com>
* src/window.c (meta_window_new): don't automatically fullscreen
things opened fullscreen, because there's no GUI to un-fullscreen
them.
2002-05-29 Havoc Pennington <hp@pobox.com>
* src/window.c (meta_window_move_resize_internal): add code to
also guess that client wants to come out of fullscreen, then
#if 0 the whole deal, I'm not sure it's such a good idea.
2002-05-29 Havoc Pennington <hp@pobox.com>
* src/window.c (meta_window_move_resize_internal): guess if a
window meant to be fullscreen, and if so put it in that state.
2002-05-28 Havoc Pennington <hp@pobox.com>
* src/window.c (meta_window_configure_request): handle CWStackMode
in configure requests
(meta_window_new): if a window is opened at 0,0 and screen size,
put it in the fullscreen state.
(meta_window_new): remove old code that set the window position to
0,0 if PPosition/USPosition unset, that will be handled by whether
we place the window or not.
2002-05-27 Havoc Pennington <hp@pobox.com>
* src/window.c (meta_window_new): search for the window's screen
by root window instead of Screen*, maybe it will help with
bug #82664
2002-05-26 Havoc Pennington <hp@pobox.com>
Patch from Gaute Lindkvist so you can't move the panel or desktop
to only one workspace.
* src/keybindings.c (handle_move_to_workspace): don't allow moving
window to another space if the window is always_sticky
* src/window.c (recalc_window_features): set the always_sticky
field for desktop/dock windows.
(meta_window_show_menu): disable unsticking always sticky windows
via the menus
* src/menu.c (meta_window_menu_new): disable workspace items
if requested
2002-05-24 Havoc Pennington <hp@pobox.com>
* src/window.c (menu_callback): follow windows to their new
workspace
* src/keybindings.c (handle_move_to_workspace): follow windows to
their new workspace
2002-05-24 Havoc Pennington <hp@pobox.com>
* src/window.c (meta_window_show): change how focusing windows
on initial map works, so that we only steal focus from our
transient parent or from a panel/desktop, never from other
normal windows.
2002-05-24 Havoc Pennington <hp@pobox.com>
* src/window.c (meta_window_configure_request): modify to ignore
PPosition and USPosition once the window has been placed
2002-05-16 Havoc Pennington <hp@redhat.com>
* src/window.c (meta_window_show): don't focus dock, desktop,
etc. windows on initial map, only windows that should have focus.
2002-05-12 Havoc Pennington <hp@pobox.com>
* src/place.c (meta_window_place): move pposition/usposition
honoring code into here, instead of putting it in window.c.
Makes focusing new windows work, and cleans things up a bit.
#81585
2002-05-11 Havoc Pennington <hp@pobox.com>
* src/main.c: include locale.h, fix from Hidetoshi Tajima
* src/window.c (meta_window_new): disable show desktop mode when a
new window is managed.
2002-05-11 Havoc Pennington <hp@pobox.com>
* src/fixedtip.c (meta_fixed_tip_show): keep the tooltip
on the screen horizontally, #76825
* src/window.c (meta_window_handle_mouse_grab_op_event): end grab
op _after_ doing the final update of the move or resize.
Hopefully I didn't have a reason for the order I was using before.
2002-05-10 Havoc Pennington <hp@pobox.com>
* src/window.c (constrain_position): when maximizing/fullscreening
something with a grid, like a terminal, center it in the
maximization area in case it can't fill the whole area.
#70554
* src/main.c (main): use g_strerror() to get proper UTF-8.
2002-05-10 Havoc Pennington <hp@pobox.com>
* src/window.c (meta_window_focus): if window is not mapped after
the calc_showing, don't focus it, it's probably on another
workspace or something.
2002-05-09 Havoc Pennington <hp@redhat.com>
* src/frames.c (show_tip_now): DefaultScreen() returns the screen
number not Screen*
* src/frame.c (meta_frame_sync_to_window): immediately repaint
frame whenever we resize it, if we're inside a grab operation.
* src/frames.c (meta_frames_repaint_frame): new function
* src/window.c (meta_window_new): initialize window's colormap
(meta_window_notify_focus): install the colormap for a window when
it gets focus, uninstall on unfocus.
* src/window.h (struct _MetaWindow): store window's colormap
* src/display.c (event_callback): note changes to window colormap
* src/frame.c (EVENT_MASK): add ColormapChangeMask
2002-05-05 Havoc Pennington <hp@pobox.com>
* src/window.c (meta_window_unminimize): on unminimize, queue
calc_showing on all transients
(meta_window_activate): on activate, unminimize all a window's
ancestors, not just the window itself.
* src/workspace.c (set_work_area_hint): don't increment "tmp" by
16 unsigned long, increment by 4
* src/window.c (meta_window_free): if a window isn't minimized,
restore its WM_STATE to NormalState instead of IconicState,
since IconicState on initial window map means that the window
should be minimized.
* src/workspace.c (meta_workspace_invalidate_work_area): queue an
idle to recompute the work area hint.
(set_work_area_hint): we need 4*num_workspaces ints, not just
num_workspaces.
* src/screen.c (meta_screen_new): add work_area_idle field,
handle it on screen shutdown
* src/common.h (META_PRIORITY_PREFS_NOTIFY,
META_PRIORITY_WORK_AREA_HINT): define some idle priorities
* src/window.c (meta_window_calc_showing): hide windows if
their parent window is minimized
(meta_window_minimize): also queue_calc_showing on all
transients of the window being minimized
* src/place.c (constrain_placement): function to apply
placement-time-only constraints, such as "not off the left of the
screen"
(meta_window_place): put dialogs down a bit over their parent,
not right at the top.
(meta_window_place): when centering a dialog, center it
on the current xinerama screen, rather than the entire
screen.
* src/screen.c (meta_screen_get_current_xinerama): new function,
but not implemented
2002-05-04 Havoc Pennington <hp@pobox.com>
* src/window.c (update_net_wm_type): correctly print things if the
type_atom is unset
(meta_window_new): with workarounds disabled, always allow
self-placement for windows with PPosition or USPosition set.
2002-04-30 Havoc Pennington <hp@pobox.com>
* src/window.c (recalc_window_features): don't try to decorate
toolbars.
* src/tools/metacity-window-demo.c: add menu and toolbar tests
* src/place.c (meta_window_place): only dialogs should be centered
over parent, not anything with transient for set.
* src/window.c (meta_window_configure_request): become more
fascist about window positioning if workarounds are disabled, and
less fascist if they are enabled.
* src/metacity.schemas: add a "disable_workarounds" option. Kind
of crack-smoking. But we just can't get all applications
fixed. And I need no-workarounds mode to monitor which apps are
broken and what needs fixing in specs.
* src/window.c (meta_window_configure_request): always allow
windows to resize themselves
* src/keybindings.c (reload_modmap): don't filter out Mode_switch,
apparently some people bind window manager shortcuts to that.
2002-04-29 Havoc Pennington <hp@redhat.com>
* src/window.c (TITLEBAR_LENGTH_ONSCREEN): require 36 pixels
onscreen so you typically get a sliver of titlebar, suggested by
tigert. Should still fix this to consider actual theme geometry.
(constrain_position): change to allow movement off the left
2002-04-28 Havoc Pennington <hp@pobox.com>
* README: remove caveats about keybindings
* src/metacity.schemas: add schemas for all the keybindings.
* src/window.c (meta_window_activate): if in "show desktop" mode
when a window is activated, leave show desktop mode. So e.g.
when you click on a task in the task list, show desktop mode
will be turned off.
* src/workspace.c (meta_workspace_get_neighbor): new function
that doesn't quite work yet (needs support for getting
workspace layout from the pager)
* src/prefs.c: keybindings stuff
* src/keybindings.c: make keybindings configurable
* src/ui.c (meta_ui_parse_accelerator): new function
2002-04-21 Havoc Pennington <hp@pobox.com>
* src/window.c (meta_window_send_icccm_message): add error trap,
fixes a possible BadWindow if a window closed itself in response
to the delete window message prior to us sending the ping message.
2002-04-21 Havoc Pennington <hp@pobox.com>
* src/window.c (meta_window_move_resize_now): never revert to
user_rect.width, user_rect.height. Maybe fixes assorted resize
screwups e.g. with gnome-terminal.
2002-04-15 Havoc Pennington <hp@redhat.com>
* src/display.c (meta_display_ping_window): reply immediately for
windows that don't support _NET_WM_PING
* src/window.c (update_protocols): check whether windows
support _NET_WM_PING
2002-04-13 Havoc Pennington <hp@pobox.com>
* src/delete.c: new file containing all the
wacky mess I just added to a simple "click the close button",
contains all the dealing-with-dead-application cruft.
Use metacity-window-demo to test by clicking the
toolbar button that locks it up.
2002-04-12 Havoc Pennington <hp@redhat.com>
* src/tools/metacity-window-demo.c (do_appwindow): make one of the
toolbar buttons lock up the demo
* src/window.c (meta_window_delete): move error trap to be around
a narrower part of the function, and add part of the ping stuff,
nothing user-visible yet
* src/metacity-dialog.c (main): metacity-dialog executable to
live in libexecdir and pop up dialogs for us.
2002-03-27 Havoc Pennington <hp@pobox.com>
* src/window.c (meta_window_free): remove
unmanaged windows from save set, and unselect
input so we don't get events from them. Fixes annoying
bug where withdrawn windows would decide to map themselves
due to save set stuff.
2002-03-17 Havoc Pennington <hp@pobox.com>
* src/resizepopup.c: Add some total crackrock resize-grid
indication for windows that have width_inc/height_inc
so I can debug gnome-terminal sizing.
2002-03-11 Havoc Pennington <hp@pobox.com>
* src/keybindings.c: use new functions
* src/display.c (meta_display_get_tab_next):
(meta_display_get_tab_list): new tab order functions using
MRU list instead of map order
* src/window.c (meta_window_notify_focus): maintain focus MRU list
* src/display.h (struct _MetaDisplay): Keep an MRU list of
windows.
2002-03-10 Havoc Pennington <hp@pobox.com>
* src/screen.c (set_supported_hint): we didn't claim to support
_NET_ACTIVE_WINDOW so gtk_window_present() didn't work. Mumble.
Only worked with tasklist because libwnck didn't check for
WM support.
* src/window.c (meta_window_free): clean off window state
when windows are withdrawn, to avoid sticking dialogs
to their initial desktop.
(meta_window_queue_calc_showing): return if window is withdrawn
2002-03-06 Havoc Pennington <hp@redhat.com>
* src/frames.c (meta_frames_manage_window): use hash_table_replace
instead of g_hash_table_insert
* src/main.c (main): only enable verbose/debug if you set
METACITY_VERBOSE/METACITY_DEBUG
* src/util.c (ensure_logfile): only use a log file if
METACITY_USE_LOGFILE is set
* src/display.c (meta_display_for_x_display): add warning if
MetaDisplay isn't found
* src/window.c (meta_window_free): add an assertion that we
successfully cleared the grab window
2002-03-05 Havoc Pennington <hp@pobox.com>
Work on opaque animations more, still suck too much
to turn on. Not sure how to make them good.
* src/effects.c (meta_effects_draw_box_animation):
add a slide-up mode for shading
* src/ui.c (meta_image_window_set): change image window to work by
setting back pixmap on the GtkWindow, instead of using GtkImage.
2002-03-02 Havoc Pennington <hp@pobox.com>
* src/window.c (recalc_window_features): disable resize etc. if
we're fullscreen
(constrain_size): fix size constraints when fullscreen
* src/display.c (meta_display_open): fix missing comma that
ended up concatenating two of the properties breaking
FULLSCREEN state and PING protocol
2002-03-02 Havoc Pennington <hp@pobox.com>
* src/display.c: Add hacking to fix the problem that we made our
XGrabPointer() during Alt+Tab actually succeed, so on popping down
Alt+Tab we got an EnterNotify from the ungrab, which resulted in
focusing the window under the mouse. i.e. Alt+Tab didn't work with
sloppy focus.
2002-02-24 Havoc Pennington <hp@pobox.com>
* src/display.c (xcursor_for_op): switch on the op passed in, not
the active op. Gives us the right cursor during resizing, etc.
* src/errors.c: rearrange all the error stuff to adapt to the GDK
change a while back, so now we print our X errors again
* src/display.c (meta_display_begin_grab_op): remove KeyPressMask
and KeyReleaseMask from the XGrabPointer(), this caused BadValue
and kept the grab from ever succeeding. Fixes the problem with the
GTK resize grip - this is why you shouldn't break your X error
spew. ;-)
* src/display.c: debug spew tweaks
* src/window.c (meta_window_client_message): do some
s/verbose/topic/ stuff
2002-02-19 Havoc Pennington <hp@pobox.com>
* src/ui.c (meta_ui_init): put in hack to keep Pango from mangling
our server grab and locking up on startup. (hack doesn't work
but I want to fix it on my real computer not this laptop)
* src/window.c: Implement _NET_WM_STATE_FULLSCREEN
* src/display.c (meta_display_open): add atoms for
_NET_WM_STATE_FULLSCREEN
2002-02-09 Havoc Pennington <hp@pobox.com>
* src/window.c (update_icon): port to icon cache
* src/iconcache.c, src/iconcache.c: begin process of cleaning up
window.c by moving the icon-reading code in here, based on the
code in libwnck, which was in turn based on the earlier metacity
code
2002-02-09 Havoc Pennington <hp@pobox.com>
* src/themes/Atlanta/metacity-theme-1.xml: put in some kind of
distinctive frame for UTILITY, though it's ugly. Also put in the
borderless look for maximized windows.
* src/stack.c (compute_layer): put splash screen in the splash
layer
* src/stack.h (enum): create a splash screen layer
* src/place.c (meta_window_place): center splashscreen, and fix a
typo in the centering code
* src/window.c (recalc_window_features): disable most features on
splash screens
* src/screen.c (set_supported_hint): add UTILITY and SPLASHSCREEN
hints
* src/window.c: add UTILITY, SPLASHSCREEN implementation
* src/window.h (enum): add UTILITY, SPLASHSCREEN types
* src/theme-parser.c (parse_toplevel_element): parser support
for has_title attribute
* src/theme.c (meta_frame_layout_get_borders): handle a has_title
field in the layout, for utility windows that don't display a
title (would be better to be able to shrink the title text,
but that's kind of tricky to implement :-/)
2002-02-08 Havoc Pennington <hp@pobox.com>
* src/screen.c (set_supported_hint): add _NET_WM_STATE_HIDDEN
to _NET_SUPPORTED
* src/keybindings.c (meta_set_keybindings_disabled): put in header
file, to fix warning.
* src/display.c (meta_display_open): add _NET_WM_STATE_HIDDEN atom
* src/window.c (set_net_wm_state): set _NET_WM_STATE_HIDDEN for
shaded and minimized windows
(meta_window_show): call set_net_wm_state() if we map the window
or frame
(meta_window_hide): call set_net_wm_state() if we unmap the window
or frame
2002-02-08 Havoc Pennington <hp@pobox.com>
* src/window.c (set_net_wm_state): only set skip pager/tasklist if
the app set it, don't set it again based on semantic type.
002-02-08 Havoc Pennington <hp@pobox.com>
* src/display.c (meta_display_grab_focus_window_button): grab
buttons 2 and 3 also, so you can focus a window with those,
#70840
(event_callback): fix this to let you focus a window with any
unmodified click, and also with Alt+button1
* configure.in (AC_OUTPUT): add po/Makefile.in
* autogen.sh: port to glib-gettextize, remove stupid
auto-find-subdirs crap
* Makefile.am (SUBDIRS): add po to subdirs, #70615
* src/window.c (meta_window_activate): unshaded window if shaded,
I thought this was in bugzilla but I don't see it. anyway thanks
whoever mentioned it to me.
2002-02-08 Havoc Pennington <hp@pobox.com>
* src/window.c (meta_window_show): when mapping a window with
struts, invalidate the work areas it's on. Should fix at least
part of the problem with windows maximizing over panels.
* src/workspace.c (meta_workspace_invalidate_work_area): also
queue move/resize on sticky windows
* src/tools/Makefile.am: consolidate reload-theme, restart into a
"metacity-message" app and add enable/disable keybindings to the
messages it knows about.
* src/keybindings.c:
(meta_change_keygrab): grab keyboard synchronously
(meta_display_process_key_event): if all keybindings are toggled
off, ReplayKeyboard, else AsyncKeyboard, except that the debug
binding for toggling back on is always processed
(meta_set_keybindings_disabled): function to disable/enable
all keybindings
2002-02-07 Havoc Pennington <hp@pobox.com>
Throughout: move to meta_topic rather than meta_verbose so
metacity.log can start being more useful
* src/util.h (enum): add more debug topics
* src/frames.c: clean up some cruft that caused warnings
2002-02-06 Havoc Pennington <hp@pobox.com>
* src/main.c (main): disable custom log handler and fatal mask for
now
* src/theme.c (meta_draw_op_list_draw):
Add META_DRAW_CLIP
* src/main.c: load theme, monitor current theme setting
* src/prefs.c: add "current theme" setting
* src/stack.c (meta_stack_free): don't try to free
last_root_children_stacked if it doesn't exist
* src/themewidget.c: pluggable GtkMisc subclass to use
for menu icons
* src/screen.c (meta_screen_manage_all_windows): fix
signed/unsigned warning
* src/frames.c: port to theme system
(meta_frames_style_set): chain up
* theme-format.txt: new file
* configure.in: add more compiler warnings
* src/theme.c: add various stuff needed to get theme parser
working. Remove the "spacer" concept from FrameLayout object.
Add draw op that references a draw op list.
* configure.in: require GTK 1.3.13
* src/Makefile.am: add theme-parser.[hc], implement loading a
theme
* src/theme.c: add "draw title" and "draw window icon" operations
(meta_draw_op_draw): put object_width/object_height in expression
environment before computing x/y. Handle out-of-memory when
creating pixbufs. Assorted other cleanups.
2002-01-27 Havoc Pennington <hp@pobox.com>
* src/display.c (event_callback): make the check for whether to
eat focus click a lot more complicated
* src/window.c (meta_window_same_application): new function
* src/prefs.h, src/prefs.c: add application based pref
* src/metacity.schemas: add "application_based" setting to
give me a mode to fool with being application based,
without being unusable in the meantime. Yeah the crack flows
freely these days. Everyone knew it would happen.
2002-01-19 Havoc Pennington <hp@pobox.com>
* src/wm-tester/test-resizing.c: cheesy client with static
bit gravity, used to test the below change.
* src/window.c (meta_window_move_resize_internal): implement
Owen's proposal for window resizing.
http://mail.gnome.org/archives/wm-spec-list/1999-November/msg00088.html
Currently you have to do METACITY_USE_STATIC_GRAVITY=1 in order to
use it, because some GDK bug is screwing up exposes on my frames
when it's enabled.
* src/display.c (meta_display_create_x_cursor): fix glyph for
NE/NW cursors
* src/frames.c (get_control): add ability to resize from top
* src/frame.c (meta_frame_get_flags): can't resize shaded windows
(meta_frame_sync_to_window): add gravity arg
* src/common.h (MetaWindowType): move here from window.h so
it can be used in themes stuff.
(MetaFrameFlags): remove META_FRAME_TRANSIENT since it
overlaps with window type and was unused.
2002-01-18 Havoc Pennington <hp@pobox.com>
* src/window.c (constrain_position): give priority to keeping NW
corner onscreen rather than SE, if we need to shift the window
to fit inside constraints
* src/frames.c (meta_frames_get_geometry): don't depend on the
current window size
* src/theme.c: move geometry stuff in here, to be calculated as
part of the theme
* src/core.c (meta_core_get_client_size): new function to replace
meta_core_get_frame_size() so we don't have weird cycles
in the geometry calculation
2002-01-10 Havoc Pennington <hp@pobox.com>
* src/frame.c (meta_window_destroy_frame): only bump
unmaps_pending if the window was mapped
(meta_window_ensure_frame): ditto
* src/keybindings.c: change arrow key bindings to use Ctrl+Alt not
just Alt, and add debug mode key bindings
* src/stack.c (meta_stack_get_default_focus_window): don't choose
a default focus window with unmaps pending, since we probably just
unmapped it.
* src/display.c (event_callback): move notify_focus on UnmapNotify
after the window_free check, so we can move focus to another
window when we unmanage
* src/window.c (meta_window_hide): invalidate work areas when
hiding a window with struts
(meta_window_free): invalidate work areas when unmanaging a window
with struts
2002-01-09 Havoc Pennington <hp@pobox.com>
* src/window.c, src/window.h: store strut information,
update it on property changes, etc. etc. so we avoid panel
on maximize.
* src/workspace.c (meta_workspace_get_work_area): add accessor for
work area so we can compute it lazily
* src/display.h, src/display.c: add _NET_WM_STRUT atom
and _WIN_HINTS atom