Commit Graph

915 Commits

Author SHA1 Message Date
Elijah Newren
7ee43e5a36 Don't focus a window that is minimized (fixes #147947)
2004-09-17  Elijah Newren  <newren@math.utah.edu>

	* src/workspace.c (meta_workspace_focus_mru_window): Don't focus a
	window that is minimized (fixes #147947)
2004-09-17 19:49:32 +00:00
Kjartan Maraas
43cc3b8606 A load of fixes of issues reported by sparse. Closes bug #152849
2004-09-17  Kjartan Maraas  <kmaraas@gnome.org>

	* src/bell.c: (meta_bell_flash_screen):
	* src/compositor.c:
	* src/effects.c: (meta_effects_draw_box_animation):
	* src/fixedtip.c: (meta_fixed_tip_show):
	* src/frame.c: (find_argb_visual):
	* src/frames.c: (unsigned_long_hash), (meta_frames_manage_window),
	(meta_frames_apply_shapes):
	* src/iconcache.c: (find_largest_sizes), (find_best_size):
	* src/keybindings.c: (meta_spawn_command_line_async_on_screen):
	* src/main.c: (main):
	* src/menu.c: (meta_window_menu_new):
	* src/prefs.c: (meta_prefs_get_visual_bell),
	(meta_prefs_bell_is_audible), (meta_prefs_get_visual_bell_type),
	(meta_prefs_get_action_double_click_titlebar),
	(meta_prefs_get_auto_raise), (meta_prefs_get_auto_raise_delay),
	(meta_prefs_get_reduced_resources):
	* src/screen.c: (meta_create_offscreen_window):
	* src/tabpopup.c: (meta_ui_tab_popup_get_selected):
	* src/theme-parser.c: (meta_theme_load):
	* src/theme.c: (meta_gtk_widget_get_font_desc):
	* src/tools/metacity-mag.c: (mouse_press), (begin_area_grab):
	* src/util.c: (meta_unsigned_long_hash): A load of fixes of issues
	reported by sparse. Closes bug #152849
2004-09-16 23:18:22 +00:00
Elijah Newren
9d9c744490 Remove some redundant code regarding focusing the default window (#152117)
2004-09-15  Elijah Newren  <newren@math.utah.edu>

	* src/display.c (event_callback): Remove some redundant code
	regarding focusing the default window (#152117)
2004-09-16 03:10:11 +00:00
Elijah Newren
63e1624bd7 Patch from Ken Harris in #135786 to focus a new default window when
2004-09-15  Elijah Newren  <newren@math.utah.edu>

	Patch from Ken Harris in #135786 to focus a new default window
	when lowering via middle-click on the frame.

	* src/core.[hc], src/frames.c: rename meta_core_user_lower to
	meta_core_user_lower_and_unfocus

	* src/core.c (meta_core_user_lower_and_unfocus): if in
	click-to-focus mode then also move the window to the back of the
	mru list and focus the new default window for the active workspace
2004-09-16 00:06:38 +00:00
Elijah Newren
cffe7e9566 Focus the no_focus_window if no suitable window is in the mru list (should
2004-09-15  Elijah Newren  <newren@math.utah.edu>

	Focus the no_focus_window if no suitable window is in the mru list
	(should fix the almost contrived extra issue found in #147475)

	* doc/how-to-get-focus-right.txt: We no longer need to lie about
	only focusing panels upon explicit request.

	* src/workspace.c: (meta_workspace_focus_top_window): removed this
	function--it was more code than needed and was unreliable anyway,
	(meta_workspace_focus_mru_window): if a suitable window isn't in
	the mru list, focus the no_focus_window instead of calling
	focus_top_window.
2004-09-15 16:53:20 +00:00
Elijah Newren
101a097f02 Prevent focus inconsistencies by only providing one focus method (fixes
2004-09-15  Elijah Newren  <newren@math.utah.edu>

	Prevent focus inconsistencies by only providing one focus method
	(fixes #151990)

	* src/screen.c (meta_screen_show_desktop): remove call to
	meta_workspace_focus_top_window (it was merely focusing a window
	that was going to be hidden anyway, and likely the one that
	already had focus)

	* src/workspace.[hc]: remove meta_workspace_focus_mru_window and
	meta_workspace_focus_top_window from workspace.h, make them static
	functions in workspace.c
2004-09-15 16:42:52 +00:00
Elijah Newren
5ac6fcad73 Remove race condition for focus window choice on window close followed by
2004-09-15  Elijah Newren  <newren@math.utah.edu>

	Remove race condition for focus window choice on window close
	followed by rapid mouse movement in sloppy and mouse focus modes
	(fixes #152000)

	* src/window.c (meta_window_free): Don't increment the focus
	sentinel for windows being freed, (idle_calc_showing): don't
	increment the focus sentinel for windows being minimized
2004-09-15 15:54:51 +00:00
Elijah Newren
a880f5d401 Fix unwanted loss of focus to the mouse window when using keynav (fixes
2004-09-15  Elijah Newren  <newren@math.utah.edu>

	Fix unwanted loss of focus to the mouse window when using keynav
	(fixes #101190)

	* src/display.c (event_callback): Ignore EnterNotify events with
	xcrossing.mode of either NotifyGrab or NotifyUngrab
2004-09-15 15:46:25 +00:00
Elijah Newren
4b9fe2cae7 Focus correct window after minimizing via the tasklist (fixes #128200; see
2004-09-15  Elijah Newren  <newren@math.utah.edu>

	Focus correct window after minimizing via the tasklist (fixes
	#128200; see also #107681)

	* src/display.h (struct _MetaDisplay): track the
	previously_focused_window

	* src/display.c (meta_display_open): initialize
	previously_focused_window

	* src/window.c (meta_window_free): clear the
	previously_focused_window if it's being freed,
	(meta_window_client_message): if we get a request to minimize the
	previously_focused_window and the focus_window is a dock or the
	desktop, focus the default window, (meta_window_notify_focus):
	update the previously_focused_window
2004-09-15 15:38:09 +00:00
Elijah Newren
8c7f81eac9 Disable focus-stealing-prevention for now; there are still some issues and
2004-08-29  Elijah Newren  <newren@math.utah.edu>

	* src/window.c (window_takes_focus_on_map): Disable
	focus-stealing-prevention for now; there are still some issues and
	hard code freeze is tomorrow...so this will have to wait until
	Gnome 2.10.
2004-08-30 04:56:07 +00:00
Havoc Pennington
19b808c4f5 add comment about broken assertion 2004-08-27 22:19:43 +00:00
Havoc Pennington
744efc95a1 disable NameWindowPixmap stuff always for now, it seemed kind of busted
2004-08-27  Havoc Pennington  <hp@redhat.com>

	* src/compositor.c (meta_compositor_new): disable NameWindowPixmap
	stuff always for now, it seemed kind of busted
	(paint_screen): don't grab the server during repaint, adds to the
	speed, though only slightly.

	* src/frames.c (meta_frames_set_window_background): factor out all
	the set_background stuff to one function; disable setting
	background to transparent, because it breaks existing themes. We
	need to add a flag in the theme XML file to say "start me with a
	transparent background"
2004-08-27 22:09:13 +00:00
Elijah Newren
522e9916b6 Prevent an assertion failure that can occur after increasing the number of
2004-08-27  Elijah Newren  <newren@math.utah.edu>

	Prevent an assertion failure that can occur after increasing the
	number of workspaces; also fix a warning and stacking order when a
	window is denied focus (fixes #150615)

	* src/window.c (meta_window_stack_just_below): the position of the
	window should be set equal to that of the one we want to be below,
	not 1 lower than that number

	* src/workspace.c (maybe_add_to_list): new function to add
	on_all_workspace windows to an mru_list, (meta_workspace_new):
	call maybe_add_to_list for all windows on the screen in order to
	initialize the mru_list
2004-08-27 17:22:54 +00:00
Havoc Pennington
b682a9f945 delete extra copy of find_argb_visual so things compile
2004-08-26  Havoc Pennington  <hp@redhat.com>

	* src/frame.c: delete extra copy of find_argb_visual so things
	compile

	* src/compositor.c (HAS_NAME_WINDOW_PIXMAP): copy the
	XCompositeNameWindowPixmap() stuff from xcompmgr, though I can't
	say I really know what it's supposed to help with (painting the
	window border?)
2004-08-27 03:27:43 +00:00
Havoc Pennington
a8fd516aa0 couple of cosmetic tweaks from resolving my local patch with the bugzilla
2004-08-26  Havoc Pennington  <hp@redhat.com>

	* src/frame.c, src/theme.c: couple of cosmetic tweaks from
	resolving my local patch with the bugzilla patch from the 8-19
	entry below
2004-08-27 02:24:48 +00:00
Havoc Pennington
1f7f29e059 move the have_xrender variable initialization up in the file since it can
2004-08-26  Havoc Pennington  <hp@redhat.com>

	* configure.in: move the have_xrender variable initialization up
	in the file since it can be set as part of composite check

2004-08-19  Havoc Pennington  <hp@redhat.com>

	Fixes from Rich Wareham

	* src/display.h (struct _MetaDisplay): add render extension check
	to the display

	* src/display.c: check for render

	* configure.in: don't build compositing manager by default, don't
	want any nasty surprises; check for render separately from
	compositing manager

	* src/frame.c: use an ARGB visual when available for the window
	frame, so we can be all cool-ass
2004-08-27 02:17:49 +00:00
Elijah Newren
044d8999a3 Make dialogs that Metacity shows follow focus-stealing-prevention
2004-08-25  Elijah Newren  <newren@math.utah.edu>

	Make dialogs that Metacity shows follow focus-stealing-prevention
	conventions. (fixes one issue in #149028; see comments 47-54)

	* src/delete.c (delete_ping_reply_func,
	delete_ping_timeout_func): Make callback functions take a
	timestamp arg, (delete_ping_timeout_func): pass the timestamp to
	metacity-dialog

	* src/display.c (meta_display_ping_timeout): add a timestamp to
	the call to the ping_timeout_func, (meta_display_ping_window,
	process_pong_message): add a timestamp to the call to the
	ping_reply_func

	* src/display.h (MetaWindowPingFunc typedef): add a timestamp to
	this function typedef

	* src/keybindings.c (error_on_command): require a timestamp and
	pass the timestamp on to metacity-dialog, (handle_run_command):
	pass a timestamp to error_on_command

	* src/metacity-dialog.c (copy_of_gdk_x11_window_set_user_time):
	new function (temporary; only for use while using gtk+-2.4),
	(kill_window_question, warn_about_no_sm_support,
	error_about_command): make these functions take a timestamp and
	call copy_of_gdk_x11_window_set_user_time, (main): require the
	first two args to the program to be "--timestamp <timestamp>"

	* src/session.c (warn_about_lame_clients_and_finish_inter): pass a
	timestamp of 0 to metacity-dialog to prevent focus (it's a popup
	not generated by and kind of user request).
2004-08-26 00:59:12 +00:00
Soeren Sandmann
9cee95f210 Move wireframe code before grab is released to prevent endless loops with
Fri Aug 20 12:54:12 2004  Soeren Sandmann  <sandmann@daimi.au.dk>

	* src/display.c (meta_display_end_grab_op): Move wireframe code
	before grab is released to prevent endless loops with fullscreen
	windows.
2004-08-20 10:56:41 +00:00
Havoc Pennington
06a58f43c0 track the last_xor_rect separately from the current window size, and then
2004-08-18  Havoc Pennington  <hp@redhat.com>

	* src/display.h (struct _MetaDisplay): track the last_xor_rect
	separately from the current window size, and then use that to
	paint the wireframe including the frame, and taking into
	account shaded windows.

	* src/window.c (meta_window_get_xor_rect): new function to compute
	the xor rect; it is not really 100% right, because it uses the
	frame dimensions from the window at the start of the move/resize.
	But probably won't break in practice.
2004-08-19 02:05:24 +00:00
Rob Adams
afee4a4251 use height and top/bottom struts to compute gap (copy/paste bug).
2004-08-15  Rob Adams  <readams@readams.net>

	* src/windows.c (meta_window_update_struts): use height and
	top/bottom struts to compute gap (copy/paste bug).
2004-08-15 17:32:45 +00:00
Rob Adams
caaad4449c Allow struts larger than 1/2 the screen width/height, as long as there's a
2004-08-15  Rob Adams  <readams@readams.net>

	* src/window.c (meta_window_update_struts): Allow struts larger
	than 1/2 the screen width/height, as long as there's a minimum
	sized gap between them.  Patch from Bill Haneman <billh@gnome.org>
	for bug #144126.
2004-08-15 15:26:30 +00:00
Soeren Sandmann
766d46b70d New function. Use it here to synchronize with the hardware between each
Mon Aug  9 05:38:33 2004  Soeren Sandmann  <sandmann@daimi.au.dk>

	* src/effects.c (graphics_sync): New function.
	* src/effects.c (effects_draw_box_animation_timeout): Use it here
	to synchronize with the hardware between each frame.
2004-08-09 03:40:37 +00:00
Rob Adams
5f1de4bf7a Add #ifdef around XSYNC code; fixes compile problem if XSYNC is disabled.
2004-08-08  Rob Adams  <readams@readams.net>

	* src/window.c (meta_window_move_resize_internal): Add #ifdef
	around XSYNC code; fixes compile problem if XSYNC is disabled.
	Path for #149314 from Peter O'Shea and independently Mike Castle.
2004-08-08 16:18:52 +00:00
Soeren Sandmann
2e0bb772ea Flush after setting cursor. (Rest of #149413).
Sun Aug  8 14:20:00 2004  Soeren Sandmann  <sandmann@daimi.au.dk>

	* src/frame.c (meta_frame_set_screen_cursor): Flush after setting
	cursor. (Rest of #149413).
2004-08-08 12:23:34 +00:00
Elijah Newren
118a1fb76a activating the current workspace should be a no-op. This prevents a race
2004-08-07  Elijah Newren  <newren@math.utah.edu>

	* src/display.c (event_callback): activating the current workspace
	should be a no-op.  This prevents a race condition in focus window
	choice when activating a window via the taskbar.  Fix for #149589.
2004-08-08 04:11:33 +00:00
Elijah Newren
bd73853f72 Revert Rob's 2004-07-31 patch that ignored net_wm_user_time when
2004-08-07  Elijah Newren  <newren@math.utah.edu>

	* window.c, window.h: Revert Rob's 2004-07-31 patch that ignored
	net_wm_user_time when unminimizing a window

	* window.c (meta_window_activate): If a nonzero timestamp is
	passed, update the window's net_wm_user_time accordingly.  (see
	comments 102-108 of bug 118372)
2004-08-08 00:02:02 +00:00
Rob Adams
de4c7a0610 Remove some extraneous items that could sometimes appear in the window
2004-08-07  Rob Adams  <readams@readams.net>

	Remove some extraneous items that could sometimes appear in the
	window menu.  Fix for #144493.

	* src/menu.c (menuitems): Change the second separator to key on
	whether there are any workspaces.
	(meta_window_menu_new): use NULL label instead of 0 op to identify
	separator

	* src/window.c (meta_window_show_menu): Change the conditions on
	the directions to take into account "holes" in the workspace
	layout and also only set META_MENU_OP_WORKSPACES when there's more
	than one workspace.
2004-08-07 17:50:40 +00:00
Havoc Pennington
7bcc485701 add XFlush() after setting cursor, #149413
2004-08-07  Havoc Pennington  <hp@redhat.com>

	* src/screen.c (meta_screen_set_cursor): add XFlush() after
	setting cursor, #149413
2004-08-07 16:33:11 +00:00
Elijah Newren
e81659d2ff Focusing a window upon unshowing the desktop in various ways (panel applet
2004-08-06  Elijah Newren  <newren@math.utah.edu>

	* src/display.c (event_callback): Focusing a window upon unshowing
	the desktop in various ways (panel applet or keybinding) was
	inconsistent for sloppy and click focus modes.  Fix this by
	calling meta_workspace_focus_default_window after unshowing the
	desktop via a _NET_SHOWING_DESKTOP message.  (resolves #149543)
2004-08-07 03:13:56 +00:00
Elijah Newren
385248044d prevent keyboard from "getting locked" upon workspace switch, by making
2004-08-06  Elijah Newren  <newren@math.utah.edu>

	* src/workspace.c (meta_workspace_focus_default_window): prevent
	keyboard from "getting locked" upon workspace switch, by making
	sure that the no_focus_window has focus if no other window does.
	(fixes #147475)
2004-08-06 18:13:55 +00:00
Elijah Newren
abe183c14c Have newly mapped windows that are denied focus appear after the focused
2004-08-05  Elijah Newren  <newren@math.utah.edu>

	Have newly mapped windows that are denied focus appear after the
	focused window in the alt-tab list.  This allows one to switch to
	such a window with a single alt-tab press.

	* src/window.c (ensure_mru_position_after): new function,
	(meta_window_show): If newly mapped window is denied focus, call
	ensure_mru_position_after to make the window appear after the
	focus window in the mru list.
2004-08-05 17:48:39 +00:00
Elijah Newren
b834001fe7 prepend window to mru list instead of appending, since making the window
2004-08-05  Elijah Newren  <newren@math.utah.edu>

	* src/window.c (meta_window_stick): prepend window to mru list
	instead of appending, since making the window sticky should imply
	that it is the most recently used, not the least recently.  (fixes
	#149369)
2004-08-05 16:23:37 +00:00
Elijah Newren
cd09a27aa6 Fix some bugs (reported in #120100) regarding the focus window when using
2004-08-02  Elijah Newren  <newren@math.utah.edu>

	Fix some bugs (reported in #120100) regarding the focus window
	when using the workspace switcher.

	* src/display.c (event_callback): When switching workspaces due to
	a _NET_CURRENT_DESKTOP message, make sure to focus the default
	window as well.

	* src/workspace.c (meta_workspace_focus_default_window,
	meta_workspace_focus_mru_window): Make DOCK or DESKTOP windows
	have lower priority than others when choosing a window to focus.
	(For the former function, this means don't focus them at all; for
	the latter, this means only focus them (via the
	meta_workspace_focus_top_window call) if no other mru window can
	be found.)
2004-08-02 19:23:03 +00:00
Rob Adams
12f4f7c6b0 Fix bug that caused windows to not be focused on unminimizing because of
2004-07-31  Rob Adams  <readams@readams.net>

	Fix bug that caused windows to not be focused on unminimizing
	because of user time support.

	* src/window.c (meta_window_new_with_attrs): initialize
	focus_despite_user_time bit
	(window_takes_focus_on_map): focus if focus_despite_user_time
	despite user time, interestingly enough
	(meta_window_show): reset focus_despite_user_time after showing

	* src/window.h (_MetaWindow): add focus_despite_user_time bit
2004-07-31 21:26:05 +00:00
Rob Adams
e60da6c006 Fix some support for EWMH hints, and fix USER_TIME support to include the
2004-07-31  Rob Adams  <readams@readams.net>

	Fix some support for EWMH hints, and fix USER_TIME support to
	include the DEMANDS_ATTENTION hint.  Also includes some code for
	implementing _NET_RESTACK_WINDOW and _NET_MOVERESIZE_WINDOW, but
	this is disabled pending feature thaw.

	* COMPLIANCE: update with new information

	* src/display.c (meta_display_open): add new hints to list

	* src/display.h (_MetaDisplay): Add new atoms to struct

	* src/screen.c (set_supported_hint): update the list of support
	hints.
	(set_desktop_viewport_hint): new function sets the viewport hint
	to (0,0) as required by the spec for WMs with no viewport support.
	(set_desktop_geometry_hint): new function to set the desktop size
	hint to the size of the display, since we don't implement large
	desktop support, as required by the spec.
	(meta_screen_resize): update the geometry hint on screen resize

	* src/window.c (meta_window_new_with_attrs): Initialize
	demands_attention state
	(set_net_wm_state): Set demands_attention hint in the window state
	(meta_window_show): If we don't pop up a window because of
	USER_TIME, set DEMANDS_ATTENTION on the window.
	(meta_window_focus): When a window receives focus, remove
	DEMANDS_ATTENTION hint
	(meta_window_client_message): Allow other apps to set
	DEMANDS_ATTENTION on a window.  Also, if the _NET_ACTIVE_WINDOW
	hint includes a timestamp, use it.
	(update_net_wm_state): Read DEMANDS_ATTENTION state also

	* src/window.h (_MetaWindow): add wm_state_demands_attention bit.
2004-07-31 19:56:10 +00:00
Rob Adams
6f9b2cf11e Add trailing quotes to keybinding explanation text. Patch from Emil
2004-07-22  Rob Adams  <readams@readams.net>

	* src/metacity.schemas.in: Add trailing quotes to keybinding
	explanation text.  Patch from Emil Soleyman-Zomalan.
2004-07-22 23:27:51 +00:00
Elijah Newren
d0d0925e29 Choose correct window to focus when "un-showing" the desktop. Fixes
2004-06-24  Elijah Newren  <newren@math.utah.edu>

	* src/keybindings.c: (handle_toggle_desktop): Choose correct
	window to focus when "un-showing" the desktop.  Fixes #144900.
2004-06-24 20:47:31 +00:00
Elijah Newren
9d1d8fa062 Make choice of focus window be consistent for each focus mode. Fixes
2004-06-24  Elijah Newren  <newren@math.utah.edu>

	Make choice of focus window be consistent for each focus mode.
	Fixes #135810.

	* src/delete.c: (meta_window_delete): In some #if 0'ed code,
	replace meta_workspace_focus_mru_window with
	meta_workspace_focus_default_window (just in case the code becomes
	un-#if 0'ed out).

	* src/screen.c, src/screen.h: Change
	meta_screen_focus_mouse_window to meta_screen_get_mouse_window,
	and don't focus the window when found but rather return it.

	* src/window.c: (meta_window_free, meta_window_minimize): replace
	meta_workspace_focus_mru_window with
	meta_workspace_focus_default_window.

	* src/workspace.c: (meta_workspace_focus_default_window): Focus
	appropriately for the given focus method:
	   click-to-focus: focus MRU window (== toplevel window)
	   sloppy focus:   focus the window under the pointer if there is
	                   such a window, otherwise focus the mru window
	   mouse focus:    focus the window under the pointer if there is
	                   such a window, otherwise don't focus anything
2004-06-24 20:02:46 +00:00
Elijah Newren
702a4c0da7 Avoid a race condition on the choice of window to focus after the
2004-06-24  Elijah Newren  <newren@math.utah.edu>

	* src/window.c: Avoid a race condition on the choice of window to
	focus after the previously focused window gets closed or
	minimized.  Fixes #131582.
2004-06-24 19:41:02 +00:00
Elijah Newren
fe341bb927 make naming for "move a window"/"move the window"/"move window" more
2004-06-24  Elijah Newren  <newren@math.utah.edu>

	* src/metacity.schemas.in: make naming for "move a window"/"move
	the window"/"move window" more consistent.  Patch from Michael
	Terry for #142235.
2004-06-24 17:09:43 +00:00
Elijah Newren
8131988b5e Change meta_warning to meta_topic on failure to connect to a session
2004-06-24  Elijah Newren  <newren@math.utah.edu>

	* src/session.c: Change meta_warning to meta_topic on failure to
	connect to a session manager.  Fixes #136218.
2004-06-24 17:02:54 +00:00
Elijah Newren
28a54c6bb4 Add support for _NET_WM_USER_TIME
2004-06-17  Elijah Newren  <newren@math.utah.edu>

	Add support for _NET_WM_USER_TIME

	* src/display.c:
	(meta_display_open): Add _NET_WM_USER_TIME to atom_names[],
	(event_callback): Manually set _NET_WM_USER_TIME upon KeyPress
	(doesn't work since keyboard isn't grabbed) and ButtonPress (does
	work), this is just a fallback for applications that don't update
	this themselves.

	* src/display.h: (struct _MetaDisplay): Add atom_net_wm_user_time field

	* src/screen.c: (meta_screen_apply_startup_properties): Check for
	TIMESTAMP provided from startup sequence as well.

	* src/stack.c:
	s/meta_window_set_stack_position/meta_window_set_stack_position_no_sync/,
	(meta_window_set_stack_position): New function which calls the
	meta_window_set_stack_position_no_sync function followed immediately
	by calling meta_stack_sync_to_server.

	* src/window-props.c:
	(init_net_wm_user_time), (reload_net_wm_user_time): new functions,
	(reload_wm_hints): also load atom_net_wm_user_time

	* src/window.c:
	new XSERVER_TIME_IS_LATER macro (accounts for timestamp wraparound),
	(meta_window_new_with_attrs): add timestamp attributes,
	(window_takes_focus_on_map): use TIMESTAMP from startup
	notification and _NET_WM_USER_TIME to decide whether to focus new
	windows,
	(meta_window_show): if app doesn't take focus on map, place it
	just below the focused window in the stack
	(process_property_notify): check for changes to _NET_WM_USRE_TIME,
	(meta_window_stack_just_below): new function

	* src/window.h:
	(_MetaWindow struct): new fields for initial_timestamp,
	initial_timestamp_set, net_wm_user_time_set, and net_wm_user_time,
	(meta_window_stack_just_below): new function
2004-06-24 15:47:05 +00:00
Anders Carlsson
ef1ecc8128 Add a timestamp argument to menu functions and use it in
2004-06-21  Anders Carlsson  <andersca@gnome.org>

	* src/common.h:
	* src/menu.c: (menu_closed), (activate_cb):
	* src/window.c: (menu_callback):
	Add a timestamp argument to menu functions and
	use it in meta_window_delete.
2004-06-21 16:47:27 +00:00
Anders Carlsson
adb26d0543 Get the timestamp from the client message.
2004-06-21  Anders Carlsson  <andersca@gnome.org>

	* src/window.c: (meta_window_client_message):
	Get the timestamp from the client message.
2004-06-21 09:53:23 +00:00
Soeren Sandmann
4cfb5152f7 Fix bug 143333, support for update counter spec, and 109362, schedule
Sat Jun 19 02:21:08 2004  Soeren Sandmann  <sandmann@daimi.au.dk>

	Fix bug 143333, support for update counter spec, and 109362,
	schedule compensation events when events are ignored.

	* src/display.c (meta_display_open): Add _NET_WM_SYNC_REQUEST and
	_NET_WM_SYNC_REQUEST_COUNTER atoms. Remove the old
	METACITY_SYNC_COUNTER stuff.
	(meta_display_begin_op): Setup the sync counter

	* src/xprops.c, src/xprops.h, src/window-props.c, src/display.h:
	Add new atoms.

	* src/window.c (send_sync_request): new function.
	(meta_window_move_resize_internal): send a sync request before
	resizing.
	(check_move_resize_frequence): Rework logic to also check the SYNC
	case. If an event is ignored return the remaining time.
	(update_resize_timeout): Timeout that gets called when a
	compensation event is scheduled.
	(uddate_resize): schedule compensation events when an event is
	ignored.
	(meta_window_handle_mouse_grap_op_event): When an alarm is
	received and sync was turned off, turn it back on.

	* src/window.h (struct MetaWindow)  Add some variables
2004-06-19 00:45:24 +00:00
Jeff Waugh
9170f58f3b Set titlebar_uses_system_font = false. The previous default was almost
2004-06-04  Jeff Waugh  <jdub@perkypants.org>

	* src/metacity.schemas.in: Set titlebar_uses_system_font = false. The
	previous default was almost violent in its lack of appreciation for
	human beings. In fact, this entire setting should probably be removed, but
	for now, let's just fix the default. Permission granted by Havoc.
2004-06-04 13:55:10 +00:00
Rob Adams
77a1e8ec8b make the no sm support warning dialog resizable, since the default GTK
2004-05-02  Rob Adams  <readams@readams.net>

	* src/metacity-dialog.c (warn_about_no_sm_support): make the no sm
	support warning dialog resizable, since the default GTK warning
	dialog not has default not resizable.  Fix for #141672 from
	Olivier Crete.
2004-05-03 02:03:59 +00:00
Rob Adams
0ceb317ac6 Add a value type check for the visual bell/audible bell gconf settings.
2004-04-29  Rob Adams  <readams@readams.net>

	* src/prefs.c (change_notify): Add a value type check for the
	visual bell/audible bell gconf settings.  Patch from Jarrod
	Johnson for #141409.
2004-04-30 00:26:48 +00:00
Mark McLoughlin
5c01798884 Syncing across this change from libwnck. Patch from Neil Muller
2004-04-19  Mark McLoughlin  <mark@skynet.ie>

        Syncing across this change from libwnck.
        Patch from Neil Muller <neil@dip.sun.ac.za> in bug #133979.

        * src/iconcache.c: (find_largest_sizes), (find_best_size):
        Don't down-size nitems from a gulong to an int. Fixes a
        crash with enlightenment, apparently.
2004-04-19 14:53:14 +00:00
Elijah Newren
4b9a23e8eb Fix unwanted mouse grab op on rapid click-and-release 2004-04-16 03:38:19 +00:00
Rob Adams
f3cc59c78a don't promote due to transiency; we handle that elsewhere now.
2004-03-01  Rob Adams  <readams@readams.net>

	* src/stack.c (compute_layer): don't promote due to transiency; we
	handle that elsewhere now.
	(ensure_above): perform layer promotion here as well as stack
	position promotion.  Note that this means that we need to do stack
	constraints now on layer change now.
	(get_maximum_layer_of_ancestor): remove function
	(max_layer_func): remove function
	(MaxLayerData): remove struct
2004-03-02 02:28:21 +00:00
Rob Adams
56609cbb39 Revert 2/27 patch for layer promotion.
2004-02-28  Rob Adams  <readams@readams.net>

	Revert 2/27 patch for layer promotion.
2004-02-28 23:58:40 +00:00
Rob Adams
16a8add6f8 only move on MRU list if the window belongs on the workspace, since the
2004-02-27  Rob Adams  <readams@readams.net>

	* src/window.c (meta_window_notify_focus): only move on MRU list
	if the window belongs on the workspace, since the FocusIn event
	could be for a window whose workspace we've since switched away
	from.  Possible fix for #122016.

	* src/workspace.c (meta_workspace_contains_window): search for the
	workspace in window->workspaces rather than the window in
	workspace->windows.  Since the number of workspaces is at most 36,
	this is a O(1) lookup rather than a O(n) lookup.  Sorry; couldn't
	resist.
2004-02-28 02:53:56 +00:00
Rob Adams
036a61d198 Change move_to_workspace_left/right/up/down keybindings to
2004-02-27  Rob Adams  <readams@readams.net>

	* src/metacity.schemas.in: Change
	move_to_workspace_left/right/up/down keybindings to
	<Control><Alt><Shift> arrow to avoid conflicting with new
	keybindings in spacial nautilus.
2004-02-28 01:56:31 +00:00
Rob Adams
9739346c85 Handle layer promotion of transient descendants of layer-promoted windows
2004-02-27  Rob Adams  <readams@readams.net>

	Handle layer promotion of transient descendants of layer-promoted
	windows to also be layer promoted, using a simple iterative
	algorithm.

	* src/stack.c (compute_layer): change name to promote_layer, and
	convert to simply perform any necessary layer promotion without
	computing the standalone layer.
	(max_layer_func): use window->layer instead of
	get_standalone_layer
	(get_maximum_layer_of_ancestor): use window->layer instead of
	get_standalone_layer
	(meta_stack_ensure_sorted): implement iterative algorithm,
	explained in a long comment.

	* src/window.h: add a tmp_layer field used by stack.c for
	determining if the stack is dirty or not, since maintaining this
	information in meta_stack_ensure_sorted is no longer practical.
2004-02-28 01:49:17 +00:00
Rob Adams
47e6bd5648 Add my copyright notice to a number of files on which it should already
2004-02-23  Rob Adams  <readams@readams.net>

	Add my copyright notice to a number of files on which it should
	already exist.

	* src/window.c (meta_window_notify_focus): modify code to move to
	front of MRU list so that we can have an assert that it was there
	in the first place.  This code may be causing some crashes.  See
	#131196.
2004-02-28 01:48:27 +00:00
Rob Adams
db108c1fc3 Add my copyright notice to a number of files on which it should already
2004-02-23  Rob Adams  <readams@readams.net>

	Add my copyright notice to a number of files on which it should
	already exist.

	* src/window.c (meta_window_notify_focus): modify code to move to
	front of MRU list so that we can have an assert that it was there
	in the first place.  This code may be causing some crashes.  See
	#131196.
2004-02-23 01:48:29 +00:00
Rob Adams
f1701a751f remove trailing comma in MetaKeyBindingAction enum. Fix for #134868 thanks
2004-02-19  Rob Adams  <readams@readams.net>

	* src/prefs.h: remove trailing comma in MetaKeyBindingAction enum.
	Fix for #134868 thanks to bugzilla-gnome@thewrittenword.com.
2004-02-19 18:36:14 +00:00
Rob Adams
ad65847d7d reset drag state after shaking loose or reattaching. Fix for #132625.
2004-02-16  Rob Adams  <readams@readams.net>

	* src/window.c (update_move): reset drag state after shaking loose
	or reattaching.  Fix for #132625.
2004-02-16 19:01:25 +00:00
Anders Carlsson
27eb5a60f3 Actually translate a message, don't just mark it for translation.
2004-02-15  Anders Carlsson  <andersca@gnome.org>

	* src/menu.c (meta_window_menu_new): Actually translate a message,
	don't just mark it for translation.
2004-02-15 14:42:16 +00:00
Elijah Newren
339719568f Prepend windows to mru list when switching workspaces. Fixes #134368 2004-02-15 14:27:43 +00:00
Rob Adams
fd13022dc4 If we're moving a window and receive a _NET_CURRENT_DESKTOP message
2004-02-14  Rob Adams  <readams@readams.net>

	If we're moving a window and receive a _NET_CURRENT_DESKTOP
	message indicating a workspace switch, bring along the drag window
	to the new workspace, solving a potentially weird bug where the
	window would be lost on the old workspace.  This also makes it
	possible to implement edge flipping in an external program with
	just a few lines of code.  Patch for #131630 from ed@catmur.co.uk.

	* src/keybindings.c (switch_to_workspace): remove function -- no
	longer needed.
	(handle_activate_workspace): call meta_workspace_activate instead
	of switch_to_workspace

	* src/workspace.c (meta_workspace_activate_with_focus): if we're
	in a move grab op, bring along the drag window.
2004-02-15 05:29:49 +00:00
James M. Cape
74a8b5b78b Use the 'utility' frame for dialogs too.
2004-01-27  James M. Cape  <jcape@ignore-your.tv>

        * src/themes/Esco/metacity-theme-1.xml: Use the 'utility' frame
        for dialogs too.
2004-01-28 04:20:22 +00:00
James M. Cape
4b3b706369 Updated this theme.
2004-01-24  James M. Cape  <jcape@ignore-your.tv>

	* src/themes/Esco/metacity-theme-1.xml: Updated this theme.
2004-01-24 16:20:41 +00:00
Elijah Newren
595cbe2ac0 Remove duplicate entries. 2004-01-21 17:33:56 +00:00
Rob Adams
007a1f0d0d Default binding removed for toggle_shaded, since we don't have anything in
2004-01-17  Rob Adams  <readams@readams.net>

	* src/metacity.schemas.in: Default binding removed for
	toggle_shaded, since we don't have anything in the graphical UI
	for it any more.
2004-01-17 18:59:42 +00:00
Rob Adams
40a710dad0 Don't show left/right/up/down if a window is sticky. Make "On Top"
2004-01-17  Rob Adams  <readams@readams.net>

	* src/window.c (meta_window_show_menu): Don't show
	left/right/up/down if a window is sticky.  Make "On Top"
	insensitive for docks, splash screens, and desktops since it has
	no effect anyway.
2004-01-17 18:57:26 +00:00
Rob Adams
3d996ff73d update default action_double_click_titlebar to be toggle_maximize instead
2004-01-10  Rob Adams  <readams@readams.net>

	* src/metacity.schemas.in: update default
	action_double_click_titlebar to be toggle_maximize instead of
	toggle_shade.  See #131126.
2004-01-10 22:22:46 +00:00
Rob Adams
1b7a651a33 if we maximize after placement, and the window is too big to fix in the
2004-01-12  Rob Adams  <readams@readams.net>

	* src/constraints.c (meta_window_constrain): if we maximize after
	placement, and the window is too big to fix in the work area,
	define a sane saved_rect approximately with dimensions
	three-quarters approximately three quarters the size of the work
	area.  This avoids the problem where large windows would
	unmaximize and actually get bigger.  See #93590.
2004-01-10 18:13:14 +00:00
Thomas Fitzsimmons
a605da04c1 Add _NET_FRAME_EXTENTS and _NET_REQUEST_FRAME_EXTENTS.
2004-01-09  Thomas Fitzsimmons  <fitzsim@redhat.com>

	Add _NET_FRAME_EXTENTS and _NET_REQUEST_FRAME_EXTENTS.

	* src/display.c: include xprops.h
	(process_request_frame_extents): new function
	(meta_display_open): add _NET_FRAME_EXTENTS and
	_NET_REQUEST_FRAME_EXTENTS atoms
	(event_callback): handle frame extents message

	* src/display.h (struct _MetaDisplay): add atom_net_frame_extents
	and atom_net_request_frame_extents

	* src/theme.c (meta_pango_font_desc_get_text_height): make font_desc
	parameter const

	* src/ui.c: include prefs.h
	(meta_ui_theme_get_frame_borders): new function

	* src/window.c (update_net_frame_extents): new function
	(meta_window_move_resize_internal): update frame extents
	property when frame geometry changes

	* src/screen.c (set_supported_hint): add atom_net_frame_extents
	and atom_net_request_frame_extents
2004-01-10 17:16:07 +00:00
Calum Benson
c820769bce Ensure window buttons get larger when using large print themes.
Fixes #123469.
2004-01-09 11:17:28 +00:00
Rob Adams
2fdb75ad45 Maintain the button grab for sloppy and mouse focus all the time. This
2003-01-04  Rob Adams  <readams@readams.net>

	Maintain the button grab for sloppy and mouse focus all the time.
	This fixes a number of problem introduced by trying to drop the
	grab; we now do this only for click to focus mode.  This has the
	unfortunate effect that #102209 reappears for sloppy and mouse
	focus, but this seems unavoidable, because of limitations in the X
	protocol.  See #115072.

	* src/display.c (meta_display_grab_focus_window_button): #if 0 the
	section on not grabbing unless in click-to-focus mode.

	* src/window.c (meta_window_notify_focus): drop focus button grab
	on FocusIn and acquire it on FocusOut only when in click-to-focus
	mode.
2004-01-05 07:24:32 +00:00
Havoc Pennington
a27089a110 handle ReparentNotify, and add a lot of debug output.
2003-12-25  Havoc Pennington  <hp@redhat.com>

	* src/compositor.c (process_reparent): handle ReparentNotify, and
	add a lot of debug output.
2003-12-26 02:42:38 +00:00
Havoc Pennington
35c64b45dd change to track all children of the root window, not only mapped children;
2003-12-25  Havoc Pennington  <hp@redhat.com>

	* src/compositor.c (meta_compositor_process_event): change to
	track all children of the root window, not only mapped children;
	this keeps us from losing track of the stacking order

	* src/display.c (event_callback): don't do any of the compositor
	event handling inline, do it all in compositor.c
2003-12-26 00:05:26 +00:00
Rob Adams
c2ba0a7d67 2003-12-21 Rob Adams <readams@readams.net
* src/main.c (main): fix minor punctuation error in a string.  Fix
	for #129805.
2003-12-22 00:43:53 +00:00
Rob Adams
690100f1ad Reorganize the window menu according to discussion on #110904. The
2003-12-20  Rob Adams  <readams@readams.net>

	Reorganize the window menu according to discussion on #110904.
	The workspace name mnemonic chunk of the patch is thanks to
	Jonathan Blandford.

	* src/common.h: add MENU_OP_ABOVE, MENU_OP_UNABOVE, MENU_UP_MOVE_TO_*
	menu ops.

	* src/core.c (meta_core_get_menu_accelerator): add accelerator for
	the new menu ops.

	* src/menu.c: add checked attribute in _MenuItem struct to display
	a checkmark next to a menu item.  Add the new menu items to
	menuitems.
	(get_workspace_name_with_accel): Add mnemonics even to renamed
	workspaces.
	(menu_item_new): provide support for the checked attribute
	(meta_window_menu_new): construct new submenu for workspace
	switching.

	* src/window.c (menu_callback): implement support for the new menu
	ops.
	(meta_window_show_menu): don't use the OP_*SHAPE operations, and
	compute which of the OP_MOVE_TO_* ops should be used for the
	current workspace and workspace layout.  Add the OP_*ABOVE
	operations.
2003-12-21 06:31:40 +00:00
Rob Adams
4be245a26a add test-size-hints to cvsignore 2003-12-19 23:37:23 +00:00
Rob Adams
104786735a initialize grab_wireframe_active to FALSE. Fix for #128090.
2003-12-17  Rob Adams  <readams@readams.net>

	* src/display.c (meta_display_open): initialize
	grab_wireframe_active to FALSE.  Fix for #128090.

2003-12-17  Rob Adams  <readams@readams.net>

	* src/tabpopup.c (meta_ui_tab_popup_new): Don't try to call
	utf8_strndup on a null title for an entry.  Fix for #128566.

	* src/workspace.c (meta_workspace_free): Call g_list_free on the
	mru_list, since with sticky windows that MRU list could well not
	be emtpy.  See #122016.
2003-12-17 16:01:00 +00:00
Rob Adams
191b3f2c21 set on_all_workspaces in all cases _before_ adding to the workspaces, so
2003-12-13  Rob Adams  <readams@readams.net>

	* src/window.c (meta_window_new_with_attrs): set on_all_workspaces
	in all cases _before_ adding to the workspaces, so that windows
	initially on all workspaces are added correctly to the MRU lists.
	Fix for #120907.

	* src/workspace.c (meta_workspace_add_window): handle sticky
	windows so that we add to add mru lists if needed
	(meta_workspace_remove_window): handle sticky windows so that they
	are removed from all mru lists if needed.
2003-12-14 19:19:40 +00:00
Rob Adams
9bde925d3d Revert prior change 2003-12-13 23:00:06 +00:00
Rob Adams
7630d22b8d Add increased robustness for dealing with all workspaces windows and MRU
2003-12-13  Rob Adams  <readams@readams.net>

	Add increased robustness for dealing with all workspaces windows
	and MRU lists.
	Also add very preliminary _NET_WM_USER_TIME
	support, limited to simply listening for the property and keeping
	an internal variable updated, and also treating some input events
	as though they were user time updates.

	* src/window.c (meta_window_new_with_attrs): set on_all_workspaces
	in all cases _before_ adding to the workspaces, so that windows
	initially on all workspaces are added correctly to the MRU lists.
	Fix for #120907.
	(process_property_notify): add net_wm_user_time support.

	* src/workspace.c (meta_workspace_add_window): handle sticky
	windows so that we add to add mru lists if needed
	(meta_workspace_remove_window): handle sticky windows so that they
	are removed from all mru lists if needed.

	* src/display.[ch] (meta_display_open): add net_wm_user_time support.
	(event_callback): simulate user time update on key and button presses.

	* src/screen.c (set_supported_hint): add net_wm_user_time support.

	* src/window-props.c (init_net_wm_user_time): new function for
	user_time support
	(reload_net_wm_user_time): new function for user_time support
	(meta_display_init_window_prop_hooks): add hook for user_time
2003-12-13 18:28:14 +00:00
Havoc Pennington
a92be6e319 unstick window to get it out of mru_list it should not be in; assert that
2003-12-12  Havoc Pennington  <hp@redhat.com>

	* src/window.c (meta_window_free): unstick window to get it out of
	mru_list it should not be in; assert that window has been removed
	from all mru_list. Perhaps fixes #122016 crash.
2003-12-13 03:58:55 +00:00
Havoc Pennington
4ebdb0b9c0 fix up compositing manager to somewhat work
2003-11-29  Havoc Pennington  <hp@redhat.com>

	* fix up compositing manager to somewhat work
2003-11-30 03:30:27 +00:00
Havoc Pennington
8d892f76da Oops, did not mean to do that. 2003-11-24 23:05:04 +00:00
Havoc Pennington
03bbe3de17 fix the extension checks
2003-11-24  Havoc Pennington  <hp@redhat.com>

	* src/compositor.c (meta_compositor_new): fix the extension checks
2003-11-24 23:00:52 +00:00
Havoc Pennington
47a1c285c7 init prev_mask field
2003-11-24  Havoc Pennington  <hp@redhat.com>

	* src/iconcache.c (meta_icon_cache_init): init prev_mask field

	* src/window.c (meta_window_new_with_attrs): init xgroup_leader
	prior to use
2003-11-24 19:09:25 +00:00
Havoc Pennington
4ccb120922 need to select PropertyChangeMask on the leader window 2003-11-24 18:38:38 +00:00
Havoc Pennington
423b5f5f39 add an event_serial argument and use it when the pointer is already
2003-11-24  Havoc Pennington  <hp@redhat.com>

	* src/display.c (meta_display_begin_grab_op): add an event_serial
	argument and use it when the pointer is already grabbed
	automatically on the button press. May fix bug #126871
2003-11-24 18:09:47 +00:00
Havoc Pennington
feefcdd892 Apply patch from Gregory Merchan to avoid using CurrentTime when setting
2003-11-24  Havoc Pennington  <hp@redhat.com>

	* Apply patch from Gregory Merchan to avoid using CurrentTime when
	setting input focus. Bug #108881
2003-11-24 17:47:48 +00:00
Havoc Pennington
927a6def1b move xcompmgr code in here (minus drop shadows), untested since Keith's
2003-11-23  Havoc Pennington  <hp@redhat.com>

	* src/compositor.c: move xcompmgr code in here (minus drop
	shadows), untested since Keith's server just crashes at the
	moment. "It compiles"
2003-11-23 18:16:01 +00:00
Havoc Pennington
d538690bd4 new function
2003-11-20  Havoc Pennington  <hp@redhat.com>

	* src/window.c (meta_window_new_with_attrs): new function

	* src/display.c, src/screen.c: create the compositor and feed
	windows and events to it
2003-11-21 02:32:05 +00:00
Havoc Pennington
24d8655188 revert the change here
2003-11-20  Havoc Pennington  <hp@redhat.com>

	* src/window.c (meta_window_notify_focus): revert the change here
2003-11-20 05:52:37 +00:00
Rob Adams
917dfefd6c 2003-11-17 Rob Adams <readams@readams.net
* src/window.c (set_allowed_actions_hint): increment i between
	resize and fullscreen.
2003-11-17 16:46:01 +00:00
Rob Adams
9378a4fb4d Create COMPLIANCE document describing metacity specification compliance.
2003-11-16  Rob Adams  <readams@readams.net>

	Create COMPLIANCE document describing metacity specification
	compliance.  Right now gives detailed EWMH compliance; still need
	to add ICCCM compliance information.  Also some minor fixes to
	bring metacity into compliance on some points.

	* COMPLIANCE: new file

	* src/display.h, src/display.c (meta_display_open),
	src/screen.c (set_supported_hint): add
	atom_net_wm_action_fullscreen and atom_net_wm_action_minimize

	* src/window.c (set_allowed_actions_hint): some fixes to which
	hints to set and add fullscreen and minimize.
2003-11-17 00:06:58 +00:00
Rob Adams
67c36f0917 add paranoia check to make sure a window is really on a workspace before
2003-11-16  Rob Adams  <readams@readams.net>

	* src/window.c (meta_window_notify_focus): add paranoia check to
	make sure a window is really on a workspace before inserting it at
	the beginning of the MRU list.  Maybe there's a race condition
	with focusing and workspace switching.  Hopefully a fix for #122016.
2003-11-16 21:50:51 +00:00
Havoc Pennington
6a0f4f6ccb add the missing files 2003-11-16 04:35:16 +00:00
Havoc Pennington
901ad18a67 fix warning
2003-11-15  Havoc Pennington  <hp@redhat.com>

	* src/main.c (main): fix warning

	* src/compositor.c: add a new file to contain compositing manager
	functionality; not yet implemented at all.
2003-11-16 04:20:17 +00:00
Rob Adams
6ac67f80a6 Inherit visual from frame window so that metacity will work with the new
2003-11-15  Rob Adams  <readams@readams.net>

	Inherit visual from frame window so that metacity will work with
	the new compositing manager extension work by Keith on
	freedesktop.org, so that ARGB windows can be full
	alpha-transparent without a metacity frame getting drawn in the
	background.  In the long term, we need to actually set alpha
	values when drawing the frame so that it will really work; this is
	a stopgap solution.  Patch from Keith Packard; see Bug 126875.

	* src/frame.c (meta_window_ensure_frame): pass client visual to
	frame.

	* src/ui.[ch] (meta_ui_create_frame_window): add new xvisual
	parameter and use it to create new window.
2003-11-16 04:19:18 +00:00
Rob Adams
a88f44ea64 don't set window->type_atom here so that the type-inference code will
2003-11-15  Rob Adams  <readams@readams.net>

	* src/window.c (update_net_wm_type): don't set window->type_atom
	here so that the type-inference code will actually be called.  Fix
	for #126873 from Keith Packard.
2003-11-16 03:56:04 +00:00
Rob Adams
3c384d37c6 configure frame first if we grow more than we shrink combined in both
2003-11-08  Rob Adams  <readams@readams.net>

	* src/window.c (meta_window_move_resize_internal): configure frame
	first if we grow more than we shrink combined in both dimensions.
	Patch from Soren Sandmann for #108925.
2003-11-08 17:25:49 +00:00