Compare commits

...

409 Commits

Author SHA1 Message Date
Elijah Newren
3b00d7a6a8 Metacity 2.9.34 unstable release
2005-02-21  Elijah Newren  <newren@gmail.com>

	* NEWS: Metacity 2.9.34 unstable release
2005-02-28 21:53:19 +00:00
Elijah Newren
c7ebe972e6 Patch from Aidan Delaney to make sure that icons in the alt-tab popup are
2005-02-28  Elijah Newren  <newren@gmail.com>

	Patch from Aidan Delaney to make sure that icons in the alt-tab
	popup are dimmed for all hidden windows, not just minimized ones.
	Fixes #168455.

	* src/screen.c: (meta_screen_ensure_tab_popup): make use
	meta_window_showing_on_its_workspace() instead of just checking if
	the window is minimized.
2005-02-28 21:34:48 +00:00
Vincent van Adrighem
fae2f68f24 Translation updated by Reinout van Schouwen.
2005-02-28  Vincent van Adrighem  <adrighem@gnome.org>

	* nl.po: Translation updated by Reinout van Schouwen.
2005-02-28 01:19:22 +00:00
Alessio Frusciante
63d8f5faf6 Updated Italian translation. 2005-02-27 16:22:05 +00:00
Elijah Newren
bea407e309 Prevent the visual bell from changing the focus window. Fixes #123366.
2005-02-25  Elijah Newren  <newren@gmail.com>

	Prevent the visual bell from changing the focus window.  Fixes
	#123366.

	* src/bell.c: (meta_bell_flash_screen): if not in click-to-focus
	mode and mouse_mode is also false, increment the focus sentinel so
	that we can ignore spurious EnterNotify and LeaveNotify events.

	* src.display.c: (event_callback): make sure to also ignore
	LeaveNotify events when the focus sentinel isn't clear
2005-02-25 20:14:08 +00:00
Artur Flinta
6375bee8a2 Updated Polish translation by GNOME PL Team.
2005-02-24  Artur Flinta  <aflinta@cvs.gnome.org>

	* pl.po: Updated Polish translation by GNOME PL Team.
2005-02-24 16:21:39 +00:00
Ankitkumar Rameshchandra Patel
3c1a7cc190 ankit@redhat.com * Updated Gujarati Translation 2005-02-24 12:43:40 +00:00
Elijah Newren
ebae340a1e Fix crash that occurs when stupid apps claim that a window is its own
2005-02-23  Elijah Newren  <newren@gmail.com>

	* src/window.c: (meta_window_new_with_attrs): Fix crash that
	occurs when stupid apps claim that a window is its own parent.
	#168207
2005-02-23 17:42:51 +00:00
Amanpreet Singh Alam
8ac94e45b5 update by amanpreetalam@yahoo.com 2005-02-23 09:38:17 +00:00
Vincent van Adrighem
3a0277561a Translation updated by Michiel Sikkes.
2005-02-23  Vincent van Adrighem  <adrighem@gnome.org>

	* nl.po: Translation updated by Michiel Sikkes.
2005-02-23 00:33:52 +00:00
Roozbeh Pournader
15e8482635 Updated Persian translation by Elnaz Sarbar <elnaz@farsiweb.info>.
2004-02-22  Roozbeh Pournader  <roozbeh@farsiweb.info>

	* fa.po: Updated Persian translation by
	  Elnaz Sarbar <elnaz@farsiweb.info>.
2005-02-22 18:26:49 +00:00
Raphael Higino
882432372a Updated pt_BR translation 2005-02-22 16:15:30 +00:00
Elijah Newren
0df4e194d3 post-release version bump to 2.9.34
2005-02-21  Elijah Newren  <newren@gmail.com>

	* configure.in: post-release version bump to 2.9.34
2005-02-22 02:48:45 +00:00
Elijah Newren
6e40e576a4 Metacity 2.9.21 unstable release
2005-02-21  Elijah Newren  <newren@gmail.com>

	* NEWS: Metacity 2.9.21 unstable release
2005-02-22 02:47:08 +00:00
Elijah Newren
612507260a Handle keynav vs. mousenav in mouse and sloppy focus modes. Fixes #167545.
2005-02-21  Elijah Newren  <newren@gmail.com>

	Handle keynav vs. mousenav in mouse and sloppy focus modes.  Fixes
	#167545.

	* doc/how-to-get-focus-right.txt: Update due to this new method
	for handling keynav vs. mousenav, plus various other updates that
	I previously forgot.

	* src/display.h: (struct _MetaDisplay): add a mouse_mode boolean

	* src/display.c: (meta_display_open): initialize mouse_mode to
	true, (event_callback): have EnterNotify and LeaveNotify events
	set mouse_mode to true when focusing a window

	* src/keybindings.c: (process_tab_grab): set mouse_mode to false
	when using alt-tab/alt-esc, (do_choose_window): likewise,
	(do_handle_move_to_workspace): set mouse_mode to false on
	move-window-to-workspace-<n> keybindings

	* src/window.c (idle_calc_showing): if we're in keynav mode while
	using sloppy or mouse focus, use metacity_sentinel to avoid
	EnterNotify events being generated from events other than mouse
	movement.

	* src/workspace.c (meta_workspace_activate_with_focus): add a
	FIXME in a potentially duplicate section of code,
	(meta_workspace_focus_default_window): use the same focus choice
	as click-to-focus if in keynav mode.
2005-02-22 02:11:25 +00:00
Christophe Merlet
ad99427b49 Updated french translation. 2005-02-21 22:58:34 +00:00
Bastien Nocera
480c8bb085 the file is actually in UTF-8
2005-02-21  Bastien Nocera  <hadess@hadess.net>

	* en_GB.po: the file is actually in UTF-8
2005-02-21 22:04:09 +00:00
Leonid Kanter
53a6545b04 fixed typo 2005-02-21 13:35:57 +00:00
Martin Willemoes Hansen
84fe920ff1 Updated Danish translation.
* da.po: Updated Danish translation.
2005-02-21 13:11:11 +00:00
Priit Laes
987514c702 Translation updated by Tõivo Leedjärv.
2005-02-21  Priit Laes  <plaes@cvs.gnome.org>

	* et.po: Translation updated by Tõivo Leedjärv.
2005-02-21 07:10:35 +00:00
Elijah Newren
992f237090 Handle _NET_CURRENT_DESKTOP messages that come with timestamps. Fixes the
2005-02-20  Elijah Newren  <newren@gmail.com>

	* src/display.c: (event_callback): Handle _NET_CURRENT_DESKTOP
	messages that come with timestamps.  Fixes the metacity portion of
	#161361 other than the portion handled by #128380.
2005-02-20 23:38:31 +00:00
Elijah Newren
8de466b582 when receiving a _NET_ACTIVE_WINDOW message, switch to the desktop where
2005-02-20  Elijah Newren  <newren@gmail.com>

	* src/window.c: (meta_window_activate): when receiving a
	_NET_ACTIVE_WINDOW message, switch to the desktop where the window
	is located before activating instead of moving the window to the
	current desktop.  Thanks to Lubos Lunak for catching this issue.
	Fixes #128380.
2005-02-20 22:44:15 +00:00
Elijah Newren
79f2b91679 Ignore all focus and focus-stealing-prevention code in meta_window_show
2005-02-20  Elijah Newren  <newren@gmail.com>

	* src/window.c (meta_window_show): Ignore all focus and
	focus-stealing-prevention code in meta_window_show when not
	showing the window for the first time.  Fixes #167199.
2005-02-20 22:40:08 +00:00
Elijah Newren
b93960ac9d Fix an obscure xinerama placement bug with windows that are too large to
2005-02-20  Elijah Newren  <newren@gmail.com>

	Fix an obscure xinerama placement bug with windows that are too
	large to fit in the workarea in both dimensions.  #166757

	* src/place.c: (meta_window_place): use the current xinerama
	instead of arbitrarily resetting to 0
2005-02-20 22:38:05 +00:00
Elijah Newren
1f0fd137f5 Patch from Joe Marcus Clarke to fix a possible crash on logout. #167935.
2005-02-20  Elijah Newren  <newren@gmail.com>

	Patch from Joe Marcus Clarke to fix a possible crash on logout.
	#167935.  Thanks for fixing my mistakes, Joe!

	* src/display.c: (meta_display_open): initialize
	display->grab_old_window_stacking to NULL.
2005-02-20 17:23:20 +00:00
Elijah Newren
50312dd0e8 Big patch to cover about 6 different issues in order to correct rare
2005-02-20  Elijah Newren  <newren@gmail.com>

	Big patch to cover about 6 different issues in order to correct
	rare problems with timestamps (make sure window selected in
	tasklist actually gets focus, sanity check timestamps to avoid
	rogue apps hosing the system, correct the updating of
	net_wm_user_time, correctly handle timestamps of 0 when comparing
	xserver timestamps for those who have had their systems up for
	over 25 days or so, add some debugging information to verbose
	logs, some code cleanups).  Fixes all issues listed in #167358.

	* src/display.h: (struct _MetaDisplay): clarify comment on
	last_focus_time, introduce a new variable--last_user_time,
	(XSERVER_TIME_IS_BEFORE macro): put this functionality into a
	separate macro and then introduce a new macro with this name that
	uses the old one but adds additional special-case checks for
	timestamps that are 0, (comment to
	meta_display_set_input_focus_window): add information about how
	last_user_time should be used in this function

	* src/display.c (santiy_check_timestamps): new function,
	(meta_display_open): intialize display->last_user_time,
	(meta_display_get_current_time_roundtrip): use the timestamp,
	which is known to be good, in order to sanity_check_timestamps,
	(event_callback): use the new meta_window_ste_user_time() function
	in order to correct problems, use the timestamp of KeyPress and
	ButtonPress events, which are known to be good, in order to
	sanity_check_timestamps, (timestamp_too_old): new function for
	common behavior of meta_display_focus_the_no_focus_window and
	meta_display_set_input_focus_window, with added checking for
	display->last_user_time in addition to display->last_focus_time,
	(meta_display_set_input_focus_window): replace some of the code
	with a call to timestamp_too_old(),
	(meta_display_focus_the_no_focus_window): replace some of th ecode
	with a call to timestamp_too_old()

	* src/window.h: (meta_window_set_user_time): new function to
	abstract the many things that need to be done when updating the
	net_wm_user_time of any window

	* src/window.c: (meta_window_activate): add debugging spew, make
	sure the comparison is made with last_user_time NOT
	last_focus_time, use meta_window_set_user_time() function in order
	to correct problems, (meta_window_client_message): add a newline
	to a debugging message to make them easier to read,
	(meta_window_set_user_time): new function

	* src/window-props.c (reload_net_wm_user_time): use the new
	meta_window_ste_user_time() function in order to correct problems
2005-02-20 17:14:16 +00:00
Changwoo Ryu
11508ce27e Updated Korean translation.
2005-02-18  Changwoo Ryu  <cwryu@debian.org>

	* ko.po: Updated Korean translation.
2005-02-18 13:24:11 +00:00
Duarte Loreto
0b3e902319 Updated Portuguese translation.
2005-02-18  Duarte Loreto <happyguy_pt@hotmail.com>

	* pt.po: Updated Portuguese translation.
2005-02-18 00:40:00 +00:00
Vincent van Adrighem
5e1b0c8764 Translation updated by Tino Meinen.
2005-02-17  Vincent van Adrighem  <adrighem@gnome.org>

	* nl.po: Translation updated by Tino Meinen.
2005-02-17 13:29:47 +00:00
Laurent Dhima
7d2f2fe632 Updated Albanian translation.
2005-02-17  Laurent Dhima  <laurenti@alblinux.net>

	* sq.po: Updated Albanian translation.
2005-02-17 10:00:48 +00:00
Elijah Newren
754a75546d trivial fix to a log message: change %d to %lu (see debugging log from bug
2005-02-16  Elijah Newren  <newren@gmail.com>

	* src/display.c: (event_callback): trivial fix to a log message:
	change %d to %lu (see debugging log from bug 167358).
2005-02-16 09:36:24 +00:00
Jordi Mallach
d1e630235d Updated Catalan translation. 2005-02-16 09:24:41 +00:00
Maxim Dziumanenko
37becd9a79 Update Ukrainian translation.
2005-02-15  Maxim Dziumanenko <mvd@mylinux.com.ua>

	* Update Ukrainian translation.
2005-02-15 19:21:52 +00:00
Kjartan Maraas
626c5fcf54 s/applikasjon/program Same
2005-02-15  Kjartan Maraas  <kmaraas@gnome.org>

	* nb.po: s/applikasjon/program
	* no.po: Same
2005-02-15 16:42:33 +00:00
Marcel Telka
3fb2eb0856 Updated Slovak translation.
2005-02-12  Marcel Telka  <marcel@telka.sk>

	* sk.po: Updated Slovak translation.
2005-02-12 16:14:30 +00:00
Takeshi AIHANA
c729adfc5e Updated Japanese translation for v2.9.13.
2005-02-12  Takeshi AIHANA <aihana@gnome.gr.jp>
	* ja.po: Updated Japanese translation for v2.9.13.
2005-02-12 14:05:43 +00:00
Elijah Newren
0488efc8c1 Raise the ancestor of a window instead of the window itself. Fixes
2005-02-12  Elijah Newren  <newren@gmail.com>

	Raise the ancestor of a window instead of the window itself.
	Fixes #166894.

	* src/window.c: (find_root_ancestor): new function,
	(meta_window_raise): get the ancestor of the given window and
	raise it if possible instead of the window
2005-02-12 07:34:30 +00:00
Elijah Newren
9fa5c1d4b9 Don't unconditionally place splashscreens (and other not-to-befocused
2005-02-12  Elijah Newren  <newren@gmail.com>

	Don't unconditionally place splashscreens (and other
	not-to-befocused windows) below the focus window.  Fixes #167042.

	* src/window.c: (intervening_user_event_occurred): new function
	taken from the timestamp comparison portion of the old
	window_takes_focus_on_map function, (window_state_on_map): new
	function with remainder of old window_takes_focus_on_map function
	that determines both whether the window will take focus and
	whether it should be placed on top, (meta_window_show): use
	place_on_top_on_map to determine window stacking instead of trying
	to infer it from takes_focus_on_map
2005-02-12 07:19:41 +00:00
Elijah Newren
d31a0829be Avoid new windows being obscured by the focus window (and thus possibly
2005-02-11  Elijah Newren  <newren@gmail.com>

	Avoid new windows being obscured by the focus window (and thus
	possibly lost).  Fixes #166524.

	* src/place.c: new MetaWindowDirection enum,
	(find_most_freespace): new function to find where there is the
	most space available around the focused window,
	(meta_window_place): if a window is denied focus and the window
	overlaps the focused window, retry the first-fit algorithm only
	paying attention to the focus window position and if that fails
	just find the location on the screen with the most space
	available.

	* src/window.h: (struct MetaWindow): new
	denied_focus_and_not_transient bitfield

	* src/window.c: (meta_window_new_with_attrs): initialize
	denied_focus_and_not_transient, (meta_window_show): set and unset
	the denied_focus_and_not_transient field appropriately
2005-02-11 19:20:44 +00:00
Kostas Papadimas
f8c41ca016 Updated Greek Translation. 2005-02-11 10:49:47 +00:00
Francisco Javier F. Serrador
450cee78b5 Updated Spanish translation.
2005-02-10  Francisco Javier F. Serrador  <serrador@cvs.gnome.org>

	* es.po: Updated Spanish translation.
2005-02-10 11:43:28 +00:00
Aidan Delaney
f7aad0d647 Removed useless function call. #166730
2005-02-08  Aidan Delaney  <adelaney@cs.may.ie>

	Removed useless function call.  #166730

	* src/tabpopup.c: (outline_window_expose): Removed unused
	references to variables and an unnecessary function call to
	gdk_window_get_size().
2005-02-09 16:07:56 +00:00
Elijah Newren
fe1416c65f Avoid using CurrentTime when focusing, handle it better in case we miss
2005-02-08  Elijah Newren  <newren@gmail.com>

	Avoid using CurrentTime when focusing, handle it better in case we
	miss any cases.  Fixes #166732.

	* src/window.c: (meta_window_shade): use
	meta_display_get_current_time_roundtrip() to ensure we have a
	valid timestamp, (meta_window_unshade): same

	* src/display.c: (meta_display_set_input_focus_window): If
	CurrentTime was passed, get one from the XServer in addition to
	throwing a warning, (meta_display_focus_the_no_focus_window): same
2005-02-09 03:18:46 +00:00
Elijah Newren
454e595ef8 If we're not passed a timestamp, make sure to manually get one. Fixes
2005-02-08  Elijah Newren  <newren@gmail.com>

	* src/window.c: (meta_window_activate): If we're not passed a
	timestamp, make sure to manually get one.  Fixes #166728.
2005-02-09 03:15:11 +00:00
Leonid Kanter
50596a6f97 Updated Russian translation 2005-02-08 15:06:49 +00:00
Kjartan Maraas
4726d89661 Update Update
2005-02-08  Kjartan Maraas  <kmaraas@gnome.org>

	* nb.po: Update
	* no.po: Update
2005-02-08 12:48:56 +00:00
Elijah Newren
ffceb7819f post-release version bump to 2.9.21
2005-02-07  Elijah Newren  <newren@gmail.com>

	* configure.in: post-release version bump to 2.9.21
2005-02-07 18:07:54 +00:00
Elijah Newren
249c105d01 Metacity 2.9.13 unstable release
2005-02-07  Elijah Newren  <newren@gmail.com>

	* NEWS: Metacity 2.9.13 unstable release
2005-02-07 18:06:29 +00:00
David Lodge
a7116f94a6 Updated British translation.
2005-02-07  David Lodge <dave@cirt.net>

        * en_GB.po: Updated British translation.
2005-02-07 12:38:45 +00:00
Elijah Newren
0aa903f0d4 Set a _METACITY_VERSION property (a utf8 string) on the WM check window.
2005-02-06  Elijah Newren  <newren@gmail.com>

	Set a _METACITY_VERSION property (a utf8 string) on the WM check
	window.  #165350.

	* src/display.h: (struct MetaDisplay): add a atom_metacity_version
	field

	* src/display.c: (meta_display_open): initialize the
	_METACITY_VERSION property on the WM check window to the current
	version of Metacity.
2005-02-07 04:37:35 +00:00
Adam Weinberger
a0b192aa5e Updated Canadian English translation.
* en_CA.po: Updated Canadian English translation.
2005-02-06 23:27:09 +00:00
Elijah Newren
459c6668fb Ignore xconfigurerequest events for stacking when it should be safe to do
2005-02-06  Elijah Newren  <newren@gmail.com>

	Ignore xconfigurerequest events for stacking when it should be
	safe to do so.  Again, thanks to Crispin Flowerday for the test
	case.  Thanks to KWin for the inspiration (and to Google for
	indexing their source code).  Fixes the other half of #166395.

	* src/window.c: (meta_window_configure_request): if the
	active_window is from a separate application than the one getting
	the configure request and the net_wm_user_time of the active
	window is later than that of the window getting the configure
	request, then ignore the request.
2005-02-06 17:01:41 +00:00
Elijah Newren
d11681e505 If activation requests are too old, set the demands_attention hint instead
2005-02-06  Elijah Newren  <newren@gmail.com>

	If activation requests are too old, set the demands_attention hint
	instead of actually activating.  Thanks to Crispin Flowerday for
	the test case and for testing the patch.  Fixes half of #166395.

	* src/window.c: (meta_window_activate): if the request came before
	the last focus time, set the demands attention hint instead
2005-02-06 16:52:26 +00:00
Miloslav Trmac
114c7c0be5 Updated Czech translation.
2005-02-06  Miloslav Trmac  <mitr@volny.cz>

	* cs.po: Updated Czech translation.
2005-02-06 16:31:22 +00:00
Funda Wang
10c6e1de17 Updated Simplified Chinese translation 2005-02-06 16:15:29 +00:00
Alexander Shopov
0bde8fe275 Updated Bulgarian translation by Vladimir Petkov <vpetkov@i-space.org>
2005-02-06  Alexander Shopov  <ash@contact.bg>

	* bg.po: Updated Bulgarian translation by
	Vladimir Petkov <vpetkov@i-space.org>
2005-02-06 09:30:25 +00:00
Pauli Virtanen
2b2b70e80e Updated Finnish translation.
2005-02-06  Pauli Virtanen <pauli.virtanen@hut.fi>

	 * fi.po: Updated Finnish translation.
2005-02-06 01:15:51 +00:00
Frank Arnold
6679c6cd9c Updated German translation.
2005-02-05  Frank Arnold  <farnold@cvs.gnome.org>

	* de.po: Updated German translation.
2005-02-05 19:55:52 +00:00
Francisco Javier F. Serrador
7aab9f97d9 Updated Spanish translation.
2005-02-05  Francisco Javier F. Serrador  <serrador@cvs.gnome.org>

	* es.po: Updated Spanish translation.
2005-02-05 15:29:29 +00:00
Žygimantas Beručka
9057b7112e Updated Lithuanian translation.
2005-02-05  Žygimantas Beručka  <uid0@akl.lt>

        * lt.po: Updated Lithuanian translation.
2005-02-05 10:49:48 +00:00
Dave Ahlswede
959a997eba Add period to the end of reduced_resources' description. Fixes #165780.
2005-02-04  Dave Ahlswede  <mightyquinn@letterboxes.org>

	* src/metacity.schemas.in: Add period to the end of
	reduced_resources' description.  Fixes #165780.
2005-02-05 03:57:41 +00:00
Elijah Newren
84312194e8 Make sure window->border_only is initialized so we don't get random
2005-02-04  Elijah Newren  <newren@gmail.com>

	Make sure window->border_only is initialized so we don't get
	random windows without decorations.  Thanks to Sinisa Segvic and
	Owen Taylor for providing test cases.  Fixes #145131.

	* src/window.c: (update_mwm_hints): Be sure to call
	recalc_window_features even if no MWM hints are set
2005-02-05 03:02:42 +00:00
Francisco Javier F. Serrador
58b323e4cc Updated Spanish translation.
2005-02-04  Francisco Javier F. Serrador  <serrador@cvs.gnome.org>

	* es.po: Updated Spanish translation.
2005-02-04 21:01:51 +00:00
Changwoo Ryu
c39fb62e1d Updated Korean translation.
2005-02-04  Changwoo Ryu  <cwryu@debian.org>

	* ko.po: Updated Korean translation.
2005-02-03 22:07:29 +00:00
Miloslav Trmac
e25ed00bfb Updated Czech translation.
2005-02-02  Miloslav Trmac  <mitr@volny.cz>

	* cs.po: Updated Czech translation.
2005-02-02 20:37:27 +00:00
Elijah Newren
de5588c10e Focus parents of dismissed transient windows in preference to the window
2005-02-02  Elijah Newren  <newren@gmail.com>

	Focus parents of dismissed transient windows in preference to the
	window that most recently had keyboard focus.  Fixes #157360.

	* doc/how-to-get-focus-right.txt: Note the distinction between
	"most recently used window" and "most recent to have keyboard
	focus" that we are now making.

	* src/workspace.c: (focus_ancestor_or_mru_window): rename from
	meta_workspace_focus_mru_window, and first check whether we need
	to focus an ancestor window before looking for the mru window,
	(record_ancestor): helper function for
	focus_ancestor_or_mru_window,
	(meta_workspace_focus_default_window): update due to the function
	rename from meta_workspace_focus_mru_window to
	focus_ancestor_or_mru_window
2005-02-02 18:46:09 +00:00
Frank Arnold
03adcdac31 Updated German translation.
2005-02-02  Frank Arnold  <farnold@cvs.gnome.org>

	* de.po: Updated German translation.
2005-02-02 08:56:20 +00:00
Søren Sandmann Pedersen
36b0b6d4d5 file snow.c was initially added on branch spiffifity. 2005-02-01 21:26:19 +00:00
Søren Sandmann Pedersen
bb1783b999 file snow.h was initially added on branch spiffifity. 2005-02-01 21:26:19 +00:00
Kjartan Maraas
05928106c5 Update Update
2005-02-01  Kjartan Maraas  <kmaraas@gnome.org>

	* nb.po: Update
	* no.po: Update
2005-02-01 12:24:19 +00:00
Funda Wang
3489defbe8 Updated Simplified Chinese translation 2005-02-01 10:48:36 +00:00
Adam Weinberger
490fe640ab Updated Canadian English translation.
* en_CA.po: Updated Canadian English translation.
2005-02-01 07:40:38 +00:00
Žygimantas Beručka
017aa0dfd5 Updated Lithuanian translation.
2005-02-01  Žygimantas Beručka  <uid0@akl.lt>

        * lt.po: Updated Lithuanian translation.
2005-01-31 23:26:28 +00:00
Christian Rose
7961c987a7 Updated Swedish translation.
2005-01-31  Christian Rose  <menthos@menthos.com>

	* sv.po: Updated Swedish translation.
2005-01-31 22:19:14 +00:00
Elijah Newren
77854b808a Some dufus forgot to save the ChangeLog before committing... :-/ 2005-01-31 20:43:23 +00:00
Elijah Newren
e2eb979ecd Try 2 to correct misleading and inaccurate wording. Hopefully, really
2005-01-31  Elijah Newren  <newren@gmail.com>

	Try 2 to correct misleading and inaccurate wording.  Hopefully,
	really fixes #165380.

	* src/menu.c: Change wording of menu from "Always on Current
	Workspace" to "Always on Visible Workspace".  "Always on Current
	Workspace" could sound like a synonym of "Only on This Workspace"
	when it was supposed to be the opposite.
2005-01-31 20:41:33 +00:00
Elijah Newren
51bbd0e1a8 Correct the stacking when return from fullscreen mode. Fixes #165718.
2005-01-31  Elijah Newren  <newren@gmail.com>

	Correct the stacking when return from fullscreen mode.  Fixes
	#165718.

	* src/window.c: (meta_window_unmake_fullscreen): Update the layer
	after resizing the window
2005-01-31 16:49:23 +00:00
Miloslav Trmac
595c86f427 Updated Czech translation.
2005-01-31  Miloslav Trmac  <mitr@volny.cz>

	* cs.po: Updated Czech translation.
2005-01-31 10:00:59 +00:00
Muktha
a7c2bacd64 src/themes/Atlanta/metacity-theme-1.xml:
2005-01-31  Muktha  <muktha.narayan@wipro.com>

        src/themes/Atlanta/metacity-theme-1.xml:
        src/themes/Simple/metacity-theme-1.xml:
        src/themes/Bright/metacity-theme-1.xml:
        Make the unfocussed title bar distinguishable. Fixes #125291.
2005-01-31 09:54:34 +00:00
Christian Rose
dab5dc2c70 Updated Swedish translation.
2005-01-31  Christian Rose  <menthos@menthos.com>

	* sv.po: Updated Swedish translation.
2005-01-31 09:16:38 +00:00
Žygimantas Beručka
5d8da70f33 Updated Lithuanian translation.
2005-01-30  Žygimantas Beručka  <uid0@akl.lt>

        * lt.po: Updated Lithuanian translation.
2005-01-30 01:22:31 +00:00
Francisco Javier F. Serrador
2f0f36eea0 Updated Spanish translation.
2005-01-29  Francisco Javier F. Serrador  <serrador@cvs.gnome.org>

	* es.po: Updated Spanish translation.
2005-01-29 17:36:06 +00:00
Miloslav Trmac
4e3243b122 Updated Czech translation.
2005-01-29  Miloslav Trmac  <mitr@volny.cz>

	* cs.po: Updated Czech translation.
2005-01-29 14:47:28 +00:00
Marcel Telka
a1caa2ae9e Updated Slovak translation.
2005-01-29  Marcel Telka  <marcel@telka.sk>

	* sk.po: Updated Slovak translation.
2005-01-29 14:43:29 +00:00
Funda Wang
194eee175d Updated Simplified Chinese translation 2005-01-29 08:36:17 +00:00
Adam Weinberger
2aae99381f Updated Canadian English translation.
* en_CA.po: Updated Canadian English translation.
2005-01-29 05:08:11 +00:00
Elijah Newren
aa2da7d82e Patch from RHEL-3 (Havoc doesn't remember how it got there) that Havoc
2005-01-28  Elijah Newren  <newren@gmail.com>

	Patch from RHEL-3 (Havoc doesn't remember how it got there) that
	Havoc posted in bug 156511 to fix the problem with fullscreen
	windows on a different xinerama monitor not staying on top.  I
	updated to HEAD.  Should fix #156511.

	* src/stack.c: (windows_on_different_xinerama): new function,
	(get_standalone_layer): let windows on a different screen than the
	one with the focus window stay in the fullscreen layer
2005-01-28 18:42:14 +00:00
Elijah Newren
9221a550db make this dialog be sticky. Fixes #164745.
2005-01-28  Elijah Newren  <newren@gmail.com>

	* src/metacity-dialog.c: (warn_about_no_sm_support): make this
	dialog be sticky.  Fixes #164745.
2005-01-28 16:49:36 +00:00
Elijah Newren
c66adff00d Patch from Tim Herold to handle xcomposite pkgconfig version regression.
2005-01-28  Elijah Newren  <newren@gmail.com>

	Patch from Tim Herold to handle xcomposite pkgconfig version
	regression.  Fixes #149368.

	* configure.in: Change XCOMPOSITE_VERSION from 1.0 to 0.2
2005-01-28 16:45:48 +00:00
Elijah Newren
7d0ef20a9c Change wording of menu to "Always on Current Workspace" from "Put on All
2005-01-28  Elijah Newren  <newren@gmail.com>

	* src/menu.c: Change wording of menu to "Always on Current
	Workspace" from "Put on All Workspaces", remove a quick-key
	conflict between "On _Top" and "Only on _This Workspace" by
	switching the latter to "_Only on This Workspace"

	* src/window.c: Remove a comment that is no longer necessary
	(since bug 87531 has been fixed)
2005-01-28 16:36:14 +00:00
Kjartan Maraas
cabf4fc359 Update Update
2005-01-28  Kjartan Maraas  <kmaraas@gnome.org>

	* nb.po: Update
	* no.po: Update
2005-01-28 16:03:44 +00:00
Elijah Newren
5389f135ce Take into account the appropriate list of windows when placing a new one.
2005-01-28  Elijah Newren  <newren@gmail.com>

	Take into account the appropriate list of windows when placing a
	new one.  Fixes #165381.

	* src/place.c: (meta_window_place): use
	meta_window_showing_on_its_workspace(w) instead of !w->minimzed,
	also take into account sticky windows

	* src/window.[ch]: rename window_showing_on_its_workspace to
	meta_window_showing_on_its_workspace and export it
2005-01-28 14:48:47 +00:00
Elijah Newren
1e580d1e52 Plug a pair of leaks. Fixes #165378
2005-01-27  Elijah Newren  <newren@gmail.com>

	Plug a pair of leaks.  Fixes #165378

	* src/place.c: (meta_window_place, get_windows_on_same_workspace):
	free list returned by meta_display_list_windows.
2005-01-27 18:30:27 +00:00
Elijah Newren
d93d26aaeb Treat splashscreens same as other windows for stacking. Fixes #165243.
2005-01-27  Elijah Newren  <newren@gmail.com>

	Treat splashscreens same as other windows for stacking.  Fixes
	#165243.

	* src/stack.h: (MetaStackLayer enum): remove META_LAYER_SPLASH
	from the list

	* src/stack.c: (get_standalone_layer): remove the special casing
	of META_WINDOW_SPLASHSCREEN
2005-01-27 18:28:06 +00:00
Elijah Newren
0a95c706bf shaded windows should not show up in pagers. Fixes #165377.
2005-01-27  Elijah Newren  <newren@gmail.com>

	* src/window.c: (set_net_wm_state): shaded windows should not show
	up in pagers.  Fixes #165377.
2005-01-27 18:23:51 +00:00
Adam Weinberger
b0d15aa44f Updated Canadian English translation.
* en_CA.po: Updated Canadian English translation.
2005-01-27 03:25:26 +00:00
Elijah Newren
5fe06b5fff Stick and unstick transients with their parent automatically. Fixes
2005-01-26  Elijah Newren  <newren@gmail.com>

	Stick and unstick transients with their parent automatically.
	Fixes #152283.

	* src/window.c: (window_stick_impl, window_unstick_impl): rename
	from meta_window_stick and meta_window_unstick respectively,
	(stick_foreach_func): a function to assist calling
	window_(un)stick_impl on each transient, (meta_window_stick,
	meta_window_unstick): new functions that call window_stick_impl or
	window_unstick_impl for the window and each of its transients.
2005-01-26 23:25:05 +00:00
Francisco Javier F. Serrador
fa5bc6ff51 Updated Spanish translation.
2005-01-26  Francisco Javier F. Serrador  <serrador@cvs.gnome.org>

	* es.po: Updated Spanish translation.
2005-01-26 21:58:35 +00:00
Elijah Newren
893309b372 Patch from John Paul Wallington to keep tooltip on screen horizontally for
2005-01-26  Elijah Newren  <newren@gmail.com>

	Patch from John Paul Wallington to keep tooltip on screen
	horizontally for xinerama.  Fixes #165261.

	* src/fixedtip.c: (meta_fixed_tip_show): rename screen_width and
	screen_height to screen_right_edge and screen_bottom_edge, set
	them using xinerama info instead of just screen geometry, and use
	them to determine where to place the tooltip window.
2005-01-26 20:56:15 +00:00
Arvind Samptur
cf102c12f4 Don't wireframe when accessibility is on, it apparently causes a desktop
2005-01-26  Arvind Samptur  <arvind.samptur@wipro.com>

        Don't wireframe when accessibility is on, it apparently
        causes a desktop wide freeze.

        * src/prefs.[ch] (meta_prefs_init) (change_notify)
        (update_gnome_accessibility) (meta_preference_to_string)
        (meta_prefs_get_gnome_accessibility) : Add code to monitor
        accessibility status.

        * src/display.c (meta_display_begin_grab_op): Check
        accessibility status before going ahead with wireframe.
        Fixes #159538
2005-01-26 08:43:38 +00:00
Elijah Newren
ebaa77c312 ignore sticky windows for non-active workspaces. Fixes #165259.
2005-01-25  Elijah Newren  <newren@gmail.com>

	* src/tabpopup.c: (meta_select_workspace_expose_event): ignore
	sticky windows for non-active workspaces.  Fixes #165259.
2005-01-26 02:51:31 +00:00
Elijah Newren
bb03725397 set the window state hints _after_ applying session information. Fixes
2005-01-25  Elijah Newren  <newren@gmail.com>

	* src/window.c: (meta_window_new_with_attrs): set the window state
	hints _after_ applying session information.  Fixes #164677.
2005-01-26 02:47:49 +00:00
Duarte Loreto
49479d9b67 Updated Portuguese translation.
2005-01-26  Duarte Loreto <happyguy_pt@hotmail.com>

	* pt.po: Updated Portuguese translation.
2005-01-26 01:02:23 +00:00
Elijah Newren
ea4d4b7b3e Add man pages for metacity-window-demo and metacity-theme-viewer. Man
2005-01-25  Elijah Newren  <newren@gmail.com>

	Add man pages for metacity-window-demo and metacity-theme-viewer.
	Man pages from Jose Moya, auto-fu from Dave Ahlswede. (#143513)

	* doc/man/metacity-theme-viewer.1:
	* doc/man/metacity-window-demo.1:

	New man pages

	* doc/man/Makefile.am:
	* doc/Makefile.am:
	* configure.in:

	Make sure to install the man pages

	* doc/man/.cvsignore:

	Silence cvs
2005-01-25 23:28:55 +00:00
Benjamin Kahn
f388d1111f New 48x48 default icon as specified in bug #160660 2005-01-25 18:47:57 +00:00
Elijah Newren
f5984f4365 Patch from Stephane LOEUILLET in bug #151850.
2005-01-25  Elijah Newren  <newren@math.utah.edu>

	Patch from Stephane LOEUILLET in bug #151850.

	* src/metacity.desktop.in: specify encoding
2005-01-25 18:27:43 +00:00
Balamurali Viswanathan
a8347dfd2f Get gconf to load the terminal dir so that we get the notifications when
2005-01-25  Balamurali Viswanathan <balamurali.viswanathan@wipro.com>

 	* src/prefs.c (meta_prefs_init): Get gconf to load the
 	terminal dir so that we get the notifications when
 	the command is changed. Fixes bug #160934
2005-01-25 18:02:39 +00:00
Elijah Newren
f31c57a049 Refuse to focus a window with a modal transient, and focus the transient
2005-01-25  Elijah Newren  <newren@gmail.com>

	Refuse to focus a window with a modal transient, and focus the
	transient instead.  Fixes #164716.

	* src/window.c: (get_modal_transient): new function,
	(meta_window_focus): if the window has a modal transient, make
	sure it is on the current workspace and then focus it instead.
2005-01-25 17:26:06 +00:00
Theppitak Karoonboonyanan
3afcb9c963 Updated Thai translation.
2005-01-25  Theppitak Karoonboonyanan  <thep@linux.thai.net>

	* th.po: Updated Thai translation.
2005-01-25 13:42:35 +00:00
Elijah Newren
640d793ce4 post-release version bump to 2.9.13
2005-01-24  Elijah Newren  <newren@gmail.com>

	* configure.in: post-release version bump to 2.9.13
2005-01-24 18:10:54 +00:00
Elijah Newren
b5529bc5e8 Metacity 2.9.8 unstable release
2005-01-24  Elijah Newren  <newren@gmail.com>

	* NEWS: Metacity 2.9.8 unstable release
2005-01-24 18:09:46 +00:00
Elijah Newren
2dcaa941b4 don't forget to initialize display->grab_old_window_stacking. Thanks to
2005-01-24  Elijah Newren  <newren@gmail.com>

	* src/display.c: (meta_display_begin_grab_op): don't forget to
	initialize display->grab_old_window_stacking.  Thanks to Sebastien
	Bacher and the bleeding edge Ubuntu users for catching the
	occasional crash this could cause so quickly, and for verifying
	that the patch worked (I couldn't duplicate).  Fixes #165093.
2005-01-24 17:39:26 +00:00
Elijah Newren
145d134095 post-release version bump to 2.9.8
2005-01-23  Elijah Newren  <newren@gmail.com>

	* configure.in: post-release version bump to 2.9.8
2005-01-24 06:55:48 +00:00
Elijah Newren
1a5d738e68 Metacity 2.9.5 unstable release there are more stable releases beyond
2005-01-23  Elijah Newren  <newren@gmail.com>

	* NEWS: Metacity 2.9.5 unstable release
	* README: there are more stable releases beyond 2.8.6...
2005-01-24 06:44:16 +00:00
Elijah Newren
2d0d5e8cac Restore original stacking when aborting an alt-esc window switch
2005-01-23  Elijah Newren  <newren@gmail.com>

	Restore original stacking when aborting an alt-esc window switch
	operation.  Fixes #123576.

	* src/display.c: (GRAB_OP_IS_WINDOW_SWITCH): new macro,
	(meta_display_close): clear grab_old_window_stacking if non-NULL,
	(event_callback): restore stack positions if alt-esc op cancelled
	with button press, (meta_display_begin_grab_op): store the old
	stacking positions, (meta_display_end_grab_op): free the old stack
	positions

	* src/display.h: (struct _MetaDisplay): add a
	grab_old_window_stacking list

	* src/keybindings.c: (process_tab_grab): restore stack positions
	if alt-esc op cancelled with an errant key press

	* src/stack.c: (compare_just_window_stack_position): new
	GCompareFunc function, (meta_stack_get_positions): get current
	stack positions, (compare_pointers): new GCompareFunc function,
	(lists_contain_same_windows): simple utility func to see if two
	lists contains the same windows, (meta_stack_set_positions): new
	function to set the positions of all the windows in the stack

	* src/stack.h: (meta_stack_get_postions,
	meta_stack_set_positions): new functions
2005-01-24 05:58:30 +00:00
Elijah Newren
814cc4b698 Patch from John Paul Wallington to fix #163420.
2005-01-23  Elijah Newren  <newren@gmail.com>

	Patch from John Paul Wallington to fix #163420.

	* src/window.c: (check_maximize_to_work_area): fix vertical
	maximization for second screen
2005-01-24 04:21:14 +00:00
Funda Wang
6630963a1d Updated Simplified Chinese translation 2005-01-23 16:06:54 +00:00
Elijah Newren
667796d53b Add a tracker bug for modal dialog issues
2005-01-21  Elijah Newren  <newren@gmail.com>

	* rationales.txt: Add a tracker bug for modal dialog issues
2005-01-21 18:08:19 +00:00
Kjartan Maraas
686ce45a7b Update this too while we're at it.
2005-01-21  Kjartan Maraas  <kmaraas@gnome.org>

	* nb.po: Update this too while we're at it.
2005-01-21 12:54:55 +00:00
Kjartan Maraas
11dc788fbe Update
2005-01-21  Kjartan Maraas  <kmaraas@gnome.org>

	* nn.po: Update
2005-01-21 12:41:24 +00:00
Elijah Newren
a1cdbf6d03 use pixbuf, not dimmed_pixbuf (which isn't defined yet). Fixes crash from
2005-01-20  Elijah Newren  <newren@gmail.com>

	* src/tabpopup.c (dimm_icon): use pixbuf, not dimmed_pixbuf (which
	isn't defined yet).  Fixes crash from #136666.
2005-01-21 01:58:10 +00:00
Vincent Noel
46ededed08 Show labels in bold for windows that demand attention. Fixes #164590.
2005-01-20  Vincent Noel  <vnoel@cox.net>

	* src/screen.c: (meta_screen_ensure_tab_popup),
	(meta_screen_ensure_workspace_popup):
	* src/tabpopup.c: (meta_ui_tab_popup_new), (display_entry):
	* src/tabpopup.h: Show labels in bold for windows that demand
	attention. Fixes #164590.
2005-01-20 16:41:29 +00:00
Vincent Noel
47221dcce2 In the tab task switcher popup, dim the window icon and put its name
2005-01-18  Vincent Noel  <vnoel@cox.net>

	* src/screen.c: (meta_screen_ensure_tab_popup),
	(meta_screen_ensure_workspace_popup):
	* src/tabpopup.c: (dimm_icon), (meta_ui_tab_popup_new),
	(free_entry):
	* src/tabpopup.h: In the tab task switcher popup, dim the window
	icon and put its name between brackets when the window is
	minimized. Fixes #136666.
2005-01-18 16:48:53 +00:00
Frank Arnold
48a6dd603a Updated German translation.
2005-01-15  Frank Arnold  <farnold@cvs.gnome.org>

	* de.po: Updated German translation.
2005-01-15 22:11:17 +00:00
Søren Sandmann Pedersen
89dd94bf1e file cwindow.c was initially added on branch spiffifity. 2005-01-13 23:51:00 +00:00
Søren Sandmann Pedersen
b8c8000b44 file cwindow.h was initially added on branch spiffifity. 2005-01-13 23:51:00 +00:00
Søren Sandmann Pedersen
00f7c002ba file matrix.c was initially added on branch spiffifity. 2005-01-13 23:51:00 +00:00
Søren Sandmann Pedersen
7dce1a4b6f file matrix.h was initially added on branch spiffifity. 2005-01-13 23:51:00 +00:00
Elijah Newren
2e465de233 Correct highlighting of windows in workspace switcher popup. Fixes
2005-01-11  Elijah Newren  <newren@gmail.com>

	Correct highlighting of windows in workspace switcher popup.
	Fixes #163450.

	* src/tabpopup.c (meta_select_workspace_expose_event): Remove race
	between FocusIn/FocusOut events and the expose event by replacing
	window->has_focus with
	window==window->display->expected_focus_window.
2005-01-11 19:54:14 +00:00
Elijah Newren
1830a35000 post-release version bump to 2.9.5
2005-01-09  Elijah Newren  <newren@gmail.com>

	* configure.in: post-release version bump to 2.9.5
2005-01-10 05:10:33 +00:00
Elijah Newren
d9e622b375 Metacity 2.9.3 unstable release
2005-01-09  Elijah Newren  <newren@gmail.com>

	* NEWS: Metacity 2.9.3 unstable release
2005-01-10 05:09:25 +00:00
Elijah Newren
7d747092a6 Remove the hack from bug 128200; it isn't needed anymore with the fix from
2005-01-09  Elijah Newren  <newren@gmail.com>

	* src/display.c (meta_display_open):
	* src/display.h (struct _MetaDisplay):
	* src/window.c (meta_window_free, meta_window_client_message,
	meta_window_notify_focus):

	Remove the hack from bug 128200; it isn't needed anymore with the
	fix from bug #160470.
2005-01-10 00:27:00 +00:00
Elijah Newren
be29c69653 Don't focus the panel on click. Fixes #160470 (and 100470 and removes the
2005-01-09  Elijah Newren  <newren@gmail.com>

	Don't focus the panel on click.  Fixes #160470 (and 100470 and
	removes the need for the hack from 128200)

	* doc/how-to-get-focus-right.txt: Update section on focusing
	non-decorated windows (specifically, DOCKS and DESKTOPS)

	* src/display.c (event_callback): don't focus dock windows on
	click
2005-01-09 19:27:22 +00:00
Elijah Newren
c0924402d4 Make sure the save session dialog appears focused. Fixes #162983.
2005-01-06  Elijah Newren  <newren@gmail.com>

	Make sure the save session dialog appears focused.  Fixes #162983.

	* src/session.c (warn_about_lame_clients_and_finish_inter): Get a
	timestamp by explicit request from Xserver, since none is
	available otherwise.
2005-01-07 05:19:26 +00:00
Leena Gunda
7549d1511a Restore the wireframe rectangle co-ordinates to saved window co-ordinates.
2005-01-06  Leena Gunda  <leena.gunda@wipro.com>

        * src/window.c (meta_window_unmaximize): Restore the wireframe
        rectangle co-ordinates to saved window co-ordinates. Fixes
        bug #161236.
2005-01-06 05:24:59 +00:00
Thomas Fitzsimmons
7c8faf3eda Install schema data from builddir not srcdir.
2005-01-03  Thomas Fitzsimmons  <fitzsim@redhat.com>

	* src/Makefile.am (install-data-local): Install schema data from
	builddir not srcdir.
2005-01-03 23:50:10 +00:00
Elijah Newren
68b14b6b9a Oops, that was doc/code-overview.txt not src/code-overview.txt 2005-01-02 22:01:03 +00:00
Elijah Newren
9382d5810f Provide more documentation to make it easier for people to contribute to
2005-01-02  Elijah Newren  <newren@gmail.com>

	Provide more documentation to make it easier for people to
	contribute to Metacity

	* HACKING: Add lots of information to extend this document: more
	on relevant standards and X properties, lots of information on
	debugging and testing, and add a list of some other important
	things to read; also move some information to
	src/code-overview.txt and organize this file into sections.

	* src/code-overview.txt: New file including some small parts from
	the old HACKING file and lots of new stuff.  This file gives a
	brief overview of some of the bigger structures and files, with
	guides for a variety of task categories providing places to start
	looking in the code and things to look for.
2005-01-02 21:59:05 +00:00
Francisco Javier F. Serrador
890ffe18f2 Updated Spanish translation.
2005-01-01  Francisco Javier F. Serrador  <serrador@cvs.gnome.org>

	* es.po: Updated Spanish translation.
2005-01-01 13:10:20 +00:00
Elijah Newren
78e54ee7ee Allow users to move the window around immediately after double-clicking to
2004-12-28  Elijah Newren  <newren@gmail.com>

	Allow users to move the window around immediately after
	double-clicking to shade (#90290)

	* src/display.c (event_callback): only end the grab op if either
	there is no frame or else the frame is not mapped
2004-12-28 22:31:10 +00:00
Christian Rose
4e636d0951 Updated Swedish translation.
2004-12-28  Christian Rose  <menthos@menthos.com>

	* sv.po: Updated Swedish translation.
2004-12-28 22:29:41 +00:00
Elijah Newren
c74ab35c6c Focus windows that manually position themselves too (fixes #107347).
2004-12-27  Elijah Newren  <newren@gmail.com>

	Focus windows that manually position themselves too (fixes
	#107347).

	* src/window.h (struct _MetaWindow): add a new
	showing_for_first_time flag

	* src/window.c (meta_window_new_with_attrs): initialize
	showing_for_first_time flag to !mapped, (meta_window_show):
	replace did_placement with showing_for_first_time in the section
	to decided whether to focus since did_placement isn't quite what
	we want
2004-12-28 06:01:42 +00:00
Elijah Newren
0bf6bffb16 Spew warning if CurrentTime is passed to the function, but don't exit
2004-12-27  Elijah Newren  <newren@gmail.com>

	* src/display.c (meta_display_set_input_focus_window,
	meta_display_focus_the_no_focus_window): Spew warning if
	CurrentTime is passed to the function, but don't exit prematurely.
	(fixes #162353)
2004-12-28 05:55:58 +00:00
Miloslav Trmac
1ce080d733 Updated Czech translation.
2004-12-25  Miloslav Trmac  <mitr@volny.cz>

	* cs.po: Updated Czech translation.
2004-12-25 15:04:08 +00:00
Elijah Newren
aab8f21475 Don't show menu if all options are invalid (fixes #148915)
2004-12-24  Elijah Newren  <newren@gmail.com>

	* src/window.c (meta_window_show_menu): Don't show menu if all
	options are invalid (fixes #148915)
2004-12-24 19:40:09 +00:00
Elijah Newren
ce8c2d9463 Fix error in distinguishing < vs. <= introduced by the patch in #154598,
2004-12-24  Elijah Newren  <newren@gmail.com>

	* src/window.c (window_takes_focus_on_map): Fix error in
	distinguishing < vs. <= introduced by the patch in #154598,
	restructure code so that verbose log matches code better in order
	ensure such mistakes are harder to make in the future (fixes
	#162172)
2004-12-24 17:27:29 +00:00
Elijah Newren
d5a484479f Thanks to mild7@users.sourceforge.net for this fix.
2004-12-24  Elijah Newren  <newren@gmail.com>

	Thanks to mild7@users.sourceforge.net for this fix.

	* src/window.h: (META_WINDOW_IN_NORMAL_TAB_CHAIN): Excludes
	windows with skip_taskbar hint set from the alt-tab list; they'll
	appear in the ctrl-alt-tab list instead. (fixes #106249)
2004-12-24 15:43:46 +00:00
Elijah Newren
892cb8a8dd Wrap XSetInputFocus, making display->expected_focus_window a little more
2004-12-22  Elijah Newren  <newren@gmail.com>

	Wrap XSetInputFocus, making display->expected_focus_window a
	little more reliable (see #154598)

	* src/display.h: (struct _MetaDisplay): add a large comment about
	the expected_focus_window, add a last_focus_time field,
	(XSERVER_TIME_IS_BEFORE): new macro moved from window.c but fixed
	for 64-bit systems, (meta_display_set_input_focus_window): new
	function

	* src/display.c (meta_display_open): initialize last_focus_time,
	add a comment about brokenness of trying to set intial focus
	window, (meta_display_set_input_focus_window): new function that
	wraps XSetInputFocus,
	(meta_display_focus_the_no_focus_window): make this function
	closer to a wrapping of XSetInputFocus for the no_focus_window.

	* src/window.c (XSERVER_TIME_IS_LATER): remove this macro in favor
	of the improved one added to display.h

	* src/display.c (meta_display_open):
	* src/window.c (meta_window_focus):
	use meta_display_focus_the_no_focus_window and
	meta_display_set_input_focus instead of XSetInputFocus
2004-12-23 06:44:56 +00:00
Elijah Newren
e46fc46701 Rename meta_window_visible_on_workspace to
2004-12-22  Elijah Newren  <newren@gmail.com>

	* src/core.c (meta_core_user_lower_and_unfocus):
	* src/display.c (meta_display_get_current_tab):
	* src/stack.c (get_default_focus_window, meta_stack_list_windows):
	* src/window.c (set_net_wm_state, meta_window_should_be_showing,
	implement_showing, meta_window_activate,
	meta_window_notify_focus):
	* src/window.h:
	* src/workspace.c (meta_workspace_list_windows):

	Rename meta_window_visible_on_workspace to
	meta_window_located_on_workspace (whether or not the window was
	showing wasn't taken into account, which made "visible"
	confusing).  Fixes #136314.
2004-12-23 00:20:33 +00:00
Elijah Newren
f4f8699d84 Partially resolve the conflicting requirements of windows on multiple
2004-12-22  Elijah Newren  <newren@gmail.com>

	Partially resolve the conflicting requirements of windows on
	multiple workspaces and hidden being a global quantity for windows
	(fixes bug 156182; the remainder of the work is bug 87531 and is a
	libwnck issue)

	* src/display.c (event_callback):
	* src/window.c (meta_window_visible_on_workspace, meta_window_unstick):
	* src/workspace.c (meta_workspace_add_window,
	meta_workspace_contains_window,
	meta_workspace_queue_calc_showing):
	* src/workspace.h:

	Remove meta_workspace_contains_window, replace with simple
	comparison utilizing window->workspace

	* src/place.c (meta_window_place):
	* src/window.c (meta_window_shares_some_workspace):
	* src/window.h:

	Remove meta_window_shares_some_workspace, replace with a simple
	comparison utilizing window->workspace

	* src/session.c (save_state),
	* src/window.c (meta_window_new_with_attrs,
	meta_window_apply_session_info, meta_window_free,
	window_showing_on_its_workspace,
	meta_window_change_workspace_without_transients,
	meta_window_unstick, meta_window_set_current_workspace_hint,
	meta_window_get_workspaces):
	* src/window.h:
	* src/workspace.c (meta_workspace_free, meta_workspace_add_window,
	meta_workspace_remove_window):

	Only one workspace now
2004-12-22 23:52:52 +00:00
Updated ja.po. T.Aihana
85d4c396d0 2004-12-21 Updated ja.po. T.Aihana <aihana@gnome.gr.jp> 2004-12-21 05:30:32 +00:00
Elijah Newren
575bbe7342 post-release version bump to 2.9.3
2004-12-20  Elijah Newren  <newren@gmail.com>

	* configure.in: post-release version bump to 2.9.3
2004-12-20 22:08:02 +00:00
Elijah Newren
80ced567d3 Metacity 2.9.2 unstable release
2004-12-20  Elijah Newren  <newren@gmail.com>

	* NEWS: Metacity 2.9.2 unstable release
2004-12-20 22:06:32 +00:00
Elijah Newren
dbbe2854fe re-add the note about Fibonacci sequence micro version numbers that was
2004-12-20  Elijah Newren  <newren@gmail.com>

	* configure.in: re-add the note	about Fibonacci sequence micro
	version numbers that was lost at version 2.8.5
2004-12-20 20:42:21 +00:00
Adam Weinberger
cf74d02ef0 Updated Canadian English translation.
* en_CA.po: Updated Canadian English translation.
2004-12-20 14:29:31 +00:00
Nguyen Thai Ngoc Duy
548638f0fc Updated vi.po 2004-12-20 13:42:26 +00:00
Nguyen Thai Ngoc Duy
cda3904b93 Updated vi.po 2004-12-20 13:15:07 +00:00
Elijah Newren
e7deeb609d Thanks to Baptiste Mille-Mathias for this fix.
2004-12-19  Elijah Newren  <newren@gmail.com>

	Thanks to Baptiste Mille-Mathias for this fix.

	* src/metacity.schemas.in: Add a missing period at the end of a
	sentence.
2004-12-20 05:25:47 +00:00
Elijah Newren
d178f5e330 When snap-moving, don't snap to transients of minimized windows since they
2004-12-19  Elijah Newren  <newren@gmail.com>

	When snap-moving, don't snap to transients of minimized windows
	since they are hidden.  Fixes #157180

	* src/place.c (get_windows_on_same_workspace): make the logic to
	determine hidden windows more thorough by calling
	meta_window_should_be_showing()

	* src/window.c (meta_window_should_be_showing): rename this
	function from window_should_be_showing and also export it,
	(implement_showing):
	s/window_should_be_showing/meta_window_should_be_showing/,
	(idle_calc_showing):
	s/window_should_be_showing/meta_window_should_be_showing/

	* src/window.h (meta_window_should_be_showing): Add this function
	to the list so that it can be used in src/place.c
2004-12-20 02:53:08 +00:00
Elijah Newren
d8d77bd65b Focus the desktop when showing it. Fixes #159257.
2004-12-19  Elijah Newren  <newren@gmail.com>

	Focus the desktop when showing it.  Fixes #159257.

	* src/display.c (event_callback): obtain a timestamp to pass to
	meta_screen_show_desktop

	* src/keybindings.c (handle_toggle_desktop): obtain a timestamp to
	pass to meta_screen_show_desktop

	* src/screen.c (meta_screen_show_desktop): add a timestamp
	parameter, get the most recently used window of type DESKTOP (if
	there is one) and focus it

	* src/screen.h (meta_screen_show_desktop): add a timestamp
	parameter
2004-12-20 02:46:42 +00:00
Elijah Newren
c3a607f999 Thanks to ash@contact.bg for this fix.
2004-12-19  Elijah Newren  <newren@gmail.com>

	Thanks to ash@contact.bg for this fix.

	* po/POTFILES.in: Remove reference to metacity-properties.* files
	since Alex removed them in his 2004-12-07 commit.
2004-12-20 02:41:22 +00:00
Alexander Shopov
1e8fd966b7 Updated Bulgarian translation by Vladimir Petkov <vpetkov@i-space.org>
2004-12-16  Alexander Shopov  <ash@contact.bg>

	* bg.po: Updated Bulgarian translation by
	Vladimir Petkov <vpetkov@i-space.org>
2004-12-16 07:37:42 +00:00
Elijah Newren
c654b7c502 post-release version bump to 2.9.2 that I forgot to do last week (oops)
2004-12-13  Elijah Newren  <newren@math.utah.edu>

	* configure.in: post-release version bump to 2.9.2 that I forgot
	to do last week (oops)
2004-12-14 00:26:52 +00:00
Alex Duggan
8235fa831f Remove deprecated capplet from GNOME 2.0
2004-12-07  Alex Duggan  <aldug@astrolinux.com>

	* configure.in:
	* src/tools/Makefile.am:

	Remove deprecated capplet from GNOME 2.0

	* src/tools/metacity-properties.c:
	* src/tools/metacity-properties.desktop.in:
	* src/tools/metacity-properties.glade:
	* src/tools/metacity-properties.png:

	Removed from cvs
2004-12-13 19:00:14 +00:00
Martin Willemoes Hansen
d9f4f54b7d Updated Danish translation.
* da.po: Updated Danish translation.
2004-12-07 13:30:44 +00:00
Elijah Newren
28b7e937d1 Metacity 2.9.1 unstable release
2004-11-01  Elijah Newren  <newren@math.utah.edu>

	* NEWS: Metacity 2.9.1 unstable release
2004-12-06 19:34:39 +00:00
Benjamin Kahn
86ba6115d4 Use a better default application icon. Fixes bug #160373
* src/default_icon.png: Use a better default application
icon.  Fixes bug #160373
2004-12-06 18:55:43 +00:00
Martin Willemoes Hansen
d34fe419b7 Updated Danish translation.
* da.po: Updated Danish translation.
2004-11-23 12:50:02 +00:00
Marco Pesenti Gritti
60789cdec4 Fix build out of src directory. Bug #158325
2004-11-16  Marco Pesenti Gritti  <marco@gnome.org>

        * src/Makefile.am:

        Fix build out of src directory. Bug #158325
2004-11-16 16:30:57 +00:00
Christophe Merlet
73d9932081 Updated French translation. 2004-11-14 09:32:19 +00:00
Žygimantas Beručka
3942bebc1e Updated Lithuanian translation.
2004-11-13  Žygimantas Beručka  <uid0@akl.lt>

	* lt.po: Updated Lithuanian translation.
2004-11-13 10:23:33 +00:00
James Henstridge
bae7135b48 fix so that autoheader is called after my changes. 2004-11-10 10:51:38 +00:00
James Henstridge
bc9e517842 remove intltool stuff on distclean.
2004-11-10  James Henstridge  <james@jamesh.id.au>

	* Makefile.am (DISTCLEANFILES): remove intltool stuff on distclean.

	* src/themes/Makefile.am (uninstall-local): add uninstall rule.

	* src/Makefile.am (libmetacity_private_la_CFLAGS): set this
	variable so that the files shared with metacity get compiled with
	different names.

	* configure.in: use more modern macros in some places, and make
	sure that $ACLOCAL_AMFLAGS is set so that rebuilds work better.

	* autogen.sh (conf_flags): use newer automake.
2004-11-10 07:59:38 +00:00
Vincent Untz
f3743bc494 gnome-panel-screenshot was renamed to gnome-screenshot
2004-11-06  Vincent Untz  <vincent@vuntz.net>

	* src/metacity.schemas.in: gnome-panel-screenshot was renamed to
	gnome-screenshot
2004-11-06 19:43:04 +00:00
Updated ja.po. T.Aihana
122d6ddd35 2004-11-04 Updated ja.po. T.Aihana <aihana@gnome.gr.jp> 2004-11-04 13:13:46 +00:00
Elijah Newren
f45682efbd bump version to 2.9.1
2004-11-01  Elijah Newren  <newren@math.utah.edu>

	* configure.in: bump version to 2.9.1
2004-11-01 15:33:40 +00:00
Elijah Newren
4d936588af Metacity 2.9.0 (unstable release)
2004-11-01 Elijah Newren  <newren@math.utah.edu>

	* NEWS, README: Metacity 2.9.0 (unstable release)
2004-11-01 15:32:00 +00:00
Francisco Javier F. Serrador
bb02f83bc8 Updated Spanish translation.
2004-10-30  Francisco Javier F. Serrador  <serrador@cvs.gnome.org>

	* es.po: Updated Spanish translation.
2004-10-30 13:58:29 +00:00
Elijah Newren
2a5689911f Don't lower newly mapped windows when they're denied focus, if they are
2004-10-25  Elijah Newren  <newren@math.utah.edu>

	Don't lower newly mapped windows when they're denied focus, if
	they are transients of the focused window.  Instead, defocus the
	currently focused window.  (fixes #151996).

	(Also, reenable focus stealing prevention and do a small spacing
	cleanup)

	* src/window-props.c (init_net_startup_id): fix spacing

	* src/window.c (window_takes_focus_on_map): re-enable focus
	stealing prevention, (meta_window_show): if the new window is
	denied focus and is a transient of the currently focused window,
	defocus the currently focused window but keep the transient on
	top; remove some old code about transients and focus; make sure
	that EnterNotify events won't accidentally focus the new window.
2004-10-25 16:28:57 +00:00
Elijah Newren
8b26849517 Fix the alt-tab order--if the most recently used window is not focused,
2004-10-25  Elijah Newren  <newren@math.utah.edu>

	Fix the alt-tab order--if the most recently used window is not
	focused, start alt tabbing with that window instead of the one
	after it (fixes #156251)

	* src/display.c (find_tab_forward): add a skip_first parameter,
	(find_tab_backward): add a skip_last parameter,
	(meta_display_get_tab_next): if a beginning window wasn't given
	and the focused window isn't the tab chain, don't skip the MRU
	window
2004-10-25 16:17:19 +00:00
Elijah Newren
6d77251c71 Update _NET_WM_STATE_HIDDEN so the pager on the panel will know whether to
2004-10-22  Elijah Newren  <newren@math.utah.edu>

	Update _NET_WM_STATE_HIDDEN so the pager on the panel will know
	whether to display windows as visible or hidden (#105665)

	* src/screen.c (queue_windows_showing): Revert the
	queue_windows_showing portion of the patch committed on 2004-10-16
	for #142198--it was an ill-advised optimization.

	* src/window.c (window_showing_on_its_workspace,
	window_should_be_showing): split the old window_should_be_showing
	into these two functions, (set_net_wm_state): hidden state is more
	complex; use window_showing_on_its_workspace to determine the
	correct value
2004-10-22 20:28:36 +00:00
Elijah Newren
ccd4414a0f Patch from Soeren to fix the modifier key breakage introduced by an Xorg
2004-10-20  Elijah Newren  <newren@math.utah.edu>

	Patch from Soeren to fix the modifier key breakage introduced by
	an Xorg change. (fixes #151554)

	* src/keybindings.c: include X11/XKBlib.h if available,
	(handle_spew_mark): remove this unused function declaration,
	(end_keyboard_grab): new function, uses XKB if available,
	(process_tab_grab): use end_keyboard_grab to determine whether to
	end the grab, (error_on_command): make key a const char *,
	(process_workspace_switch_grab): use end_keyboard_grab to
	determine whether to end the grab
2004-10-20 23:16:08 +00:00
Laurent Dhima
adc578e32d Updated Albanian translation.
2004-10-19  Laurent Dhima  <laurenti@alblinux.net>

	* sq.po: Updated Albanian translation.
2004-10-19 17:05:42 +00:00
Anders Carlsson
c397af4896 Don't try to use an ARGB visual at all if the depth isn't 32-bit. This
2004-10-19  Anders Carlsson  <andersca@gnome.org>

	* src/frame.c: (meta_window_ensure_frame):
	Don't try to use an ARGB visual at all if the depth isn't
	32-bit. This caused major slowdowns with Composite enabled.
2004-10-19 05:18:11 +00:00
Elijah Newren
e84778d1eb Make the "showing desktop" mode be per-workspace instead of per-screen.
2004-10-16  Elijah Newren  <newren@math.utah.edu>

	Make the "showing desktop" mode be per-workspace instead of
	per-screen. (fixes #142198)

	* src/keybindings.c (handle_toggle_desktop): access
	showing_desktop through the active workspace

	* src/screen.c (meta_screen_new): remove initialization of
	screen->showing_desktop,
	(meta_screen_update_showing_desktop_hint): rename and make not
	static and access showing_desktop through the active workspace,
	(queue_windows_showing): replace meta_display_list_windows() with
	screen->active_workspace->windows,
	(meta_screen_minimize_all_on_active_workspace_except): renamed
	from meta_screen_minimize_all_except since it now only works on
	the active workspace, (meta_screen_show_desktop,
	meta_screen_unshow_desktop): access showing_desktop through the
	active workspace

	* src/screen.h (struct _MetaScreen): remove showing_desktop field,
	(meta_screen_minimize_all_on_active_workspace_except): rename from
	meta_screen_minimize_all_except,
	(meta_screen_update)_showing_desktop_hint): export this function too

	* src/window.c (maybe_leave_show_desktop_mode): access
	showing_desktop through the active workspace and use new name for
	meta_screen_minimize_all_on_active_workspace_except,
	(window_should_be_showing): access showing_desktop through the
	active workspace

	* src/workspace.c (meta_workspace_new): initialize
	workspace->showing_desktop, (meta_workspace_activate_with_focus):
	add note that old can be NULL, update showing_desktop_hint if
	different on this workspace than the previous one

	* src/workspace.h (struct _MetaWorkspace): add showing_desktop
	field
2004-10-17 04:28:29 +00:00
Elijah Newren
e6fe440612 Add new tracker bugs
2004-10-16  Elijah Newren  <newren@math.utah.edu>

	* rationales.txt: Add new tracker bugs
2004-10-16 16:22:52 +00:00
Elijah Newren
3c974b87b4 Fix from Rob to correct requested number of keycodes (#155247)
2004-10-15  Elijah Newren  <newren@math.utah.edu>

	* src/keybindings.c (reload_keymap): Fix from Rob to correct
	requested number of keycodes (#155247)
2004-10-15 22:43:52 +00:00
Danilo Šegan
b6679a65f2 Updated Serbian translation. 2004-10-15 21:15:18 +00:00
Miloslav Trmac
e1df22ae31 Updated Czech translation.
2004-10-14  Miloslav Trmac  <mitr@volny.cz>

	* cs.po: Updated Czech translation.
2004-10-14 18:12:26 +00:00
Adam Weinberger
65c7332618 Updated Canadian English translation.
* en_CA.po: Updated Canadian English translation.
2004-10-14 17:35:11 +00:00
David Lodge
0ff5eea9d1 Updated British English translation.
2004-10-13  David Lodge <dave@cirt.net>

        * en_GB.po: Updated British English translation.
2004-10-13 21:11:56 +00:00
Elijah Newren
05388194fc Code cleanup
2004-10-13  Elijah Newren  <newren@math.utah.edu>

	Code cleanup

	* src/window.c (is_in_dock_group, docks_at_end_cmp,
	shuffle_docks_to_end): removed functions,
	(meta_window_notify_focus): no need to call is_in_dock_group or
	shuffle_docks_to_end because of the patch from #120100 that was
	committed.
2004-10-13 18:54:46 +00:00
Vincent Untz
b03558dc4d Add a keybinding to launch a terminal
2004-10-13  Vincent Untz  <vincent@vuntz.net>

	Add a keybinding to launch a terminal

	* src/keybindings.c: (handle_run_terminal): new function,
	(error_on_generic_command): new function, (error_on_command): wrapper
	around error_on_generic_command(), (error_on_terminal_command): new
	function

	* src/metacity.schemas.in: add run_command_terminal key

	* src/prefs.[ch]: (meta_prefs_init): cache the terminal command and
	register a gconf callback to update it, (change_notify): handle the
	notification of terminal command changes, (meta_preference_to_string):
	add the terminal command case, (update_terminal_command): new function,
	(meta_prefs_get_terminal_command): new function,
	(meta_prefs_get_gconf_key_for_terminal_command): new function
2004-10-13 08:32:10 +00:00
Rob Adams
278b5807f1 bump version to 2.9.0. Add UNSTABLE warning.
2004-10-11  Rob Adams  <readams@readams.net>

	* configure.in: bump version to 2.9.0.  Add UNSTABLE warning.
2004-10-11 16:44:24 +00:00
Rob Adams
13e0c20ab0 2.8.6 ==
2.8.6
==

This is a stable release for Gnome 2.8.1.

Thanks to the Ken Harris, Kjartan Maraas, and the tireless efforts of
Elijah Newren for fixes in this release.

Fixes
  * Ensure the correct window is focused when minimizing (Elijah)
  * Fix keynav with mouse focus (Elijah)
  * Fix several race conditions in window focusing (Elijah)
  * Focus the top window when lowering by frame click (Ken)
  * Fix some compiler warnings (Kjartan)
  * Fix some valgrind-reported errors (Elijah)
  * Fix some potential issues with autoraising windows (Elijah)

Translations
  * en_CA(Adam Weinberger), it(Luca Ferretti)
2004-10-11 16:14:47 +00:00
Elijah Newren
81fe64991c Fix middle-frame-click-to-lower focus inconsistency (#154601)
2004-10-08  Elijah Newren  <newren@math.utah.edu>

	Fix middle-frame-click-to-lower focus inconsistency (#154601)

	* src/core.c (meta_core_user_lower_and_unfocus): focus the default
	window in all focus modes, not just click-to-focus (EnterNotify
	events will not handle this case for sloppy and mouse focus)

	* src/display.c (event_callback): replace window->has_focus with
	window == display->expected_focus_window to avoid a race issue
2004-10-08 22:34:34 +00:00
Elijah Newren
79b4de04fc Alter the meaning of expected_focus_window; doesn't affect current
2004-10-08  Elijah Newren  <newren@math.utah.edu>

         Alter the meaning of expected_focus_window; doesn't affect
	 current operation but assists in fixing some other bugs
	 (#154598)

	* src/display.c (meta_display_focus_the_no_focus_window): set the
	expected_focus_window to NULL.

	* src/window.c (meta_window_notify_focus): don't NULL the
	expected_focus_window when that window receives a FocusIn event
2004-10-08 21:57:01 +00:00
Elijah Newren
714fb3d539 if the root window gets focused, set the focus to the default window; this
2004-10-04  Elijah Newren  <newren@math.utah.edu>

	* src/display.c (event_callback): if the root window gets focused,
	set the focus to the default window; this fixes the
	"focus-follows-mouse" behavior seen for click-to-focus mode after
	cancelling log out (fixes #153220)
2004-10-04 21:21:38 +00:00
Elijah Newren
70e40c235c Fix a variety of issues with autoraise (#134206)
2004-10-04  Elijah Newren  <newren@math.utah.edu>

	Fix a variety of issues with autoraise (#134206)

	* src/display.h: (struct _MetaDisplay): add an autoraise_window
	parameter

	* src/display.[hc] (meta_display_focus_the_no_focus_window): new
	function, (meta_display_queue_autoraise_callback): new function,
	(meta_display_remove_autoraise_callback): new function

	* src/display.c (meta_display_open): intialize
	display->autoraise_window too, (meta_display_close): remove any
	pending autoraise callback, (window_raise_with_delay_callback):
	clear out auto_raise->display->autoraise_window too,
	(event_callback): call meta_display_queue_autoraise_callback
	instead of having the code inline, call
	meta_display_focus_the_no_focus_window to handle focusing that
	window

	* src/window.c (meta_window_focus): If there's a window with an
	autoraise timeout that isn't the window being focused, remove the
	autoraise timeout

	* src/workspace.c (meta_workspace_focus_default_window): If no
	autoraise timeout is queued for the given window then queue one
	now, call meta_display_focus_the_no_focus_window to handle
	focusing that window, (meta_workspace_focus_mru_window): call
	meta_display_focus_the_no_focus_window to handle focusing that
	window
2004-10-04 21:09:08 +00:00
Elijah Newren
e8877141b7 Ooops, forgot to update the patch to account for change in bug 152000 2004-10-04 20:43:55 +00:00
Elijah Newren
546fe7b5b3 When no window becomes focused, focus the default window instead of
2004-10-04  Elijah Newren  <newren@math.utah.edu>

	* src/display.c (event_callback): When no window becomes focused,
	focus the default window instead of punting to the
	no_focus_window.  Also, change the warning to a verbose
	message--this will happen frequently due to brain-damage in the X
	protocol.  (see #125492)
2004-10-04 20:39:21 +00:00
Elijah Newren
16b9aff47c Fix a variety of focus race conditions in all focus modes, or at least
2004-10-04  Elijah Newren  <newren@math.utah.edu>

	Fix a variety of focus race conditions in all focus modes, or at
	least make them harder to trigger (fixes #152000)

	* src/core.[ch] (meta_core_user_lower_and_unfocus): add a
	timestamp parameter; pass it along to
	meta_workspace_focus_default_window

	* src/display.[ch] (meta_display_get_current_time_roundtrip): new
	function

	* src/display.c (event_callback): pass a timestamp to the
	meta_workspace_activate and meta_workspace_focus_default_window
	function calls

	* src/frames.c (meta_frames_button_press_event): pass a timestamp
	to meta_core_user_lower_and_unfocus

	* src/keybindings.c (handle_activate_workspace): pass a timestamp
	to meta_workspace_activate, (process_workspace_switch_grab): pass
	a timestamp to meta_workspace_focus_default_window and
	meta_workspace_activate, (handle_toggle_desktop): pass a timestamp
	to meta_workspace_focus_default_window,
	(do_handle_move_to_workspace): pass a timestamp to
	meta_workspace_activate_with_focus, (handle_workspace_switch):
	meta_workspace_activate

	* src/screen.c (meta_screen_new): pass a timestamp to
	meta_workspace_activate

	* src/window.c (meta_window_free): pass a timestamp to
	meta_workspace_focus_default_window, (idle_calc_showing): don't
	increment the focus sentinel here, (meta_window_minimize): pass a
	timestamp to meta_workspace_focus_default_window,
	(meta_window_client_message), pass a timestamp to
	meta_workspace_focus_default_window

	* src/workspace.h (meta_workspace_activate): add timestamp
	parameter, (meta_workspace_activate_with_focus): add timestamp
	parameter, (meta_workspace_focus_default_window): add timestamp
	parameter

	* src/workspace.c (meta_workspace_focus_mru_window): make this
	function take a timestamp and use it for meta_window_focus or
	XSetInputFocus, (meta_workspace_activate_with_focus): make this
	function take a timestamp and pass it along to meta_window_focus
	and meta_workspace_focus_default_window,
	(meta_workspace_activate): make this function take a timestamp and
	pass it to meta_workspace_activate_with_focus),
	(meta_workspace_focus_default_window): make this function take a
	timestamp, warn if its 0 but try to handle that case sanely, and
	pass the timestamp on to meta_window_focus or
	meta_workspace_focus_mru_window or XSetInputFocus
2004-10-04 20:32:59 +00:00
Nguyen Thai Ngoc Duy
7d4c302598 Updated vi.po 2004-09-29 01:47:42 +00:00
Adam Weinberger
5db3108815 Updated Canadian English translation.
* en_CA.po: Updated Canadian English translation.
2004-09-26 15:24:36 +00:00
Elijah Newren
7b1e571919 Focus the default window after the user dismisses the workspace switcher
2004-09-22  Elijah Newren  <newren@math.utah.edu>

	* src/keybindings.c (process_workspace_switch_grab): Focus the
	default window after the user dismisses the workspace switcher
	popup (fixes #123803; note that an alternate fix was made
	independently by David Baron for sloppy and mouse focus users)
2004-09-22 19:15:26 +00:00
Elijah Newren
3b9ec3ce50 Fix some uninitialized variable errors reported by valgrind (see #153338)
2004-09-22  Elijah Newren  <newren@math.utah.edu>

	Fix some uninitialized variable errors reported by valgrind (see
	#153338)

	* src/display.c (meta_display_open): initialize
	display->grab_resize_timeout_id, and display->grab_have_keyboard

	* src/ui.c (meta_ui_create_frame_window): initialize attrs.width
	and attrs.height
2004-09-22 18:57:36 +00:00
Alessio Frusciante
aa63e0884d Updated Italian translation. 2004-09-19 21:16:15 +00:00
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
b8b647e346 Save the ChangeLog before committing this time. Grrrr.... 2004-09-15 16:43:31 +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
Rob Adams
c188ae0954 post-release increment
2004-09-13  Rob Adams  <readams@readams.net>

	* configure.in: post-release increment
2004-09-14 02:04:48 +00:00
Rob Adams
b7323c9859 bump version number
2004-09-13  Rob Adams  <readams@readams.net>

	* configure.in: bump version number

	* NEWS: 2.8.5 release

	* README: 2.8.5 release
2004-09-14 02:02:53 +00:00
Nguyen Thai Ngoc Duy
32a38f64e8 Updated vi.po 2004-09-14 01:20:21 +00:00
Gora Mohanty
a738000745 configure.in: Added 'or' to ALL_LINGUAS.
po/or.po: Updated Oriya translation.
2004-09-13 21:52:43 +00:00
Paisa Seeluangsawat
7e0bc1e387 Updated Thai translation.
2004-09-12  Paisa Seeluangsawat  <paisa@users.sf.net>

	* th.po: Updated Thai translation.
2004-09-13 03:36:57 +00:00
Dafydd Harries
310f16e4da Updated Welsh translation. 2004-09-12 15:39:00 +00:00
Ivan Stojmirov
0cc258a4ef *** empty log message *** 2004-09-11 21:21:51 +00:00
Kwok-Koon Cheung
3f6f93ddc2 Updated traditional Chinese translation by GNOME HK Team.
* zh_TW.po: Updated traditional Chinese translation by GNOME HK Team.
2004-09-11 13:14:09 +00:00
Christophe Merlet
8b6e78800d Updated French translation. 2004-09-10 17:39:20 +00:00
Kwok-Koon Cheung
23f9090099 Updated traditional Chinese translation from GNOME HK Team 2004-09-08 22:26:31 +00:00
Raphael Higino
bd534f4412 Updating pt_BR translation 2004-09-08 16:05:04 +00:00
Arafat Medini
9dc40e3277 Updated Arabic translation
2004-09-08  Arafat Medini  <lumina@arabeyes.org>

	* ar.po: Updated Arabic translation
2004-09-08 12:57:32 +00:00
Elijah Newren
94b76b0762 Oops, panel and desktop can be focused by Ctrl-Alt-Tab too 2004-09-07 22:33:05 +00:00
Elijah Newren
96bb3fd89a Add a new write-up on making window focus consistent (see #152004)
2004-09-07  Elijah Newren  <newren@math.utah.edu>

	Add a new write-up on making window focus consistent (see #152004)

	* doc/how-to-get-focus-right.txt: New document

	* rationales.txt: Remove references to focus bugs, instead point
	to doc/how-to-get-focus-right.txt
2004-09-07 21:21:06 +00:00
Mugurel Tudor
4a69151d20 Updated Romanian translation
2004-09-07  Mugurel Tudor  <mugurelu@go.ro>

	* ro.po: Updated Romanian translation
2004-09-07 07:00:31 +00:00
Elijah Newren
5a25925606 Add bugs regarding window focus
2004-09-06  Elijah Newren  <newren@math.utah.edu>

	* rationales.txt: Add bugs regarding window focus
2004-09-06 18:02:37 +00:00
Miloslav Trmac
f0cb77ffc4 Updated Czech translation.
2004-09-05  Miloslav Trmac  <mitr@volny.cz>

	* cs.po: Updated Czech translation.
2004-09-05 15:14:14 +00:00
Baris Cicek
d12719dd59 Updated Turkish Translation
* tr.po: Updated Turkish Translation
2004-09-03 19:53:30 +00:00
N Jayaradha
178178e5e6 yet to proof read 2004-09-03 11:15:58 +00:00
N Jayaradha
4d1972d3b5 yet to proof read 2004-09-03 09:49:20 +00:00
Åsmund Skjæveland
2a9d9dc334 Updated Norwegian Nynorsk translation.
2004-08-31  Åsmund Skjæveland <aasmunds@fys.uio.no>

	* nn.po: Updated Norwegian Nynorsk translation.
2004-08-30 23:16:43 +00:00
Elijah Newren
fed80bf081 2.8.4 release
2004-08-29  Elijah Newren  <newren@math.utah.edu>

	* NEWS: 2.8.4 release
2004-08-30 05:27:36 +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
Kostas Papadimas
f3ffa919ee Updated Greek Translation. 2004-08-29 08:53:07 +00:00
Francisco Javier F. Serrador
0a3d3d6069 Updated Spanish translation
2004-08-28  Francisco Javier F. Serrador  <serrador@cvs.gnome.org>

	* es.po: Updated Spanish translation
2004-08-28 14:59:58 +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
Iñaki Larrañaga
0b497e95ed Updated Basque translation.
2004-08-26  Iñaki Larrañaga  <dooteo@euskalgnu.org>

        * eu.po:  Updated Basque translation.
2004-08-26 21:39:26 +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
Maxim Dziumanenko
07c406cad9 Updated Ukrainian translation.
2004-08-25  Maxim Dziumanenko <mvd@mylinux.com.ua>

	* Updated Ukrainian translation.
2004-08-25 09:19:16 +00:00
Jordi Mallach
822059d078 Updated Catalan translation. 2004-08-21 16:58:46 +00:00
Laurent Dhima
6198facc42 Updated Albanian translation.
2004-08-20  Laurent Dhima  <laurenti@alblinux.net>

	* sq.po: Updated Albanian translation.
2004-08-20 16:59:51 +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
Ankitkumar Rameshchandra Patel
9d02a6c163 ankit@redhat.com 20/08/2004 * Proofread gu.po 2004-08-20 10:09:32 +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
Pauli Virtanen
e81b5978b0 Updated Finnish translation.
* fi.po: Updated Finnish translation.
2004-08-18 23:28:17 +00:00
Laurent Dhima
4248d86c98 Updated Albanian translation.
2004-08-18  Laurent Dhima  <laurenti@alblinux.net>

	* sq.po: Updated Albanian translation.
2004-08-18 11:05:37 +00:00
Christian Rose
2b86bd7a9e Added "bs" to ALL_LINGUAS. Added Bosnian translation by Kemal Sanjta
2004-08-17  Christian Rose  <menthos@menthos.com>

	* configure.in: Added "bs" to ALL_LINGUAS.
	* po/bs.po: Added Bosnian translation by
	Kemal Sanjta <gomez@lugzdk.ba>.
2004-08-17 16:04:33 +00:00
Metin Amiroff
4541919fb4 Translation updated.
2004-08-17  Metin Amiroff  <metin@karegen.com>

	* az.po: Translation updated.
2004-08-16 19:48:42 +00:00
Kjartan Maraas
6b13680315 Added nb to ALL_LINGUAS.
2004-08-16  Kjartan Maraas  <kmaraas@gnome.org>

	* configure.in: Added nb to ALL_LINGUAS.
2004-08-16 07:21:25 +00:00
Kjartan Maraas
31b0c1a3ba Added this here.
2004-08-16  Kjartan Maraas  <kmaraas@gnome.org>

	* nb.po: Added this here.
2004-08-16 07:20:57 +00:00
Rob Adams
98731903ec Bump version to 2.8.4
2004-08-15  Rob Adams  <readams@readams.net>

	* configure.in: Bump version to 2.8.4
2004-08-15 18:11:35 +00:00
Rob Adams
977d7d3b9c 2.8.3 release
2004-08-15  Rob Adams  <readams@readams.net>

	* NEWS: 2.8.3 release
2004-08-15 18:06:51 +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
Changwoo Ryu
8100b93048 Updated Korean translation 2004-08-15 02:05:04 +00:00
Tommi Vainikainen
69ef1b673f Unified po headers for Finnish Team 2004-08-13 19:46:15 +00:00
Ghorban Mohammad Tavakkoli
ec0bd19156 *** empty log message *** 2004-08-13 00:38:53 +00:00
Dmitry Mastrukov
50d452c634 ru.po: Updated Russian translation from Russian team <gnome-cyr@gnome.org>. 2004-08-11 09:53:36 +00:00
Artur Flinta
50f25b6162 Updated Polish translation by GNOME PL Team.
2004-08-10  Artur Flinta  <aflinta@cvs.gnome.org>

	* pl.po: Updated Polish translation by GNOME PL Team.
2004-08-10 17:46:05 +00:00
Elijah Newren
a209d2fe9c I forgot to reference bug 149366 in a previous ChangeLog entry 2004-08-09 18:44:09 +00:00
Ankitkumar Rameshchandra Patel
4908fe3bed ankit@redhat.com 09/08/04 2004-08-09 12:21:45 +00:00
Amanpreet Singh Alam
b58ab6be64 check 2004-08-09 10:40:11 +00:00
Ankitkumar Rameshchandra Patel
f650c1f876 ankit@redhat.com 09/08/04 2004-08-09 08:50:05 +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
Danilo Šegan
c127a4691c Updated Serbian translation. 2004-08-07 12:58:31 +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
Funda Wang
731ac41cd7 Updated Simplified Chinese translation 2004-08-06 02:27:31 +00:00
Updated ja.po. T.Aihana
8dd95010c7 2004-08-06 Updated ja.po. T.Aihana <aihana@gnome.gr.jp> 2004-08-06 00:22:11 +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
65ba48ad3f post-release version bump (2.8.3) that I forgot to do yesterday.
2004-08-04  Elijah Newren  <newren@math.utah.edu>

	* configure.in: post-release version bump (2.8.3) that I forgot to
	do yesterday.
2004-08-05 03:03:41 +00:00
Elijah Newren
646521fc1d Released 2.8.2
2004-08-03  Elijah Newren  <newren@math.utah.edu>

	Released 2.8.2

	* NEWS, README: update
2004-08-03 19:11:29 +00:00
Vincent van Adrighem
3aa119e99e Translation updated by Michiel Sikkes.
2004-08-03  Vincent van Adrighem  <adrighem@gnome.org>

	* nl.po: Translation updated by Michiel Sikkes.
2004-08-03 13:26:01 +00:00
Duarte Loreto
a45b6cccbe Updated Portuguese translation.
2004-08-02  Duarte Loreto <happyguy_pt@hotmail.com>

	* pt.po: Updated Portuguese translation.
2004-08-02 19:47:40 +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
Adam Weinberger
38d02fff26 Updated Canadian English translation.
* en_CA.po: Updated Canadian English translation.
2004-08-02 18:20:24 +00:00
Kjartan Maraas
e5f672e67e Updated Norwegian translation.
2004-08-01  Kjartan Maraas  <kmaraas@gnome.org>

	* no.po: Updated Norwegian translation.
2004-08-01 20:33:01 +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
Martin Willemoes Hansen
c2bbd8b66c Reviewed and updated fuzzy messages.
* da.po: Reviewed and updated fuzzy messages.
2004-07-30 19:01:04 +00:00
Kartik B. Mistry
29fc267353 *** empty log message *** 2004-07-30 15:38:25 +00:00
Changwoo Ryu
d437930868 Updated Korean translation 2004-07-28 20:49:35 +00:00
Laurent Dhima
7ccc81982e Updated Albanian translation.
2004-07-28  Laurent Dhima  <laurenti@alblinux.net>

	* sq.po: Updated Albanian translation.
2004-07-28 17:13:18 +00:00
Alexander Shopov
f077527c9a Updated Bulgarian translation by Rostislav "zbrox" Raykov
2004-07-27  Alexander Shopov  <ash@contact.bg>

	* bg.po: Updated Bulgarian translation by
	Rostislav "zbrox" Raykov <zbrox@i-space.org>
2004-07-27 18:38:19 +00:00
Laurent Dhima
a2fea22402 Updated Albanian translation.
2004-07-27  Laurent Dhima  <laurenti@alblinux.net>

	* sq.po: Updated Albanian translation.
2004-07-27 16:10:39 +00:00
Christian Rose
8af2b95d03 Updated Swedish translation.
2004-07-25  Christian Rose  <menthos@menthos.com>

	* sv.po: Updated Swedish translation.
2004-07-25 14:13:27 +00:00
Christian Neumair
20b264d81f Updated German translation. 2004-07-25 10:36:10 +00:00
David Lodge
c79fed1661 Added British translation.
2004-07-25  David Lodge  <dave@cirt.net>

        * en_GB.po: Added British translation.
2004-07-25 10:35:28 +00:00
Francisco Javier F. Serrador
cb820084dd Updated Spanish translation.
2004-07-24  Francisco Javier F. Serrador  <serrador@cvs.gnome.org>

	* es.po: Updated Spanish translation.
2004-07-24 14:21:31 +00:00
Miloslav Trmac
c6ab972143 Updated Czech translation.
2004-07-23  Miloslav Trmac  <mitr@volny.cz>

	* cs.po: Updated Czech translation.
2004-07-23 17:51:48 +00:00
Žygimantas Beručka
0608d1f4ee Updated Lithuanian translation.
2004-07-23  Žygimantas Beručka  <uid0@akl.lt>

	* lt.po: Updated Lithuanian translation.
2004-07-23 11:29:30 +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
Gustavo Maciel Dias Vieira
2a649ecd95 Updated Brazilian Portuguese translation done by Goedson Teixeira Paixao
2004-07-22  Gustavo Maciel Dias Vieira  <gustavo@sagui.org>

        * pt_BR.po: Updated Brazilian Portuguese translation done by
        Goedson Teixeira Paixao <goedson@debian.org>.
2004-07-22 19:10:13 +00:00
Guntupalli Karunakar
3972258abc updated hindi translation 2004-07-21 12:45:30 +00:00
Christian Rose
42a3a97b37 Updated Swedish translation.
2004-07-14  Christian Rose  <menthos@menthos.com>

	* sv.po: Updated Swedish translation.
2004-07-14 19:49:48 +00:00
Åsmund Skjæveland
06db1e4ad6 Updated Norwegian Nynorsk translation.
2004-07-12  Åsmund Skjæveland  <aasmunds@fys.uio.no>

	* nn.po: Updated Norwegian Nynorsk translation.
2004-07-12 17:34:30 +00:00
Alexander Shopov
9fb7667ea0 Updated Bulgarian translation by Vladimir "Kaladan" Petkov
2004-07-08  Alexander Shopov  <ash@contact.bg>

	* bg.po: Updated Bulgarian translation by
	Vladimir "Kaladan" Petkov <vpetkov@i-space.org>
2004-07-08 06:02:05 +00:00
Laszlo Dvornik
feb5c06e25 Updated Hungarian translation.
2004-07-07  Laszlo Dvornik  <ldvornik@cvs.gnome.org>

	* hu.po: Updated Hungarian translation.
2004-07-07 12:54:16 +00:00
Francisco Javier F. Serrador
858757aaf3 Updated Spanish translation.
2004-07-06  Francisco Javier F. Serrador  <serrador@cvs.gnome.org>

	* es.po: Updated Spanish translation.
2004-07-06 14:23:36 +00:00
Laurent Dhima
8c86d5cd5e Updated Albanian translation.
2004-07-05  Laurent Dhima  <laurenti@alblinux.net>

	* sq.po: Updated Albanian translation.
2004-07-05 15:45:48 +00:00
Vincent van Adrighem
5a27308cde Translation updated by Tino Meinen.
2004-07-04  Vincent van Adrighem  <adrighem@gnome.org>

	* nl.po: Translation updated by Tino Meinen.
2004-07-04 11:50:05 +00:00
Christian Neumair
c144f22de6 Updated German translation. 2004-07-02 19:06:34 +00:00
Soeren Sandmann
3e95ae127b Require startup-notification 0.7
Fri Jun 25 17:41:53 2004  Soeren Sandmann  <sandmann@daimi.au.dk>

       * configure.in: Require startup-notification 0.7
2004-07-01 19:38:03 +00:00
Laurent Dhima
ef3d6a5d4e Translation updated.
2004-06-29  Laurent Dhima  <laurenti@alblinux.net>

	* sq.po: Translation updated.
2004-06-29 11:00:08 +00:00
Laurent Dhima
dc40fe8257 Translation updated.
2004-06-28  Laurent Dhima  <laurenti@alblinux.net>

	* sq.po: Translation updated.
2004-06-28 15:15:57 +00:00
Gareth Owen
d8241886b7 Updated British English translation 2004-06-26 02:14:58 +00:00
John C Barstow
1a31caa3fc file mi.po was initially added on branch gnome-2-6. 2004-06-25 22:28:43 +00:00
Funda Wang
56bef55e92 Updated Simplified Chinese translation 2004-06-25 16:06:33 +00:00
Miloslav Trmac
04c09f068e Updated Czech translation.
2004-06-25  Miloslav Trmac  <mitr@volny.cz>

	* cs.po: Updated Czech translation.
2004-06-25 12:40:45 +00:00
Rob Adams
25c4bb1455 indicate that _NET_WM_USER_TIME is now supported
2004-06-25  Rob Adams  <readams@readams.net>

	* COMPLIANCE: indicate that _NET_WM_USER_TIME is now supported
2004-06-24 21:50:30 +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
Havoc Pennington
952c1f415b bump version, add the UNSTABLE note
2004-06-16  Havoc Pennington  <hp@redhat.com>

	* configure.in: bump version, add the UNSTABLE note

	* Branch off GNOME 2.6, we are now officially unstable
2004-06-16 23:29:05 +00:00
Havoc Pennington
b5a912e232 file redhatify.sh was initially added on branch gnome-2-2-rhel3. 2004-06-16 21:27:31 +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
Alexander Shopov
9942588184 Updated Bulgarian translation by Vladimir Petkov <vpetkov@i-space.org>
2004-05-31  Alexander Shopov  <ash@contact.bg>
	* bg.po: Updated Bulgarian translation by
	Vladimir Petkov <vpetkov@i-space.org>
2004-05-31 10:50:40 +00:00
Elijah Newren
a7513e84fc Bump version to 2.8.1, make release 2004-05-05 01:41:26 +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
Dafydd Harries
4fda4ed806 Updated Catalan translation from Jordi Mallach. 2004-04-23 10:42:52 +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
Iñaki Larrañaga
09c929ce3f Added "eu" (Basque) to ALL_LINGUAS.
2004-04-16  Iñaki Larrañaga  <dooteo@euskalgnu.org>

        * configure.in: Added "eu" (Basque) to ALL_LINGUAS.
2004-04-16 12:36:08 +00:00
Iñaki Larrañaga
0399fb7d4b Added Basque translation.
2004-04-16  Iñaki Larrañaga  <dooteo@euskalgnu.org>

        * eu.po: Added Basque translation.
2004-04-16 12:35:22 +00:00
Elijah Newren
4b9a23e8eb Fix unwanted mouse grab op on rapid click-and-release 2004-04-16 03:38:19 +00:00
Andras Timar
c60ec1802a Updated Hungarian translation.
2004-04-15  Andras Timar  <timar@gnome.hu>

	* hu.po: Updated Hungarian translation.
2004-04-14 22:30:13 +00:00
Rob Adams
929619f145 Make the --enable-xinerama switch work properly. Fix for #138562 from
2004-04-11  Rob Adams  <readams@readams.net>

	* configure.in: Make the --enable-xinerama switch work properly.
	Fix for #138562 from foser@gentoo.org.
2004-04-11 15:44:12 +00:00
Guntupalli Karunakar
c043cd4dae added gujarati translation 2004-04-09 15:54:14 +00:00
Mohammad DAMT
9fb6cea799 Updated Indonesian translation
2004-04-06  Mohammad DAMT  <mdamt@bisnisweb.com>

	* id.po: Updated Indonesian translation
2004-04-06 08:18:08 +00:00
Mugurel Tudor
7a441616f3 Updated Romanian translation
2004-04-03  Mugurel Tudor  <mugurelu@go.ro>

	* ro.po: Updated Romanian translation
2004-04-02 21:29:18 +00:00
Jordi Mallach
43693d2b6a Updated Catalan translation. 2004-03-29 12:32:11 +00:00
Tivo Leedjrv
b76e62226b Added et to ALL_LINGUAS.
2004-03-27  Tivo Leedjrv  <toivo@linux.ee>

        * configure.in: Added et to ALL_LINGUAS.
2004-03-27 18:18:17 +00:00
Tivo Leedjrv
706791d582 Added Estonian translation.
2004-03-27  Tivo Leedjrv  <toivo@linux.ee>

        * et.po: Added Estonian translation.
2004-03-27 18:17:19 +00:00
Guntupalli Karunakar
b6dca7f3cb added punjabi translation 2004-03-24 04:08:19 +00:00
Havoc Pennington
43ede25908 2.8.0
2004-03-21  Havoc Pennington  <hp@redhat.com>

	* configure.in: 2.8.0

	* NEWS: update
2004-03-21 16:27:26 +00:00
Mugurel Tudor
5856fd8ef2 Updated Romanian translation
2004-03-20  Mugurel Tudor  <mugurelu@go.ro>

	* ro.po: Updated Romanian translation
2004-03-20 22:50:08 +00:00
Gareth Owen
332adc45fc Updated British translation 2004-03-20 16:06:15 +00:00
Andras Timar
a76b1075df Updated Hungarian translation.
2004-03-19  Andras Timar  <timar@gnome.hu>

	* hu.po: Updated Hungarian translation.
2004-03-19 22:22:44 +00:00
Arafat Medini
d2d8d96778 Updated Arabic translation.
2004-03-18  Arafat Medini  <lumina@silverpen.de>

	* ar.po: Updated Arabic translation.
2004-03-18 21:32:50 +00:00
Leonid Kanter
3ae3a2558f updated Russian translation 2004-03-17 12:36:24 +00:00
Dafydd Harries
6efaa8d45c Updated Welsh translation. 2004-03-16 01:33:56 +00:00
Alessio Frusciante
2876d2f43f Updated Italian translation. 2004-03-15 20:21:08 +00:00
Nikos Charonitakis
1341d50518 Updated Greek translation 2004-03-14 23:11:39 +00:00
Christophe Merlet
11e56f841a Updated French translation. 2004-03-14 11:04:15 +00:00
Christophe Merlet
72dd7ff621 Updated French translation. 2004-03-13 11:52:00 +00:00
Theppitak Karoonboonyanan
10425302c7 Updated Thai translation.
2004-03-13  Theppitak Karoonboonyanan  <thep@linux.thai.net>

	* th.po: Updated Thai translation.
2004-03-13 07:41:43 +00:00
Yuri Syrota
ab16ef096a Updated Ukrainian translation 2004-03-12 17:24:25 +00:00
Funda Wang
e632c8ebf5 Updated Simplified Chinese translation 2004-03-12 15:38:34 +00:00
Yuri Syrota
9a5ca2055e Updated Ukrainian translation 2004-03-12 10:43:49 +00:00
Alessio Frusciante
307f49f735 Updated Italian translation. 2004-03-11 20:49:49 +00:00
Christophe Merlet
6ca6596309 Updated French translation. 2004-03-11 20:08:14 +00:00
Theppitak Karoonboonyanan
1c50c27613 Updated Thai translation.
2004-03-10  Theppitak Karoonboonyanan  <thep@linux.thai.net>

	* th.po: Updated Thai translation.
2004-03-10 08:48:49 +00:00
Alessio Frusciante
f0ae093877 Updated Italian translation. 2004-03-09 22:05:23 +00:00
Görkem Çetin
8273612a87 CVS_SILENT 2004-03-09 21:11:09 +00:00
Kjartan Maraas
09d35abc95 Updated Norwegian translation.
2004-03-09  Kjartan Maraas  <kmaraas@gnome.org>

	* no.po: Updated Norwegian translation.
2004-03-09 09:44:12 +00:00
Francisco Javier F. Serrador
b1769b3cb9 Updated Spanish translation.
2004-03-09  Francisco Javier F. Serrador  <serrador@cvs.gnome.org>

	* es.po: Updated Spanish translation.
2004-03-09 00:01:08 +00:00
Alastair McKinstry
a1bfe15eb5 Updated Irish translation 2004-03-08 21:07:17 +00:00
Theppitak Karoonboonyanan
51a98800f8 Updated Thai translation.
2004-03-08  Theppitak Karoonboonyanan  <thep@linux.thai.net>

	* th.po: Updated Thai translation.
2004-03-08 18:10:15 +00:00
Elijah Newren
c7b55ccb9f Bring rationales.txt up to date 2004-03-08 06:42:06 +00:00
Paisa Seeluangsawat
b42ac36ac8 Updated Thai translation.
2004-03-07  Paisa Seeluangsawat  <paisa@users.sf.net>

	* th.po: Updated Thai translation.
2004-03-08 05:18:37 +00:00
Havoc Pennington
91c8674acf 2.7.1
2004-03-07  Havoc Pennington  <hp@redhat.com>

	* configure.in: 2.7.1
2004-03-07 16:52:14 +00:00
Mətin Əmirov
a50c7cd589 Translation updated.
2004-03-06  Mətin Əmirov  <metin@karegen.com>

	* az.po: Translation updated.
2004-03-06 20:39:50 +00:00
Funda Wang
3a7ce7d109 Updated Simplified Chinese translation 2004-03-06 17:28:05 +00:00
Paisa Seeluangsawat
9ef1da6ec2 Added Thai translation.
2004-03-05  Paisa Seeluangsawat  <paisa@users.sf.net>

	* th.po: Added Thai translation.
2004-03-05 08:43:31 +00:00
Paisa Seeluangsawat
cd1885cec4 Added Thai translation.
2004-03-04  Paisa Seeluangsawat  <paisa@users.sf.net>

	* th.po: Added Thai translation.
2004-03-05 04:13:05 +00:00
Paisa Seeluangsawat
27797e7f78 Added "th" (Thai) to ALL_LINGUAS.
2004-03-04  Paisa Seeluangsawat  <paisa@users.sf.net>

	* configure.in: Added "th" (Thai) to ALL_LINGUAS.
2004-03-05 04:12:26 +00:00
Paisa Seeluangsawat
0de86fc8ea Added Thai translation.
2004-02-29  Paisa Seeluangsawat  <paisa@users.sf.net>

	* th.po: Added Thai translation.
2004-03-05 04:09:59 +00:00
Arafat Medini
c0452be980 Updated Arabic translation.
2004-03-3  Arafat Medini  <lumina@silverpen.de>

	* ar.po: Updated Arabic translation.
2004-03-03 12:16:22 +00:00
Stanislav Visnovsky
963ac3ff32 Convert to UTF-8.
2004-03-02  Stanislav Visnovsky <visnovsky@kde.org>

        * sk.po: Convert to UTF-8.
2004-03-02 08:11:46 +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
Guntupalli Karunakar
502003e47b updated hindi translations 2004-02-26 14:18:23 +00:00
Laurent Dhima
57b16ab4c7 Updated Albanian translation
* sq.po: Updated Albanian translation
2004-02-23 12:50:20 +00:00
Laurent Dhima
83480c1ac9 Korrigjime 2004-02-23 12:47:44 +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
Christian Rose
5a28c4c423 Added "en_CA" to ALL_LINGUAS. Added Canadian English translation by Adam
2004-02-22  Christian Rose  <menthos@menthos.com>

	* configure.in: Added "en_CA" to ALL_LINGUAS.
	* po/en_CA.po: Added Canadian English translation by
	Adam Weinberger <adamw@FreeBSD.org>.
2004-02-22 01:34:08 +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
Fixed wrong messages. T.Aihana
88ea02a77a 2004-02-17 Fixed wrong messages. T.Aihana <aihana@gnome.gr.jp> 2004-02-16 16:27:50 +00:00
Updated ja.po. T.Aihana
b70fdf1a5f 2004-02-17 Updated ja.po. T.Aihana <aihana@gnome.gr.jp> 2004-02-16 15:02:26 +00:00
138 changed files with 91611 additions and 46200 deletions

View File

@@ -48,15 +48,12 @@ standard is available at http://freedesktop.org/Standards/wm-spec/
+ _NET_NUMBER_OF_DESKTOPS (1.3)
- _NET_DESKTOP_GEOMETRY (-)
Metacity does not implement large desktops. Regardless, according
to the specification, metacity SHOULD set this property to the
screen size, and update it if the screen size changes because of a
RandR change.
+ _NET_DESKTOP_GEOMETRY (1.3)
Metacity does not implement large desktops, so this is kept set to
the screen size.
- _NET_DESKTOP_VIEWPORT (-)
Metacity does not implement viewports. However, according to the
specification, metacity MUST set this property to (0,0)
+ _NET_DESKTOP_VIEWPORT (1.3)
Metacity does not implement viewports, so this is a constant (0,0).
+ _NET_CURRENT_DESKTOP (1.3)
@@ -82,15 +79,16 @@ standard is available at http://freedesktop.org/Standards/wm-spec/
+ _NET_CLOSE_WINDOW (1.3)
- _NET_MOVERESIZE_WINDOW (-)
Metacity does not support this message. The specification states
that metacity should treat this message like a ConfigureRequest.
Not hard to implement; just hasn't been done.
- _NET_MOVERESIZE_WINDOW (1.3)
Metacity supports this message, but the specification is unclear on
the layout of the detail value, and as such it is #if 0'd in the code
+ _NET_WM_MOVERESIZE (1.3)
- _NET_RESTACK_WINDOW (-)
Metacity does not currently support this message.
- _NET_RESTACK_WINDOW (1.3)
Metacity will raise or lower windows in response to this message,
but the sibling restack modes are not supported, and it is currently
#if 0'd in the code.
+ _NET_REQUEST_FRAME_EXTENTS (1.3)
@@ -114,14 +112,14 @@ standard is available at http://freedesktop.org/Standards/wm-spec/
+ _NET_WM_WINDOW_TYPE (1.3)
/ _NET_WM_STATE (1.3)
This property is read and updated according to the specification,
but see caveat below.
Metacity does not recognize separate vertical and horizontal
maximization states. Currently metacity will do a two-dimensional
maximization if either property is set.
See: http://bugzilla.gnome.org/show_bug.cgi?id=113601
Metacity doesn't implement viewports so _NET_WM_STATE_STICKY is
unimplemented.
_NET_WM_STATE_DEMANDS_ATTENTION is neither read nor updated by
metacity. Metacity should unset it on window activation.
+ _NET_WM_ALLOWED_ACTIONS (1.3)
Metacity keeps this hint up to date. The code is somewhat crufty
@@ -141,11 +139,11 @@ standard is available at http://freedesktop.org/Standards/wm-spec/
+ _NET_WM_HANDLED_ICONS (1.3)
Metacity does not read or set this property. However, metacity
never managed iconified windows, and so has no need to do so.
never manages iconified windows, and so has no need to do so.
- _NET_WM_USER_TIME (-)
Metacity does not read or set this property. The EWMH does not
require it to do so, but it should support it.
+ _NET_WM_USER_TIME (1.3)
Metacity uses this property to prevent applications from stealing
focus if supported by the toolkit.
+ _NET_FRAME_EXTENTS (1.3)
If set in response to a _NET_REQUEST_FRAME_EXTENTS message received

1969
ChangeLog

File diff suppressed because it is too large Load Diff

286
HACKING
View File

@@ -1,109 +1,237 @@
Making a release
===
Intro...
To make a release of metacity, do the following:
Window managers have a few ways in which they are significantly different
from other applications. This file, combined with the code overview in
doc/code-overview.txt, should hopefully provide a series of relatively
quick pointers (hopefully only a few minutes each) to some of the places
one can look to orient themselves and get started. Some of this will be
general to window managers on X, much will be specific to Metacity, and
there's probably some information that's common to programs in general but
is nonetheless useful.
- check out a fresh copy from CVS
Overview
Administrative issues
Relevant standards and X properties
Debugging and testing
Debugging logs
Adding information to the log
Valgrind
Testing Utilities
Technical gotchas to keep in mind
Other important reading
Extra reading
Ideas for tasks to work on
- increment the version number in configure.in,
see the comment above the version for the next fibonacci number
- update the file NEWS based on the ChangeLog
Administrative issues
Don't commit substantive code in here without asking hp@redhat.com.
Adding translations, no-brainer typo fixes, etc. is fine.
- add a ChangeLog entry containing the version number
you're releasing ("Released 2.5.4" or something)
so people can see which changes were before and after
a given release.
The code could use cleanup in a lot of places, feel free to do so.
- "make distcheck" (DO NOT just "make dist" - pass the check!)
See http://developer.gnome.org/dotplan/for_maintainers.html for
information on how to make a release. The only difference from those
instructions is that the minor version number of a Metacity release
should always be a number from the Fibonacci sequence.
- if make distcheck fails, fix it.
Relevant standards and X properties
There are two documents that describe some basics about how window
managers should behave: the ICCCM (Inter-Client Communication Conventions
Manual) and EWMH (Extended Window Manager Hints). You can find these at
the following locations:
ICCCM - http://tronche.com/gui/x/icccm/
EWMH - :pserver:anoncvs@pdx.freedesktop.org:/cvs
The ICCCM is usually available in RPM or DEB format as well. There is
actually an online version of the EWMH, but it is almost always woefully
out of date. Just get it from cvs with these commands (the backslash
means include the stuff from the next line):
cvs -d :pserver:anoncvs@cvs.freedesktop.org:/cvs/icccm-extensions login
cvs -d :pserver:anoncvs@cvs.freedesktop.org:/cvs/icccm-extensions \
checkout wm-spec
- once distcheck succeeds, "cvs commit"
DO NOT GO AND READ THOSE THINGS. THEY ARE REALLY, REALLY BORING.
- if someone else made changes and the commit fails,
you have to "cvs up" and run "make distcheck" again
If you do, you'll probably end up catching up on your sleep instead of
hacking on Metacity. ;-) Instead, just look at the table of contents and
glance at a page or two to get an idea of what's in there. Then only
refer to it if you see something weird in the code and you don't know
what it is but has some funny looking name like you see in one of those
two documents.
- once the commit succeeds, WITHOUT cvs updating, "cvs tag
METACITY_X_Y_Z" where
X_Y_Z map to version X.Y.Z
You can refer to the COMPLIANCE file for additional information on these
specifications and Metacity's compliance therewith.
- scp the tarball to master.gnome.org
One of the major things those documents cover that are useful to learn
about immediately are X properties. The right way to learn about those,
though, is through hand on experimentation with the xprop command (and
then look up things you find from xprop in those two manuals if you're
curious enough). First, try running
xprop
in a terminal and click on one of the windows on your screen. That gives
you the x properties for that window. Look through them and get a basic
idea of what's there for kicks. Next, try running
xprop -root
in a terminal. There's all the properties of the root window (which you
can think of as the "main" window). You can also manually specify
individual windows that you want the properties of with
xprop -id <id>
if you know the id of the window in question (you can get this from the
_NET_CLIENT_STACKING property of the root window). Finally, it can also
be useful to add "-spy" (without the quotes) to the xprop command to get
it to continually monitor that window and report any changes to you.
- run install-module on master.gnome.org to install the tarball
on the ftp site
Debugging information
Trying to run a window manager under a typical debugger, such as gdb,
unfortunately just doesn't work very well. So, we have to resort to
other methods.
Misc stuff
===
Debugging logs
Don't commit substantive code in here without asking me,
hp@redhat.com. Adding translations, no-brainer typo fixes, etc. is
fine.
First, note that you can start a new version of metacity to replace the
existing one by running
metacity --replace
(which also comes in handy in the form "./src/metacity --replace" when
trying to quickly test a small change while hacking on metacity without
doing a full "make install", though I'm going off topic...) This will
allow you to see any warnings printed at the terminal. Sometimes it's
useful to have these directed to a logfile instead, which you can do by
running
METACITY_USE_LOGFILE=1 metacity --replace
The logfile it uses will be printed in the terminal. Sometimes, it's
useful to get more information than just warnings. You can set
METACITY_VERBOSE to do that, like so:
METACITY_VERBOSE=1 METACITY_USE_LOGFILE=1 metacity --replace
There are also other flags, such as METACITY_DEBUG, most of which I
haven't tried and don't know what they do. Go to the source code
directory and run
grep "METACITY_" * | grep getenv
to find out what the other ones are.
The script src/run-metacity.sh is useful to hack on the window manager.
It runs metacity in an Xnest. e.g.:
CLIENTS=3 ./run-metacity.sh
or
DEBUG=memprof ./run-metacity.sh
or
DEBUG_TEST=1 ./run-metacity-sh
or whatever.
Adding information to the log
The tool metacity-message can be used as follows:
metacity-message reload-theme
metacity-message restart
metacity-message enable-keybindings
metacity-message disable-keybindings
Since we can't single step with a debugger, we often have to fall back to
the primitive method of getting information we want to know: adding
"print" statements. Metacity has a fairly structured way to do this,
using the functions meta_warning, meta_topic, and meta_verbose. All
three have the same basic format as printf, except that meta_topic also
takes a leading enumeration parameter to specify the type of message
being shown (makes it easier for grepping in a verbose log). You'll find
tons of examples in the source code if you need them; just do a quick
grep or look in most any file. Note that meta_topic and meta_verbose
messages only appear if verbosity is turned on. I tend to frequently add
temporary meta_warning statements (or switch meta_topic or meta_verbose
ones to meta_warning ones) and then undo the changes once I've learned
the info that I needed.
metacity-window-demo is good for trying behavior of various kinds of window
without launching a full desktop.
There is also a meta_print_backtrace (which again is only active if
verbosity is turned on) that can also be useful if you want to learn how
a particular line of code gets called. And, of course, there's always
g_assert if you want to make sure some section isn't executed (or isn't
executed under certain conditions).
src/window.c is where all the guts of the window manager live. This is
basically the only remotely scary file.
Valgrind
src/frames.c is the GtkWidget that handles drawing window frames.
Valgrind is awesome for finding memory leaks or corruption and
uninitialized variables. But I also tend to use it in a non-traditional
way as a partial substitute for a normal debugger: it can provide me with
a stack trace of where metacity is crashing if I made a change that
caused it to do so, which is one of the major uses of debuggers. (And,
what makes it cooler than a debugger is that there will also often be
warnings pinpointing the cause of the crash from either some kind of
simple memory corruption or an uninitialized variable). Sometimes, when
I merely want to know what is calling a particular function I'll just
throw in an "int i; printf("%d\n", i);" just because valgrind will give
me a full stacktrace whenever it sees that uninitialized variable being
used (yes, I could use meta_print_backtrace, but that means I have to
turn verbosity on).
src/core.h defines the interface used by the GTK portion of the window
manager to talk to the other portions. There's some cruft in here
that's unused, since nearly all window operations have moved out of
this file so frameless apps can have window operations.
To run metacity under valgrind, use options typical for any Gnome
program, such as
valgrind --logfile=metacity.log --tool=memcheck --num-callers=48 \
--leak-check=yes --leak-resolution=high --show-reachable=yes \
./src/metacity --replace
where, again, the backslashes mean to join all the stuff on the following
line with the previous one.
src/ui.h defines the interface the plain Xlib portion of the window
manager uses to talk to the GTK portion.
However, there is a downside. Things run a little bit slowly, and it
appears that you'll need about 1.5GB of ram, which unfortunately prevents
most people from trying this.
Files that include gdk.h or gtk.h are not supposed to include
display.h or window.h or other core files.
Testing Utilities
Files in the core (display.[hc], window.[hc]) are not supposed to
include gdk.h or gtk.h.
src/run-metacity.sh
The script src/run-metacity.sh is useful to hack on the window manager.
It runs metacity in an Xnest. e.g.:
CLIENTS=3 ./run-metacity.sh
or
DEBUG=memprof ./run-metacity.sh
or
DEBUG_TEST=1 ./run-metacity-sh
or whatever.
src/theme.c and src/theme-parser.c have the theme system; this is
well-modularized from the rest of the code, since the theme viewer app
links to these files in addition to the WM itself.
metacity-message
The tool metacity-message can be used as follows:
metacity-message reload-theme
metacity-message restart
metacity-message enable-keybindings
metacity-message disable-keybindings
When hacking, remember that you can have multiple screens. The code is
also written to support multiple displays, but this is useless, since
you can just run two copies of the WM. Also, an XKillClient() or
shutdown on any display causes Xlib to exit the app, so it would be
broken. So the multi-display thing is mostly just for code
cleanliness. Multi-screen on the other hand is important for some
people.
metacity-window-demo
metacity-window-demo is good for trying behavior of various kinds
of window without launching a full desktop.
Remember that strings stored in X properties are not in UTF-8, and
they have to end up in UTF-8 before we try putting them through Pango.
Technical gotchas to keep in mind
Files that include gdk.h or gtk.h are not supposed to include display.h
or window.h or other core files.
If you make any X request involving a client window, you have to
meta_error_trap_push() around the call; this is not necessary for
X requests on the frame windows.
Files in the core (display.[hc], window.[hc]) are not supposed to include
gdk.h or gtk.h.
Remember that not all windows have frames, and window->frame can
be NULL.
Remember that strings stored in X properties are not in UTF-8, and they
have to end up in UTF-8 before we try putting them through Pango.
The code could use cleanup in a lot of places, feel free to do so.
If you make any X request involving a client window, you have to
meta_error_trap_push() around the call; this is not necessary for X
requests on the frame windows.
Metacity is ideally a fully ICCCM and EWMH-compliant window manager.
Reading these specifications is a useful first step to understanding
the role of a window manager on an X11 desktop and the standards and
conventions on which X11 desktops are based. Please refer to the
COMPLIANCE file for additional information on these specifications and
metacity's compliance therewith.
Remember that not all windows have frames, and window->frame can be NULL.
Other important reading & where to get started
Extra reading
There are some other important things to read to get oriented as well.
These are:
http://pobox.com/~hp/features.html
rationales.txt
doc/code-overview.txt
It pays to read http://pobox.com/~hp/features.html in order
to understand the philosophy of Metacity.
The rationales.txt file has two things: (1) a list of design choices with
links in the form of bugzilla bugs that discuss the issue, and (2) a list
outstanding bug categories, each of which is tracked by a particular
tracker bug in bugzilla from which you can find several closely related
bug reports.
doc/code-overview.txt provides a fairly good overview of the code,
including coverage of the function of the various files, the main
structures and their relationships, and places to start looking in the
code tailored to general categories of tasks.
Ideas for tasks to work on
There are a variety of things you could work on in the code. You may
have ideas of your own, but in case you don't, let me provide a list of
ideas you could choose from:
If you're ambitious, there's a list of things Havoc made that he'd really
like to see tackled, which you can find at
http://log.ometer.com/2004-05.html. Be sure to double check with someone
to make sure the item is still relevant if you're interested in one of
these. Another place to look for ideas, of course, is bugzilla. One can
just do queries and look for things that look fixable.
However, perhaps the best way of getting ideas of related tasks to work
on, is to look at the second half of the rationales.txt file, which tries
to group bugs by type.

View File

@@ -3,3 +3,5 @@ SUBDIRS=src po doc
EXTRA_DIST=HACKING rationales.txt \
intltool-extract.in intltool-merge.in intltool-update.in
DISTCLEANFILES = intltool-extract intltool-merge intltool-update

436
NEWS
View File

@@ -1,3 +1,439 @@
2.9.34
==
This is an unstable release to coincide with the release of Gnome
2.10.0 release candidate 1 (2.9.92).
Thanks to Aidan Delaney, Elijah Newren, and Joe Marcus Clarke for
fixes in this release.
- Fix crash that occurs when stupid apps claim that a window is its
own parent (Elijah, Joe) [#168207]
- Prevent the visual bell from changing the focus window (Elijah)
[#123366]
- Make sure that icons in the alt-tab popup are dimmed for all hidden
windows, not just minimized ones (Aidan) [#168455]
Translations
Elnaz Sarbar (fa), Ankit Patel (gu), Luca Ferretti (it),
Reinout van Schouwen (nl), Gnome PL Team (pl),
Alexandre Folle de Menezes (pt_BR)
2.9.21
==
This is an unstable release heading towards Gnome 2.10. Since there
have been an awful lot of fixes since Gnome 2.10 Beta 2, we are hoping
to get an extra week of wider testing of all these changes before hard
code freeze.
Thanks to Aidan Delaney, Crispin Flowerday, Elijah Newren, and Joe
Marcus Clarke for fixes in this release.
- Make sure we get a valid timestamp if one doesn't come with the
_NET_ACTIVE_WINDOW message (Elijah, Crispin) [#166728]
- Avoid sending CurrentTime to our XSetInputFocus wrappers, but
handle it better in case we miss any cases (Elijah) [#166732]
- Remove useless function call (Aidan) [#166730]
- Avoid new windows being obscured by the focus window and thus
possibly lost (Elijah) [#166524]
- Don't unconditionally place not-to-be-focused windows, such as
splashscreens, below the focus window (Elijah) [#167042]
- Raise the ancestor of a window instead of the window itself
(Elijah) [#166894]
- Cover half a dozen issues needed to fix a variety of rare timestamp
bugs (Elijah) [#167358]
- Fix a possible crash on logout (Joe) [#167935]
- Fix an obscure xinerama placement bug with windows that are too
large to fit in the workarea in both dimensions (Elijah) [#166757]
- Ignore all focus and focus-stealing-prevention code in
meta_window_show when not showing the window for the first time
(Elijah) [#167199]
- when receiving a _NET_ACTIVE_WINDOW message, switch to the desktop
where the window is located before activating instead of moving the
window to the current desktop (Elijah) [#128380]
- Handle _NET_CURRENT_DESKTOP messages that come with timestamps
(Elijah) [#161361]
- Handle keynav vs. mousenav in mouse and sloppy focus modes (Elijah)
[#167545]
Translations
Jordi Mallach (ca), Martin Willemoes Hansen (da),
Kostas Papadimas (el), David Lodge (en_GB),
Francisco Javier F. Serrador (es), T<>ivo Leedj<64>rv (et),
Christophe Merlet (RedFox) (fr), Takeshi AIHANA (ja),
Young-Ho, Cha (ko), Kjartan Maraas (nb), Michiel Sikkes (nl),
Kjartan Maraas (no), Duarte Loreto (pt), Leonid Kanter (ru),
Marcel Telka (sk), Laurent Dhima (sq), Maxim Dziumanenko (uk)
2.9.13
==
This is an unstable release to coincide with the release of Gnome
2.10.0 Beta 2 (2.9.91).
Thanks to Elijah Newren, Balamurali Viswanathan, Stephane Loeuillet,
Benjamin Kahn, Garrett (LeSage?), Jose Moya, Dave Ahlswede, Arvind
Samptur, John Paul Wallington, Tim Herold, Muktha Narayan, Sinisa
Segvic, Owen Taylor, Crispin Flowerday, "RHEL-3", KWin, and Google for
improvements in this release.
- Refuse to focus a window with a modal transient, and focus the
transient instead (Elijah) [#164716]
- Make sure we get gconf notifications about the terminal command
changing (Balamurali) [#160934]
- Specify encoding of src/metacity.desktop.in (Stephane) [#151850]
- New 48x48 default icon (Benjamin, Garrett) [#160660]
- Add man pages for metacity-window-demo and metacity-theme-viewer
(Jose, Dave) [#143513]
- Fix minimized window display in workspace switcher after relogin
with a saved session (Elijah) [#164677]
- Ignore sticky windows for non-active workspaces (Elijah) [#165259]
- Don't wireframe when accessibility is on, it apparently causes a
desktop wide freeze. (Arvind) [#159538]
- Keep tooltip on screen horizontally for xinerama (John) [#165261]
- Stick and unstick transients with their parent automatically
(Elijah) [#152283]
- Shaded windows should not show up in pagers (Elijah) [#165377]
- Treat splashscreens same as other windows for stacking (Elijah)
[#165243]
- Plug a pair of leaks (Elijah) [#165378]
- Take into account the appropriate list of windows when placing a
new one (Elijah) [#165381]
- Correct misleading and inaccurate wording (Elijah) [#165380]
- Handle xcomposite pkgconfig version regression (Tim) [#149368]
- Make the warn-about-buggy-session-management-apps dialog be sticky
(Elijah) [#164745]
- Fix the problem with fullscreen windows on a different xinerama
monitor not staying on top ("RHEL-3") [#156511]
- Make the unfocussed title bar distinguishable in cases where it
otherwise isn't for the Atlanta, Simple, and Bright themes (Muktha)
[#125291]
- Correct the stacking when returning from fullscreen mode (Elijah)
[#165718]
- Focus parents of dismissed transient windows in preference to the
window that most recently had keyboard focus (Elijah) [#157360]
- Make sure window->border_only is initialized so we don't get random
windows without decorations (Elijah, Sinisa, Owen) [#145131]
- Add period to the end of reduced_resources' description (Dave)
[#165780]
- If activation requests are too old, set the demands_attention hint
instead of actually activating (Elijah, Crispin) [#166395]
- Ignore xconfigurerequest events for stacking when it should be safe
to do so (Elijah, Crispin, KWin, Google) [#166395]
- Set a _METACITY_VERSION property (a utf8 string) on the WM check
window (Elijah) [#165350]
Translations
Vladimir Petkov (bg), Miloslav Trmac (cs), Frank Arnold (de),
Adam Weinberger (en_CA), David Lodge (en_GB),
Francisco Javier F. Serrador (es), Pauli Virtanen (fi),
Young-Ho, Changwoo Ryu (ko), <20>ygimantas Berucka (lt),
Kjartan Maraas (nb), Kjartan Maraas (no), Duarte Loreto (pt),
Marcel Telka (sk), Christian Rose (sv),
Theppitak Karoonboonyanan (th)
2.9.8
==
This is a brown paper bag release to cover up the crash I introduced
in version 2.9.5. Thanks to Sebastien Bacher and the bleeding edge
Ubuntu users for quickly catching the occasional crash that my fix in
#123576 could cause, and for verifying that the patch I made fixed
this issue (I couldn't duplicate).
- Don't forget to initialize display->grab_old_window_stacking
[#165093]
2.9.5
==
This is an unstable release to coincide with the release of Gnome
2.10.0 Beta 1 (2.9.90).
Thanks to Vincent Noel, Elijah Newren, and John Paul Wallington for
fixes in this release.
- Restore original stacking when aborting an alt-esc window switch
operation (Elijah) [#123576]
- Fix vertical maximization for second screen (John) [#163420]
- Show labels in bold for windows that demand attention (Vincent)
[#164590]
- In the tab task switcher popup, dim the window icon and put its
name between brackets when the window is minimized (Vincent)
[#136666]
- Correct highlighting of windows in workspace switcher popup
(Elijah) [#163450]
Translations
zh_CN (Funda Wang), nb (Kjartan Maraas), nn (Kjartan Maraas), de
(Frank Arnold)
2.9.3
==
This is an unstable release to coincide with the release of Gnome 2.9.4.
Thanks to Leena Gunda, Thomas Fitzsimmons, and mild7 users sourceforge
net, and Elijah Newren for fixes in this release.
- Don't focus the panel on click (Elijah) [#160470, and others]
- Make sure the save session dialog appears focused (Elijah) [#162983]
- Correctly restore size of window when double clicking the titlebar
to unmaximize (Leena) [#161236]
- Install schema data from builddir not srcdir (Thomas) [#161417]
- Provide more documentation to make it easier for people to
contribute to Metacity (Elijah) [#162646]
- Allow users to move the window around immediately after
double-clicking to shade (Elijah) [#90290]
- Focus windows that manually position themselves too (Elijah) [#107347]
- Don't show window menu if all options are invalid (Elijah) [#148915]
- Exclude windows with skip_taskbar hint set from the alt-tab list;
they'll appear in the ctrl-alt-tab list instead. (mild7 users
sourceforge net) [#106249]
- Wrap XSetInputFocus to make display->expected_focus_window more
reliable (Elijah) [#154598]
- Remove conflict between windows on multiple workspaces and hidden
being a global quantity (Elijah) [#156182]
Translations
es (Francisco Javier F. Serrador), sv (Christian Rose), cs (Miloslav
Trmac), ja (Takeshi AIHANA)
2.9.2
==
This is an unstable release to coincide with the release of Gnome 2.9.3.
Thanks to Alex Duggan, ash AT contact bg, Elijah Newren, and Baptiste
Mille-Mathias for fixes in this release.
- Add a missing period at the end of a sentence (Baptiste) [#158210]
- When snap-moving don't snap to hidden windows, such as transients
of minimized windows (Elijah) [#157180]
- Focus the desktop when showing it (Elijah) [#159257]
- Remove deprecated capplet (Alex, ash) [#160753]
Translations
da (Martin Willemoes Hansen), bg (Alexander Shopov), en_CA (Adam
Weinberger)
2.9.1
==
This is an unstable release heading towards Gnome 2.10, released a
little late for Gnome 2.9.2 but there weren't many changes anyway this
time...
Thanks to Benjamin Kahn, Marco Pesenti Gritti, James Henstridge, and
Vincent Untz for fixes/features in this release.
- gnome-panel-screenshot was renamed to gnome-screenshot (Vincent) [#157529]
- Update build stuff (use newer automake, etc.) (James)
- Fix build out of src directory (Marco) [#158325]
- Use a better default application icon (Benjamin) [#160373]
Translations
da (Martin Willemoes Hansen), fr(Christophe Merlet, Baptiste
Mille-Mathias), lt(<28>ygimantas Berucka), ja(Takeshi AIHANA)
2.9.0
==
This is an unstable release heading towards Gnome 2.10.
Thanks to Rob Adams, Anders Carlsson, Elijah Newren, Soeren Sandmann,
and Vincent Untz for fixes and features in this release.
- Add a keybinding to launch a terminal (Vincent) [#154232]
- Correct the requested number of keycodes (Rob) [#155247]
- Add tracker bugs to rationales.txt file
- Make the "showing desktop" mode be per-workspace instead of
per-screen. (Elijah) [#142198]
- Don't try to use an ARGB visual at all if the depth isn't
32-bit. This caused major slowdowns with Composite
enabled. (Anders)
- Fix the modifier key breakage introduced by an Xorg
change. (Soeren) [#151554]
- Update _NET_WM_STATE_HIDDEN so the pager on the panel will know
whether to display windows as visible or hidden (Elijah) [#105665]
- Fix the alt-tab order--if the most recently used window is not
focused, start alt tabbing with that window instead of the one
after it (Elijah) [#156251]
- Don't lower newly mapped windows when they're denied focus if they
are transients of the focused window. Instead, defocus the
currently focused window (Elijah) [#151996]
- Re-enable focus stealing prevention (Elijah)
Translations
es(Francisco Javier F. Serrador), sq(Laurent Dhima), sr(Danilo <20>egan),
cs(Miloslav Trmac), en_CA(Adam Weinberger), en_GB(David Lodge)
2.8.6
==
This is a stable release for Gnome 2.8.1.
Thanks to the Ken Harris, Kjartan Maraas, and the tireless efforts of
Elijah Newren for fixes in this release.
Fixes
* Ensure the correct window is focused when minimizing (Elijah)
* Fix keynav with mouse focus (Elijah)
* Fix several race conditions in window focusing (Elijah)
* Focus the top window when lowering by frame click (Ken)
* Fix some compiler warnings (Kjartan)
* Fix some valgrind-reported errors (Elijah)
* Fix some potential issues with autoraising windows (Elijah)
Translations
* en_CA(Adam Weinberger), it(Luca Ferretti)
2.8.5
==
This is a stable release for Gnome 2.8. Only translations and some
new developer documentation were added since the last unstable release.
This release boasts improved standards-compliance and a number of
bug fixes since the last stable release.
Translations
* ar(Abdulaziz Al-Arfaj), cs(Miloslav Trmac), cy(Dafydd Harries),
en_GB(David Lodge), fr(Christophe Merlet (RedFox)),
nn(<28>smund Skj<6B>veland), or(Gora Mohanty),
pr_BR(Gustavo Noronha Silva), ro(Mugurel Tudor),
th(Paisa Seeluangsawat), tr(Baris Cicek), zh_TW(Woodman Tuen)
2.8.4
==
This release features a number of bug fixes, and also the disabling of
the focus-stealing-prevention code (we're entering hard code freeze in
Gnome so it's too late to fix the remaining issues, especially since
it requires several patches to modules other than Metacity).
Thanks to Havoc Pennington, Soeren Sandmann, Elijah Newren, and Rich
Wareham for fixes in this release
Fixes
* track the last_xor_rect, for wireframe painting (Havoc)
* Move wireframe code before grab is released to prevent endless
loops with fullscreen windows. (Soeren)
* Make dialogs that Metacity shows follow focus-stealing-prevention
conventions. (Elijah; part of #149028)
* add render extension check to the display, don't build the
compositing manager by default, use an ARGB visual when available
for the window frame (Rich Wareham; various tweaks added later by
Havoc)
* move the have_xrender variable initialization up in the file since
it can be set as part of composite check (Havoc)
* make argb stuff compile, add some code from xcompmgr (Havoc)
* fix an assertion failure that would occur after increasing the
number of workspaces; fix stacking order when a window is denied
focus (Elijah; #150615)
* disable some compositor code that wasn't working, don't grab the
server during repaint, various set_background fixes and
refactoring (Havoc)
Translations
* az(Metin Amiroff), bs(Kemal Sanjta), ca(Jordi Mallach),
el(Kostas Papadimas), es(Francisco Javier F. Serrador),
eu(I<><49>aki Larra<72><61>aga Murgoitio), fi(Pauli Virtanen),
nb(Kjartan Maraas), sq(Laurent Dhima), uk(Maxim Dziumanenko)
2.8.3
==
Some important bug fixes in this release, including somy a11y bugs,
and a compile issue on Solaris.
Thanks to Rob Adams, Bill Haneman, Peter O'Shea, Mike Castle, Soeren
Sandman, Elijah Newren, and Havoc Pennington for fixes in this
release.
Fixes
* Adjust the MRU list when preventing focus stealing (Elijah)
* Ensure that we maintain a focus window when switching workspaces
in mouse focus mode (Elijah)
* Some improvements in the showing desktop mode, and window
activation (Elijah)
* Make sure cursors changes are handled correctly (Havoc, Soeren)
* Some fixes to the window menu (Rob)
* Fix a compile issue on Solaris (Peter, Mike)
* Allow struts to go past the middle of the screen, provided there's
a gap between them, fixing an issue with gnome magnifier (Bill)
Translations
* fi (Pauli Virtanen), ja (Takeshi AIHANA), ko (Young-Ho, Cha),
pl (Gnome PL Team), ru (Dmitry G. Mastrukov), sr (Danilo <20>Ł<EFBFBD>egan),
tk (Gurban M. Tewekgeli), zh_CN (Funda Wang)
2.8.2
===
Many bugfixes and better support for the freedesktop.org EWMH spec.
Thanks to Rob Adams, Anders Carlsson, Elijah Newren, Soeren Sandmann,
Emil Soleyman-Zomalan, Michael Terry, and Jeff Waugh for fixes in this
release.
- set titlebar_uses_system_font = false (it was ugly)
- make naming for "move a window"/"move the window"/"move window"
more consistent (fixes #142235)
- Add trailing quotes to keybinding explanation text.
- support for EWMH update counter spec & add compensation events
when events are ignored. (fixes #143333 and #109362)
- Fix focus bugs: remove race condition on window close/minimize
(#131582), make focus choice consistent for each focus mode
(#135810), choose correct focus window when "un-showing the
desktop (#144900), make sure correct window is focused when using
the workspace switcher (#120100).
- Use meta_topic instead of meta_warning when failing to connect to
a session manager; reduces metacity verbosity. (fixes #136218)
- Make meta_window_delete take a timestamp, and be sure to pass it
one.
- Add support for EWMH _NET_WM_USER_TIME spec. This enables part of
preventing focus stealing. (bug #118372) Also fix bug with
windows not being focused on unminimizing caused by original
patch. (also bug #118372)
- 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.
2.8.1
===
Thanks to Olivier Crete, Jarrod Johnson, Neil Muller, Elijah Newren,
Mark McLoughlin, Rob Adams, and foser AT gentoo.org for fixes in this
release.
- make the --enable-xinerama switch work properly
- prevent unwanted grab op from occurring
- don't down-size nitems from a gulong to an int
- add a value type check for the visual/audible bell gconf settings
- make the no sm support warning resizable
- more translations
2.8.0
===
No code changes in this release, but some new translations.
2.7.1
===
Thanks to Rob Adams for fixes in this release.
- bug #122016 - fix a focus race
- Change move_to_workspace_left/right/up/down keybindings to
<Control><Alt><Shift> arrow to avoid conflicting with new
keybindings in spacial nautilus.
- fix dialog stacking order issues so e.g. panel properties
dialog is above the panel
2.7.0
===

4
README
View File

@@ -6,9 +6,9 @@ on UNIX keyboards.
The first release of Metacity was version 2.3. Metacity has no need for
your petty hangups about version numbers.
The stable releases so far are 2.4.x, 2.6.x
The stable releases so far are 2.4.x, 2.6.x, 2.8.0, 2.8.1, 2.8.1.x, 2.8.5-
Unstable branches are 2.3.x, 2.5.x
Unstable branches are 2.3.x, 2.5.x, 2.8.2-4, 2.9.x)
COMPILING METACITY
===

View File

@@ -12,35 +12,36 @@ FILE=src/display.c
DIE=0
AUTOMAKE=automake-1.4
ACLOCAL=aclocal-1.4
($AUTOMAKE --version) < /dev/null > /dev/null 2>&1 || {
AUTOMAKE=automake
ACLOCAL=aclocal
}
(autoconf --version) < /dev/null > /dev/null 2>&1 || {
echo
echo "You must have autoconf installed to compile $PROJECT."
echo "Download the appropriate package for your distribution,"
echo "or get the source tarball at ftp://ftp.gnu.org/pub/gnu/"
echo "or get the source tarball at http://ftp.gnu.org/gnu/autoconf/"
DIE=1
}
($AUTOMAKE --version) < /dev/null > /dev/null 2>&1 || {
echo
echo "You must have automake installed to compile $PROJECT."
echo "Get ftp://sourceware.cygnus.com/pub/automake/automake-1.4.tar.gz"
echo "(or a newer version if it is available)"
DIE=1
}
if automake-1.9 --version < /dev/null > /dev/null 2>&1; then
AUTOMAKE=automake-1.9
ACLOCAL=aclocal-1.9
elif automake-1.8 --version < /dev/null > /dev/null 2>&1; then
AUTOMAKE=automake-1.8
ACLOCAL=aclocal-1.8
elif automake-1.7 --version < /dev/null > /dev/null 2>&1; then
AUTOMAKE=automake-1.7
ACLOCAL=aclocal-1.7
else
echo
echo "You must have automake >= 1.7 installed to compile $PROJECT."
echo "Get http://ftp.gnu.org/gnu/automake/automake-1.9.3.tar.bz2"
echo "(or a newer version if it is available)"
DIE=1
fi
(grep "^AM_PROG_LIBTOOL" configure.in >/dev/null) && {
(libtool --version) < /dev/null > /dev/null 2>&1 || {
echo
echo "**Error**: You must have \`libtool' installed to compile $PROJECT."
echo "Get ftp://ftp.gnu.org/pub/gnu/libtool-1.2d.tar.gz"
echo "Get http://ftp.gnu.org/gnu/libtool/libtool-1.5.10.tar.gz"
echo "(or a newer version if it is available)"
DIE=1
}
@@ -84,10 +85,7 @@ if test -z "$*"; then
echo "to pass any to it, please specify them on the $0 command line."
fi
case $CC in
*xlc | *xlc\ * | *lcc | *lcc\ *) am_opt=--include-deps;;
esac
topdir=`pwd`
for coin in .
do
dr=`dirname $coin`
@@ -95,51 +93,40 @@ do
echo skipping $dr -- flagged as no auto-gen
else
echo processing $dr
macrodirs=`sed -n -e 's,AM_ACLOCAL_INCLUDE(\(.*\)),\1,gp' < $coin`
( cd $dr
aclocalinclude="$ACLOCAL_FLAGS"
for k in $macrodirs; do
if test -d $k; then
aclocalinclude="$aclocalinclude -I $k"
##else
## echo "**Warning**: No such directory \`$k'. Ignored."
fi
done
if grep "^AM_GLIB_GNU_GETTEXT" configure.in >/dev/null; then
if grep "sed.*POTFILES" configure.in >/dev/null; then
: do nothing -- we still have an old unmodified configure.in
else
echo "Creating $dr/aclocal.m4 ..."
test -r $dr/aclocal.m4 || touch $dr/aclocal.m4
echo "Running glib-gettextize... Ignore non-fatal messages."
echo "no" | glib-gettextize --force --copy
echo "Making $dr/aclocal.m4 writable ..."
test -r $dr/aclocal.m4 && chmod u+w $dr/aclocal.m4
fi
fi
if grep "^AC_PROG_INTLTOOL" configure.in >/dev/null; then
echo "Running intltoolize..."
intltoolize --force --copy --automake
fi
if grep "^AM_PROG_LIBTOOL" configure.in >/dev/null; then
echo "Running libtoolize..."
libtoolize --force --copy
cd $dr
if grep "^AM_GLIB_GNU_GETTEXT" configure.in >/dev/null; then
if grep "sed.*POTFILES" configure.in >/dev/null; then
: do nothing -- we still have an old unmodified configure.in
else
echo "Creating $dr/aclocal.m4 ..."
test -r $dr/aclocal.m4 || touch $dr/aclocal.m4
echo "Running glib-gettextize... Ignore non-fatal messages."
echo "no" | glib-gettextize --force --copy || exit $?
echo "Making $dr/aclocal.m4 writable ..."
test -r $dr/aclocal.m4 && chmod u+w $dr/aclocal.m4
fi
fi
if grep "^AC_PROG_INTLTOOL" configure.in >/dev/null; then
echo "Running intltoolize..."
intltoolize --force --copy --automake || exit $?
fi
if grep "^AM_PROG_LIBTOOL" configure.in >/dev/null; then
echo "Running libtoolize..."
libtoolize --force --copy || exit $?
fi
echo "Running $ACLOCAL $aclocalinclude ..."
$ACLOCAL $aclocalinclude
echo "Running $ACLOCAL $ACLOCAL_FLAGS ..."
$ACLOCAL $ACLOCAL_FLAGS || exit $?
echo "Running autoconf ..."
autoconf || exit $?
if grep "^AC_CONFIG_HEADERS" configure.in >/dev/null; then
echo "Running autoheader..."
autoheader || exit $?
fi
echo "Running $AUTOMAKE..."
$AUTOMAKE --add-missing --force --gnu || exit $?
if grep "^AM_CONFIG_HEADER" configure.in >/dev/null; then
echo "Running autoheader..."
autoheader
fi
echo "Running $AUTOMAKE --gnu $am_opt ..."
$AUTOMAKE --add-missing --gnu $am_opt
echo "Running autoconf ..."
autoconf
)
cd $topdir
fi
done
@@ -150,7 +137,7 @@ cd "$ORIGDIR"
if test x$NOCONFIGURE = x; then
echo Running $srcdir/configure $conf_flags "$@" ...
$srcdir/configure $conf_flags "$@" \
&& echo Now type \`make\' to compile $PROJECT || exit 1
&& echo Now type \`make\' to compile $PROJECT || exit $?
else
echo Skipping configure process.
fi

View File

@@ -1,21 +1,23 @@
AC_PREREQ(2.50)
AC_INIT(src/display.c)
AM_CONFIG_HEADER(config.h)
# Fibonacci sequence for micro version numbering:
# 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987
AC_INIT([metacity], [2.9.34],
[http://bugzilla.gnome.org/enter_bug.cgi?product=metacity])
# 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987
# releases on a branch add a 4th version like 2.4.21.1
AM_INIT_AUTOMAKE(metacity, 2.7.0)
AC_CONFIG_SRCDIR(src/display.c)
AC_CONFIG_HEADERS(config.h)
AM_INIT_AUTOMAKE
AM_MAINTAINER_MODE
# Honor aclocal flags
ACLOCAL="$ACLOCAL $ACLOCAL_FLAGS"
AC_SUBST(ACLOCAL_AMFLAGS, "\${ACLOCAL_FLAGS}")
GETTEXT_PACKAGE=metacity
AC_SUBST(GETTEXT_PACKAGE)
AC_DEFINE_UNQUOTED(GETTEXT_PACKAGE,"$GETTEXT_PACKAGE",[Name of default gettext domain])
AM_MAINTAINER_MODE
AC_PROG_INTLTOOL([0.21])
AC_PROG_CC
AC_ISC_POSIX
@@ -101,57 +103,72 @@ changequote([,])dnl
METACITY_PC_MODULES='gtk+-2.0 >= 2.2.0 pango >= 1.2.0'
AC_ARG_ENABLE(config-dialog, [ --enable-config-dialog enable the config dialog that you need with GNOME 2.0 (obsolete with GNOME 2.2)],,enable_config_dialog=no)
AM_CONDITIONAL(BUILD_CONFIG_DIALOG, test x$enable_config_dialog = xyes)
if test x$enable_config_dialog = xyes; then
AC_DEFINE(BUILD_CONFIG_DIALOG,1,[Build configuration dialog])
fi
AC_ARG_ENABLE(gconf, [ --disable-gconf disable gconf usage, for embedded/size-sensitive non-GNOME builds],,enable_gconf=yes)
AC_ARG_ENABLE(gconf,
AC_HELP_STRING([--disable-gconf],
[disable gconf usage, for embedded/size-sensitive non-GNOME builds]),,
enable_gconf=yes)
if test x$enable_gconf = xyes; then
AC_DEFINE(HAVE_GCONF,1,[Build with gconf support])
METACITY_PC_MODULES="$METACITY_PC_MODULES gconf-2.0 >= 1.2.0"
fi
AC_ARG_ENABLE(verbose-mode, [ --disable-verbose disable metacity's ability to do verbose logging, for embedded/size-sensitive custom builds],,enable_verbose_mode=yes)
AC_ARG_ENABLE(verbose-mode,
AC_HELP_STRING([--disable-verbose],
[disable metacity's ability to do verbose logging, for embedded/size-sensitive custom builds]),,
enable_verbose_mode=yes)
if test x$enable_verbose_mode = xyes; then
AC_DEFINE(WITH_VERBOSE_MODE,1,[Build with verbose mode support])
fi
AC_ARG_ENABLE(sm, [ --disable-sm disable metacity's session management support, for embedded/size-sensitive custom non-GNOME builds],,enable_sm=auto)
AC_ARG_ENABLE(sm,
AC_HELP_STRING([--disable-sm],
[disable metacity's session management support, for embedded/size-sensitive custom non-GNOME builds]),,
enable_sm=auto)
AC_ARG_ENABLE(startup-notification, [ --disable-startup-notification disable metacity's startup notification support, for embedded/size-sensitive custom non-GNOME builds],,enable_startup_notification=auto)
AC_ARG_ENABLE(startup-notification,
AC_HELP_STRING([--disable-startup-notification],
[disable metacity's startup notification support, for embedded/size-sensitive custom non-GNOME builds]),,
enable_startup_notification=auto)
AC_ARG_ENABLE(compositor, [ --disable-compositor disable metacity's compositing manager],,enable_compositor=auto)
AC_ARG_ENABLE(compositor,
AC_HELP_STRING([--disable-compositor],
[disable metacity's compositing manager]),,
enable_compositor=auto)
AC_ARG_ENABLE(xsync, [ --disable-xsync disable metacity's use of the XSync extension],,enable_xsync=auto)
AC_ARG_ENABLE(xsync,
AC_HELP_STRING([--disable-xsync],
[disable metacity's use of the XSync extension]),,
enable_xsync=auto)
AC_ARG_ENABLE(shape, [ --disable-shape disable metacity's use of the shaped window extension],,enable_shape=auto)
AC_ARG_ENABLE(render,
AC_HELP_STRING([--disable-render],
[disable metacity's use of the RENDER extension]),,
enable_render=auto)
AC_ARG_ENABLE(shape,
AC_HELP_STRING([--disable-shape],
[disable metacity's use of the shaped window extension]),,
enable_shape=auto)
## try definining HAVE_BACKTRACE
AC_CHECK_HEADERS(execinfo.h, [AC_CHECK_FUNCS(backtrace)])
ALL_LINGUAS="am ar az be bg bn ca cs cy da de el en_GB es fa fi fr ga gl he hi hr hu id is it ja ko lt lv mk ml mn ms nl nn no pl pt pt_BR ro ru sl sk sq sr sr@Latn sv ta tr uk vi wa zh_CN zh_TW"
ALL_LINGUAS="am ar az be bg bn bs ca cs cy da de el en_CA en_GB es et eu fa fi fr ga gl gu he hi hr hu id is it ja ko lt lv mk ml mn ms nb nl nn no or pa pl pt pt_BR ro ru sl sk sq sr sr@Latn sv ta th tk tr uk vi wa zh_CN zh_TW"
AM_GLIB_GNU_GETTEXT
## here we get the flags we'll actually use
PKG_CHECK_MODULES(METACITY_MESSAGE, gtk+-2.0 >= 2.2.0)
PKG_CHECK_MODULES(METACITY_WINDOW_DEMO, gtk+-2.0 >= 2.2.0)
if test x$enable_config_dialog = xyes; then
PKG_CHECK_MODULES(METACITY_PROPS, gtk+-2.0 >= 2.2.0 gconf-2.0 >= 1.1.9 libglade-2.0)
fi
if $PKG_CONFIG --atleast-version 1.2.0 pangoxft; then
echo "pangoxft found"
else
AC_MSG_ERROR("Pango 1.2.0 or greater based on Xft2 is required")
fi
STARTUP_NOTIFICATION_VERSION=0.4
STARTUP_NOTIFICATION_VERSION=0.7
AC_MSG_CHECKING([Startup notification library >= $STARTUP_NOTIFICATION_VERSION])
if $PKG_CONFIG --atleast-version $STARTUP_NOTIFICATION_VERSION libstartup-notification-1.0; then
have_startup_notification=yes
@@ -177,7 +194,11 @@ else
echo "Building without libstartup-notification"
fi
XCOMPOSITE_VERSION=1.0
## init this, it gets set either in the compositor check below
## or the render-specific check later
have_xrender=no
XCOMPOSITE_VERSION=0.2
AC_MSG_CHECKING([Xcomposite >= $XCOMPOSITE_VERSION])
if $PKG_CONFIG --atleast-version $XCOMPOSITE_VERSION xcomposite; then
have_xcomposite=yes
@@ -190,7 +211,8 @@ if test x$enable_compositor = xyes; then
have_xcomposite=yes
echo "CompositeExt support forced on"
elif test x$enable_compositor = xauto; then
true
echo "Not building compositing manager by default now, must enable explicitly to get it. And it doesn't work, so don't bother unless you want to hack on it..."
have_xcomposite=no
else
have_xcomposite=no
fi
@@ -199,10 +221,43 @@ if test x$have_xcomposite = xyes; then
echo "Building with CompositeExt"
METACITY_PC_MODULES="$METACITY_PC_MODULES xcomposite >= $XCOMPOSITE_VERSION xfixes xrender xdamage"
AC_DEFINE(HAVE_COMPOSITE_EXTENSIONS, , [Building with compositing manager support])
## force on render also
have_xrender=yes
else
echo "Building without compositing manager"
fi
## if no compositor, still possibly enable render
if test x$have_xcomposite = xno; then
XRENDER_VERSION=0.0
AC_MSG_CHECKING([xrender >= $XRENDER_VERSION])
if $PKG_CONFIG --atleast-version $XRENDER_VERSION xrender; then
have_xrender=yes
else
have_xrender=no
fi
AC_MSG_RESULT($have_xrender)
if test x$enable_render = xyes; then
have_xrender=yes
echo "Render support forced on"
elif test x$enable_render = xauto; then
true
else
have_xrender=no
fi
if test x$have_xrender = xyes; then
echo "Building with Render"
METACITY_PC_MODULES="$METACITY_PC_MODULES xrender >= $XRENDER_VERSION"
fi
fi ## have_composite
if test x$have_xrender = xyes; then
AC_DEFINE(HAVE_RENDER, , [Building with Render extension support])
fi
PKG_CHECK_MODULES(METACITY, $METACITY_PC_MODULES)
AC_PATH_XTRA
@@ -213,8 +268,10 @@ ALL_X_LIBS="$X_LIBS $X_PRE_LIBS -lX11 $X_EXTRA_LIBS"
metacity_save_cppflags="$CPPFLAGS"
CPPFLAGS="$CPPFLAGS $X_CFLAGS"
AC_ARG_ENABLE(xinerama,[ --disable-xinerama disable metacity's use of the Xinerama extension],
try_xinerama=no,try_xinerama=yes)
AC_ARG_ENABLE(xinerama,
AC_HELP_STRING([--disable-xinerama],
[disable metacity's use of the Xinerama extension]),
try_xinerama=$enable_xinerama,try_xinerama=yes)
use_solaris_xinerama=no
use_xfree_xinerama=no
@@ -391,9 +448,10 @@ if test x$enable_gconf = xyes; then
AM_GCONF_SOURCE_2
fi
AC_OUTPUT([
AC_CONFIG_FILES([
Makefile
doc/Makefile
doc/man/Makefile
src/Makefile
src/wm-tester/Makefile
src/libmetacity-private.pc
@@ -402,6 +460,8 @@ src/themes/Makefile
po/Makefile.in
])
AC_OUTPUT
if test x$enable_gconf = xno; then
echo "*** WARNING WARNING WARNING WARNING WARNING"
echo "*** Building without GConf"
@@ -437,6 +497,7 @@ metacity-$VERSION:
Shape extension: ${found_shape}
Resize-and-rotate: ${found_randr}
Xsync: ${found_xsync}
Deprecated config dialog: ${enable_config_dialog}
Render: ${have_xrender}
"
echo "This is the UNSTABLE branch of metacity, use 2.6.x for stable (gnome-2-4 branch in CVS)"
echo "This is the UNSTABLE branch of metacity"
echo "Use 2.8.x (where x > 5) for stable (gnome-2-8 branch in CVS)"

View File

@@ -1,2 +1,3 @@
SUBDIRS = man
EXTRA_DIST=theme-format.txt metacity-theme.dtd dialogs.txt

185
doc/code-overview.txt Normal file
View File

@@ -0,0 +1,185 @@
This is not meant to be comprehensive by any means. Rather it is
meant as just a brief overview of some of the bigger structures and
files, with guides for a variety of task categories providing places
to start looking in the code and things to look for.
Overview
Jobs of various files
Major data structures and their relationships
Getting started -- where to look
Jobs of various files
src/window.c is where all the guts of the window manager live. This is
basically the only remotely scary file.
src/frames.c is the GtkWidget that handles drawing window frames.
src/core.h defines the interface used by the GTK portion of the window
manager to talk to the other portions. There's some cruft in here that's
unused, since nearly all window operations have moved out of this file so
frameless apps can have window operations.
src/ui.h defines the interface the plain Xlib portion of the window
manager uses to talk to the GTK portion.
src/theme.c and src/theme-parser.c have the theme system; this is
well-modularized from the rest of the code, since the theme viewer app
links to these files in addition to the WM itself.
Major data structures and their relationships
Major structs have a "Meta" prefix, thus MetaDisplay, MetaScreen,
MetaWindow, etc. This serves as a way of namespacing in C. It also has
the side effect of avoiding conflicts with common names that X already
uses such as Display, Screen, Window, etc. Note that when I refer to a
display below, I'm meaning a MetaDisplay and not a Display.
Don't confuse displays and screens. While Metacity can run with multiple
displays, it is kind of useless since you might as well just run two
copies of Metacity. However, having multiple screens per display is
useful and increasingly common (known as "multiscreen" and "xinerama"
setups, where users make use of more than one monitor). You should
basically think of a display as a combination of one or more monitors
with a single keyboard (...and usually only one mouse).
There is also a significant difference between multiscreen and xinerama
as well. Basically, each MetaScreen is a root window (root node in the
tree of windows). With Xinerama, a single root window appears to span
multiple monitors, whereas with multiscreen a root window is confined to
a single monitor. To re-emphasize the distinction between a display and
a screen, the pointer and keyboard are shared between all root windows
for a given display.
The display keeps track of a lot of various global quantities, but in
particular has a compositor and a list (GList) of screens.
A compositor is an opaque structure (only defined in compositor.c),
meaning that you'll only reference the API for it. It handles (or will
handle) cool stuff with the new X extensions, such as smooth resizing and
alpha transparency.
A screen keeps track of a number of quantities as well, in particular a
stack and a list of workspaces.
A stack is basically a list of windows, and the depth order they have
relative to each other (which thus determines which windows are on top
and which are obscured).
A workspace mostly contains a list of windows for the workspace, but also
has a few other quantities as well (a list of struts which are areas
where windows should not be placed and an mru_list or "most recently used
window list").
A window has a huge list of quantities for keeping track of things about
a window on the screen. (We want to avoid making this list larger
because the memory for all these quantities is per window.) One item in
particular that a window has, though, is a frame.
A frame is the decorations that surround the window (i.e. the titlebar and
the minimize and close buttons and the part that you can use to resize),
and contains a handful of variables related to that, but no other major
structures.
Getting started -- where to look
Getting started on developing free software projects can often be like
being dropped off in a town that is unknown to you and being told to make
a map, when various road and building signs are missing or fading. To
try to alleviate that initial difficulty in orientation, below I list a
variety of general task categories with file, function, variable, and x
property names that may be useful to fixing bugs or writing features that
fall within that category.
First, though, it's useful to note that most event and message passing
goes through display.c:event_callback(), so that's often a good place to
start reading for general familiarity with the code (actually, I'd
suggest skipping down to the first switch statement within that
function). Of course, not all events go through that function, as there
are a few other places that handle events too such as frames.c.
Anyway, without further ado, here are the categories and (hopefully)
useful things to look at for each:
Focus issues (i.e. issues with which window is active):
doc/how-to-get-focus-right.txt
meta_workspace_focus_default_window
_NET_ACTIVE_WINDOW
_NET_WM_USER_TIME
meta_window_focus
meta_display_(set_input|focus_the_no)_focus_window
XSetInputFocus (only for purposes of understanding how X focus/input works)
CurrentTime (mostly, you should just think "Bad; don't use it")
Compositor stuff (X extension for eye candy like transparency):
compositor.c
The luminocity module in CVS
Window depth (i.e. stacking or lowering/raising) issues:
stack.c
_NET_CLIENT_LIST_STACKING
transient_for
WM_TRANSIENT_FOR
meta_window_(raise|lower)
_NET_WM_WINDOW_TYPE
_NET_WM_MOUSE_ACTION/_NET_WM_TAKE_ACTIVITY? (aren't yet in EWMH)
Window placement issues:
place.c
constraints.c
_NET_WM_STRUT
WM_SIZE_HINTS
Moving and resizing issues:
constraints.c
update_move
update_resize
meta_window_handle_mouse_grab_op_event
_NET_MOVERESIZE_WINDOW
_NET_WM_STRUT
Drag and drop issues:
the XDND protocol (see http://www.newplanetsoftware.com/xdnd/ and
http://freedesktop.org/Standards/XDND)
_NET_WM_MOUSE_ACTION/_NET_WM_TAKE_ACTIVITY (aren't yet in EWMH)
A general pointer: what causes the difficulty here is that when the
application receives a mouse click to start a drag, it does a grab
so that the window manager doesn't get any further events; thus
correcting things require standards so that applications and window
managers can collaborate correctly
Theme issues: ???
doc/theme-format.txt
theme.c
theme-parser.c
(ui.c, core.c, frames.c, frame.c? I dunno...)
Session management issues: ???
session.c
http://www.x.org/X11R6.8.1/doc/SM/xsmp.pdf ?
http://www.x.org/X11R6.8.1/doc/SM/SMlib.pdf ?
meta_window_apply_session_info
Tasklist and Workspace switcher issues:
window-props.c
various functions in screen.c (especially ones using XChangeProperty)
xprops.c
The libwnck module in cvs
meta_window_client_message
Lots of the EWMH
Window and workspace selection/changing issues:
tabpopup.c
keybindings.c, functions: *_workspace*, *_tab_*
meta_screen_ensure_*_popup
display.c, functions: *_tab*
Key and mouse binding actions:
keybindings.c
meta_frames_button_(press|release)_event
display.c: event_callback, but only the (Key|Button)_(Press|Release) cases
Xinerama and multiscreen: ???
In general, just search for Xinerama, but in particular see
screen.c
window.c
place.c
constraints.c

View File

@@ -0,0 +1,250 @@
To make choice of focus window consistent for each focus method, a
number of guidelines should be followed. (For purposes of discussion
here, I'm excluding things like the panel and the desktop from
"windows". It is technically incorrect to do this, but I'm lazy and
"windows" is shorter than something like "normal windows". See the
end of the discussion for how these special cases are handled.) The
basics are easy:
Focus method Behavior
click When a user clicks on a window, focus it
sloppy When an EnterNotify is received, focus the window
mouse Same as sloppy, but also defocus on LeaveNotify
Note that these choices (along with the choice that clicking on a
window raises it for the click focus method) introduces the following
invariants for focus from mouse activity:
Focus method Invariant
click The window on top is focused
sloppy If the mouse is in a window, then it is focused; if the
mouse is not in a window, then the most recently used
window is focused.
mouse If the mouse is in a window, then it is focused; otherwise,
the designated "no_focus_window" is focused
However, there are a number of cases where the current focus window
becomes invalid and another should be chosen. Some examples are when
a focused window is closed or minimized, or when the user changes
workspaces. In these cases, there needs to be a rule consistent with
the above about the new window to choose.
Focus method Behavior
click Focus the most recently used window (same as the window
on top)
sloppy Focus the window containing the pointer if there is such
a window, otherwise focus the most recently used window.
mouse Focus the window containing the pointer if there is one,
otherwise focus the designated "no_focus_window".
Note that "most recently used window", as used here, has a slightly
different connotation than "most recent to have keyboard focus". This
is because when a user activates a window that is a transient, its
ancestor(s) should be considered to be more recently used than other
windows that have had the keyboard focus more recently. (See bug
157360; this may mean that the alt-tab order should also change
simultaneously, although the current implementation does not do that.)
Also, sometimes a new window will be mapped (e.g. unminimizing a
window or launching a new application). Most users want to interact
with new windows right away, so these should typically be focused.
This does conflict with the invariants for sloppy and mouse focus
modes, so this wouldn't be true for a strict-pointer-focus mode. For
all other modes (non-strict-pointer-focus modes), there are only two
cases in which a new window shouldn't be focused:
1) If the window takes a while to launch and the user starts
interacting with a different application, the new window should
not take focus.
2) If the window that will appear was not launched by the user
(error dialogs, instant messaging windows, etc.), then the window
should not take focus when it appears.
To handle these cases, Metacity compares timestamps of the event that
caused the launch and the timestamp of the last interaction with the
focused window. (Case 2 is handled by providing a special timestamp
of 0 for the launch time, which ensures that the window that appears
doesn't get focus)
If the newly launched window isn't focused, some things should be done
to alert the user that there is a window to work with:
1) The _NET_WM_DEMANDS_ATTENTION hint should be set
2) If the new window isn't modal for the focused window, it should
appear below the focused window so that it doesn't obscure the
focused window that the user is interacting with.
3) If the new window is modal to the focused window, the currently
focused window should lose focus but the modal window should
appear on top.
Additionally, the user may decide to use the keyboard instead of the mouse
to navigate between windows (referred to as "keynav"). This poses no
problems for click-to-focus (because the same invariant can be
maintained), but for sloppy and mouse focus it requires extra work to
attempt to handle the INHERENTLY CONFLICTING CONSTRAINTS. Metacity does
this by having a mouse_mode boolean used to determine which of the two
sets of invariants holds. This mode is set according to which method was
most recently used to choose a focus window:
1) When receiving EnterNotify/LeaveNotify events from mouse movement, set
mouse_mode to TRUE.
2) When using keynav to choose a focus window (e.g. alt-tab, alt-esc,
move-window-to-workspace keybindings), set mouse_mode to FALSE.
3) When handling events that don't choose a focus window but rather need
a focus_window chosen for them (e.g. switch-to-workspace keybindings),
don't change the mouse_mode and just use the current value.
Note that grabs present a special case since they can generate EnterNotify
and LeaveNotify events without using the mouse, thus these events should be
ignored when the crossing mode is NotifyGrab or NotifyUngrab. THIS
MOUSENAV/KEYNAV MODERATION METHOD IS NOT PERFECT--there are corner cases
when trying to mix-and-match between mousenav and keynav simultaneously
that cause problems; but it appears to be the most reasonable tradeoff and
works well in most cases, especially if the user sticks to just mousenav
for a long time or just keynav for a long time.
Finally, windows of type WM_DOCK or WM_DESKTOP (e.g. the desktop and
the panel) present a special case, at least partially due to the lack
of decorations. For WM_DESKTOP windows, we only focus them if the
user explicitly requests it (e.g. clicks on the window, uses
Ctrl-Alt-Tab to navigate to it, uses a keybinding to show the desktop,
etc.). For WM_DOCK windows, we do not focus unless we receive a very
explicit request (e.g. Ctrl-Alt-Tab or a _NET_ACTIVE_WINDOW message;
not normal clicks).
To read more about the bugs that inspired these choices:
- When a focused window becomes invalid and another should be chosen
http://bugzilla.gnome.org/show_bug.cgi?id=135810
- When a new window is mapped
http://bugzilla.gnome.org/show_bug.cgi?id=118372
Also, the EWMH spec, especially the parts relating to _NET_WM_USER_TIME
- Modal vs. non-modal dialogs that get denied focus when mapped
http://bugzilla.gnome.org/show_bug.cgi?id=151996
- Mousenav vs. Keynav in mouse and sloppy focus modes
http://bugzilla.gnome.org/show_bug.cgi?id=167545
http://bugzilla.gnome.org/show_bug.cgi?id=101190
- Not focusing panels
http://bugzilla.gnome.org/show_bug.cgi?id=160470
http://bugzilla.gnome.org/show_bug.cgi?id=120100
There were many bugs which had to be fixed to get all the above
working; they helped form these policies and/or show the difficulties
in implementing this policy (my apologies in advance for producing a
list heavily lopsided to what I've done; it's just that these bugs are
the ones I'm the most familiar with):
bug 72314 ignore LeaveNotify events from grabs
bug 82921 focus windows on map
bug 87531 only show focus for sticky windows on active workspace (pager)
bug 94545 focus window on workspace switch is non-deterministic
bug 95747 should ignore EnterNotify events with NotifyInferior detail set
bug 97635 sticky windows always keep focus when switching workspaces
bug 102665 a window unminimized from the tasklist should be focused
bug 107347 focus windows that manually position themselves too
bug 108643 focus in MRU order instead of stack order
bug 110970 moving a window to another workspace loses focus
bug 112031 closing a dialog can result in a strange focus window
bug 115650 add _NET_WM_USER_TIME support to gtk+ (see also 150502)
bug 120100 panel shouldn't be focused after workspace applet usage
bug 123803 need final EnterNotify after workspace switch (see also 124798)
bug 124981 focus clicked window in pager only if on current workspace
bug 125492 catch the xserver unfocusing everything and fix its braindeadedness
bug 128200 focus correct window on libwnck window minimize (see 107681 too)
bug 131582 fix race condition on window minimize/close
bug 133120 wrong window focused when changing workspaces
bug 135024 _NET_ACTIVE_WINDOW messages need timestamps
bug 135786 middle-clicking on focused window to lower it should defocus too
bug 136581 window minimization vs. activation for mouse focus
bug 144900 fix focus choice on "un-showing" the desktop
bug 147475 don't lock keyboard on workspace change
bug 148364 DEMANDS_ATTENTION support for metacity & libwnck (and other stuff)
bug 149028 focus-stealing-prevention for metacity-dialog (and other stuff)
bug 149366 windows denied focus on map occur in wrong order in alt-tab list
bug 149543 consistent focus window when unshowing desktop
bug 149589 race in focus choice from libwnck messages
bug 150271 make sure "run application" dialog gets focused
bug 150668 update gtk+ _NET_ACTIVE_WINDOW support
bug 151245 application startup notification forwarding (partially rejected)
bug 151984 Soeren's idea--backup timestamp when startup notification not used
bug 151990 prevent focus inconsistencies by only providing one focus method
bug 151996 modal dialogs denied focus should not be lowered
bug 152000 fix race on window close followed by rapid mouse movement
bug 152004 ways to handle new window versus mouse invariants
bug 153220 catch the root window getting focus and reset to default window
bug 157360 focus parents of dismissed transient windows in preference to
the window that most recently had focus
bug 159257 focus the desktop when showing it
bug 160470 don't focus panels on click
bug 163450 correct highlighting in workspace switcher popup
bug 164716 refuse to focus a window with a modal transient, and focus
the transient instead
bug 166524 avoid new windows being obscured by the focus window
bug 167545 mousenav vs. keynav in mouse and sloppy focus modes
<a massive heap of bugs relating to focus stealing prevention...>
Addendum on sloppy and mouse focus
You may occasionally hear people refer to sloppy or mouse focus
modes as inherently buggy. This is what they mean by that:
1) Keynav doesn't maintain the same invariants as mouse navigation
for these focus modes; switching back and forth between
navigation methods, therefore, may have or appear to have
inconsistencies. Examples:
a) If the user uses Alt-Tab to change the window with focus, then
starts to move the mouse, at that moment the window where the
mouse is does not have focus.
b) Users expect that a workspace they previously used will not
change when the return to it. This means things like window
position and stacking order, but also the focus window.
Unfortunately, using the original focus window (which would be
the most recently used window on that workspace) will
sometimes conflict with the invariants for mouse and sloppy
focus modes. Users are much more surprised by the invariant
being broken than by having the focus window changed (see bug
94545 and probably others), so we maintain the invariant.
This only matters when using Ctrl-Alt-Arrow to switch
workspaces instead of clicking in the workspace switcher, so
this really is a keynav vs mouse issue. Either that, or a
windows-are-being-mapped exception. ;-)
c) Opening a menu, then moving the mouse to a different window,
and then pressing escape to dismiss the menu will result in
the window containing the mouse not being focused. This is
actually correct behavior (because pressing escape shows that
the user is using key navigation to interact with the window
containing the menu) but is one of those hard-to-get-right
keynav and mouse focus mixture cases. (See bug 101190 for
more details)
d) Similar to (c), moving the mouse off the menu doesn't immediately
focus the window that the mouse goes over, due to an application
grab (we couldn't change this and wouldn't want to, but
technically it does break the invariant).
e) If mouse_mode is off and the user does something to cause focus to
change (e.g. switch workspaces, close or minimize a window, etc.)
and simultaneously tries to move the mouse, the choice of which
window to focus is inherently race-y. (You probably can't satisfy
both keynav and mousenav invariants simultaneously...)
2) The sloppy/mouse invariants are often not strictly maintained;
for example, we provide an exception to the invariant for newly
mapped windows. (Most find that not allowing this exception is
confusing)
3) There are an awful lot of little cases to handle to get any focus
mode right, even for click-to-focus. Since mouse and sloppy
focus have sometimes been hard to even determine what correct
behavior is, it is much harder to get them completely right.
Plus mouse and sloppy focus users are a minority, decreasing the
motivation of window manager implementors to get those focus
modes right.
4) Because of -1-, -2-, and -3-, implementations are often buggy or
inconsistent and people form their opinions from usage of these
implementations.
5) Sloppy focus suffers from a bit of a discoverability problem (for
example, I have seen a scientist sit down to a computer for which
sloppy focus was in use and take a few minutes before figuring
out how window activation worked; granted the layout of the
windows in that situation was a bit unusual but it still
illustrates that sloppy focus is harder than it should be to
figure out). Mouse focus solves this problem; however, people
that have experience with other computing environments are
accustomed to being able to move their mouse outside the window
they are working with and still continue interacting with that
window, which conflicts with mouse focus.

2
doc/man/.cvsignore Normal file
View File

@@ -0,0 +1,2 @@
Makefile
Makefile.in

3
doc/man/Makefile.am Normal file
View File

@@ -0,0 +1,3 @@
man_MANS = metacity-theme-viewer.1 metacity-window-demo.1
EXTRA_DIST = $(man_MANS)

View File

@@ -0,0 +1,43 @@
.\" In .TH, FOO should be all caps, SECTION should be 1-8, maybe w/ subsection
.\" other parms are allowed: see man(7), man(1)
.\"
.\" Based on template provided by Tom Christiansen <tchrist@jhereg.perl.com>.
.\"
.TH METACITY-THEME-VIEWER 1 "1 June 2004"
.SH NAME
metacity-theme-viewer \- view metacity themes
.SH SYNOPSIS
.B metacity-theme-viewer
[
.I THEMENAME
]
.SH DESCRIPTION
.\" Putting a newline after each sentence can generate better output.
.B metacity-theme-viewer
allows you to preview any installed Metacity theme.
.PP
When designing a new Metacity theme, you can use
.B metacity-theme-viewer
to measure the performance of a window frame option, and to preview
the option.
.SH OPTIONS
.TP
.I THEMENAME
Name of the theme to be shown (\fIAtlanta\fR by default).
It is case-sensitive.
.SH FILES
.br
.nf
.TP
.I /usr/share/themes
system themes directory
.TP
.I /usr/share/themes/*/metacity-1/metacity-theme-1.xml
theme specification file
.SH AUTHOR
This manual page was written by Jose M. Moya <josem@die.upm.es>, for
the Debian GNU/Linux system (but may be used by others).
.SH "SEE ALSO"
.\" Always quote multiple words for .SH
.BR metacity (1),
.BR metacity-window-demo (1).

View File

@@ -0,0 +1,25 @@
.\" In .TH, FOO should be all caps, SECTION should be 1-8, maybe w/ subsection
.\" other parms are allowed: see man(7), man(1)
.\"
.\" Based on template provided by Tom Christiansen <tchrist@jhereg.perl.com>.
.\"
.TH METACITY-WINDOW-DEMO 1 "1 June 2004"
.SH NAME
metacity-window-demo \- demo of window features
.SH SYNOPSIS
.B metacity-window-demo
.SH DESCRIPTION
.\" Putting a newline after each sentence can generate better output.
This program demonstrates various kinds of windows that window
managers and window manager themes should handle.
.PP
Be sure to tear off the menu and toolbar, those are also a special
kind of window.
.SH AUTHOR
This manual page was written by Jose M. Moya <josem@die.upm.es>, for
the Debian GNU/Linux system (but may be used by others).
.SH "SEE ALSO"
.\" Always quote multiple words for .SH
.BR x-window-manager (1),
.BR metacity (1),
.BR metacity-theme-viewer (1).

View File

@@ -1,3 +1,731 @@
2005-02-28 Vincent van Adrighem <adrighem@gnome.org>
* nl.po: Translation updated by Reinout van Schouwen.
2005-02-27 Alessio Frusciante <algol@firenze.linux.it>
* it.po: Updated Italian translation by
Luca Ferretti <elle.uca@infinito.it>.
2005-02-24 Artur Flinta <aflinta@cvs.gnome.org>
* pl.po: Updated Polish translation by GNOME PL Team.
2005-02-24 Ankit Patel <ankit644@yahoo.com>
* gu.po: Updated Gujarati Translation.
2005-02-23 Vincent van Adrighem <adrighem@gnome.org>
* nl.po: Translation updated by Michiel Sikkes.
2004-02-22 Roozbeh Pournader <roozbeh@farsiweb.info>
* fa.po: Updated Persian translation by
Elnaz Sarbar <elnaz@farsiweb.info>.
2005-02-22 Raphael Higino <raphaelh@cvs.gnome.org>
* pt_BR.po: Updated Brazilian Portuguese translation.
2005-02-21 Christophe Merlet <redfox@redfoxcenter.org>
* fr.po: Updated French translation.
2005-02-21 Bastien Nocera <hadess@hadess.net>
* en_GB.po: the file is actually in UTF-8
2005-02-21 Martin Willemoes Hansen <mwh@sysrq.dk>
* da.po: Updated Danish translation.
2005-02-21 Priit Laes <plaes@cvs.gnome.org>
* et.po: Translation updated by Tõivo Leedjärv.
2005-02-18 Changwoo Ryu <cwryu@debian.org>
* ko.po: Updated Korean translation.
2005-02-18 Duarte Loreto <happyguy_pt@hotmail.com>
* pt.po: Updated Portuguese translation.
2005-02-17 Vincent van Adrighem <adrighem@gnome.org>
* nl.po: Translation updated by Tino Meinen.
2005-02-17 Laurent Dhima <laurenti@alblinux.net>
* sq.po: Updated Albanian translation.
2005-02-16 Jordi Mallach <jordi@sindominio.net>
* ca.po: Updated Catalan translation.
2005-02-15 Maxim Dziumanenko <mvd@mylinux.com.ua>
* uk.po: Updated Ukrainian translation.
2005-02-15 Kjartan Maraas <kmaraas@gnome.org>
* nb.po: s/applikasjon/program
* no.po: Same
2005-02-12 Marcel Telka <marcel@telka.sk>
* sk.po: Updated Slovak translation.
2005-02-12 Takeshi AIHANA <aihana@gnome.gr.jp>
* ja.po: Updated Japanese translation.
2005-02-11 Kostas Papadimas <pkst@gnome.org>
* el.po: Updated Greek translation.
2005-02-10 Francisco Javier F. Serrador <serrador@cvs.gnome.org>
* es.po: Updated Spanish translation.
2005-02-08 Leonid Kanter <leon@asplinux.ru>
* ru.po: Updated Russian translation
2005-02-08 Kjartan Maraas <kmaraas@gnome.org>
* nb.po: Update
* no.po: Update
2005-02-07 David Lodge <dave@cirt.net>
* en_GB.po: Updated British translation.
2005-02-06 Adam Weinberger <adamw@gnome.org>
* en_CA.po: Updated Canadian English translation.
2005-02-06 Miloslav Trmac <mitr@volny.cz>
* cs.po: Updated Czech translation.
2005-02-06 Alexander Shopov <ash@contact.bg>
* bg.po: Updated Bulgarian translation by
Vladimir Petkov <vpetkov@i-space.org>
2005-02-06 Pauli Virtanen <pauli.virtanen@hut.fi>
* fi.po: Updated Finnish translation.
2005-02-05 Frank Arnold <farnold@cvs.gnome.org>
* de.po: Updated German translation.
2005-02-05 Francisco Javier F. Serrador <serrador@cvs.gnome.org>
* es.po: Updated Spanish translation.
2005-02-05 Žygimantas Beručka <uid0@akl.lt>
* lt.po: Updated Lithuanian translation.
2005-02-04 Francisco Javier F. Serrador <serrador@cvs.gnome.org>
* es.po: Updated Spanish translation.
2005-02-04 Changwoo Ryu <cwryu@debian.org>
* ko.po: Updated Korean translation.
2005-02-02 Miloslav Trmac <mitr@volny.cz>
* cs.po: Updated Czech translation.
2005-02-02 Frank Arnold <farnold@cvs.gnome.org>
* de.po: Updated German translation.
2005-02-01 Kjartan Maraas <kmaraas@gnome.org>
* nb.po: Update
* no.po: Update
2005-02-01 Adam Weinberger <adamw@gnome.org>
* en_CA.po: Updated Canadian English translation.
2005-02-01 Žygimantas Beručka <uid0@akl.lt>
* lt.po: Updated Lithuanian translation.
2005-01-31 Christian Rose <menthos@menthos.com>
* sv.po: Updated Swedish translation.
2005-01-31 Miloslav Trmac <mitr@volny.cz>
* cs.po: Updated Czech translation.
2005-01-31 Christian Rose <menthos@menthos.com>
* sv.po: Updated Swedish translation.
2005-01-30 Žygimantas Beručka <uid0@akl.lt>
* lt.po: Updated Lithuanian translation.
2005-01-29 Francisco Javier F. Serrador <serrador@cvs.gnome.org>
* es.po: Updated Spanish translation.
2005-01-29 Miloslav Trmac <mitr@volny.cz>
* cs.po: Updated Czech translation.
2005-01-29 Marcel Telka <marcel@telka.sk>
* sk.po: Updated Slovak translation.
2005-01-29 Adam Weinberger <adamw@gnome.org>
* en_CA.po: Updated Canadian English translation.
2005-01-28 Kjartan Maraas <kmaraas@gnome.org>
* nb.po: Update
* no.po: Update
2005-01-26 Adam Weinberger <adamw@gnome.org>
* en_CA.po: Updated Canadian English translation.
2005-01-26 Francisco Javier F. Serrador <serrador@cvs.gnome.org>
* es.po: Updated Spanish translation.
2005-01-26 Duarte Loreto <happyguy_pt@hotmail.com>
* pt.po: Updated Portuguese translation.
2005-01-25 Theppitak Karoonboonyanan <thep@linux.thai.net>
* th.po: Updated Thai translation.
2005-01-23 Funda Wang <fundawang@linux.net.cn>
* zh_CN.po: Updated Simplified Chinese translation.
2005-01-21 Kjartan Maraas <kmaraas@gnome.org>
* nb.po: Update this too while we're at it.
2005-01-21 Kjartan Maraas <kmaraas@gnome.org>
* nn.po: Update
2005-01-15 Frank Arnold <farnold@cvs.gnome.org>
* de.po: Updated German translation.
2005-01-01 Francisco Javier F. Serrador <serrador@cvs.gnome.org>
* es.po: Updated Spanish translation.
2004-12-28 Christian Rose <menthos@menthos.com>
* sv.po: Updated Swedish translation.
2004-12-25 Miloslav Trmac <mitr@volny.cz>
* cs.po: Updated Czech translation.
2004-12-21 Takeshi AIHANA <aihana@gnome.gr.jp>
* ja.po: Updated Japanese translation.
2004-12-20 Adam Weinberger <adamw@gnome.org>
* en_CA.po: Updated Canadian English translation.
2004-12-16 Alexander Shopov <ash@contact.bg>
* bg.po: Updated Bulgarian translation by
Vladimir Petkov <vpetkov@i-space.org>
2004-12-07 Martin Willemoes Hansen <mwh@sysrq.dk>
* da.po: Updated Danish translation.
2004-11-23 Martin Willemoes Hansen <mwh@sysrq.dk>
* da.po: Updated Danish translation.
2004-11-14 Christophe Merlet <redfox@redfoxcenter.org>
* fr.po: Updated French translation from
Baptiste Mille-Mathias <baptiste@mille-mathias.info>.
2004-11-13 Žygimantas Beručka <uid0@akl.lt>
* lt.po: Updated Lithuanian translation.
2004-11-04 Takeshi AIHANA <aihana@gnome.gr.jp>
* ja.po: Updated Japanese translation.
2004-10-30 Francisco Javier F. Serrador <serrador@cvs.gnome.org>
* es.po: Updated Spanish translation.
2004-10-19 Laurent Dhima <laurenti@alblinux.net>
* sq.po: Updated Albanian translation.
2004-10-15 Danilo Šegan <dsegan@gmx.net>
* sr.po, sr@Latn.po: Updated Serbian translation.
2004-10-14 Miloslav Trmac <mitr@volny.cz>
* cs.po: Updated Czech translation.
2004-10-14 Adam Weinberger <adamw@gnome.org>
* en_CA.po: Updated Canadian English translation.
2004-10-13 David Lodge <dave@cirt.net>
* en_GB.po: Updated British English translation.
2004-09-26 Adam Weinberger <adamw@gnome.org>
* en_CA.po: Updated Canadian English translation.
2004-09-19 Alessio Frusciante <algol@firenze.linux.it>
* it.po: Updated Italian translation by
Luca Ferretti <elle.uca@infinito.it>.
2004-09-14 Gora Mohanty <gmohanty@cvs.gnome.org>
* or.po: Updated Oriya translation.
2004-09-12 Paisa Seeluangsawat <paisa@users.sf.net>
* th.po: Updated Thai translation.
2004-09-12 Dafydd Harries <daf@muse.19inch.net>
* cy.po: Updated Welsh translation.
2004-09-11 Abel Cheung <maddog@linuxhall.org>
* zh_TW.po: Updated traditional Chinese translation by GNOME HK Team.
2004-09-10 Christophe Merlet <redfox@redfoxcenter.org>
* fr.po: Updated French translation.
2004-09-08 Abel Cheung <maddog@linux.org.hk>
* zh_TW.po: Updated traditional Chinese translation by GNOME HK Team.
2004-09-08 Raphael Higino <raphaelh@cvs.gnome.org>
* pt_BR.po: Updated Brazilian Portuguese translation.
2004-09-08 Arafat Medini <lumina@arabeyes.org>
* ar.po: Updated Arabic translation
2004-09-07 Mugurel Tudor <mugurelu@go.ro>
* ro.po: Updated Romanian translation.
2004-09-05 Miloslav Trmac <mitr@volny.cz>
* cs.po: Updated Czech translation.
2004-09-03 Baris Cicek <baris@teamforce.name.tr>
* tr.po: Updated Turkish Translation
2004-08-31 Åsmund Skjæveland <aasmunds@fys.uio.no>
* nn.po: Updated Norwegian Nynorsk translation.
2004-08-29 Kostas Papadimas <pkst@gnome.org>
* el.po: Updated Greek translation.
2004-08-28 Francisco Javier F. Serrador <serrador@cvs.gnome.org>
* es.po: Updated Spanish translation.
2004-08-26 Iñaki Larrañaga <dooteo@euskalgnu.org>
* eu.po: Updated Basque translation.
2004-08-23 Maxim Dziumanenko <mvd@mylinux.com.ua>
* uk.po: Updated Ukrainian translation.
2004-08-21 Jordi Mallach <jordi@sindominio.net>
* ca.po: Updated Catalan translation.
2004-08-20 Laurent Dhima <laurenti@alblinux.net>
* sq.po: Updated Albanian translation.
2004-08-18 Pauli Virtanen <pauli.virtanen@hut.fi>
* fi.po: Updated Finnish translation.
2004-08-18 Laurent Dhima <laurenti@alblinux.net>
* sq.po: Updated Albanian translation.
2004-08-17 Christian Rose <menthos@menthos.com>
* bs.po: Added Bosnian translation by
Kemal Sanjta <gomez@lugzdk.ba>.
2004-08-17 Metin Amiroff <metin@karegen.com>
* az.po: Translation updated.
2004-08-16 Kjartan Maraas <kmaraas@gnome.org>
* nb.po: Added this here.
2004-08-15 Changwoo Ryu <cwryu@debian.org>
* ko.po: Updated Korean translation.
2004-08-13 Tommi Vainikainen <thv@iki.fi>
* fi.po: Unified some fields in po headers for Finnish team.
2004-08-13 Gurban M. Tewekgeli <gmtavakkoli@yahoo.com>
* tk.po: Added Turkmen translation.
2004-08-11 Dmitry G. Mastrukov <dmitry@taurussoft.org>
* ru.po: Updated Russian translation
from Russian team <gnome-cyr@gnome.org>.
2004-08-10 Artur Flinta <aflinta@cvs.gnome.org>
* pl.po: Updated Polish translation by GNOME PL Team.
2004-08-07 Danilo Šegan <dsegan@gmx.net>
* sr.po, sr@Latn.po: Updated Serbian translation.
2004-08-06 Funda Wang <fundawang@linux.net.cn>
* zh_CN.po: Updated Simplified Chinese translation.
2004-08-06 Takeshi AIHANA <aihana@gnome.gr.jp>
* ja.po: Updated Japanese translation.
2004-08-03 Vincent van Adrighem <adrighem@gnome.org>
* nl.po: Translation updated by Michiel Sikkes.
2004-08-02 Duarte Loreto <happyguy_pt@hotmail.com>
* pt.po: Updated Portuguese translation.
2004-08-02 Adam Weinberger <adamw@gnome.org>
* en_CA.po: Updated Canadian English translation.
2004-08-01 Kjartan Maraas <kmaraas@gnome.org>
* no.po: Updated Norwegian translation.
2004-07-30 Martin Willemoes Hansen <mwh@sysrq.dk>
* da.po: Reviewed and updated fuzzy messages.
2004-07-30 Kartik Mistry <kartik_m@magnet-i.com>
* gu.po: Updated and added Gujarati translation.
2004-07-29 Changwoo Ryu <cwryu@debian.org>
* ko.po: Updated Korean translation.
2004-07-28 Laurent Dhima <laurenti@alblinux.net>
* sq.po: Updated Albanian translation.
2004-07-27 Alexander Shopov <ash@contact.bg>
* bg.po: Updated Bulgarian translation by
Rostislav "zbrox" Raykov <zbrox@i-space.org>
2004-07-27 Laurent Dhima <laurenti@alblinux.net>
* sq.po: Updated Albanian translation.
2004-07-25 Christian Rose <menthos@menthos.com>
* sv.po: Updated Swedish translation.
2004-07-25 Christian Neumair <chris@gnome-de.org>
* de.po: Updated German translation.
2004-07-25 David Lodge <dave@cirt.net>
* en_GB.po: Added British translation.
2004-07-24 Francisco Javier F. Serrador <serrador@cvs.gnome.org>
* es.po: Updated Spanish translation.
2004-07-23 Miloslav Trmac <mitr@volny.cz>
* cs.po: Updated Czech translation.
2004-07-23 Žygimantas Beručka <uid0@akl.lt>
* lt.po: Updated Lithuanian translation.
2004-07-22 Gustavo Maciel Dias Vieira <gustavo@sagui.org>
* pt_BR.po: Updated Brazilian Portuguese translation done by
Goedson Teixeira Paixao <goedson@debian.org>.
2004-07-21 Guntupalli Karunakar <karunakar@freedomink.org>
* hi.po: Updated Hindi translation.
2004-07-14 Christian Rose <menthos@menthos.com>
* sv.po: Updated Swedish translation.
2004-07-12 Åsmund Skjæveland <aasmunds@fys.uio.no>
* nn.po: Updated Norwegian Nynorsk translation.
2004-07-08 Alexander Shopov <ash@contact.bg>
* bg.po: Updated Bulgarian translation by
Vladimir "Kaladan" Petkov <vpetkov@i-space.org>
2004-07-07 Laszlo Dvornik <ldvornik@cvs.gnome.org>
* hu.po: Updated Hungarian translation.
2004-07-06 Francisco Javier F. Serrador <serrador@cvs.gnome.org>
* es.po: Updated Spanish translation.
2004-07-05 Laurent Dhima <laurenti@alblinux.net>
* sq.po: Updated Albanian translation.
2004-07-04 Vincent van Adrighem <adrighem@gnome.org>
* nl.po: Translation updated by Tino Meinen.
2004-07-02 Christian Neumair <chris@gnome-de.org>
* de.po: Updated German translation.
2004-06-29 Laurent Dhima <laurenti@alblinux.net>
* sq.po: Translation updated.
2004-06-28 Laurent Dhima <laurenti@alblinux.net>
* sq.po: Translation updated.
2004-06-25 Gareth Owen <gowen72@yahoo.com>
* en_GB.po: Updated British English translation
2004-06-26 Funda Wang <fundawang@linux.net.cn>
* zh_CN.po: Updated Simplified Chinese translation.
2004-06-25 Miloslav Trmac <mitr@volny.cz>
* cs.po: Updated Czech translation.
2004-05-31 Alexander Shopov <ash@contact.bg>
* bg.po: Updated Bulgarian translation by
Vladimir Petkov <vpetkov@i-space.org>
2004-04-23 Dafydd Harries <daf@muse.19inch.net>
* ca.po: Updated Catalan translation from Jordi Mallach.
2004-04-16 Iñaki Larrañaga <dooteo@euskalgnu.org>
* eu.po: Added Basque translation.
2004-04-15 Andras Timar <timar@gnome.hu>
* hu.po: Updated Hungarian translation.
2004-04-09 Guntupalli Karunakar <karunakar@freedomink.org>
* gu.po: Added Gujurati translation by
Gujarati Team <magnet@magnet-i.com>.
2004-04-06 Mohammad DAMT <mdamt@bisnisweb.com>
* id.po: Updated Indonesian translation
2004-04-03 Mugurel Tudor <mugurelu@go.ro>
* ro.po: Updated Romanian translation
2004-03-29 Jordi Mallach <jordi@sindominio.net>
* ca.po: Updated Catalan translation.
2004-03-27 Tõivo Leedjärv <toivo@linux.ee>
* et.po: Added Estonian translation.
2004-03-24 Guntupalli Karunakar <karunakar@freedomink.org>
* pa.po: Added Punjabi translation by
Jaswinder Singh Phulewala <jaswinderlinux@netscape.net>.
2004-03-20 Mugurel Tudor <mugurelu@go.ro>
* ro.po: Updated Romanian translation.
2004-03-20 Gareth Owen <gowen72@yahoo.com>
* en_GB.po: Updated British translation
2004-03-19 Andras Timar <timar@gnome.hu>
* hu.po: Updated Hungarian translation.
2004-03-18 Arafat Medini <lumina@silverpen.de>
* ar.po: Updated Arabic translation.
2004-03-17 Leonid Kanter <leon@asplinux.ru>
* ru.po: Updated Russian translation
2004-03-16 Dafydd Harries <daf@muse.19inch.net>
* cy.po: Updated Welsh translation.
2004-03-15 Alessio Frusciante <algol@firenze.linux.it>
* it.po: Updated Italian translation by
Luca Ferretti <elle.uca@infinito.it>.
2004-03-15 Nikos Charonitakis <frolix68@yahoo.gr>
* el.po: Updated Greek translation.
2004-03-14 Christophe Merlet <redfox@redfoxcenter.org>
* fr.po: Updated French translation.
2004-03-13 Christophe Merlet <redfox@redfoxcenter.org>
* fr.po: Updated French translation.
2004-03-13 Theppitak Karoonboonyanan <thep@linux.thai.net>
* th.po: Updated Thai translation.
2004-03-12 Funda Wang <fundawang@linux.net.cn>
* zh_CN.po: Updated Simplified Chinese translation.
2004-03-12 Yuriy Syrota <rasta@cvs.gnome.org>
* uk.po: Updated Ukrainian translation.
2004-03-11 Alessio Frusciante <algol@firenze.linux.it>
* it.po: Updated Italian translation.
2004-03-11 Christophe Merlet <redfox@redfoxcenter.org>
* fr.po: Updated French translation.
2004-03-10 Theppitak Karoonboonyanan <thep@linux.thai.net>
* th.po: Updated Thai translation.
2004-03-09 Alessio Frusciante <algol@firenze.linux.it>
* it.po: Updated Italian translation by
Luca Ferretti <elle.uca@infinito.it>.
2004-03-09 Kjartan Maraas <kmaraas@gnome.org>
* no.po: Updated Norwegian translation.
2004-03-09 Francisco Javier F. Serrador <serrador@cvs.gnome.org>
* es.po: Updated Spansih translation.
2004-03-08 Alastair McKinstry <mckinstry@computer.org>
* ga.po: Updated Irish translation.
2004-03-08 Theppitak Karoonboonyanan <thep@linux.thai.net>
* th.po: Updated Thai translation.
2004-03-06 Mətin Əmirov <metin@karegen.com>
* az.po: Translation updated.
2004-03-07 Funda Wang <fundawang@linux.net.cn>
* zh_CN.po: Updated Simplified Chinese translation.
2004-03-04 Paisa Seeluangsawat <paisa@users.sf.net>
* th.po: Added Thai translation.
2004-03-3 Arafat Medini <lumina@silverpen.de>
* ar.po: Updated Arabic translation.
2004-03-02 Stanislav Visnovsky <visnovsky@kde.org>
* sk.po: Convert to UTF-8.
2004-02-26 Guntupalli Karunakar <karunakar@freedomink.org>
* hi.po: Updated Hindi translations.
2004-02-23 Laurent Dhima <laurenti@alblinux.net>
* sq.po: Updated Albanian translation.
2004-02-22 Christian Rose <menthos@menthos.com>
* en_CA.po: Added Canadian English translation by
Adam Weinberger <adamw@FreeBSD.org>.
2004-02-17 Takeshi AIHANA <aihana@gnome.gr.jp>
* ja.po: Updated Japanese translation.
2004-02-11 Kjartan Maraas <kmaraas@gnome.org>
* no.po: Updated Norwegian translation.

View File

@@ -19,8 +19,6 @@ src/session.c
src/theme-parser.c
src/theme-viewer.c
src/theme.c
src/tools/metacity-properties.desktop.in
src/tools/metacity-properties.glade
src/util.c
src/window-props.c
src/window.c

1551
po/am.po

File diff suppressed because it is too large Load Diff

2282
po/ar.po

File diff suppressed because it is too large Load Diff

942
po/az.po

File diff suppressed because it is too large Load Diff

1284
po/be.po

File diff suppressed because it is too large Load Diff

1471
po/bg.po

File diff suppressed because it is too large Load Diff

945
po/bn.po

File diff suppressed because it is too large Load Diff

3248
po/bs.po Normal file

File diff suppressed because it is too large Load Diff

1588
po/ca.po

File diff suppressed because it is too large Load Diff

894
po/cs.po

File diff suppressed because it is too large Load Diff

1466
po/cy.po

File diff suppressed because it is too large Load Diff

1690
po/da.po

File diff suppressed because it is too large Load Diff

1429
po/de.po

File diff suppressed because it is too large Load Diff

1475
po/el.po

File diff suppressed because it is too large Load Diff

3167
po/en_CA.po Normal file

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

2454
po/es.po

File diff suppressed because it is too large Load Diff

2671
po/et.po Normal file

File diff suppressed because it is too large Load Diff

3246
po/eu.po Normal file

File diff suppressed because it is too large Load Diff

2798
po/fa.po

File diff suppressed because it is too large Load Diff

863
po/fi.po

File diff suppressed because it is too large Load Diff

2005
po/fr.po

File diff suppressed because it is too large Load Diff

1563
po/ga.po

File diff suppressed because it is too large Load Diff

1573
po/gl.po

File diff suppressed because it is too large Load Diff

3074
po/gu.po Normal file

File diff suppressed because it is too large Load Diff

1577
po/he.po

File diff suppressed because it is too large Load Diff

2656
po/hi.po

File diff suppressed because it is too large Load Diff

2686
po/hr.po

File diff suppressed because it is too large Load Diff

1180
po/hu.po

File diff suppressed because it is too large Load Diff

1469
po/id.po

File diff suppressed because it is too large Load Diff

1573
po/is.po

File diff suppressed because it is too large Load Diff

3450
po/it.po

File diff suppressed because it is too large Load Diff

2375
po/ja.po

File diff suppressed because it is too large Load Diff

2305
po/ko.po

File diff suppressed because it is too large Load Diff

1067
po/lt.po

File diff suppressed because it is too large Load Diff

1277
po/lv.po

File diff suppressed because it is too large Load Diff

1482
po/mk.po

File diff suppressed because it is too large Load Diff

1567
po/ml.po

File diff suppressed because it is too large Load Diff

2215
po/mn.po

File diff suppressed because it is too large Load Diff

1105
po/ms.po

File diff suppressed because it is too large Load Diff

3192
po/nb.po Normal file

File diff suppressed because it is too large Load Diff

919
po/nl.po

File diff suppressed because it is too large Load Diff

1090
po/nn.po

File diff suppressed because it is too large Load Diff

1532
po/no.po

File diff suppressed because it is too large Load Diff

3089
po/or.po Normal file

File diff suppressed because it is too large Load Diff

3053
po/pa.po Normal file

File diff suppressed because it is too large Load Diff

1591
po/pl.po

File diff suppressed because it is too large Load Diff

1558
po/pt.po

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

1817
po/ro.po

File diff suppressed because it is too large Load Diff

1303
po/ru.po

File diff suppressed because it is too large Load Diff

3307
po/sk.po

File diff suppressed because it is too large Load Diff

2715
po/sl.po

File diff suppressed because it is too large Load Diff

2102
po/sq.po

File diff suppressed because it is too large Load Diff

2071
po/sr.po

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

958
po/sv.po

File diff suppressed because it is too large Load Diff

2832
po/ta.po

File diff suppressed because it is too large Load Diff

3070
po/th.po Normal file

File diff suppressed because it is too large Load Diff

2644
po/tk.po Normal file

File diff suppressed because it is too large Load Diff

2690
po/tr.po

File diff suppressed because it is too large Load Diff

2114
po/uk.po

File diff suppressed because it is too large Load Diff

1282
po/vi.po

File diff suppressed because it is too large Load Diff

1576
po/wa.po

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -2,36 +2,61 @@
History
====
Focus windows on map: see http://bugzilla.gnome.org/show_bug.cgi?id=82921
Keep panel always on top: http://bugzilla.gnome.org/show_bug.cgi?id=81551
Edge flipping: http://bugzilla.gnome.org/show_bug.cgi?id=82917
Opaque resize: http://bugzilla.gnome.org/show_bug.cgi?id=92618
Super+click to resize: http://bugzilla.gnome.org/show_bug.cgi?id=79315
minimized windows in Alt+tab: http://bugzilla.gnome.org/show_bug.cgi?id=89416
dialogs above entire app group: http://bugzilla.gnome.org/show_bug.cgi?id=88926
display window size/position: http://bugzilla.gnome.org/show_bug.cgi?id=85213,
http://bugzilla.gnome.org/show_bug.cgi?id=106645
Focus issues:
see doc/how-to-get-focus-right.txt
Keep panel always on top:
http://bugzilla.gnome.org/show_bug.cgi?id=81551
Edge flipping:
http://bugzilla.gnome.org/show_bug.cgi?id=82917
Opaque resize:
http://bugzilla.gnome.org/show_bug.cgi?id=92618
Alt+click to move/resize:
http://bugzilla.gnome.org/show_bug.cgi?id=101151
https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=80918
minimized windows in Alt+tab:
http://bugzilla.gnome.org/show_bug.cgi?id=89416
dialogs above entire app group:
http://bugzilla.gnome.org/show_bug.cgi?id=88926
display window size/position:
http://bugzilla.gnome.org/show_bug.cgi?id=85213
http://bugzilla.gnome.org/show_bug.cgi?id=106645
http://bugzilla.gnome.org/show_bug.cgi?id=130821
configure click actions, alt+click:
http://bugzilla.gnome.org/show_bug.cgi?id=83210
http://bugzilla.gnome.org/show_bug.cgi?id=83210
system modal dialogs: http://bugzilla.gnome.org/show_bug.cgi?id=83357
system modal dialogs:
http://bugzilla.gnome.org/show_bug.cgi?id=83357
workspace wrapping: http://bugzilla.gnome.org/show_bug.cgi?id=89315
workspace wrapping:
http://bugzilla.gnome.org/show_bug.cgi?id=89315
raise windows on click:
http://bugzilla.gnome.org/show_bug.cgi?id=86108
http://bugzilla.gnome.org/show_bug.cgi?id=115072
http://bugzilla.gnome.org/show_bug.cgi?id=115753
Some discussion of how pointer focus is inherently a bit buggy because
of the "sometimes focus window that isn't under the mouse" heuristics:
http://bugzilla.gnome.org/show_bug.cgi?id=124798
(there are some other bugs that may have better explanation)
Tracking bugs
====
session management: http://bugzilla.gnome.org/show_bug.cgi?id=107063
revise theme format: http://bugzilla.gnome.org/show_bug.cgi?id=102547
revise theme format: http://bugzilla.gnome.org/show_bug.cgi?id=102547
session management: http://bugzilla.gnome.org/show_bug.cgi?id=107063
focus-stealing-prevention: http://bugzilla.gnome.org/show_bug.cgi?id=149028
other focus bugs: http://bugzilla.gnome.org/show_bug.cgi?id=155450
drag-and-drop: http://bugzilla.gnome.org/show_bug.cgi?id=155451
raising/stacking: http://bugzilla.gnome.org/show_bug.cgi?id=155452
tasklist/workspace switcher: http://bugzilla.gnome.org/show_bug.cgi?id=155453
window/workspace selection: http://bugzilla.gnome.org/show_bug.cgi?id=155456
key/mouse-binding actions: http://bugzilla.gnome.org/show_bug.cgi?id=155457
moving/resizing (constraints): http://bugzilla.gnome.org/show_bug.cgi?id=155458
window placement: http://bugzilla.gnome.org/show_bug.cgi?id=155460
logout/system-monitor keys: http://bugzilla.gnome.org/show_bug.cgi?id=155462
modal dialogs: http://bugzilla.gnome.org/show_bug.cgi?id=164841

View File

@@ -90,6 +90,9 @@ metacity_SOURCES= \
xprops.h \
$(EGGFILES)
# by setting libmetacity_private_la_CFLAGS, the files shared with
# metacity proper will be compiled with different names.
libmetacity_private_la_CFLAGS =
libmetacity_private_la_SOURCES= \
gradient.c \
gradient.h \
@@ -152,7 +155,7 @@ schema_DATA = $(schema_in_files:.schemas.in=.schemas)
if GCONF_SCHEMAS_INSTALL
install-data-local:
GCONF_CONFIG_SOURCE=$(GCONF_SCHEMA_CONFIG_SOURCE) $(GCONFTOOL) --makefile-install-rule $(srcdir)/$(schema_DATA)
GCONF_CONFIG_SOURCE=$(GCONF_SCHEMA_CONFIG_SOURCE) $(GCONFTOOL) --makefile-install-rule $(schema_DATA)
else
install-data-local:
endif
@@ -164,7 +167,7 @@ VARIABLES=default_icon_data $(srcdir)/default_icon.png \
stock_delete_data $(srcdir)/stock_delete.png
BUILT_SOURCES = inlinepixbufs.h
CLEANFILES = inlinepixbufs.h
CLEANFILES = inlinepixbufs.h metacity.desktop metacity.schemas
inlinepixbufs.h: $(IMAGES)
$(GDK_PIXBUF_CSOURCE) --raw --build-list $(VARIABLES) >$(srcdir)/inlinepixbufs.h

View File

@@ -34,7 +34,7 @@ meta_bell_flash_screen (MetaDisplay *display,
if (screen->flash_window == None)
{
Visual *visual = CopyFromParent;
Visual *visual = (Visual *)CopyFromParent;
XSetWindowAttributes xswa;
int depth = CopyFromParent;
xswa.save_under = True;
@@ -78,6 +78,10 @@ meta_bell_flash_screen (MetaDisplay *display,
XSync (display->xdisplay, False);
XUnmapWindow (display->xdisplay, screen->flash_window);
}
if (meta_prefs_get_focus_mode () != META_FOCUS_MODE_CLICK &&
!display->mouse_mode)
meta_display_increment_focus_sentinel (display);
XFlush (display->xdisplay);
}

View File

@@ -72,6 +72,7 @@ typedef struct _MetaWindowMenu MetaWindowMenu;
typedef void (* MetaWindowMenuFunc) (MetaWindowMenu *menu,
Display *xdisplay,
Window client_xwindow,
Time timestamp,
MetaMenuOp op,
int workspace,
gpointer data);

View File

@@ -1,7 +1,7 @@
/* Metacity compositing manager */
/*
* Copyright (C) 2003 Red Hat, Inc.
* Copyright (C) 2003, 2004 Red Hat, Inc.
* Copyright (C) 2003 Keith Packard
*
* This program is free software; you can redistribute it and/or
@@ -32,6 +32,10 @@
#include <X11/extensions/Xdamage.h>
#include <X11/extensions/Xrender.h>
#if COMPOSITE_MAJOR > 0 || COMPOSITE_MINOR >= 2
#define HAVE_NAME_WINDOW_PIXMAP 1
#endif
#endif /* HAVE_COMPOSITE_EXTENSIONS */
#define SHADOW_OFFSET 3
@@ -62,13 +66,17 @@ typedef struct
Picture picture;
XserverRegion border_size;
#if HAVE_NAME_WINDOW_PIXMAP
Pixmap pixmap;
#endif
unsigned int managed : 1;
unsigned int damaged : 1;
unsigned int viewable : 1;
unsigned int screen_index : 8;
#endif
} MetaCompositorWindow;
@@ -82,8 +90,6 @@ struct MetaCompositor
int damage_event_base;
int fixes_error_base;
int fixes_event_base;
int render_error_base;
int render_event_base;
GHashTable *window_hash;
@@ -94,7 +100,9 @@ struct MetaCompositor
guint have_composite : 1;
guint have_damage : 1;
guint have_fixes : 1;
guint have_render : 1;
#ifdef HAVE_NAME_WINDOW_PIXMAP
guint have_name_window_pixmap : 1;
#endif
};
#ifdef HAVE_COMPOSITE_EXTENSIONS
@@ -102,13 +110,20 @@ static void
meta_compositor_window_free (MetaCompositorWindow *cwindow)
{
g_assert (cwindow->damage != None);
meta_error_trap_push (cwindow->compositor->display);
/* This seems to cause an error if the window
* is destroyed?
*/
meta_error_trap_push (cwindow->compositor->display);
XDamageDestroy (cwindow->compositor->display->xdisplay,
cwindow->damage);
#if HAVE_NAME_WINDOW_PIXMAP
/* Free our window pixmap name */
if (cwindow->pixmap != None)
XFreePixmap (cwindow->compositor->display->xdisplay,
cwindow->pixmap);
#endif
meta_error_trap_pop (cwindow->compositor->display, FALSE);
g_free (cwindow);
@@ -143,7 +158,21 @@ meta_compositor_new (MetaDisplay *display)
compositor->composite_error_base = 0;
}
else
compositor->have_composite = TRUE;
{
int composite_major, composite_minor;
compositor->have_composite = TRUE;
#if HAVE_NAME_WINDOW_PIXMAP
XCompositeQueryVersion (display->xdisplay,
&composite_major, &composite_minor);
#if 0
if (composite_major > 0 || composite_minor >= 2)
compositor->have_name_window_pixmap = TRUE;
#endif
#endif
}
meta_topic (META_DEBUG_COMPOSITOR, "Composite extension event base %d error base %d\n",
compositor->composite_event_base,
@@ -176,25 +205,11 @@ meta_compositor_new (MetaDisplay *display)
meta_topic (META_DEBUG_COMPOSITOR, "Fixes extension event base %d error base %d\n",
compositor->fixes_event_base,
compositor->fixes_error_base);
if (!XRenderQueryExtension (display->xdisplay,
&compositor->render_event_base,
&compositor->render_error_base))
{
compositor->render_event_base = 0;
compositor->render_error_base = 0;
}
else
compositor->have_render = TRUE;
meta_topic (META_DEBUG_COMPOSITOR, "Render extension event base %d error base %d\n",
compositor->render_event_base,
compositor->render_error_base);
if (!(compositor->have_composite &&
compositor->have_fixes &&
compositor->have_render &&
compositor->have_damage))
compositor->have_damage &&
META_DISPLAY_HAS_RENDER (compositor->display)))
{
meta_topic (META_DEBUG_COMPOSITOR, "Failed to find all extensions needed for compositing manager, disabling compositing manager\n");
g_assert (!compositor->enabled);
@@ -270,6 +285,31 @@ window_extents (MetaCompositorWindow *cwindow)
#endif /* HAVE_COMPOSITE_EXTENSIONS */
#ifdef HAVE_COMPOSITE_EXTENSIONS
static void
window_get_paint_bounds (MetaCompositorWindow *cwindow,
int *x,
int *y,
int *w,
int *h)
{
#ifdef HAVE_NAME_WINDOW_PIXMAP
if (cwindow->pixmap != None)
{
*x = cwindow->x;
*y = cwindow->y;
*w = cwindow->width + cwindow->border_width * 2;
*h = cwindow->height + cwindow->border_width * 2;
}
else
#endif
{
*x = cwindow->x + cwindow->border_width;
*y = cwindow->y + cwindow->border_width;
*w = cwindow->width;
*h = cwindow->height;
}
}
static void
paint_screen (MetaCompositor *compositor,
MetaScreen *screen,
@@ -286,7 +326,7 @@ paint_screen (MetaCompositor *compositor,
meta_topic (META_DEBUG_COMPOSITOR, "Repainting screen %d root 0x%lx\n",
screen->number, screen->xroot);
meta_display_grab (screen->display);
/* meta_display_grab (screen->display); */
xdisplay = screen->display->xdisplay;
@@ -378,20 +418,24 @@ paint_screen (MetaCompositor *compositor,
meta_grab_op_is_moving (compositor->display->grab_op)))
{
/* Draw window transparent while resizing */
int x, y, w, h;
window_get_paint_bounds (cwindow, &x, &y, &w, &h);
XRenderComposite (xdisplay,
PictOpOver, /* PictOpOver for alpha, PictOpSrc without */
cwindow->picture,
screen->trans_picture,
buffer_picture,
0, 0, 0, 0,
cwindow->x + cwindow->border_width,
cwindow->y + cwindow->border_width,
cwindow->width,
cwindow->height);
x, y, w, h);
}
else
{
/* Draw window normally */
int x, y, w, h;
window_get_paint_bounds (cwindow, &x, &y, &w, &h);
/* superlame drop shadow */
XRenderFillRectangle (xdisplay, PictOpOver,
@@ -407,10 +451,7 @@ paint_screen (MetaCompositor *compositor,
None,
buffer_picture,
0, 0, 0, 0,
cwindow->x + cwindow->border_width,
cwindow->y + cwindow->border_width,
cwindow->width,
cwindow->height);
x, y, w, h);
}
next:
@@ -439,7 +480,7 @@ paint_screen (MetaCompositor *compositor,
XRenderFreePicture (xdisplay, buffer_picture);
XFreeGC (xdisplay, gc);
meta_display_ungrab (screen->display);
/* meta_display_ungrab (screen->display); */
XSync (screen->display->xdisplay, False);
}
@@ -1088,18 +1129,35 @@ meta_compositor_add_window (MetaCompositor *compositor,
cwindow->height = attrs->height;
cwindow->border_width = attrs->border_width;
#if HAVE_NAME_WINDOW_PIXMAP
if (compositor->have_name_window_pixmap)
{
meta_error_trap_push (compositor->display);
cwindow->pixmap = XCompositeNameWindowPixmap (compositor->display->xdisplay,
cwindow->xwindow);
meta_error_trap_pop (compositor->display, FALSE);
}
#endif
/* viewable == mapped for the root window, since root can't be unmapped */
cwindow->viewable = (attrs->map_state == IsViewable);
/* FIXME this assertion can fail somehow... */
g_assert (attrs->map_state != IsUnviewable);
pa.subwindow_mode = IncludeInferiors;
if (attrs->class != InputOnly)
{
{
format = XRenderFindVisualFormat (compositor->display->xdisplay,
attrs->visual);
cwindow->picture = XRenderCreatePicture (compositor->display->xdisplay,
xwindow,
#if HAVE_NAME_WINDOW_PIXMAP
cwindow->pixmap != None ?
cwindow->pixmap :
cwindow->xwindow,
#else
cwindow->xwindow,
#endif
format,
CPSubwindowMode,
&pa);
@@ -1299,7 +1357,3 @@ meta_compositor_damage_window (MetaCompositor *compositor,
window_extents (cwindow));
#endif /* HAVE_COMPOSITE_EXTENSIONS */
}

View File

@@ -2,6 +2,7 @@
/*
* Copyright (C) 2002, 2003 Red Hat, Inc.
* Copyright (C) 2003, 2004 Rob Adams
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as

View File

@@ -2,6 +2,7 @@
/*
* Copyright (C) 2001 Havoc Pennington
* Copyright (C) 2003 Rob Adams
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
@@ -235,8 +236,9 @@ meta_core_user_raise (Display *xdisplay,
}
void
meta_core_user_lower (Display *xdisplay,
Window frame_xwindow)
meta_core_user_lower_and_unfocus (Display *xdisplay,
Window frame_xwindow,
Time timestamp)
{
MetaDisplay *display;
MetaWindow *window;
@@ -248,6 +250,38 @@ meta_core_user_lower (Display *xdisplay,
meta_bug ("No such frame window 0x%lx!\n", frame_xwindow);
meta_window_lower (window);
if (meta_prefs_get_focus_mode () == META_FOCUS_MODE_CLICK)
{
/* Move window to the back of the focusing workspace's MRU list.
* Do extra sanity checks to avoid possible race conditions.
* (Borrowed from window.c.)
*/
if (window->screen->active_workspace &&
meta_window_located_on_workspace (window,
window->screen->active_workspace))
{
GList* link;
link = g_list_find (window->screen->active_workspace->mru_list,
window);
g_assert (link);
window->screen->active_workspace->mru_list =
g_list_remove_link (window->screen->active_workspace->mru_list,
link);
g_list_free (link);
window->screen->active_workspace->mru_list =
g_list_append (window->screen->active_workspace->mru_list,
window);
}
}
/* focus the default window, if needed */
if (window->has_focus)
meta_workspace_focus_default_window (window->screen->active_workspace,
NULL,
timestamp);
}
void

View File

@@ -60,8 +60,9 @@ void meta_core_user_resize (Display *xdisplay,
void meta_core_user_raise (Display *xdisplay,
Window frame_xwindow);
void meta_core_user_lower (Display *xdisplay,
Window frame_xwindow);
void meta_core_user_lower_and_unfocus (Display *xdisplay,
Window frame_xwindow,
Time timestamp);
void meta_core_user_focus (Display *xdisplay,
Window frame_xwindow,

Binary file not shown.

Before

Width:  |  Height:  |  Size: 424 B

After

Width:  |  Height:  |  Size: 1.2 KiB

View File

@@ -38,6 +38,7 @@ static void meta_window_present_delete_dialog (MetaWindow *window);
static void
delete_ping_reply_func (MetaDisplay *display,
Window xwindow,
Time timestamp,
void *user_data)
{
meta_topic (META_DEBUG_PING,
@@ -290,14 +291,16 @@ io_from_ping_dialog (GIOChannel *channel,
static void
delete_ping_timeout_func (MetaDisplay *display,
Window xwindow,
Time timestamp,
void *user_data)
{
MetaWindow *window = user_data;
GError *err;
int child_pid;
int outpipe;
char *argv[7];
char *argv[9];
char numbuf[32];
char timestampbuf[32];
char *window_id_str;
GIOChannel *channel;
@@ -314,14 +317,17 @@ delete_ping_timeout_func (MetaDisplay *display,
window_id_str = g_strdup_printf ("0x%lx", window->xwindow);
sprintf (numbuf, "%d", window->screen->number);
sprintf (timestampbuf, "%lu", timestamp);
argv[0] = METACITY_LIBEXECDIR"/metacity-dialog";
argv[1] = "--screen";
argv[2] = numbuf;
argv[3] = "--kill-window-question";
argv[4] = window->title;
argv[5] = window_id_str;
argv[6] = NULL;
argv[3] = "--timestamp";
argv[4] = timestampbuf;
argv[5] = "--kill-window-question";
argv[6] = window->title;
argv[7] = window_id_str;
argv[8] = NULL;
err = NULL;
if (!g_spawn_async_with_pipes ("/",
@@ -396,10 +402,10 @@ meta_window_delete (MetaWindow *window,
* I don't know how to avoid that though.
*/
meta_topic (META_DEBUG_FOCUS,
"Focusing MRU window because focus window %s was deleted/killed\n",
"Focusing default window because focus window %s was deleted/killed\n",
window->desc);
meta_workspace_focus_mru_window (window->screen->active_workspace,
window);
meta_workspace_focus_default_window (window->screen->active_workspace,
window);
#else
meta_topic (META_DEBUG_FOCUS,
"Not unfocusing %s on delete/kill\n",

File diff suppressed because it is too large Load Diff

View File

@@ -3,6 +3,7 @@
/*
* Copyright (C) 2001 Havoc Pennington
* Copyright (C) 2002 Red Hat, Inc.
* Copyright (C) 2003 Rob Adams
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
@@ -68,6 +69,7 @@ typedef struct _MetaGroupPropHooks MetaGroupPropHooks;
typedef void (* MetaWindowPingFunc) (MetaDisplay *display,
Window xwindow,
Time timestamp,
gpointer user_data);
@@ -165,8 +167,8 @@ struct _MetaDisplay
Atom atom_net_wm_state_below;
Atom atom_net_startup_id;
Atom atom_metacity_toggle_verbose;
Atom atom_metacity_update_counter;
Atom atom_sync_counter;
Atom atom_net_wm_sync_request;
Atom atom_net_wm_sync_request_counter;
Atom atom_gnome_panel_action;
Atom atom_gnome_panel_action_main_menu;
Atom atom_gnome_panel_action_run_dialog;
@@ -174,16 +176,39 @@ struct _MetaDisplay
Atom atom_net_wm_strut_partial;
Atom atom_net_frame_extents;
Atom atom_net_request_frame_extents;
Atom atom_net_wm_user_time;
Atom atom_net_wm_state_demands_attention;
Atom atom_net_restack_window;
Atom atom_net_moveresize_window;
Atom atom_net_desktop_geometry;
Atom atom_net_desktop_viewport;
Atom atom_metacity_version;
/* This is the actual window from focus events,
* not the one we last set
*/
MetaWindow *focus_window;
/* window we are expecting a FocusIn event for
/* window we are expecting a FocusIn event for or the current focus
* window if we are not expecting any FocusIn/FocusOut events; not
* perfect because applications can call XSetInputFocus directly.
* (It could also be messed up if a timestamp later than current
* time is sent to meta_display_set_input_focus_window, though that
* would be a programming error). See bug 154598 for more info.
*/
MetaWindow *expected_focus_window;
/* last timestamp passed to XSetInputFocus */
Time last_focus_time;
/* last user interaction time in any app */
Time last_user_time;
/* whether we're using mousenav (only relevant for sloppy&mouse focus modes;
* !mouse_mode means "keynav mode")
*/
guint mouse_mode : 1;
guint static_gravity_works : 1;
/*< private-ish >*/
@@ -221,6 +246,7 @@ struct _MetaDisplay
/* Pending autoraise */
guint autoraise_timeout_id;
MetaWindow* autoraise_window;
/* Alt+click button grabs */
unsigned int window_grab_modifiers;
@@ -243,10 +269,12 @@ struct _MetaDisplay
guint grab_wireframe_active : 1;
guint grab_was_cancelled : 1;
MetaRectangle grab_wireframe_rect;
MetaRectangle grab_wireframe_last_xor_rect;
MetaRectangle grab_initial_window_pos;
MetaResizePopup *grab_resize_popup;
GTimeVal grab_last_moveresize_time;
Time grab_motion_notify_time;
GList* grab_old_window_stacking;
/* we use property updates as sentinels for certain window focus events
* to avoid some race conditions on EnterNotify events
@@ -257,9 +285,10 @@ struct _MetaDisplay
int xkb_base_event_type;
#endif
#ifdef HAVE_XSYNC
/* alarm monitoring client's _METACITY_UPDATE_COUNTER */
XSyncAlarm grab_update_alarm;
/* alarm monitoring client's _NET_WM_SYNC_REQUEST_COUNTER */
XSyncAlarm grab_sync_request_alarm;
#endif
int grab_resize_timeout_id;
/* Keybindings stuff */
MetaKeyBinding *screen_bindings;
@@ -306,19 +335,57 @@ struct _MetaDisplay
#ifdef HAVE_XSYNC
int xsync_event_base;
int xsync_error_base;
#define META_DISPLAY_HAS_XSYNC(display) ((display)->xsync_event_base != 0)
#else
#define META_DISPLAY_HAS_XSYNC(display) FALSE
#endif
#ifdef HAVE_SHAPE
int shape_event_base;
int shape_error_base;
#define META_DISPLAY_HAS_SHAPE(display) ((display)->shape_event_base != 0)
#endif
#ifdef HAVE_RENDER
int render_event_base;
int render_error_base;
#endif
#ifdef HAVE_XSYNC
unsigned int have_xsync : 1;
#define META_DISPLAY_HAS_XSYNC(display) ((display)->have_xsync)
#else
#define META_DISPLAY_HAS_XSYNC(display) FALSE
#endif
#ifdef HAVE_SHAPE
unsigned int have_shape : 1;
#define META_DISPLAY_HAS_SHAPE(display) ((display)->have_shape)
#else
#define META_DISPLAY_HAS_SHAPE(display) FALSE
#endif
#ifdef HAVE_RENDER
unsigned int have_render : 1;
#define META_DISPLAY_HAS_RENDER(display) ((display)->have_render)
#else
#define META_DISPLAY_HAS_RENDER(display) FALSE
#endif
};
/* Xserver time can wraparound, thus comparing two timestamps needs to take
* this into account. Here's a little macro to help out. If no wraparound
* has occurred, this is equivalent to
* time1 < time2
* Of course, the rest of the ugliness of this macro comes from accounting
* for the fact that wraparound can occur and the fact that a timestamp of
* 0 must be special-cased since it means older than anything else.
*
* Note that this is NOT an equivalent for time1 <= time2; if that's what
* you need then you'll need to swap the order of the arguments and negate
* the result.
*/
#define XSERVER_TIME_IS_BEFORE_ASSUMING_REAL_TIMESTAMPS(time1, time2) \
( (( time1 < time2 ) && ( time2 - time1 < ((guint32)-1)/2 )) || \
(( time1 > time2 ) && ( time1 - time2 > ((guint32)-1)/2 )) \
)
#define XSERVER_TIME_IS_BEFORE(time1, time2) \
( time1 == 0 || \
(XSERVER_TIME_IS_BEFORE_ASSUMING_REAL_TIMESTAMPS(time1, time2) && \
time2 != 0) \
)
gboolean meta_display_open (const char *name);
void meta_display_close (MetaDisplay *display);
MetaScreen* meta_display_screen_for_root (MetaDisplay *display,
@@ -392,7 +459,8 @@ void meta_display_increment_event_serial (MetaDisplay *display);
void meta_display_update_active_window_hint (MetaDisplay *display);
guint32 meta_display_get_current_time (MetaDisplay *display);
guint32 meta_display_get_current_time (MetaDisplay *display);
guint32 meta_display_get_current_time_roundtrip (MetaDisplay *display);
/* utility goo */
const char* meta_event_mode_to_string (int m);
@@ -454,4 +522,29 @@ void meta_display_increment_focus_sentinel (MetaDisplay *display);
void meta_display_decrement_focus_sentinel (MetaDisplay *display);
gboolean meta_display_focus_sentinel_clear (MetaDisplay *display);
/* meta_display_set_input_focus_window is like XSetInputFocus, except
* that (a) it can't detect timestamps later than the current time,
* since Metacity isn't part of the XServer, and thus gives erroneous
* behavior in this circumstance (so don't do it), (b) it uses
* display->last_focus_time since we don't have access to the true
* Xserver one, (c) it makes use of display->user_time since checking
* whether a window should be allowed to be focused should depend
* on user_time events (see bug 167358, comment 15 in particular)
*/
void meta_display_set_input_focus_window (MetaDisplay *display,
MetaWindow *window,
gboolean focus_frame,
Time timestamp);
/* meta_display_focus_the_no_focus_window is called when the
* designated no_focus_window should be focused, but is otherwise the
* same as meta_display_set_input_focus_window
*/
void meta_display_focus_the_no_focus_window (MetaDisplay *display,
Time timestamp);
void meta_display_queue_autoraise_callback (MetaDisplay *display,
MetaWindow *window);
void meta_display_remove_autoraise_callback (MetaDisplay *display);
#endif

View File

@@ -125,6 +125,22 @@ update_wireframe_window (MetaDisplay *display,
#endif
}
static void
graphics_sync (BoxAnimationContext *context)
{
XImage *image;
/* A hack to force the X server to synchronize with the
* graphics hardware
*/
image = XGetImage (context->screen->display->xdisplay,
context->screen->xroot,
0, 0, 1, 1,
AllPlanes, ZPixmap);
XDestroyImage (image);
}
static gboolean
effects_draw_box_animation_timeout (BoxAnimationContext *context)
{
@@ -182,6 +198,8 @@ effects_draw_box_animation_timeout (BoxAnimationContext *context)
XDestroyWindow (context->screen->display->xdisplay,
context->wireframe_xwindow);
}
graphics_sync (context);
g_free (context);
return FALSE;
@@ -267,7 +285,7 @@ effects_draw_box_animation_timeout (BoxAnimationContext *context)
}
/* kick changes onto the server */
XFlush (context->screen->display->xdisplay);
graphics_sync (context);
return TRUE;
}
@@ -364,7 +382,7 @@ meta_effects_draw_box_animation (MetaScreen *screen,
0,
CopyFromParent,
CopyFromParent,
CopyFromParent,
(Visual *)CopyFromParent,
CWOverrideRedirect | CWBackPixel,
&attrs);

View File

@@ -25,7 +25,7 @@
#include "util.h"
#include "screen.h"
#define META_MINIMIZE_ANIMATION_LENGTH 0.35
#define META_MINIMIZE_ANIMATION_LENGTH 0.25
#define META_SHADE_ANIMATION_LENGTH 0.2
typedef enum

View File

@@ -24,8 +24,8 @@
static GtkWidget *tip = NULL;
static GtkWidget *label = NULL;
static int screen_width = 0;
static int screen_height = 0;
static int screen_right_edge = 0;
static int screen_bottom_edge = 0;
static gint
expose_handler (GtkTooltips *tooltips)
@@ -50,13 +50,17 @@ meta_fixed_tip_show (Display *xdisplay, int screen_number,
tip = gtk_window_new (GTK_WINDOW_POPUP);
{
GdkScreen *gdk_screen;
GdkRectangle monitor;
gint mon_num;
gdk_screen = gdk_display_get_screen (gdk_display_get_default (),
screen_number);
gtk_window_set_screen (GTK_WINDOW (tip),
gdk_screen);
screen_width = gdk_screen_get_width (gdk_screen);
screen_height = gdk_screen_get_height (gdk_screen);
mon_num = gdk_screen_get_monitor_at_point (gdk_screen, root_x, root_y);
gdk_screen_get_monitor_geometry (gdk_screen, mon_num, &monitor);
screen_right_edge = monitor.x + monitor.width;
screen_bottom_edge = monitor.y + monitor.height;
}
gtk_widget_set_app_paintable (tip, TRUE);
@@ -64,10 +68,8 @@ meta_fixed_tip_show (Display *xdisplay, int screen_number,
gtk_widget_set_name (tip, "gtk-tooltips");
gtk_container_set_border_width (GTK_CONTAINER (tip), 4);
gtk_signal_connect_object (GTK_OBJECT (tip),
"expose_event",
GTK_SIGNAL_FUNC (expose_handler),
NULL);
g_signal_connect_swapped (tip, "expose_event",
G_CALLBACK (expose_handler), NULL);
label = gtk_label_new (NULL);
gtk_label_set_line_wrap (GTK_LABEL (label), TRUE);
@@ -76,20 +78,15 @@ meta_fixed_tip_show (Display *xdisplay, int screen_number,
gtk_container_add (GTK_CONTAINER (tip), label);
gtk_signal_connect (GTK_OBJECT (tip),
"destroy",
GTK_SIGNAL_FUNC (gtk_widget_destroyed),
&tip);
g_signal_connect (tip, "destroy",
G_CALLBACK (gtk_widget_destroyed), &tip);
}
gtk_label_set_markup (GTK_LABEL (label), markup_text);
/* FIXME should also handle Xinerama here, just to be
* really cool
*/
gtk_window_get_size (GTK_WINDOW (tip), &w, &h);
if ((root_x + w) > screen_width)
root_x -= (root_x + w) - screen_width;
if ((root_x + w) > screen_right_edge)
root_x -= (root_x + w) - screen_right_edge;
gtk_window_move (GTK_WINDOW (tip), root_x, root_y);

View File

@@ -2,7 +2,7 @@
/*
* Copyright (C) 2001 Havoc Pennington
* Copyright (C) 2003 Red Hat, Inc.
* Copyright (C) 2003, 2004 Red Hat, Inc.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
@@ -26,6 +26,10 @@
#include "errors.h"
#include "keybindings.h"
#ifdef HAVE_RENDER
#include <X11/extensions/Xrender.h>
#endif
#define EVENT_MASK (SubstructureRedirectMask | \
StructureNotifyMask | SubstructureNotifyMask | \
ExposureMask | \
@@ -44,7 +48,7 @@ meta_window_ensure_frame (MetaWindow *window)
if (window->frame)
return;
/* See comment below for why this is required. */
meta_display_grab (window->display);
@@ -77,14 +81,20 @@ meta_window_ensure_frame (MetaWindow *window)
/* Default depth/visual handles clients with weird visuals; they can
* always be children of the root depth/visual obviously, but
* e.g. DRI games can't be children of a parent that has the same
* visual as the client.
* visual as the client. NULL means default visual.
*
* We look for an ARGB visual if we can find one, otherwise use
* the default of NULL.
*/
/* Special case for depth 32 windows (assumed to be ARGB),
* we use the window's visual. Otherwise we just use the system visual.
*/
visual = 0;
/* XXX special case for depth 32 windows (assumed to be ARGB) */
if (window->depth == 32)
visual = window->xvisual;
visual = window->xvisual;
else
visual = NULL;
frame->xwindow = meta_ui_create_frame_window (window->screen->ui,
window->display->xdisplay,
visual,
@@ -381,6 +391,7 @@ meta_frame_set_screen_cursor (MetaFrame *frame,
{
xcursor = meta_display_create_x_cursor (frame->window->display, cursor);
XDefineCursor (frame->window->display->xdisplay, frame->xwindow, xcursor);
XFlush (frame->window->display->xdisplay);
XFreeCursor (frame->window->display->xdisplay, xcursor);
}
}

View File

@@ -64,6 +64,9 @@ static void meta_frames_paint_to_drawable (MetaFrames *frames,
GdkDrawable *drawable,
GdkRegion *region);
static void meta_frames_set_window_background (MetaFrames *frames,
MetaUIFrame *frame);
static void meta_frames_calc_geometry (MetaFrames *frames,
MetaUIFrame *frame,
MetaFrameGeometry *fgeom);
@@ -156,7 +159,7 @@ unsigned_long_hash (gconstpointer v)
gulong val = * (const gulong *) v;
/* I'm not sure this works so well. */
#if G_SIZEOF_LONG > 4
#if GLIB_SIZEOF_LONG > 4
return (guint) (val ^ (val >> 32));
#else
return val;
@@ -270,8 +273,8 @@ queue_recalc_func (gpointer key, gpointer value, gpointer data)
* resize may not actually be needed so we always redraw
* in case of color change.
*/
gtk_style_set_background (GTK_WIDGET (frames)->style,
frame->window, GTK_STATE_NORMAL);
meta_frames_set_window_background (frames, frame);
gdk_window_invalidate_rect (frame->window, NULL, FALSE);
meta_core_queue_frame_resize (gdk_display,
frame->xwindow);
@@ -315,8 +318,8 @@ queue_draw_func (gpointer key, gpointer value, gpointer data)
* resize may not actually be needed so we always redraw
* in case of color change.
*/
gtk_style_set_background (GTK_WIDGET (frames)->style,
frame->window, GTK_STATE_NORMAL);
meta_frames_set_window_background (frames, frame);
gdk_window_invalidate_rect (frame->window, NULL, FALSE);
}
@@ -477,8 +480,9 @@ meta_frames_manage_window (MetaFrames *frames,
frame->window = window;
gdk_window_set_user_data (frame->window, frames);
gtk_style_set_background (GTK_WIDGET (frames)->style,
frame->window, GTK_STATE_NORMAL);
/* Set the window background to the current style */
meta_frames_set_window_background (frames, frame);
/* Don't set event mask here, it's in frame.c */
@@ -612,8 +616,8 @@ meta_frames_reset_bg (MetaFrames *frames,
widget = GTK_WIDGET (frames);
frame = meta_frames_lookup_window (frames, xwindow);
gtk_style_set_background (widget->style, frame->window, GTK_STATE_NORMAL);
meta_frames_set_window_background (frames, frame);
}
static void
@@ -848,7 +852,7 @@ meta_frames_apply_shapes (MetaFrames *frames,
0,
CopyFromParent,
CopyFromParent,
CopyFromParent,
(Visual *)CopyFromParent,
CWOverrideRedirect,
&attrs);
@@ -1368,7 +1372,9 @@ meta_frames_button_press_event (GtkWidget *widget,
}
else if (event->button == 2)
{
meta_core_user_lower (gdk_display, frame->xwindow);
meta_core_user_lower_and_unfocus (gdk_display,
frame->xwindow,
event->time);
}
else if (event->button == 3)
{
@@ -1893,6 +1899,22 @@ meta_frames_paint_to_drawable (MetaFrames *frames,
g_free (areas);
}
static void
meta_frames_set_window_background (MetaFrames *frames,
MetaUIFrame *frame)
{
gtk_style_set_background (GTK_WIDGET (frames)->style,
frame->window, GTK_STATE_NORMAL);
#if 0
/* This is what we want for transparent background */
{
col.pixel = 0;
gdk_window_set_background (window, &col);
}
#endif
}
static gboolean
meta_frames_enter_notify_event (GtkWidget *widget,
GdkEventCrossing *event)

View File

@@ -2,6 +2,7 @@
/*
* Copyright (C) 2002 Red Hat Inc.
* Copyright (C) 2003 Rob Adams
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as

Some files were not shown because too many files have changed in this diff Show More