2002-05-28 Havoc Pennington <hp@pobox.com>
Patch from Erwann Chenede for raise_or_lower keybinding
* src/display.c, src/common.h: POINT_IN_RECT moved to a common
location, removed from here
(meta_rectangle_intersect): move here and make it public
* src/prefs.c: add raise_or_lower keybinding
* src/stack.c (meta_stack_get_below, meta_stack_get_above): add an
arg to only get windows within the same layer
* src/keybindings.c (handle_raise_or_lower): add handling for a
"raise window if obscured, else lower" keybinding
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-27 Kjartan Maraas <kmaraas@gnome.org>
* autogen.sh: Hook up intltoolize here.
* configure.in: Initialize intltool.
* src/metacity.schemas.in: Add this.
* src/metacity.desktop.in: Add this too
* src/Makefile.am: Hook up intltool support for .schemas and .desktop.
* Makefile.am: Dist the intltool files.
2002-05-27 Anders Carlsson <andersca@gnu.org>
* src/themes/Gorilla/metacity-theme-1.xml: Apparently someone
thinks my name is Anders Carlsom. Well, it's not.
(Thanks to Carl-Johan Kjellander for noticing.)
2002-05-26 James M. Cape <jcape@ignore-your.tv>
* src/themes/Esco/metacity-theme-1.xml: Remove borders from
Esco theme as well (didn't know you could), apparently fixed
the problem where the spacing between the icon & the title
got larger as the fontsize went up.
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-25 Anders Carlsson <andersca@gnu.org>
* src/place.c: (get_vertical_edges), (get_horizontal_edges):
Take Xinerama screen edges into consideration.
* src/screen.c: (meta_rectangle_intersect),
(meta_screen_get_xinerama_for_window):
* src/screen.h:
Add a new function that returns the xinerama monitor that
a window is on.
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-23 Jayaraj Rajappan <jayaraj.rajappan@wipro.com>
* src/display.c (event_callback): fix for bugzilla bug #72314,
filter out LeaveNotify caused by grabs when in mouse focus mode.
2002-05-23 Havoc Pennington <hp@pobox.com>
* src/metacity.schemas: clean up the font preference
* src/prefs.c: font pref
* src/frames.c: pay attention to the font pref
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-15 Havoc Pennington <hp@pobox.com>
* src/workspace.c (meta_workspace_get_neighbor): use the layout
information to figure out up/down neighbors
* src/display.c (event_callback): catch propertynotify on
_NET_DESKTOP_LAYOUT
* src/screen.c (meta_screen_update_workspace_layout): keep track
of the layout of workspaces as set by the pager
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 Anders Carlsson <andersca@gnu.org>
* src/display.c: (find_tab_forward), (find_tab_backward),
(meta_display_get_tab_next):
* src/display.h:
* src/keybindings.c: (handle_tab_forward), (handle_focus_previous):
Add screen argument to meta_display_get_tab_next, since we only
want windows on the same screen to appear in the tab chain.
* src/screen.c: (meta_screen_new):
Or the event mask with existing events since gtk+ may listen to
certain events and we don't want to disable those events.
(meta_screen_ensure_tab_popup):
* src/tabpopup.c: (meta_ui_tab_popup_new):
* src/tabpopup.h:
Add a screen number argument to meta_ui_tab_popup_new so we
can position the popup on the correct screen.
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/tools/metacity-window-demo.c: add override redirect test
window
* src/stack.c (raise_window_relative_to_managed_windows): new
function, used to avoid moving windows above override redirect
popup windows.
* src/display.c (event_callback): don't lower panels on
LeaveNotify if they have focus, #70895
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/keybindings.c (reload_modmap): put LockMask into the
ignored_modifier_mask so that caps lock doesn't mess up
keybindings.
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-08 Anders Carlsson <andersca@gnu.org>
* src/fixedtip.c (meta_fixed_tip_show):
#ifdef out call to gtk_window_set_screen, reported by
Erwann Chenede.
2002-05-07 Anders Carlsson <andersca@gnu.org>
* src/workspace.c (set_work_area_hint): Doh, only update
the tmp pointer when the screen matches. Fixes a segfault
when running with multiple screens.
2002-05-07 Anders Carlsson <andersca@gnu.org>
* src/display.c: (meta_display_open), (event_callback),
(meta_display_update_show_desktop_hint):
* src/display.h:
* src/screen.c: (set_supported_hint):
Fix atom name; it's _NET_SHOW_DESKTOP, not
_NET_WM_SHOW_DESKTOP.
* src/frames.c: (meta_frames_unmanage_window):
Restore the mouse cursor to default when unmanaging a window.
2002-05-06 Anders Carlsson <andersca@gnu.org>
* src/display.c: (set_utf8_string_hint):
Fix an off-by-one error.
(meta_display_open),
(event_callback), (meta_display_update_show_desktop_hint),
(meta_display_show_desktop), (meta_display_unshow_desktop):
* src/display.h:
* src/screen.c: (set_supported_hint):
Add support for _NET_WM_SHOW desktop, both as a message and
as a root window property.
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/frames.c (meta_frames_paint_to_drawable): chop out the
portion of the region that's outside the screen.
* src/core.c (meta_core_get_screen_size): new function
(meta_core_get_frame_extents): new function
2002-05-04 Havoc Pennington <hp@pobox.com>
* src/frames.c (meta_frames_init): disable automatic GTK double
buffering, since it resulted in gigantic backing pixmaps the size
of the whole screen.
(meta_frames_paint_to_drawable): change to take a region argument;
punch the client area out of the expose region, then iterate over
rectangles in the region and draw each, manually doing
begin_paint_rect. Results in 4 long thin backing pixmaps
per frame repaint, instead of one large backing pixmap.
Suggested by Owen.
2002-05-05 Anders Carlsson <andersca@gnu.org>
* src/metacity.schemas: Fix a spelling error and change
switch_to_workspace_up and switch_to_workspace_down to use
Ctrl+Alt since Nautilus uses Alt now.
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.
Tue Apr 30 06:24:09 2002 Jonathan Blandford <jrb@gnome.org>
* src/menu.c: give Maximize/Unmaximize and Shade/Unshade the same
mnemonic for consistency's sake.
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 Anders Carlsson <andersca@gnu.org>
* src/display.c: (meta_display_open):
* src/display.h:
* src/screen.c: (set_supported_hint):
* src/workspace.c: (set_number_of_spaces_hint),
(set_workarea_hint):
Add support for setting the _NET_WM_WORKAREA hint. No code
does it yet though.
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-25 jacob berkman <jacob@ximian.com>
* src/session.c (load_state): g_file_get_contents() takes a gsize
not int (fixes bus error on 64-bit platforms)
2002-04-22 Havoc Pennington <hp@redhat.com>
* src/main.c (main): call setlocale ourselves because due to a
GLib bug that sticks us in ASCII if you call g_print or anything
prior to setlocale, and print a warning if we don't set the locale
successfully. #79280
* src/workspace.c (meta_workspace_get_work_area): be more verbose
about how the work area was computed, to help find bugs here.
* src/main.c (main): put locale and codeset in the log file
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-04-09 Havoc Pennington <hp@pobox.com>
* src/theme.c (multiply_alpha): fix alpha multiplication routine
to perhaps work correctly, reported by tigert. Also, be sure
we always copy the image if necessary before modifying the
alpha channel.
2002-04-05 Havoc Pennington <hp@pobox.com>
* src/stack.c: remove the unused tab stuff
* src/display.c: implement tab list among panels
* src/keybindings.c: fill in move-between-panels keybindings
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-21 Havoc Pennington <hp@pobox.com>
* src/themes/Bright/metacity-theme-1.xml: Added "Bright" theme
from Gaute Lindkvist, with some small clipping tweaks to keep
text/icons from overlapping their frames.
2002-03-19 Havoc Pennington <hp@redhat.com>
* src/resizepopup.c (place_vertical_size_window)
(place_horizontal_size_window): disable the little shaped windows
with the window size, they caused a crash anytime you tried to
resize with Xft. And they were kind of on crack anyway.
2002-03-17 Havoc Pennington <hp@pobox.com>
* src/resizepopup.c (ensure_tick_windows): turn off the tick
marks, that got annoying after about 5 minutes. One big shape
window instead of lots of little windows might fix it.
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-17 Havoc Pennington <hp@pobox.com>
* src/session.c (set_clone_restart_commands): use proper property
name for SmDiscardCommand (instead of setting the clone command to
"rm"). Also fix typo that iterated over clonev not discardv to
fill in prop list, and NULL-terminate discardv. #74584 from Kang
Jeong-Hee.
2002-03-13 Havoc Pennington <hp@pobox.com>
* src/session.c (meta_session_init): don't save a file here, only
in response to SaveYourself. Change the code to properly use a
unique state file for each SaveYourself. Totally, totally
untested.
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/display.c (event_callback): support _NET_NUMBER_OF_DESKTOPS
message so you can change number of desktops with the pager
* src/prefs.c (meta_prefs_set_num_workspaces): new function
* src/display.c (meta_spew_event): print stacking aspects of
configure request