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.
2002-06-24 James M. Cape <jcape@ignore-your.tv>
* src/themes/Esco/metacity-theme-1.xml: Added some stuff to
the window buttons, so they use the ACTIVE bg/fg.
2002-06-25 Mark McLoughlin <mark@skynet.ie>
* src/display.[ch]: (meta_display_open):
src/screen.c: (set_supported_hint), (set_work_area_hint):
Its _NET_WORKAREA, not _NET_WM_WORKAREA silly :-)
2002-06-25 Mark McLoughlin <mark@skynet.ie>
* src/screen.[ch]:
(update_num_workspaces), recalc workarea hint when
new workspaces created. Fixes bug that workarea
not calculated until first non-dock window is
mapped.
(set_work_area_hint), (set_work_area_idle_func),
(meta_screen_queue_workarea_recalc): move all this
stuff from workspace.c.
* src/workspace.c: (meta_workspace_invalidate_work_area):
use meta_screen_queue_workarea_recalc.
2002-06-22 James M. Cape <jcape@ignore-your.tv>
* src/themes/Esco/metacity-theme-1.xml: Update for "border"
frame stuff, minor button/spacing improvements.
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-22 Havoc Pennington <hp@pobox.com>
* src/workspace.c (set_number_of_spaces_hint): do nothing if
screen is being unmanaged, we don't want to blow away state,
we want to remember it for the next window manager.
2002-06-22 Havoc Pennington <hp@pobox.com>
* src/workspace.c (meta_screen_ensure_workspace_popup): rename
from meta_workspace_ensure_tab_popup, and use workspace->name
instead of a hardcoded name
2002-06-22 Havoc Pennington <hp@pobox.com>
* src/xprops.c (meta_prop_get_utf8_list): new utility function
* src/display.c (meta_display_open): _NET_DESKTOP_NAMES atom
(event_callback): update workspace names when the property changes
* src/screen.c (set_supported_hint): "support" _NET_DESKTOP_NAMES
(nothing to do really)
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-17 Havoc Pennington <hp@pobox.com>
* src/place.c (find_next_cascade): increase the cascade threshold
a bit.
(find_first_fit): implement a somewhat lame first fit algorithm
2002-06-15 Havoc Pennington <hp@pobox.com>
* src/draw-workspace.h, src/draw-workspace.c: workspace-drawing
code factored out of libwnck, needs wiring up to tabpopup.c
(which is kind of annoying since you have to get the list of
workspaces and MetaWindow across the barrier between the GDK-aware
and non-GDK-aware sides of metacity)
2002-06-13 Anders Carlsson <andersca@gnu.org>
* src/theme.c (meta_frame_layout_calc_geometry): Set client height
as 0 when the window actually is shaded, not the other way around.
2002-06-12 Havoc Pennington <hp@redhat.com>
* src/theme.c (meta_frame_layout_calc_geometry): when a window is
shaded, don't include client height in the height calculation.
* src/workspace.c (meta_workspace_get_neighbor): apply fix from
Mads Villadsen for the Up arrow key, #84582
2002-06-10 Erwann Chenede - <erwann.chenede@sun.com>
* src/keybindings.c : (handle_close_window, handle_minimize_window)
verify the active window has the appropriate close/minimize function
before closing or minimizing the window.
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-09 Havoc Pennington <hp@pobox.com>
* src/frames.c (meta_frames_button_press_event): don't raise/focus
the window if minimize/close are clicked, patch from Gaute
Lindkvist #75460
2002-06-08 Havoc Pennington <hp@pobox.com>
Cleanups to workspace popup patch. Space before all parens
in a couple places.
* src/prefs.c (meta_prefs_get_keybinding_action): fix brace
indentation, and use while instead of for loop. Take a "mask"
argument to avoid ambiguity issues.
* src/keybindings.c (handle_workspace_switch): rename from
handle_workspace_forward since there's no directionality here
(handle_workspace_switch): add a FIXME about how screwed it is
that we need a window in order to do our grab. Should be able to
grab on a dummy window like no_focus_window or the root window.
(process_workspace_switch_grab): rename from tab_grab for clarity,
no tab involved here.
* src/common.h (enum): have only one grab op for all workspace
switching directions, instead of one for each.
2002-06-08 Havoc Pennington <hp@pobox.com>
Apply big patch from blackc@speakeasy.net adding a popup window
to the Ctrl+Alt+arrows shortcuts. #83940
2002-06-08 Havoc Pennington <hp@pobox.com>
* src/screen.c (meta_screen_new): select key press/release on the
display->no_focus_window, another attempted fix for not getting
keybindings when no window is focused. Still doesn't seem to work
though. I don't get what's going wrong.
(meta_create_offscreen_window): new function, used instead of
XCreateSimpleWindow so we get override redirect offscreen windows.
2002-06-08 Havoc Pennington <hp@pobox.com>
* src/display.c (meta_display_open): set net_supporting_wm_check
in addition to win_supporting_wm_check, patch from
JeyaSudha for #83365
* src/screen.c (set_wm_check_hint): remove setting
win_supporting_wm_check on leader window here, done already in
display.c
2002-06-08 Havoc Pennington <hp@pobox.com>
* src/xprops.c (meta_prop_get_utf8_string): don't die on bad atom
name
* src/display.c (meta_display_close): don't unmanage windows here,
do it in screen_free and then closing the display unmanages
windows as a side effect of unmanaging the screen
(meta_display_unmanage_screen): new function
(process_selection_clear, process_selection_request): handle
selection stuff
(meta_spew_event): don't crash on client message containing
invalid atom
(meta_spew_event): don't crash on property notify with invalid
atom
* src/main.c (main): add --replace option to replace existing
window manager.
* src/screen.c: implement holding manager selection.
* src/display.c (meta_display_open): add new selection-related
atoms.
2002-06-08 Havoc Pennington <hp@pobox.com>
* src/screen.c (meta_screen_new): select keypress/keyrelease
events on root window, this may fix the bug where keybindings
didn't work if you didn't have a focused window.
2002-06-08 Havoc Pennington <hp@pobox.com>
* src/main.c (main): call meta_session_shutdown when exiting
cleanly
* src/session.c (meta_session_shutdown): function to change use to
RestartIfRunning
(meta_session_init): change normal restart hint to
RestartImmediately
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. ;-)