Compare commits

...

325 Commits

Author SHA1 Message Date
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
Havoc Pennington
2195dfc9f8 2.7.0 2004-02-15 22:47:24 +00:00
Anders Carlsson
27eb5a60f3 Actually translate a message, don't just mark it for translation.
2004-02-15  Anders Carlsson  <andersca@gnome.org>

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

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

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

	* src/workspace.c (meta_workspace_activate_with_focus): if we're
	in a move grab op, bring along the drag window.
2004-02-15 05:29:49 +00:00
Rob Adams
d53afd3ae1 Add configure option to not even try using xinerama, to make metacity
2004-02-14  Rob Adams  <readams@readams.net>

	* configure.in: Add configure option to not even try using
	xinerama, to make metacity buildable on systems with no shared
	library version of the xinerama libraries.  Patch for #134203 from
	Julio M. Merino Vidal.
2004-02-15 05:17:34 +00:00
Kjartan Maraas
57f9a51a58 Updated Norwegian translation.
2004-02-11  Kjartan Maraas  <kmaraas@gnome.org>

	* no.po: Updated Norwegian translation.
2004-02-11 18:49:20 +00:00
Denis Lackovic
799f3274d9 *** empty log message *** 2004-02-07 20:43:13 +00:00
Changwoo Ryu
a788bee6f9 Updated Korean translation.
* ko.po: Updated Korean translation.
2004-02-07 16:21:17 +00:00
Pauli Virtanen
0a83c10948 Updated Finnish translation.
2004-02-05  Pauli Virtanen  <pauli.virtanen@hut.fi>

	* fi.po: Updated Finnish translation.
2004-02-05 22:12:34 +00:00
Kostas Papadimas
dfa9c24b87 Updated the Greek translation 2004-02-03 16:21:57 +00:00
Laurent Dhima
7bf8eee605 Updated Albanian translation
* sq.po: Updated Albanian translation
2004-02-02 13:34:17 +00:00
Laurent Dhima
664216dc8b Updated 2004-02-02 13:32:35 +00:00
Rob Adams
b3f95bf7d1 Bring up to date with current draft EWHM.
2004-02-01  Rob Adams  <readams@readams.net>

	* COMPLIANCE: Bring up to date with current draft EWHM.
2004-02-01 23:26:42 +00:00
Ole Laursen
f2e783b2c5 Updated Danish translation.
2004-02-01  Ole Laursen  <olau@hardworking.dk>

	* da.po: Updated Danish translation.
2004-01-31 23:47:01 +00:00
Mətin Əmirov
e68b1b6c42 Translation updated.
2004-01-31  Mətin Əmirov  <metin@karegen.com>

	* az.po: Translation updated.
2004-01-31 20:17:02 +00:00
Miloslav Trmac
217ba6c1b7 Fixed Czech translation 2004-01-28 11:30:38 +00:00
James M. Cape
74a8b5b78b Use the 'utility' frame for dialogs too.
2004-01-27  James M. Cape  <jcape@ignore-your.tv>

        * src/themes/Esco/metacity-theme-1.xml: Use the 'utility' frame
        for dialogs too.
2004-01-28 04:20:22 +00:00
Artur Flinta
81fab83067 Updated Polish translation by GNOME PL Team.
2004-01-20  Artur Flinta  <aflinta@cvs.gnome.org>

	* pl.po: Updated Polish translation by GNOME PL Team.
2004-01-27 14:10:05 +00:00
Andraz Tori
0f23f3f05b Updated Slovenian translation 2004-01-26 20:51:23 +00:00
James M. Cape
4b3b706369 Updated this theme.
2004-01-24  James M. Cape  <jcape@ignore-your.tv>

	* src/themes/Esco/metacity-theme-1.xml: Updated this theme.
2004-01-24 16:20:41 +00:00
Elijah Newren
595cbe2ac0 Remove duplicate entries. 2004-01-21 17:33:56 +00:00
Artur Flinta
b20391780d Updated Polish translation by GNOME PL Team.
2004-01-20  Artur Flinta  <aflinta@cvs.gnome.org>

	* pl.po: Updated Polish translation by GNOME PL Team.
2004-01-20 13:08:26 +00:00
Christian Neumair
dd8e9e5725 Updated German translation. 2004-01-18 09:47:44 +00:00
Rob Adams
007a1f0d0d Default binding removed for toggle_shaded, since we don't have anything in
2004-01-17  Rob Adams  <readams@readams.net>

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

	* src/window.c (meta_window_show_menu): Don't show
	left/right/up/down if a window is sticky.  Make "On Top"
	insensitive for docks, splash screens, and desktops since it has
	no effect anyway.
2004-01-17 18:57:26 +00:00
Hasbullah Bin Pit
6770329e69 Updated Malay translation.
2004-01-16  Hasbullah Bin Pit <sebol@ikhlas.com>

        * ms.po: Updated Malay translation.
2004-01-16 15:31:44 +00:00
Laurent Dhima
4f448440d4 Updated Albanian translation
* sq.po: Updated Albanian translation
2004-01-15 18:10:33 +00:00
Laurent Dhima
039ffb0cb4 Updated 2004-01-15 18:09:08 +00:00
Kjartan Maraas
2f561e5553 Updated Norwegian translation.
2004-01-13  Kjartan Maraas  <kmaraas@gnome.org>

	* no.po: Updated Norwegian translation.
2004-01-13 21:16:17 +00:00
Artur Flinta
2d314d84cd Updated Polish translation by GNOME PL Team.
2004-01-13  Artur Flinta  <aflinta@cvs.gnome.org>

	* pl.po: Updated Polish translation by GNOME PL Team.
2004-01-13 15:08:58 +00:00
Zygimantas Berucka
3b7f92ae5d Updated Lithuanian translation by Tomas Kuliavas.
2004-01-12  Zygimantas Berucka  <uid0@tuxfamily.org>

* lt.po: Updated Lithuanian translation by Tomas Kuliavas.
2004-01-12 10:41:05 +00:00
Christophe Merlet
4f7e28ff3c Updated French translation. 2004-01-11 18:35:49 +00:00
Changwoo Ryu
47cf3085e7 Updated Korean translation.
* ko.po: Updated Korean translation.
2004-01-11 12:43:10 +00:00
Rob Adams
3d996ff73d update default action_double_click_titlebar to be toggle_maximize instead
2004-01-10  Rob Adams  <readams@readams.net>

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

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

	Add _NET_FRAME_EXTENTS and _NET_REQUEST_FRAME_EXTENTS.

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

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

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

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

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

	* src/screen.c (set_supported_hint): add atom_net_frame_extents
	and atom_net_request_frame_extents
2004-01-10 17:16:07 +00:00
Calum Benson
cc7195547a Mention bug number in comment. 2004-01-09 11:18:09 +00:00
Calum Benson
c820769bce Ensure window buttons get larger when using large print themes.
Fixes #123469.
2004-01-09 11:17:28 +00:00
Vincent van Adrighem
b2d009d01d Translation updated by Tino Meinen.
2004-01-05  Vincent van Adrighem  <adrighem@gnome.org>

	* nl.po: Translation updated by Tino Meinen.
2004-01-05 20:51:34 +00:00
Denis Lackovic
fe8abfa887 *** empty log message *** 2004-01-05 11:33:14 +00:00
Rob Adams
2fdb75ad45 Maintain the button grab for sloppy and mouse focus all the time. This
2003-01-04  Rob Adams  <readams@readams.net>

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

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

	* src/window.c (meta_window_notify_focus): drop focus button grab
	on FocusIn and acquire it on FocusOut only when in click-to-focus
	mode.
2004-01-05 07:24:32 +00:00
Duarte Loreto
07c0a53316 Updated and revised Portuguese translation.
2004-01-04  Duarte Loreto <happyguy_pt@hotmail.com>

	* pt.po: Updated and revised Portuguese translation.
2004-01-04 15:43:34 +00:00
Denis Lackovic
e5cf7ff55b *** empty log message *** 2004-01-04 08:02:07 +00:00
Sanlig Badral
3c1fe8bedd Updated Mongolian translation 2004-01-03 14:12:08 +00:00
Denis Lackovic
88aeeb8cd5 *** empty log message *** 2004-01-03 08:49:57 +00:00
Rob Adams
1b323f87d7 Update reference to EWMH.
2003-01-02  Rob Adams  <readams@readams.net>

	* README: Update reference to EWMH.

	* HACKING: Add a reference to COMPLIANCE and to the ICCCM and
	EWHM.
2004-01-02 21:51:52 +00:00
Sanlig Badral
2d74e25058 Updated Mongolian translation 2004-01-02 16:24:20 +00:00
Taneem Ahmed
98e882720c Updated Bangla (Bengali) translation.
2004-01-02  Taneem Ahmed  <taneem@bengalinux.org>

	* bn.po: Updated Bangla (Bengali) translation.
2004-01-02 07:00:06 +00:00
Denis Lackovic
93c5a042ee croatian translations updated 2003-12-30 19:51:25 +00:00
Denis Lackovic
99d7cadf67 croatian translations updated 2003-12-30 19:40:44 +00:00
Christian Neumair
0e3ecc7a31 Updated German translation. 2003-12-29 17:19:04 +00:00
Åsmund Skjæveland
c635a55612 Updated Norwegian Nynorsk translation.
2003-12-29  Åsmund Skjæveland  <aasmunds@fys.uio.no>

	* nn.po: Updated Norwegian Nynorsk translation.
2003-12-29 11:09:24 +00:00
Görkem Çetin
5a088c5bbc CVS_SILENT 2003-12-28 21:04:49 +00:00
Havoc Pennington
a27089a110 handle ReparentNotify, and add a lot of debug output.
2003-12-25  Havoc Pennington  <hp@redhat.com>

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

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

	* src/display.c (event_callback): don't do any of the compositor
	event handling inline, do it all in compositor.c
2003-12-26 00:05:26 +00:00
Francisco Javier F. Serrador
daf93c5ed0 Updated Spanish translation
2003-12-24  Francisco Javier F. Serrador  <serrador@cvs.gnome.org>

	* es.po: Updated Spanish translation
2003-12-24 01:52:48 +00:00
Gustavo Noronha Silva
56d75ebf44 updated translation.
2003-12-23  Gustavo Noronha Silva  <kov@debian.org>

	* pt_BR.po: updated translation.
2003-12-23 03:56:13 +00:00
Miloslav Trmac
5815ebd3a4 Update Czech translation 2003-12-22 18:52:48 +00:00
Danilo Šegan
78f925c6a6 Updated Serbian translation. 2003-12-22 07:42:38 +00:00
Christian Rose
1115e22481 Updated Swedish translation.
2003-12-22  Christian Rose  <menthos@menthos.com>

	* sv.po: Updated Swedish translation.
2003-12-22 00:44:48 +00:00
Rob Adams
c2ba0a7d67 2003-12-21 Rob Adams <readams@readams.net
* src/main.c (main): fix minor punctuation error in a string.  Fix
	for #129805.
2003-12-22 00:43:53 +00:00
Francisco Javier F. Serrador
e699ff2e83 Updated Spanish translation.
2003-12-21  Francisco Javier F. Serrador  <serrador@cvs.gnome.org>

	* es.po: Updated Spanish translation.
2003-12-21 16:40:35 +00:00
Danilo Šegan
804411bd68 Updated Serbian translation. 2003-12-21 16:37:19 +00:00
Rob Adams
690100f1ad Reorganize the window menu according to discussion on #110904. The
2003-12-20  Rob Adams  <readams@readams.net>

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

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

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

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

	* src/window.c (menu_callback): implement support for the new menu
	ops.
	(meta_window_show_menu): don't use the OP_*SHAPE operations, and
	compute which of the OP_MOVE_TO_* ops should be used for the
	current workspace and workspace layout.  Add the OP_*ABOVE
	operations.
2003-12-21 06:31:40 +00:00
Arafat Medini
95b0ee480e Added Arabic translation
2003-12-20  Arafat Medini  <lumina@silverpen.de>

	 * ar.po: Added Arabic translation
2003-12-20 16:07:43 +00:00
Rob Adams
4be245a26a add test-size-hints to cvsignore 2003-12-19 23:37:23 +00:00
Gustavo Noronha Silva
a0863fc437 updated translation.
2003-12-19  Gustavo Noronha Silva  <kov@debian.org>

	* pt_BR.po: updated translation.
2003-12-19 04:25:11 +00:00
Yukihiro Nakai
c9f0005b05 Minor update. 2003-12-18 11:33:59 +00:00
Rob Adams
104786735a initialize grab_wireframe_active to FALSE. Fix for #128090.
2003-12-17  Rob Adams  <readams@readams.net>

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

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

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

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

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

	* src/workspace.c (meta_workspace_add_window): handle sticky
	windows so that we add to add mru lists if needed
	(meta_workspace_remove_window): handle sticky windows so that they
	are removed from all mru lists if needed.
2003-12-14 19:19:40 +00:00
Francisco F. Serrador
860ae37db5 Updated Spanish translation.
2003-12-14  Francisco F. Serrador <serrador@cvs.gnome.org>

	* es.po: Updated Spanish translation.
2003-12-14 10:35:39 +00:00
Rob Adams
9bde925d3d Revert prior change 2003-12-13 23:00:06 +00:00
Rob Adams
7630d22b8d Add increased robustness for dealing with all workspaces windows and MRU
2003-12-13  Rob Adams  <readams@readams.net>

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

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

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

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

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

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

	* src/window.c (meta_window_free): unstick window to get it out of
	mru_list it should not be in; assert that window has been removed
	from all mru_list. Perhaps fixes #122016 crash.
2003-12-13 03:58:55 +00:00
Danilo Šegan
0bb3361b73 Cleared up Serbian translation.
2003-12-04  Danilo Šegan  <dsegan@gmx.net>

	* sr.po, sr@Latn.po: Cleared up Serbian translation.
2003-12-04 20:11:54 +00:00
Sanlig Badral
b1c1e4a7db Updated Mongolian translation 2003-12-03 10:35:10 +00:00
Miloslav Trmac
82673cb51f Update Czech translation 2003-12-02 20:52:15 +00:00
Havoc Pennington
4ebdb0b9c0 fix up compositing manager to somewhat work
2003-11-29  Havoc Pennington  <hp@redhat.com>

	* fix up compositing manager to somewhat work
2003-11-30 03:30:27 +00:00
Ole Laursen
4c5e4442c1 Updated Danish translation.
2003-11-29  Ole Laursen  <olau@hardworking.dk>

	* da.po: Updated Danish translation.
2003-11-28 23:54:00 +00:00
Rob Adams
01fa9cfc63 fix a couple of minor typos.
2003-11-26  Rob Adams  <readams@readams.net>

	* COMPLIANCE: fix a couple of minor typos.
2003-11-26 18:11:57 +00:00
Vincent van Adrighem
6ff017e875 Dutch translation updated by Vincent van Adrighem.
2003-11-26   Vincent van Adrighem  <adrighem@gnome.org>

	* nl.po: Dutch translation updated by Vincent van Adrighem.
2003-11-25 23:22:41 +00:00
Havoc Pennington
8d892f76da Oops, did not mean to do that. 2003-11-24 23:05:04 +00:00
Havoc Pennington
03bbe3de17 fix the extension checks
2003-11-24  Havoc Pennington  <hp@redhat.com>

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

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

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

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

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

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

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

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

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

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

	* COMPLIANCE: new file

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

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

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

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

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

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

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

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

	* src/window.c (update_net_wm_type): don't set window->type_atom
	here so that the type-inference code will actually be called.  Fix
	for #126873 from Keith Packard.
2003-11-16 03:56:04 +00:00
Pablo Gonzalo del Campo
5c10e0a859 Updated Spanish translation by Francisco Javier F. Serrador
2003-11-10  Pablo Gonzalo del Campo  <pablodc@bigfoot.com>

        * es.po: Updated Spanish translation by
                 Francisco Javier F. Serrador <serrador@arrakis.es>.
2003-11-10 18:57:27 +00:00
Rob Adams
3c384d37c6 configure frame first if we grow more than we shrink combined in both
2003-11-08  Rob Adams  <readams@readams.net>

	* src/window.c (meta_window_move_resize_internal): configure frame
	first if we grow more than we shrink combined in both dimensions.
	Patch from Soren Sandmann for #108925.
2003-11-08 17:25:49 +00:00
Danilo Šegan
2592efeee4 Updated Serbian translation.
2003-11-08  Danilo Šegan  <dsegan@gmx.net>

	* sr.po, sr@Latn.po: Updated Serbian translation.
2003-11-08 16:21:22 +00:00
Rob Adams
66b2e8bc3f use maximize_after_placement to automaximize in meta_window_place; avoids
2003-11-07  Rob Adams  <readams@readams.net>

	* src/place.c (meta_window_place): use maximize_after_placement to
	automaximize in meta_window_place; avoids a problem with not
	recalculating the frame geometry after auto-maximizing.
2003-11-08 05:47:37 +00:00
Rob Adams
17dc2d6151 show the window if it's a transient of a dock or desktop, since otherwise
2003-11-07  Rob Adams  <readams@readams.net>

	* src/window.c (window_should_be_showing): show the window if it's
	a transient of a dock or desktop, since otherwise such windows are
	invisible in show desktop mode.  Fix for #124648.
2003-11-08 05:29:23 +00:00
Rob Adams
2218b79143 Try harder to find a theme in the event that the theme in the preference
2003-11-07  Rob Adams  <readams@readams.net>

	* src/main.c (main): Try harder to find a theme in the event that
	the theme in the preference cannot be found.  Patch from Marcin
	Krzyzanowski.  See #125815.

	* src/place.c (meta_window_place): use "visual" centering for
	dialog placement and clip new dialogs to an xinerama workspace.
	Fix for #118336.
2003-11-08 04:43:18 +00:00
Denis Lackovic
17b8a1f3e6 croatian translations added 2003-11-07 18:20:35 +00:00
Havoc Pennington
830a52ee25 patch to avoid creating stick/unstick menu items when only one workspace,
2003-10-30  Havoc Pennington  <hp@redhat.com>

	* src/menu.c (meta_window_menu_new): patch to avoid creating
	stick/unstick menu items when only one workspace, bug #116563
	from Michael Terry
2003-10-30 21:11:11 +00:00
Kostas Papadimas
18b38ac526 Updated the Greek translation 2003-10-30 17:42:29 +00:00
Havoc Pennington
8658268847 if a window is focused which is not either a dock or a transient in the
2003-10-25  Havoc Pennington  <hp@redhat.com>

	* src/window.c (meta_window_notify_focus): if a window is focused
	which is not either a dock or a transient in the same group as a
	dock, shuffle all dock/desktop windows to the end of the MRU list
	so they won't annoyingly get focus all the time. #123816
2003-10-26 16:22:51 +00:00
Andras Timar
8a271ee5ac Updated Hungarian translation.
2003-10-20  Andras Timar  <timar@gnome.hu>

	* hu.po: Updated Hungarian translation.
2003-10-20 09:49:05 +00:00
Havoc Pennington
cf15ea0a3d add note about mouse focus heuristics 2003-10-17 01:28:11 +00:00
Danilo Šegan
669cdc4bb6 Updated Serbian translation.
2003-10-15  Danilo Šegan  <dsegan@gmx.net>

	* sr.po, sr@Latn.po: Updated Serbian translation.
2003-10-15 21:09:13 +00:00
Yukihiro Nakai
68d6a92972 Update Japanese translation. 2003-10-15 16:25:05 +00:00
Yukihiro Nakai
4770da34b3 Gettextize metacity-theme-viewer. #121747 2003-10-15 16:04:12 +00:00
Danilo Šegan
9197c4f835 Updated Serbian translation.
2003-10-13  Danilo Šegan  <dsegan@gmx.net>

	* sr.po, sr@Latn.po: Updated Serbian translation.
2003-10-13 20:22:37 +00:00
Havoc Pennington
6aff3466c6 In the "prefs cause code complexity" department, here's a "sloppy focus
2003-10-13  Havoc Pennington  <hp@redhat.com>

        In the "prefs cause code complexity" department, here's a "sloppy
	focus die die die" kind of moment.

	* src/display.c (meta_display_grab_focus_window_button): don't
	grab in sloppy focus mode, since we were dropping the grab on
	window enter anyway this just removes races from the current
	behavior.

	* src/display.c (prefs_changed_callback): ungrab/grab on focus
	mode changes, since we treat sloppy and click differently.
2003-10-13 20:15:40 +00:00
Havoc Pennington
e98fad3e62 Merge reduced_resources mode patch from the branch. Offers wireframe and
2003-10-12  Havoc Pennington  <hp@redhat.com>

        Merge reduced_resources mode patch from the branch. Offers
	wireframe and no-animations.

	* src/window.c (implement_showing): no animation if we are
	in reduced resources mode

	* src/prefs.c: add REDUCED_RESOURCES pref

	* src/window.c (meta_window_update_keyboard_resize): fix to
	modify grab_anchor_window_pos to grab_wireframe_rect if
	appropriate instead of window->rect

	* src/display.h (struct _MetaDisplay): add grab_start_serial used
	to avoid responding to events that occurred prior to the grab
	initialization.

	Still broken in various ways, specifically EnterNotify that
	occurred prior to XGrabPointer is processed as if it occurred
	after.

	* src/window.c (meta_window_update_keyboard_move): add this
	instead of meta_window_warp_pointer() crack

	* src/effects.c (meta_effects_update_wireframe): draw a kind of
	grid for the wireframe, instead of just a rectangle, like twm

	* src/screen.c (meta_screen_new): line width of 3 for the XOR gc

        "Reduced resources" mode based on wireframe patch from
	Erwann Chenede. Still pretty buggy.

	* src/keybindings.c (process_keyboard_move_grab)
	(process_keyboard_resize_grab): add gruesome wireframe hacks

	* src/display.c (meta_display_end_grab_op): end wireframe
	(meta_display_begin_grab_op): begin wireframe

	* src/effects.c (meta_effects_end_wireframe)
	(meta_effects_update_wireframe, meta_effects_begin_wireframe):
	routines to draw the wireframe stuff

	* src/window.c (window_should_be_showing): hide window when
	doing wireframe, commented out as it breaks grab
	* src/window.c (meta_window_refresh_resize_popup): handle wireframe

	* src/screen.c (meta_screen_new): create a screen->root_xor_gc
	for use in drawing wireframes

	* src/frames.c (meta_frames_push_delay_exposes): repaint
	everything before we delay
2003-10-12 06:25:38 +00:00
Havoc Pennington
6628acb59c initialize display->grab_have_pointer to FALSE, previously I think you
2003-10-11  Havoc Pennington  <hp@pobox.com>

	* src/display.c (meta_display_begin_grab_op): initialize
	display->grab_have_pointer to FALSE, previously I think you could
	get a case where we didn't have the grab and thought we did.
	Bugs were reported with this happening. Of course we still have
	the "why did the grab fail" problem, but it should be less
	noticeable with this fixed.
2003-10-11 04:27:06 +00:00
Havoc Pennington
d76d953d69 rationales.txt updates 2003-10-11 04:16:12 +00:00
Andras Timar
e9358b5eea Updated Hungarian translation.
2003-10-08  Andras Timar  <timar@gnome.hu>

	* hu.po: Updated Hungarian translation.
2003-10-08 11:15:44 +00:00
Rob Adams
6d7d586f3c disable onscreen resize constraints for right, left, and bottom, since
2003-10-06  Rob Adams  <readams@readams.net>

	* src/constraints.c (constraint_onscreen_*_func): disable onscreen
	resize constraints for right, left, and bottom, since there is no
	way to violate onscreen constraints by resizing in these
	directions and the code to implement the constraints made some
	incorrect assumptions.  Fix for #120701, #120756, #123165,
	#123631, #123838.
2003-10-07 02:08:45 +00:00
Žygimantas Beručka
481accd6bd Added "lt" to ALL_LINGUAS. Added Lithuanian translation by Tomas Kuliavas.
2003-10-06  Žygimantas Beručka  <uid0@tuxfamily.org>

* configure.in: Added "lt" to ALL_LINGUAS.
* po/lt.po: Added Lithuanian translation by Tomas Kuliavas.
2003-10-06 13:49:37 +00:00
Mugurel Tudor
2a97ddd60a *** empty log message *** 2003-10-06 09:53:47 +00:00
Havoc Pennington
8441fada07 update
2003-10-01  Havoc Pennington  <hp@redhat.com>

	* NEWS: update

	* configure.in: 2.6.2
2003-10-01 21:51:11 +00:00
Havoc Pennington
a60b735e2d typo fix 2003-10-01 21:08:48 +00:00
Havoc Pennington
199d20197e add the moveresize idle at META_PRIORITY_RESIZE so it runs before GTK does
2003-09-30  Havoc Pennington  <hp@redhat.com>

	* src/window.c (meta_window_queue_move_resize): add the moveresize
	idle at META_PRIORITY_RESIZE so it runs before GTK does any
	drawing, may fix bug #109211 (seem to for me)

	* src/ui.h (META_PRIORITY_RESIZE): add this between GTK
	resize/redraw priorities

	* src/display.c (meta_display_queue_retheme_all_windows): remove
	some debug spew from meta_warning
2003-09-30 20:36:02 +00:00
Havoc Pennington
5fdb8ab7d6 remove nonstandard header include, #121870
2003-09-30  Havoc Pennington  <hp@redhat.com>

	* src/testasyncgetprop.c: remove nonstandard header include,
	#121870
2003-09-30 20:05:35 +00:00
Havoc Pennington
7c80b0a335 call bind_textdomain_codeset(), fix from Yukihiro Nakai bug #121743
2003-09-30  Havoc Pennington  <hp@redhat.com>

	* src/tools/metacity-message.c (main): call
	bind_textdomain_codeset(), fix from Yukihiro Nakai bug #121743
2003-09-30 19:59:15 +00:00
Kjartan Maraas
7eb5a67b3d Update Norwegian translation.
2003-09-30  Kjartan Maraas  <kmaraas@gnome.org>

	* no.po: Update Norwegian translation.
2003-09-30 19:58:05 +00:00
Rached Ben Mustapha
37640a925e Fix bug #118428
2003-07-28  Rached Ben Mustapha <rached@benmur.net>

        Fix bug #118428

        * src/window.c (redraw_icon): Also redraw window icon if the window
	is not mapped but its frame is.
	(idle_update_icon): Unset the window->update_icon_queued flag.
2003-09-30 19:45:56 +00:00
Christian Neumair
c446955b8d Updated German translation. 2003-09-30 15:44:27 +00:00
Havoc Pennington
0895abd894 put a random cap on number of characters in the title of each window, bug
2003-09-29  Havoc Pennington  <hp@redhat.com>

	* src/tabpopup.c (meta_ui_tab_popup_new): put a random cap on
	number of characters in the title of each window, bug #109301
2003-09-29 23:42:45 +00:00
Havoc Pennington
f7c04aff1e put -lXext in Xrandr check, bug #115996
2003-09-29  Havoc Pennington  <hp@redhat.com>

	* configure.in: put -lXext in Xrandr check, bug #115996
2003-09-29 23:23:46 +00:00
Havoc Pennington
89ca4aab3d a little program to test size hints, for now just a 0x0 min size to verify
2003-09-29  Havoc Pennington  <hp@redhat.com>

	* src/wm-tester/test-size-hints.c: a little program to test size
	hints, for now just a 0x0 min size to verify bug #113320
2003-09-29 23:21:41 +00:00
Havoc Pennington
a4dc0d581a attempt to fix this to return the data as an array of long even on 64-bit
2003-09-29  Havoc Pennington  <hp@redhat.com>

	* src/async-getprop.c (async_get_property_handler): attempt to fix
	this to return the data as an array of long even on 64-bit as with
	XGetWindowProperty() breakage, bug #114035, credit to Gwenole
	Beauchesne for tracking down.
2003-09-29 22:17:16 +00:00
Havoc Pennington
a889ff3469 fix the 64-bit check not to use macros from the X tree that don't get set
2003-09-29  Havoc Pennington  <hp@redhat.com>

	* src/xprops.c (cvtINT16toInt): fix the 64-bit check not to use
	macros from the X tree that don't get set

	* configure.in: check for sizes of various types
2003-09-29 18:16:45 +00:00
Havoc Pennington
320ef83bfc don't move the focus after you click the close button on a window. bug
2003-09-29  Havoc Pennington  <hp@redhat.com>

	* src/delete.c (meta_window_delete): don't move the focus after
	you click the close button on a window. bug #108706
2003-09-29 17:35:11 +00:00
Havoc Pennington
8849fad8f9 fix warnings (one was a real bug)
2003-09-29  Havoc Pennington  <hp@redhat.com>

	* src/main.c (find_accessibility_module): fix warnings (one was a
	real bug)

	* src/ui.c (meta_gdk_pixbuf_get_from_pixmap): fix warning that
	probably explains remaining crash on bug #116923. Jeez, need to
	use -Werror here or something.

        Fix #103575, spawn child processes on proper screen.

	* src/keybindings.c (error_on_command): pass --screen to
	metacity-dialog
	(handle_run_command): launch user command with DISPLAY reflecting
	the screen you launch it from

	* src/delete.c (delete_ping_timeout_func): pass --screen to
	metacity-dialog
2003-09-29 16:55:26 +00:00
Metin Amiroff
9839087306 Updated Azerbaijani translation.
2003-09-27  Metin Amiroff  <metin@karegen.com>

	* az.po: Updated Azerbaijani translation.
2003-09-27 19:27:13 +00:00
Åsmund Skjæveland
d31e28be70 Updated Norwegian (nynorsk) translation.
2003-09-27  Åsmund Skjæveland  <aasmunds@fys.uio.no>

	* nn.po: Updated Norwegian (nynorsk) translation.
2003-09-27 10:37:02 +00:00
Havoc Pennington
26c2ae81ea when focus on root window becomes None, set it to something other than
2003-09-26  Havoc Pennington  <hp@redhat.com>

	* src/display.c (event_callback): when focus on root window
	becomes None, set it to something other than None so keybindings
	keep working and print a warning about how some application sucks.
	#84564
	(event_callback): Fix debug spew to print focus event details
	properly
	(meta_display_open): when setting initial focus, always use
	RevertToPointerRoot and fix the focus if it's None or PointerRoot
2003-09-27 02:40:09 +00:00
Padraig O'Briain
922932d240 Add -DMETACITY_LIBDIR to support loading of modules Add functions
2003-09-26  Padraig O'Briain  <padraig.obriain@sun.com>

	* src/Makefile.am: Add -DMETACITY_LIBDIR to support loading of modules
	* src/main.c: Add functions find_accessibility_module,
	accessibility_invoke_module and accessibility_invoke
	(main); Check whether GConf accessibility key is true and if so
	load accessibility modules. This code is based on the libgnome code.

	src/tabpopup.c (meta_ui_tab_popup_new): Set accessible role of
	accessible for label containing window name to STATUSBAR so
	AT can be aware of window name.

	This fixes bug #120025
2003-09-26 17:04:37 +00:00
Havoc Pennington
28fbdc611e fix hang when we get EOF, #121376 from Laurent Vivier
2003-09-24  Havoc Pennington  <hp@pobox.com>

	* src/session.c (io_from_warning_dialog): fix hang when we get
	EOF, #121376 from Laurent Vivier
2003-09-25 01:50:30 +00:00
Stanislav Visnovsky
99c7dc8b85 Updated Slovak translation.
2003-09-24  Stanislav Visnovsky <visnovsky@nenya.ms.mff.cuni.cz>

        * sk.po: Updated Slovak translation.
2003-09-24 06:55:26 +00:00
Taneem Ahmed
ef0816bdce Added "bn" to ALL_LINGUAS. Added Bangla translation by Dr Anirban Mitra of
2003-09-22  Taneem Ahmed  <taneem@bengalinux.org>

	* configure.in: Added "bn" to ALL_LINGUAS.
	* po/bn.po: Added Bangla translation by Dr Anirban Mitra
	of Ankur group <gnome-translation@bengalinux.org>.
2003-09-23 03:33:19 +00:00
Changwoo Ryu
e99ebf6ef0 Updated Korean translation.
* ko.po: Updated Korean translation.
2003-09-22 19:24:21 +00:00
Metin Amiroff
ef44f8066b Updated Azerbaijani file
2003-09-21  Metin Amiroff  <metin@karegen.com>

	* az.po: Updated Azerbaijani file
2003-09-21 20:18:25 +00:00
Åsmund Skjæveland
47d5189812 2003-09-21 <85>smund Skjæveland <aasmunds@fys.uio.no>
* nn.po: Updated Norwegian (Nynorsk) translation.
2003-09-21 17:16:59 +00:00
Åsmund Skjæveland
d71ef42ded 2003-09-21 <85>smund Skjaeveland <aasmunds@fys.uio.no>
* nn.po: Updated Norwegian (nynorsk) translation.
2003-09-21 15:21:36 +00:00
Åsmund Skjæveland
e37091654f Started Norwegian (nynorsk) translation.
2003-09-20  Åsmund Skjæveland  <aasmunds@fys.uio.no>

        * nn.po: Started Norwegian (nynorsk) translation.
2003-09-20 21:49:04 +00:00
Åsmund Skjæveland
dcd097d67e Corrected my e-mail address, and changed to the correct charset (utf-8).
2003-09-20  Åsmund Skjæveland  <aasmunds@fys.uio.no>

        * ChangeLog: Corrected my e-mail address, and changed to the
	correct	charset (utf-8). Thank you, Emacs.
2003-09-20 21:46:13 +00:00
smund Skjveland
b5261cdbda Added Norwegian (nynorsk) translation code to ALL_LINGUAS
2003-09-20  smund Skjveland  <aasmunds@fys.uio.no>

        * configure.in: Added Norwegian (nynorsk) translation code to
        ALL_LINGUAS
2003-09-20 21:42:44 +00:00
Rob Adams
dc40522ea7 Fix bug where multiple entries could appear in MRU lists, or no entry when
2003-09-20  Rob Adams <readams@readams.net>

	Fix bug where multiple entries could appear in MRU lists, or no
	entry when sticking/unsticking windows.  Fix for #122016

	* src/window.c (meta_window_stick): use window->screen->workspaces
	instead of window->workspaces.
	(meta_window_unstick): use window->screen->workspaces instead of
	window->workspaces.
2003-09-20 17:05:35 +00:00
Rob Adams
de44b2d794 Fix a bug with partial-width panel struts caused by incorrect computation
2003-09-19  Rob Adams <readams@readams.net>

	Fix a bug with partial-width panel struts caused by incorrect
	computation of rectangle widths, and another when using different
	screen resolutions on xineramas.  See #122404.  Also fix a crash
	bug with the MRU list when sticking and unsticking windows.  See
	#120809.

	* src/constraints.c (get_outermost_onscreen_positions): Fix
	off-by-one error with partial-width struts.

	* src/window.c (meta_window_update_struts): Fix off-by-one error
	with partial-width struts.
	(meta_window_stick): assign back to GList after g_list_append
	(meta_window_unstick): assign back to GList after g_list_append

	* src/workspace.c (ensure_work_areas_validated): For right and
	bottom struts, compute strut relative to root window and not to
	xinerama edge in compliance with EWMH recommendations.
2003-09-20 04:58:25 +00:00
Fatih Demir
1117d45f8a Added Tamil translation by dinesh 2003-09-17 06:27:48 +00:00
125 changed files with 99985 additions and 33128 deletions

159
COMPLIANCE Normal file
View File

@@ -0,0 +1,159 @@
Metacity Standards Compliance
=============================
$Id$
1) Introduction
2) EWMH Compliance
a. Root Window Properties
b. Root Window Messages
c. Application Window Properties
d. Window Manager Protocols
3) ICCCM Compliance
1) Introduction
---------------
This document details metacity compliance with the relevent standards.
The format of this document is as follows:
[-/+?] Hint Name/Feature Name (Version number)
Errata/Comments
The first character indicates the level of compliance as follows:
- none
/ partial
+ complete
? unknown
The title indicates a feature or a hint in the specification, and the
version number indicates the minimum version of the specification
supported by metacity. Later versions may be supported if no
incompatible changes have been made in the specification.
2) EWMH Compliance
------------------
The EWMH, or Extended Window Manager Hints is a freedesktop.org-
developed standard to support a number of conventions for
communication between the window manager and clients. It builds on
and extends the ICCCM (See Section 3). A copy of the current EWMH
standard is available at http://freedesktop.org/Standards/wm-spec/
a. Root Window Properties
-------------------------
+ _NET_SUPPORTED (1.3)
+ _NET_CLIENT_LIST (1.3)
+ _NET_NUMBER_OF_DESKTOPS (1.3)
+ _NET_DESKTOP_GEOMETRY (1.3)
Metacity does not implement large desktops, so this is kept set to
the screen size.
+ _NET_DESKTOP_VIEWPORT (1.3)
Metacity does not implement viewports, so this is a constant (0,0).
+ _NET_CURRENT_DESKTOP (1.3)
+ _NET_DESKTOP_NAMES (1.3)
+ _NET_ACTIVE_WINDOW (1.3)
+ _NET_WORKAREA (1.3)
+ _NET_SUPPORTING_WM_CHECK (1.3)
+ _NET_VIRTUAL_ROOTS (1.3)
Metacity does not read or set this property, but it does not use
virtual roots to implement virtual desktops, so it complies with the
specification.
+ _NET_DESKTOP_LAYOUT (1.3)
+ _NET_SHOWING_DESKTOP (1.3)
b. Root Window Messages
-----------------------
+ _NET_CLOSE_WINDOW (1.3)
- _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 (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)
c. Application Window Properties
--------------------------------
+ _NET_WM_NAME (1.3)
+ _NET_WM_VISIBLE_NAME (1.3)
Metacity does not set this property, but metacity will never display
a name different from _NET_WM_NAME
+ _NET_WM_ICON_NAME (1.3)
+ _NET_WM_VISIBLE_ICON_NAME (1.3)
Metacity does not set this property, but metacity will never display
a name different from _NET_WM_NAME
+ _NET_WM_DESKTOP (1.3)
+ _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_ALLOWED_ACTIONS (1.3)
Metacity keeps this hint up to date. The code is somewhat crufty
and should be rewritten, though it is functional.
See: http://bugzilla.gnome.org/show_bug.cgi?id=90420
+ _NET_WM_STRUT (1.3)
+ _NET_WM_STRUT_PARTIAL (1.3)
+ _NET_WM_ICON_GEOMETRY (1.3)
Metacity uses this property to draw minimize/restore animations
+ _NET_WM_ICON (1.3)
+ _NET_WM_PID (1.3)
+ _NET_WM_HANDLED_ICONS (1.3)
Metacity does not read or set this property. However, metacity
never manages iconified windows, and so has no need to do so.
+ _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
prior to the window being mapped, this may be an estimate. This is,
however, expressly allowed by the specification.
d. Window Manager Protocols
---------------------------
+ _NET_WM_PING (1.3)
3) ICCCM Compliance
-------------------
TODO

1269
ChangeLog

File diff suppressed because it is too large Load Diff

View File

@@ -101,4 +101,9 @@ be NULL.
The code could use cleanup in a lot of places, feel free to do so.
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.

173
NEWS
View File

@@ -1,3 +1,176 @@
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
===
First unstable release tarball for GNOME 2.6.
Thanks to Anders Carlsson, Elijah Newren, Rob Adams, James Cape,
Thomas Fitzimmons, Calum Benson for fixes in this release.
2.6.2
===
Thanks to Yukihiro Nakai, Rached Ben Mustapha, Gwenole Beauchesne,
Padraig O'Briain, Laurent Vivier, Rob Adams for contributions to this
release.
- fix to repaint after resize always, so on maximize
and theme changes we get things drawn properly
- fix a compile issue on HPUX
- fix translations of metacity-message output
- fix to update window icons when they change
- put a limit on number of characters displayed in
window titles during Alt+tab
- fix configure check for Xrandr
- fix 64-bit bug in property reading that broke
things badly on 64-bit
- don't move focus when clicking close button on a window
- fix a crash in getting pixmap icons
- spawn dialogs and child processes on the proper
screen in multihead situations
- if the focus gets set to None, set it back to
something sane
- load accessibility modules and set accessibility roles
- fix hang after displaying warning dialogs
- fix a memory corruption when sticking/unsticking windows
that lead to a frequent crash and windows appearing
in Alt+tab improperly
- fix some handling of partial-width panel struts
- more translations
2.6.1
===
- rebuild with fixed glib-gettext.m4
2.6.0
===

26
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
Unstable branches are 2.3.x, 2.5.x
Unstable branches are 2.3.x, 2.5.x, 2.8.y (where y>=2)
COMPILING METACITY
===
@@ -39,9 +39,9 @@ See the HACKING file for some notes on hacking Metacity.
SHRINKING METACITY
===
Not that metacity is huge (<400K binary last I checked), but about
half of that is in the preferences handling, in static strings that
aren't essential, and in the theme engine.
Not that metacity is huge, but a substantial amount of code is in
preferences handling, in static strings that aren't essential, and in
the theme engine.
You can strip about 70K from the metacity binary by compiling with
options such as:
@@ -187,11 +187,10 @@ METACITY FEATURES
be respawned. It theoretically restores sizes/positions/workspace
for session-aware applications.
- Metacity implements much of the new window manager spec from
freedesktop.org
(http://www.freedesktop.org/standards/wm-spec.html), and much of
the ICCCM. But then there are parts of each that it doesn't
implement, just because I haven't yet.
- Metacity implements much of the EWMH window manager specification
from freedesktop.org, as well as the older ICCCM. Please refer to
the COMPLIANCE file for information on metacity compliance with
these standards.
- Uses Pango to render text, so has cool i18n capabilities.
Supports UTF-8 window titles and such.
@@ -370,12 +369,11 @@ A: This one is also in rationales.txt. Because "ouija board" UI, where
http://pobox.com/~hp/free-software-ui.html
http://pobox.com/~hp/features.html
Q: Why no wireframe move/resize?
Q: Why does wireframe move/resize suck?
A: It's implemented in a patch that will be merged for GNOME 2.6
and is already in some vendor packages.
A: You can turn it on with the reduced_resources setting.
But: Because it has low usability, and is a pain
But: it has low usability, and is a pain
to implement, and there's no reason opaque move/resize should be a
problem on any setup that can run a modern desktop worth a darn to
begin with.

View File

@@ -4,8 +4,10 @@ AC_INIT(src/display.c)
AM_CONFIG_HEADER(config.h)
# 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.6.1)
# we'll hold the 2.8.x versioning for GNOME 2.8, it was also used
# for GNOME 2.6, then after GNOME 2.8 we'll have the numbers synced
# with GNOME
AM_INIT_AUTOMAKE(metacity, 2.8.4)
# Honor aclocal flags
ACLOCAL="$ACLOCAL $ACLOCAL_FLAGS"
@@ -23,6 +25,21 @@ AC_HEADER_STDC
AC_LIBTOOL_WIN32_DLL
AM_PROG_LIBTOOL
#### Integer sizes
AC_CHECK_SIZEOF(char)
AC_CHECK_SIZEOF(short)
AC_CHECK_SIZEOF(long)
AC_CHECK_SIZEOF(int)
AC_CHECK_SIZEOF(void *)
AC_CHECK_SIZEOF(long long)
AC_CHECK_SIZEOF(__int64)
## byte order
AC_C_BIGENDIAN
#### Warnings
changequote(,)dnl
if test "x$GCC" = "xyes"; then
case " $CFLAGS " in
@@ -110,14 +127,18 @@ AC_ARG_ENABLE(sm, [ --disable-sm disable metacity's session m
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(compositor, [ --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(render, [ --disable-render disable metacity's use of the RENDER extension],,enable_render=auto)
AC_ARG_ENABLE(shape, [ --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 az be bg ca cs cy da de el en_GB es fa fi fr ga gl he hi hu id is it ja ko lv mk ml mn ms nl no pl pt pt_BR ro ru sl sk sq sr sr@Latn sv 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 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
@@ -134,7 +155,7 @@ 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
@@ -160,6 +181,70 @@ else
echo "Building without libstartup-notification"
fi
## init this, it gets set either in the compositor check below
## or the render-specific check later
have_xrender=no
XCOMPOSITE_VERSION=1.0
AC_MSG_CHECKING([Xcomposite >= $XCOMPOSITE_VERSION])
if $PKG_CONFIG --atleast-version $XCOMPOSITE_VERSION xcomposite; then
have_xcomposite=yes
else
have_xcomposite=no
fi
AC_MSG_RESULT($have_xcomposite)
if test x$enable_compositor = xyes; then
have_xcomposite=yes
echo "CompositeExt support forced on"
elif test x$enable_compositor = xauto; then
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
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
@@ -170,46 +255,51 @@ 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=$enable_xinerama,try_xinerama=yes)
use_solaris_xinerama=no
use_xfree_xinerama=no
case "$host" in
*-*-solaris*)
# Check for solaris
use_solaris_xinerama=yes
AC_CHECK_LIB(Xext, XineramaGetInfo,
use_solaris_xinerama=yes, use_solaris_xinerama=no,
$ALL_X_LIBS)
if test "x$use_solaris_xinerama" = "xyes"; then
AC_CHECK_HEADER(X11/extensions/xinerama.h,
if test -z "`echo $ALL_X_LIBS | grep "\-lXext" 2> /dev/null`"; then
X_EXTRA_LIBS="-lXext $X_EXTRA_LIBS"
fi
AC_DEFINE(HAVE_SOLARIS_XINERAMA, , [Have Solaris-style Xinerama])
AC_DEFINE(HAVE_XINERAMA, , [Have some version of Xinerama]),
use_solaris_xinerama=no,
[#include <X11/Xlib.h>])
fi
AC_MSG_CHECKING(for Xinerama support on Solaris)
AC_MSG_RESULT($use_solaris_xinerama);
;;
*)
# Check for XFree
use_xfree_xinerama=yes
AC_CHECK_LIB(Xinerama, XineramaQueryExtension,
[AC_CHECK_HEADER(X11/extensions/Xinerama.h,
X_EXTRA_LIBS="-lXinerama $X_EXTRA_LIBS"
if test -z "`echo $ALL_X_LIBS | grep "\-lXext" 2> /dev/null`"; then
X_EXTRA_LIBS="-lXext $X_EXTRA_LIBS"
fi
AC_DEFINE(HAVE_XFREE_XINERAMA, , [Have XFree86-style Xinerama])
AC_DEFINE(HAVE_XINERAMA,, [Have some version of Xinerama]),
use_xfree_xinerama=no,
[#include <X11/Xlib.h>])],
use_xfree_xinerama=no, -lXext $ALL_X_LIBS)
AC_MSG_CHECKING(for Xinerama support on XFree86)
AC_MSG_RESULT($use_xfree_xinerama);
;;
esac
if test "${try_xinerama}" != no; then
case "$host" in
*-*-solaris*)
# Check for solaris
use_solaris_xinerama=yes
AC_CHECK_LIB(Xext, XineramaGetInfo,
use_solaris_xinerama=yes, use_solaris_xinerama=no,
$ALL_X_LIBS)
if test "x$use_solaris_xinerama" = "xyes"; then
AC_CHECK_HEADER(X11/extensions/xinerama.h,
if test -z "`echo $ALL_X_LIBS | grep "\-lXext" 2> /dev/null`"; then
X_EXTRA_LIBS="-lXext $X_EXTRA_LIBS"
fi
AC_DEFINE(HAVE_SOLARIS_XINERAMA, , [Have Solaris-style Xinerama])
AC_DEFINE(HAVE_XINERAMA, , [Have some version of Xinerama]),
use_solaris_xinerama=no,
[#include <X11/Xlib.h>])
fi
AC_MSG_CHECKING(for Xinerama support on Solaris)
AC_MSG_RESULT($use_solaris_xinerama);
;;
*)
# Check for XFree
use_xfree_xinerama=yes
AC_CHECK_LIB(Xinerama, XineramaQueryExtension,
[AC_CHECK_HEADER(X11/extensions/Xinerama.h,
X_EXTRA_LIBS="-lXinerama $X_EXTRA_LIBS"
if test -z "`echo $ALL_X_LIBS | grep "\-lXext" 2> /dev/null`"; then
X_EXTRA_LIBS="-lXext $X_EXTRA_LIBS"
fi
AC_DEFINE(HAVE_XFREE_XINERAMA, , [Have XFree86-style Xinerama])
AC_DEFINE(HAVE_XINERAMA,, [Have some version of Xinerama]),
use_xfree_xinerama=no,
[#include <X11/Xlib.h>])],
use_xfree_xinerama=no, -lXext $ALL_X_LIBS)
AC_MSG_CHECKING(for Xinerama support on XFree86)
AC_MSG_RESULT($use_xfree_xinerama);
;;
esac
fi
CPPFLAGS="$metacity_save_cppflags"
@@ -252,7 +342,7 @@ AC_CHECK_LIB(Xrandr, XRRUpdateConfiguration,
[AC_CHECK_HEADER(X11/extensions/Xrandr.h,
RANDR_LIBS=-lXrandr found_randr=yes,,
[#include <X11/Xlib.h>])],
, -lXrender $ALL_X_LIBS)
, -lXrender -lXext $ALL_X_LIBS)
if test "x$found_randr" = "xyes"; then
AC_DEFINE(HAVE_RANDR, , [Have the Xrandr extension library])
@@ -384,10 +474,12 @@ metacity-$VERSION:
XFree86 Xinerama: ${use_xfree_xinerama}
Solaris Xinerama: ${use_solaris_xinerama}
Startup notification: ${have_startup_notification}
Compositing manager: ${have_xcomposite}
Session management: ${found_sm}
Shape extension: ${found_shape}
Resize-and-rotate: ${found_randr}
Xsync: ${found_xsync}
Render: ${have_xrender}
Deprecated config dialog: ${enable_config_dialog}
"
## echo "This is the UNSTABLE branch of metacity, use 2.4.x for stable (gnome-2-2 branch in CVS)"
echo "This is the UNSTABLE branch of metacity, use 2.8.1.x for stable (gnome-2-6 branch in CVS)"

View File

@@ -1,3 +1,632 @@
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.
2004-02-07 Robert Sedak <robert.sedak@sk.htnet.hr>
* hr.po: Updated Croatian translation.
2004-02-08 Changwoo Ryu <cwryu@debian.org>
* ko.po: Updated Korean translation.
2004-02-05 Pauli Virtanen <pauli.virtanen@hut.fi>
* fi.po: Updated Finnish translation.
2004-02-03 Kostas Papadimas <pkst@gnome.org>
* el.po: Updated Greek translation.
2004-02-02 Laurent Dhima <laurenti@alblinux.net>
* sq.po: Updated Albanian translation.
2004-02-01 Ole Laursen <olau@hardworking.dk>
* da.po: Updated Danish translation.
2004-01-31 Mətin Əmirov <metin@karegen.com>
* az.po: Translation updated.
2004-01-28 Miloslav Trmac <mitr@volny.cz>
* cs.po: Fixed Czech translation.
2004-01-20 Artur Flinta <aflinta@cvs.gnome.org>
* pl.po: Updated Polish translation by GNOME PL Team.
2004-01-18 Christian Neumair <chris@gnome-de.org>
* de.po: Updated German translation.
2004-01-16 Hasbullah Bin Pit <sebol@ikhlas.com>
* ms.po: Updated Malay translation.
2004-01-15 Laurent Dhima <laurenti@alblinux.net>
* sq.po: Updated Albanian translation.
2004-01-13 Kjartan Maraas <kmaraas@gnome.org>
* no.po: Updated Norwegian translation.
2004-01-13 Artur Flinta <aflinta@cvs.gnome.org>
* pl.po: Updated Polish translation by GNOME PL Team.
2004-01-12 Žygimantas Beručka <uid0@tuxfamily.org>
* lt.po: Updated Lithuanian translation by Tomas Kuliavas.
2004-01-11 Christophe Merlet <redfox@redfoxcenter.org>
* fr.po: Updated French translation.
2004-01-11 Changwoo Ryu <cwryu@debian.org>
* ko.po: Updated Korean translation.
2004-01-05 Vincent van Adrighem <adrighem@gnome.org>
* nl.po: Translation updated by Tino Meinen.
2004-01-04 Duarte Loreto <happyguy_pt@hotmail.com>
* pt.po: Updated and revised Portuguese translation.
2004-01-03 Sanlig Badral <badral@openmn.org>
* mn.po: Updated Mongolian translation.
2004-01-03 Robert Sedak <robert.sedak@sk.htnet.hr>
* hr.po: Updated Croatian translation.
2004-01-02 Sanlig Badral <Badral@openmn.org>
* mn.po: Updated Mongolian translation.
2004-01-02 Taneem Ahmed <taneem@bengalinux.org>
* bn.po: Updated Bangla (Bengali) translation.
2003-12-29 Christian Neumair <chris@gnome-de.org>
* de.po: Updated German translation.
2003-12-29 Åsmund Skjæveland <aasmunds@fys.uio.no>
* nn.po: Updated Norwegian Nynorsk translation.
2003-12-24 Francisco Javier F. Serrador <serrador@cvs.gnome.org>
* es.po: Updated Spanish translation.
2003-12-23 Gustavo Noronha Silva <kov@debian.org>
* pt_BR.po: updated translation.
2003-12-22 Miloslav Trmac <mitr@volny.cz>
* cs.po: Updated Czech translation.
2003-12-22 Danilo Šegan <dsegan@gmx.net>
* sr.po, sr@Latn.po: Updated Serbian translation.
2003-12-22 Christian Rose <menthos@menthos.com>
* sv.po: Updated Swedish translation.
2003-12-21 Francisco Javier F. Serrador <serrador@cvs.gnome.org>
* es.po: Updated Spanish translation.
2003-12-21 Danilo Šegan <dsegan@gmx.net>
* sr.po, sr@Latn.po: Updated Serbian translation.
2003-12-20 Arafat Medini <lumina@silverpen.de>
* ar.po: Added Arabic translation.
2003-12-19 Gustavo Noronha Silva <kov@debian.org>
* pt_BR.po: updated translation.
2003-12-18 Yukihiro Nakai <nakai@gnome.gr.jp>
* ja.po: Minor update.
2003-12-14 Francisco Javier F. Serrador <serrador@cvs.gnome.org>
* es.po: Updated Spanish translation
2003-12-04 Danilo Šegan <dsegan@gmx.net>
* sr.po, sr@Latn.po: Cleared up Serbian translation.
2003-12-03 Sanlig Badral <badral@openmn.org>
* mn.po: Updated Mongolian translation.
2003-12-02 Miloslav Trmac <mitr@volny.cz>
* cs.po: Updated Czech translation.
2003-11-29 Ole Laursen <olau@hardworking.dk>
* da.po: Updated Danish translation.
2003-11-26 Vincent van Adrighem <adrighem@gnome.org>
* nl.po: Dutch translation updated by Vincent van Adrighem.
2003-11-10 Pablo Gonzalo del Campo <pablodc@bigfoot.com>
* es.po: Updated Spanish translation by
Francisco Javier F. Serrador <serrador@arrakis.es>.
2003-11-08 Danilo Šegan <dsegan@gmx.net>
* sr.po, sr@Latn.po: Updated Serbian translation.
2003-10-30 Kostas Papadimas <pkst@gnome.org>
* el.po: Updated Greek translation.
2003-10-20 Andras Timar <timar@gnome.hu>
* hu.po: Updated Hungarian translation.
2003-10-15 Danilo Šegan <dsegan@gmx.net>
* sr.po, sr@Latn.po: Updated Serbian translation.
2003-10-15 Yukihiro Nakai <nakai@gnome.gr.jp>
* ja.pp: Update Japanese translation.
2003-10-13 Danilo Šegan <dsegan@gmx.net>
* sr.po, sr@Latn.po: Updated Serbian translation.
2003-10-08 Andras Timar <timar@gnome.hu>
* hu.po: Updated Hungarian translation.
2003-10-06 Žygimantas Beručka <uid0@tuxfamily.org>
* lt.po: Added Lithuanian translation by Tomas Kuliavas
<tokul@users.sourceforge.net>.
2003-10-06 Mugurel Tudor <mugurelu@go.ro>
* ro.po: Updated Romanian translation
2003-09-30 Kjartan Maraas <kmaraas@gnome.org>
* no.po: Update Norwegian translation.
2003-09-30 Christian Neumair <chris@gnome-de.org>
* de.po: Updated German translation.
2003-09-27 Metin Amiroff <metin@karegen.com>
* az.po: Updated Azerbaijani translation.
2003-09-27 Åsmund Skjæveland <aasmunds@fys.uio.no>
* nn.po: Updated Norwegian (nynorsk) translation.
2003-09-24 Stanislav Visnovsky <visnovsky@nenya.ms.mff.cuni.cz>
* sk.po: Updated Slovak translation.
2003-09-22 Taneem Ahmed <taneem@bengalinux.org>
* bn.po: Added Bangla translation by Dr Anirban Mitra
of Ankur group <gnome-translation@bengalinux.org>.
2003-09-23 Changwoo Ryu <cwryu@debian.org>
* ko.po: Updated Korean translation.
2003-09-21 Metin Amiroff <metin@karegen.com>
* az.po: Updated Azerbaijani file
2003-09-21 Åsmund Skjæveland <aasmunds@fys.uio.no>
* nn.po: Updated Norwegian (Nynorsk) translation.
2003-09-21 Åsmund Skjaeveland <aasmunds@fys.uio.no>
* nn.po: Updated Norwegian (nynorsk) translation.
2003-09-20 Åsmund Skjæveland <aasmunds@fys.uio.no>
* nn.po: Started Norwegian (nynorsk) translation.
2003-09-17 Fatih Demir <kabalak@gtranslator.org>
* ta.po: Committed new Tamil translation by Dinesh.
2003-09-09 Guntupalli Karunakar <karunakar@freedomink.org>
* hi.po: Updated Hindi translation by
@@ -74,7 +703,7 @@
* cy.po: Updated Welsh translation.
2003-08-18 Danilo Šegan <dsegan@gmx.net>
2003-08-18 Danilo Å egan <dsegan@gmx.net>
* be.po: Updated Belarusian translation by Ales Nyakhaychyk
<nab@mail.by>.
@@ -104,7 +733,7 @@
* fr.po: Updated French translation.
2003-08-08 Danilo Šegan <dsegan@gmx.net>
2003-08-08 Danilo Å egan <dsegan@gmx.net>
* sr.po, sr@Latn.po: Updated Serbian translation.
@@ -213,7 +842,7 @@
* nl.po: Dutch translation updated by Kees van den Broek.
2003-06-22 Samúel Jón Gunnarsson <sammi@techattack.nu>
2003-06-22 Samúel Jón Gunnarsson <sammi@techattack.nu>
* is.po: Added Icelandic translation
@@ -318,7 +947,7 @@
* ko.po: Updated Korean translation.
2003-05-06 Danilo Šegan <dsegan@gmx.net>
2003-05-06 Danilo Å egan <dsegan@gmx.net>
* sr.po, sr@Latn.po: Added Serbian translation by
http://Prevod.org/.
@@ -612,7 +1241,7 @@
2002-12-14 Kjartan Maraas <kmaraas@gnome.org>
* no.po: Updated Norwegian (bokmål) translation.
* no.po: Updated Norwegian (bokmål) translation.
2002-12-13 Daniel Yacob <locales@geez.org>
@@ -649,7 +1278,7 @@
2002-11-25 Kjartan Maraas <kmaraas@gnome.org>
* no.po: Updated Norwegian (bokmål) translation.
* no.po: Updated Norwegian (bokmål) translation.
2002-11-25 Yanko Kaneti <yaneti@declera.com>
@@ -669,7 +1298,7 @@
2002-11-15 Kjartan Maraas <kmaraas@gnome.org>
* no.po: Updated Norwegian (bokmål) translation.
* no.po: Updated Norwegian (bokmål) translation.
2002-11-14 Gustavo Noronha Silva <kov@debian.org>
@@ -736,7 +1365,7 @@
2002-10-21 Kjartan Maraas <kmaraas@gnome.org>
* no.po: Updated Norwegian (bokmål) translation.
* no.po: Updated Norwegian (bokmål) translation.
2002-10-17 Andras Timar <timar@gnome.hu>
@@ -760,7 +1389,7 @@
2002-10-15 Kjartan Maraas <kmaraas@gnome.org>
* no.po: Updated Norwegian (bokmål) translation.
* no.po: Updated Norwegian (bokmål) translation.
2002-10-15 Ole Laursen <olau@hardworking.dk>
@@ -824,7 +1453,7 @@
2002-09-11 Kjartan Maraas <kmaraas@gnome.org>
* no.po: Updated Norwegian (bokmål) translation.
* no.po: Updated Norwegian (bokmål) translation.
2002-09-10 Pablo Gonzalo del Campo <pablodc@bigfoot.com>
@@ -1001,7 +1630,7 @@
2002-08-04 Kjartan Maraas <kmaraas@gnome.org>
* no.po: Updated Norwegian (bokmål) translation.
* no.po: Updated Norwegian (bokmål) translation.
2002-07-30 Pablo Saratxaga <pablo@mandrakesoft.com>
@@ -1058,7 +1687,7 @@
2002-07-16 Kjartan Maraas <kmaraas@gnome.org>
* no.po: Updated Norwegian (bokmål) translation.
* no.po: Updated Norwegian (bokmål) translation.
2002-07-15 Ole Laursen <olau@hardworking.dk>
@@ -1107,7 +1736,7 @@
2002-06-23 Kjartan Maraas <kmaraas@gnome.org>
* no.po: Updated Norwegian (bokmål) translation.
* no.po: Updated Norwegian (bokmål) translation.
2002-06-23 Christian Rose <menthos@menthos.com>
@@ -1185,7 +1814,7 @@
2002-06-03 Kjartan Maraas <kmaraas@gnome.org>
* no.po: Updated Norwegian (bokmål) translation.
* no.po: Updated Norwegian (bokmål) translation.
2002-06-03 Stanislav Visnovsky <visnovsky@nenya.ms.mff.cuni.cz>
@@ -1210,7 +1839,7 @@
2002-05-31 Kjartan Maraas <kmaraas@gnome.org>
* no.po: Updated Norwegian (bokmål) translation.
* no.po: Updated Norwegian (bokmål) translation.
2002-05-28 Pablo Gonzalo del Campo <pablodc@bigfoot.com>
@@ -1257,7 +1886,7 @@
2002-05-18 Kjartan Maraas <kmaraas@gnome.org>
* no.po: Updated Norwegian (bokmål) translation.
* no.po: Updated Norwegian (bokmål) translation.
2002-05-18 Ole Laursen <olau@hardworking.dk>
@@ -1283,7 +1912,7 @@
2002-04-22 Kjartan Maraas <kmaraas@gnome.org>
* no.po: Updated Norwegian (bokmål) translation.
* no.po: Updated Norwegian (bokmål) translation.
2002-04-19 Changwoo Ryu <cwryu@debian.org>
@@ -1311,11 +1940,11 @@
2002-03-28 Kjartan Maraas <kmaraas@gnome.org>
* no.po: Updated Norwegian (bokmål) translation.
* no.po: Updated Norwegian (bokmål) translation.
2002-03-27 Kjartan Maraas <kmaraas@gnome.org>
* no.po: Updated Norwegian (bokmål) translation.
* no.po: Updated Norwegian (bokmål) translation.
2002-03-22 Zbigniew Chyla <cyba@gnome.pl>
@@ -1323,19 +1952,19 @@
2002-02-22 Kjartan Maraas <kmaraas@gnome.org>
* no.po: Updated Norwegian (bokmål) translation.
* no.po: Updated Norwegian (bokmål) translation.
2002-02-17 Kjartan Maraas <kmaraas@gnome.org>
* no.po: Updated Norwegian (bokmål) translation.
* no.po: Updated Norwegian (bokmål) translation.
2002-02-16 Kjartan Maraas <kmaraas@gnome.org>
* no.po: Updated Norwegian (bokmål) translation.
* no.po: Updated Norwegian (bokmål) translation.
2002-02-12 Kjartan Maraas <kmaraas@gnome.org>
* no.po: Updated Norwegian (bokmål) translation.
* no.po: Updated Norwegian (bokmål) translation.
2002-02-11 Duarte Loreto <happyguy_pt@hotmail.com>
@@ -1347,7 +1976,7 @@
2002-02-10 Kjartan Maraas <kmaraas@gnome.org>
* no.po: Updated Norwegian (bokmål) translation.
* no.po: Updated Norwegian (bokmål) translation.
2002-02-08 Christian Rose <menthos@menthos.com>
@@ -1364,7 +1993,7 @@
2002-02-02 Kjartan Maraas <kmaraas@gnome.org>
* no.po: Updated Norwegian (bokmål) translation.
* no.po: Updated Norwegian (bokmål) translation.
2002-01-31 Christian Rose <menthos@menthos.com>
@@ -1380,7 +2009,7 @@
2002-01-29 Kjartan Maraas <kmaraas@gnome.org>
* no.po: Updated Norwegian (bokmål) translation.
* no.po: Updated Norwegian (bokmål) translation.
2002-01-27 Peteris Krisjanis <peteris.krisjanis@ttc.lv>
@@ -1392,7 +2021,7 @@
2002-01-11 Kjartan Maraas <kmaraas@gnome.org>
* no.po: Updated Norwegian (bokmål) translation.
* no.po: Updated Norwegian (bokmål) translation.
2002-01-09 Stanislav Visnovsky <visnovsky@nenya.ms.mff.cuni.cz>
@@ -1404,7 +2033,7 @@
2002-01-06 Fatih Demir <kabalak@gtranslator.org>
* tr.po: Added Turkish translation by Görkem Cetin.
* tr.po: Added Turkish translation by Görkem Cetin.
2002-01-05 Christian Rose <menthos@menthos.com>
@@ -1426,7 +2055,7 @@
2001-12-16 Kjartan Maraas <kmaraas@gnome.org>
* no.po: Updated Norwegian (bokmᅵ) translation.
* no.po: Updated Norwegian (bokmᅵ) translation.
2001-12-15 Christian Rose <menthos@menthos.com>
@@ -1443,17 +2072,17 @@
2001-11-27 Jesus Bravo Alvarez <jba@pobox.com>
* gl.po: Added Galician translation from
Manuel A. Fernᅵdez Montecelo <manuel@sindominio.net>
Manuel A. Fernᅵdez Montecelo <manuel@sindominio.net>
2001-10-29 Yuriy Syrota <rasta@renome.rovno.ua>
* uk.po: Added Ukrainian translation file.
2001-10-28 Hᅵtor Garcᅵ ᅵvarez <hector@scouts-es.org>
2001-10-28 Hᅵtor Garcᅵ ᅵvarez <hector@scouts-es.org>
* es.po: Updated Spanish translation.
2001-10-14 Hᅵtor Garcᅵ ᅵvarez <hector@scouts-es.org>
2001-10-14 Hᅵtor Garcᅵ ᅵvarez <hector@scouts-es.org>
* es.po: Added Spanish translation.
@@ -1463,7 +2092,7 @@
2001-10-11 Christian Rose <menthos@menthos.com>
* sv.po: Fixed some typos. Thanks to Tomas ᅵren <stric@ing.umu.se>
* sv.po: Fixed some typos. Thanks to Tomas ᅵren <stric@ing.umu.se>
for spotting many of them.
2001-10-11 Christian Rose <menthos@menthos.com>

View File

@@ -17,6 +17,7 @@ src/resizepopup.c
src/screen.c
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

1381
po/am.po

File diff suppressed because it is too large Load Diff

3141
po/ar.po Normal file

File diff suppressed because it is too large Load Diff

2553
po/az.po

File diff suppressed because it is too large Load Diff

1139
po/be.po

File diff suppressed because it is too large Load Diff

1316
po/bg.po

File diff suppressed because it is too large Load Diff

3256
po/bn.po Normal file

File diff suppressed because it is too large Load Diff

3228
po/bs.po Normal file

File diff suppressed because it is too large Load Diff

1087
po/ca.po

File diff suppressed because it is too large Load Diff

1104
po/cs.po

File diff suppressed because it is too large Load Diff

1147
po/cy.po

File diff suppressed because it is too large Load Diff

1915
po/da.po

File diff suppressed because it is too large Load Diff

1115
po/de.po

File diff suppressed because it is too large Load Diff

1619
po/el.po

File diff suppressed because it is too large Load Diff

3170
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

1872
po/es.po

File diff suppressed because it is too large Load Diff

2661
po/et.po Normal file

File diff suppressed because it is too large Load Diff

3227
po/eu.po Normal file

File diff suppressed because it is too large Load Diff

1763
po/fa.po

File diff suppressed because it is too large Load Diff

1118
po/fi.po

File diff suppressed because it is too large Load Diff

2214
po/fr.po

File diff suppressed because it is too large Load Diff

1398
po/ga.po

File diff suppressed because it is too large Load Diff

1398
po/gl.po

File diff suppressed because it is too large Load Diff

3110
po/gu.po Normal file

File diff suppressed because it is too large Load Diff

1385
po/he.po

File diff suppressed because it is too large Load Diff

2566
po/hi.po

File diff suppressed because it is too large Load Diff

3303
po/hr.po Normal file

File diff suppressed because it is too large Load Diff

1576
po/hu.po

File diff suppressed because it is too large Load Diff

1317
po/id.po

File diff suppressed because it is too large Load Diff

1387
po/is.po

File diff suppressed because it is too large Load Diff

2410
po/it.po

File diff suppressed because it is too large Load Diff

2111
po/ja.po

File diff suppressed because it is too large Load Diff

1255
po/ko.po

File diff suppressed because it is too large Load Diff

3258
po/lt.po Normal file

File diff suppressed because it is too large Load Diff

1132
po/lv.po

File diff suppressed because it is too large Load Diff

1188
po/mk.po

File diff suppressed because it is too large Load Diff

1385
po/ml.po

File diff suppressed because it is too large Load Diff

1298
po/mn.po

File diff suppressed because it is too large Load Diff

1387
po/ms.po

File diff suppressed because it is too large Load Diff

3280
po/nb.po Normal file

File diff suppressed because it is too large Load Diff

1093
po/nl.po

File diff suppressed because it is too large Load Diff

3250
po/nn.po Normal file

File diff suppressed because it is too large Load Diff

1234
po/no.po

File diff suppressed because it is too large Load Diff

3071
po/pa.po Normal file

File diff suppressed because it is too large Load Diff

1257
po/pl.po

File diff suppressed because it is too large Load Diff

2228
po/pt.po

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

1177
po/ro.po

File diff suppressed because it is too large Load Diff

1133
po/ru.po

File diff suppressed because it is too large Load Diff

1158
po/sk.po

File diff suppressed because it is too large Load Diff

1133
po/sl.po

File diff suppressed because it is too large Load Diff

2334
po/sq.po

File diff suppressed because it is too large Load Diff

2482
po/sr.po

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

1142
po/sv.po

File diff suppressed because it is too large Load Diff

2661
po/ta.po Normal file

File diff suppressed because it is too large Load Diff

3131
po/th.po Normal file

File diff suppressed because it is too large Load Diff

2654
po/tk.po Normal file

File diff suppressed because it is too large Load Diff

2903
po/tr.po

File diff suppressed because it is too large Load Diff

1984
po/uk.po

File diff suppressed because it is too large Load Diff

1138
po/vi.po

File diff suppressed because it is too large Load Diff

1384
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

@@ -1,18 +1,43 @@
Focus windows on map: see http://bugzilla.gnome.org/show_bug.cgi?id=82921
History
====
Focus windows on map: see
http://bugzilla.gnome.org/show_bug.cgi?id=118372
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
Alt+click to move/resize: http://bugzilla.gnome.org/show_bug.cgi?id=101151
minimized windows in Alt+tab: http://bugzilla.gnome.org/show_bug.cgi?id=89416
raise windows on click: http://bugzilla.gnome.org/show_bug.cgi?id=86108
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
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
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

View File

@@ -2,7 +2,7 @@ lib_LTLIBRARIES = libmetacity-private.la
SUBDIRS=wm-tester tools themes
INCLUDES=@METACITY_CFLAGS@ -DMETACITY_LIBEXECDIR=\"$(libexecdir)\" -DHOST_ALIAS=\"@HOST_ALIAS@\" -DMETACITY_LOCALEDIR=\"$(prefix)/@DATADIRNAME@/locale\" -DMETACITY_PKGDATADIR=\"$(pkgdatadir)\" -DMETACITY_DATADIR=\"$(datadir)\" -DG_LOG_DOMAIN=\"metacity\" -DSN_API_NOT_YET_FROZEN=1
INCLUDES=@METACITY_CFLAGS@ -DMETACITY_LIBEXECDIR=\"$(libexecdir)\" -DMETACITY_LIBDIR=\"$(libdir)\" -DHOST_ALIAS=\"@HOST_ALIAS@\" -DMETACITY_LOCALEDIR=\"$(prefix)/@DATADIRNAME@/locale\" -DMETACITY_PKGDATADIR=\"$(pkgdatadir)\" -DMETACITY_DATADIR=\"$(datadir)\" -DG_LOG_DOMAIN=\"metacity\" -DSN_API_NOT_YET_FROZEN=1
EGGFILES= \
eggaccelerators.c \
@@ -14,6 +14,8 @@ metacity_SOURCES= \
bell.h \
bell.c \
common.h \
compositor.c \
compositor.h \
constraints.c \
constraints.h \
core.c \

View File

@@ -347,8 +347,9 @@ async_get_property_handler (Display *dpy,
break;
case 32:
nbytes = reply->nItems * sizeof (CARD32);
netbytes = reply->nItems << 2;
/* NOTE buffer is in longs to match XGetWindowProperty() */
nbytes = reply->nItems * sizeof (long);
netbytes = reply->nItems << 2; /* wire size is always 32 bits though */
if (nbytes + 1 > 0 &&
(task->data = (unsigned char *) Xmalloc ((unsigned)nbytes + 1)))
{
@@ -356,10 +357,41 @@ async_get_property_handler (Display *dpy,
printf ("%s: already read %d bytes using %ld more, eating %ld more\n",
__FUNCTION__, bytes_read, nbytes, netbytes);
#endif
/* _XRead32 (dpy, (long *) task->data, netbytes); */
_XGetAsyncData (dpy, task->data, buf, len,
bytes_read, nbytes,
netbytes);
/* We have to copy the XGetWindowProperty() crackrock
* and get format 32 as long even on 64-bit platforms.
*/
if (sizeof (long) == 8)
{
unsigned char *netdata;
unsigned char *lptr;
unsigned char *end_lptr;
/* Store the 32-bit values in the end of the array */
netdata = task->data + nbytes / 2;
_XGetAsyncData (dpy, netdata, buf, len,
bytes_read, netbytes,
netbytes);
/* Now move the 32-bit values to the front */
lptr = task->data;
end_lptr = task->data + nbytes;
while (lptr != end_lptr)
{
*(long*) lptr = *(CARD32*) netdata;
lptr += sizeof (long);
netdata += sizeof (CARD32);
}
}
else
{
/* Here the wire format matches our actual format */
_XGetAsyncData (dpy, task->data, buf, len,
bytes_read, netbytes,
netbytes);
}
}
break;

View File

@@ -58,7 +58,13 @@ typedef enum
META_MENU_OP_STICK = 1 << 7,
META_MENU_OP_WORKSPACES = 1 << 8,
META_MENU_OP_MOVE = 1 << 9,
META_MENU_OP_RESIZE = 1 << 10
META_MENU_OP_RESIZE = 1 << 10,
META_MENU_OP_ABOVE = 1 << 11,
META_MENU_OP_UNABOVE = 1 << 12,
META_MENU_OP_MOVE_LEFT = 1 << 13,
META_MENU_OP_MOVE_RIGHT = 1 << 14,
META_MENU_OP_MOVE_UP = 1 << 15,
META_MENU_OP_MOVE_DOWN = 1 << 16
} MetaMenuOp;
typedef struct _MetaWindowMenu MetaWindowMenu;
@@ -66,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);

1359
src/compositor.c Normal file

File diff suppressed because it is too large Load Diff

56
src/compositor.h Normal file
View File

@@ -0,0 +1,56 @@
/* Metacity compositing manager */
/*
* Copyright (C) 2003 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
* published by the Free Software Foundation; either version 2 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
* 02111-1307, USA.
*/
#ifndef META_COMPOSITOR_H
#define META_COMPOSITOR_H
#include "util.h"
#include "display.h"
MetaCompositor* meta_compositor_new (MetaDisplay *display);
void meta_compositor_unref (MetaCompositor *compositor);
void meta_compositor_process_event (MetaCompositor *compositor,
XEvent *xevent,
MetaWindow *window);
void meta_compositor_add_window (MetaCompositor *compositor,
Window xwindow,
XWindowAttributes *attrs);
void meta_compositor_remove_window (MetaCompositor *compositor,
Window xwindow);
void meta_compositor_manage_screen (MetaCompositor *compositor,
MetaScreen *screen);
void meta_compositor_unmanage_screen (MetaCompositor *compositor,
MetaScreen *screen);
void meta_compositor_damage_window (MetaCompositor *compositor,
MetaWindow *window);
#endif /* META_COMPOSITOR_H */

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
@@ -389,9 +390,9 @@ get_outermost_onscreen_positions (MetaWindow *window,
* overlapping the strut rect.
*/
if (((current.y - info->fgeom.top_height >= rect->y) &&
(current.y - info->fgeom.top_height <= rect->y + rect->height)) ||
(current.y - info->fgeom.top_height < rect->y + rect->height)) ||
((current.y >= rect->y) &&
(current.y <= rect->y + rect->height)))
(current.y < rect->y + rect->height)))
{
*leftmost_x_p = MAX (*leftmost_x_p, rect->width);
}
@@ -420,9 +421,9 @@ get_outermost_onscreen_positions (MetaWindow *window,
* overlapping the strut rect.
*/
if (((current.y - info->fgeom.top_height >= rect->y) &&
(current.y - info->fgeom.top_height <= rect->y + rect->height)) ||
(current.y - info->fgeom.top_height < rect->y + rect->height)) ||
((current.y >= rect->y) &&
(current.y <= rect->y + rect->height)))
(current.y < rect->y + rect->height)))
{
*rightmost_x_p = MIN (*rightmost_x_p, rect->x);
}
@@ -450,8 +451,8 @@ get_outermost_onscreen_positions (MetaWindow *window,
/* here the strut matters if the titlebar is overlapping
* the window horizontally
*/
if ((current.x <= rect->x + rect->width) &&
(current.x + current.width >= rect->x))
if ((current.x < rect->x + rect->width) &&
(current.x + current.width > rect->x))
{
*topmost_y_p = MAX (*topmost_y_p, rect->height);
}
@@ -479,8 +480,8 @@ get_outermost_onscreen_positions (MetaWindow *window,
/* here the strut matters if the titlebar is overlapping
* the window horizontally
*/
if ((current.x <= rect->x + rect->width) &&
(current.x + current.width >= rect->x))
if ((current.x < rect->x + rect->width) &&
(current.x + current.width > rect->x))
{
bottommost_y = MIN (bottommost_y, rect->y);
}
@@ -559,16 +560,9 @@ constraint_onscreen_bottom_func (MetaWindow *window,
const MetaRectangle *orig,
int *y_delta)
{
int max_dy;
int bottommost_y;
get_outermost_onscreen_positions (window, info, orig, 0, *y_delta,
NULL, NULL, NULL, &bottommost_y);
max_dy = bottommost_y - orig->y;
if (*y_delta > max_dy)
*y_delta = max_dy;
/* no way to resize off the bottom so that constraints are
violated */
return;
}
static void
@@ -595,16 +589,9 @@ constraint_onscreen_left_func (MetaWindow *window,
const MetaRectangle *orig,
int *x_delta)
{
int min_dx;
int leftmost_x;
get_outermost_onscreen_positions (window, info, orig, *x_delta, 0,
&leftmost_x, NULL, NULL, NULL);
min_dx = leftmost_x - orig->x;
if (*x_delta < min_dx)
*x_delta = min_dx;
/* no way to resize off the sides so that constraints are violated
*/
return;
}
static void
@@ -613,16 +600,9 @@ constraint_onscreen_right_func (MetaWindow *window,
const MetaRectangle *orig,
int *x_delta)
{
int max_dx;
int rightmost_x;
get_outermost_onscreen_positions (window, info, orig, *x_delta, 0,
NULL, &rightmost_x, NULL, NULL);
max_dx = rightmost_x - orig->x;
if (*x_delta > max_dx)
*x_delta = max_dx;
/* no way to resize off the sides so that constraints are violated
*/
return;
}
static void
@@ -631,16 +611,9 @@ constraint_onscreen_hcenter_func (MetaWindow *window,
const MetaRectangle *orig,
int *x_delta)
{
int max_dx;
int leftmost_x;
get_outermost_onscreen_positions (window, info, orig, *x_delta, 0,
&leftmost_x, NULL, NULL, NULL);
max_dx = orig->x - leftmost_x;
if (*x_delta > max_dx)
*x_delta = max_dx;
/* no way to resize off the sides so that constraints are violated
*/
return;
}
static void
@@ -1347,6 +1320,19 @@ meta_window_constrain (MetaWindow *window,
(window->placed || did_placement))
{
window->maximize_after_placement = FALSE;
if (OUTER_WIDTH (*new) >= info.work_area_xinerama.width &&
OUTER_HEIGHT (*new) >= info.work_area_xinerama.height)
{
/* define a sane saved_rect so that the user can unmaximize
* to something reasonable.
*/
new->width = .75 * info.work_area_xinerama.width;
new->height = .75 * info.work_area_xinerama.height;
new->x = info.work_area_xinerama.x + .125 * info.work_area_xinerama.width;
new->y = info.work_area_xinerama.y + .083 * info.work_area_xinerama.height;
}
meta_window_maximize_internal (window, new);
/* maximization may have changed frame geometry */

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
@@ -586,17 +587,17 @@ meta_core_get_menu_accelerator (MetaMenuOp menu_op,
name = META_KEYBINDING_MAXIMIZE;
break;
case META_MENU_OP_UNSHADE:
name = META_KEYBINDING_TOGGLE_SHADE;
break;
case META_MENU_OP_SHADE:
name = META_KEYBINDING_TOGGLE_SHADE;
break;
case META_MENU_OP_UNSTICK:
name = META_KEYBINDING_TOGGLE_STICKY;
break;
case META_MENU_OP_STICK:
name = META_KEYBINDING_TOGGLE_STICKY;
break;
case META_MENU_OP_ABOVE:
case META_MENU_OP_UNABOVE:
name = META_KEYBINDING_TOGGLE_ABOVE;
break;
case META_MENU_OP_WORKSPACES:
switch (workspace)
{
@@ -644,6 +645,18 @@ meta_core_get_menu_accelerator (MetaMenuOp menu_op,
case META_MENU_OP_RESIZE:
name = META_KEYBINDING_BEGIN_RESIZE;
break;
case META_MENU_OP_MOVE_LEFT:
name = META_KEYBINDING_MOVE_WORKSPACE_LEFT;
break;
case META_MENU_OP_MOVE_RIGHT:
name = META_KEYBINDING_MOVE_WORKSPACE_RIGHT;
break;
case META_MENU_OP_MOVE_UP:
name = META_KEYBINDING_MOVE_WORKSPACE_UP;
break;
case META_MENU_OP_MOVE_DOWN:
name = META_KEYBINDING_MOVE_WORKSPACE_DOWN;
break;
}
if (name)
@@ -678,6 +691,7 @@ meta_core_begin_grab_op (Display *xdisplay,
Window frame_xwindow,
MetaGrabOp op,
gboolean pointer_already_grabbed,
int event_serial,
int button,
gulong modmask,
Time timestamp,
@@ -699,6 +713,7 @@ meta_core_begin_grab_op (Display *xdisplay,
return meta_display_begin_grab_op (display, screen, window,
op, pointer_already_grabbed,
event_serial,
button, modmask,
timestamp, root_x, root_y);
}

View File

@@ -133,6 +133,7 @@ gboolean meta_core_begin_grab_op (Display *xdisplay,
Window frame_xwindow,
MetaGrabOp op,
gboolean pointer_already_grabbed,
int event_serial,
int button,
gulong modmask,
Time timestamp,
@@ -163,6 +164,8 @@ void meta_core_get_screen_size (Display *xdisplay,
*/
void meta_core_increment_event_serial (Display *display);
int meta_ui_get_last_event_serial (Display *xdisplay);
#endif

View File

@@ -31,12 +31,14 @@
#include <errno.h>
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
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,
@@ -289,13 +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[5];
char *argv[9];
char numbuf[32];
char timestampbuf[32];
char *window_id_str;
GIOChannel *channel;
@@ -310,12 +315,19 @@ 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] = "--kill-window-question";
argv[2] = window->title;
argv[3] = window_id_str;
argv[4] = NULL;
argv[1] = "--screen";
argv[2] = numbuf;
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 ("/",
@@ -381,15 +393,24 @@ meta_window_delete (MetaWindow *window,
if (window->has_focus)
{
/* FIXME Clean this up someday
* http://bugzilla.gnome.org/show_bug.cgi?id=108706
*/
#if 0
/* This is unfortunately going to result in weirdness
* if the window doesn't respond to the delete event.
* 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",
window->desc);
#endif
}
else
{

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
@@ -53,6 +54,7 @@ struct _MetaRectangle
int height;
};
typedef struct MetaCompositor MetaCompositor;
typedef struct _MetaDisplay MetaDisplay;
typedef struct _MetaFrame MetaFrame;
typedef struct _MetaKeyBinding MetaKeyBinding;
@@ -67,6 +69,7 @@ typedef struct _MetaGroupPropHooks MetaGroupPropHooks;
typedef void (* MetaWindowPingFunc) (MetaDisplay *display,
Window xwindow,
Time timestamp,
gpointer user_data);
@@ -152,6 +155,8 @@ struct _MetaDisplay
Atom atom_net_wm_allowed_actions;
Atom atom_net_wm_action_move;
Atom atom_net_wm_action_resize;
Atom atom_net_wm_action_fullscreen;
Atom atom_net_wm_action_minimize;
Atom atom_net_wm_action_shade;
Atom atom_net_wm_action_stick;
Atom atom_net_wm_action_maximize_horz;
@@ -162,14 +167,22 @@ 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;
Atom atom_metacity_sentinel;
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;
/* This is the actual window from focus events,
* not the one we last set
*/
@@ -225,19 +238,25 @@ struct _MetaDisplay
MetaScreen *grab_screen;
MetaWindow *grab_window;
Window grab_xwindow;
gulong grab_start_serial;
int grab_button;
int grab_initial_root_x;
int grab_initial_root_y;
int grab_anchor_root_x;
int grab_anchor_root_y;
MetaRectangle grab_anchor_window_pos;
int grab_latest_motion_x;
int grab_latest_motion_y;
gulong grab_mask;
guint grab_have_pointer : 1;
guint grab_have_keyboard : 1;
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;
/* we use property updates as sentinels for certain window focus events
* to avoid some race conditions on EnterNotify events
*/
@@ -247,9 +266,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;
@@ -286,6 +306,9 @@ struct _MetaDisplay
/* Managed by group-props.c */
MetaGroupPropHooks *group_prop_hooks;
/* Managed by compositor.c */
MetaCompositor *compositor;
#ifdef HAVE_STARTUP_NOTIFICATION
SnDisplay *sn_display;
@@ -293,17 +316,33 @@ 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
};
gboolean meta_display_open (const char *name);
@@ -355,6 +394,7 @@ gboolean meta_display_begin_grab_op (MetaDisplay *display,
MetaWindow *window,
MetaGrabOp op,
gboolean pointer_already_grabbed,
int event_serial,
int button,
gulong modmask,
Time timestamp,
@@ -369,9 +409,9 @@ void meta_display_ungrab_window_buttons (MetaDisplay *display,
Window xwindow);
void meta_display_grab_focus_window_button (MetaDisplay *display,
Window xwindow);
MetaWindow *window);
void meta_display_ungrab_focus_window_button (MetaDisplay *display,
Window xwindow);
MetaWindow *window);
/* make a request to ensure the event serial has changed */
void meta_display_increment_event_serial (MetaDisplay *display);

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;
}
@@ -409,5 +427,108 @@ meta_effects_draw_box_animation (MetaScreen *screen,
XFlush (context->screen->display->xdisplay);
}
void
meta_effects_begin_wireframe (MetaScreen *screen,
const MetaRectangle *rect)
{
/* Grab the X server to avoid screen dirt */
meta_display_grab (screen->display);
meta_ui_push_delay_exposes (screen->ui);
meta_effects_update_wireframe (screen, NULL, rect);
}
static void
draw_xor_rect (MetaScreen *screen,
const MetaRectangle *rect)
{
/* The lines in the center can't overlap the rectangle or each
* other, or the XOR gets reversed. So we have to draw things
* a bit oddly.
*/
XSegment segments[8];
int i;
#define LINE_WIDTH META_WIREFRAME_XOR_LINE_WIDTH
XDrawRectangle (screen->display->xdisplay,
screen->xroot,
screen->root_xor_gc,
rect->x, rect->y,
rect->width, rect->height);
/* Don't put lines inside small rectangles where they won't fit */
if (rect->width < (LINE_WIDTH * 4) ||
rect->height < (LINE_WIDTH * 4))
return;
/* Two vertical lines at 1/3 and 2/3 */
segments[0].x1 = rect->x + rect->width / 3;
segments[0].y1 = rect->y + LINE_WIDTH / 2 + LINE_WIDTH % 2;
segments[0].x2 = segments[0].x1;
segments[0].y2 = rect->y + rect->height - LINE_WIDTH / 2;
segments[1] = segments[0];
segments[1].x1 = rect->x + (rect->width / 3) * 2;
segments[1].x2 = segments[1].x1;
/* Now make two horizontal lines at 1/3 and 2/3, but not
* overlapping the verticals
*/
segments[2].x1 = rect->x + LINE_WIDTH / 2 + LINE_WIDTH % 2;
segments[2].x2 = segments[0].x1 - LINE_WIDTH / 2;
segments[2].y1 = rect->y + rect->height / 3;
segments[2].y2 = segments[2].y1;
segments[3] = segments[2];
segments[3].x1 = segments[2].x2 + LINE_WIDTH;
segments[3].x2 = segments[1].x1 - LINE_WIDTH / 2;
segments[4] = segments[3];
segments[4].x1 = segments[3].x2 + LINE_WIDTH;
segments[4].x2 = rect->x + rect->width - LINE_WIDTH / 2;
/* Second horizontal line is just like the first, but
* shifted down
*/
i = 5;
while (i < 8)
{
segments[i] = segments[i - 3];
segments[i].y1 = rect->y + (rect->height / 3) * 2;
segments[i].y2 = segments[i].y1;
++i;
}
XDrawSegments (screen->display->xdisplay,
screen->xroot,
screen->root_xor_gc,
segments,
G_N_ELEMENTS (segments));
}
void
meta_effects_update_wireframe (MetaScreen *screen,
const MetaRectangle *old_rect,
const MetaRectangle *new_rect)
{
if (old_rect)
draw_xor_rect (screen, old_rect);
if (new_rect)
draw_xor_rect (screen, new_rect);
XFlush (screen->display->xdisplay);
}
void
meta_effects_end_wireframe (MetaScreen *screen,
const MetaRectangle *old_rect)
{
meta_effects_update_wireframe (screen, old_rect, NULL);
meta_display_ungrab (screen->display);
meta_ui_pop_delay_exposes (screen->ui);
}

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
@@ -41,4 +41,12 @@ void meta_effects_draw_box_animation (MetaScreen *screen,
double seconds_duration,
MetaBoxAnimType anim_type);
void meta_effects_begin_wireframe (MetaScreen *screen,
const MetaRectangle *rect);
void meta_effects_update_wireframe (MetaScreen *screen,
const MetaRectangle *old_rect,
const MetaRectangle *new_rect);
void meta_effects_end_wireframe (MetaScreen *screen,
const MetaRectangle *old_rect);
#endif /* META_EFFECTS_H */

View File

@@ -2,6 +2,7 @@
/*
* Copyright (C) 2001 Havoc Pennington
* 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
@@ -25,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 | \
@@ -33,12 +38,67 @@
EnterWindowMask | LeaveWindowMask | \
FocusChangeMask | \
ColormapChangeMask)
static Visual*
find_argb_visual (MetaDisplay *display,
int scr)
{
#ifdef HAVE_RENDER
XVisualInfo *xvi;
XVisualInfo template;
int nvi;
int i;
XRenderPictFormat *format;
Visual *visual;
if (!META_DISPLAY_HAS_RENDER (display))
return NULL;
template.screen = scr;
template.depth = 32;
template.class = TrueColor;
xvi = XGetVisualInfo (display->xdisplay,
VisualScreenMask |
VisualDepthMask |
VisualClassMask,
&template,
&nvi);
if (!xvi)
return 0;
visual = NULL;
for (i = 0; i < nvi; i++)
{
format = XRenderFindVisualFormat (display->xdisplay, xvi[i].visual);
if (format->type == PictTypeDirect && format->direct.alphaMask)
{
visual = xvi[i].visual;
break;
}
}
XFree (xvi);
if (visual)
meta_topic (META_DEBUG_COMPOSITOR,
"Found ARGB visual 0x%lx\n",
(long) visual->visualid);
else
meta_topic (META_DEBUG_COMPOSITOR,
"No ARGB visual found\n");
return visual;
#else /* RENDER */
return NULL;
#endif /* !RENDER */
}
void
meta_window_ensure_frame (MetaWindow *window)
{
MetaFrame *frame;
XSetWindowAttributes attrs;
Visual *visual;
if (window->frame)
return;
@@ -75,13 +135,26 @@ 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
*/
if (window->depth == 32)
visual = window->xvisual;
else
visual = find_argb_visual(window->display,
window->screen->number);
frame->xwindow = meta_ui_create_frame_window (window->screen->ui,
window->display->xdisplay,
frame->rect.x,
frame->rect.y,
window->display->xdisplay,
visual,
frame->rect.x,
frame->rect.y,
frame->rect.width,
frame->rect.height,
frame->window->screen->number);
@@ -153,6 +226,8 @@ meta_window_destroy_frame (MetaWindow *window)
if (window->frame == NULL)
return;
meta_verbose ("Unframing window %s\n", window->desc);
frame = window->frame;
meta_bell_notify_frame_destroy (frame);
@@ -371,6 +446,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

@@ -2,6 +2,7 @@
/*
* Copyright (C) 2001 Havoc Pennington
* Copyright (C) 2003 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
@@ -63,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);
@@ -269,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);
@@ -314,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);
}
@@ -468,6 +472,7 @@ meta_frames_manage_window (MetaFrames *frames,
GdkWindow *window)
{
MetaUIFrame *frame;
GdkColor col;
g_assert (window);
@@ -476,8 +481,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 */
@@ -611,8 +617,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
@@ -1257,6 +1263,7 @@ meta_frames_button_press_event (GtkWidget *widget,
frame->xwindow,
op,
TRUE,
meta_ui_get_last_event_serial (gdk_display),
event->button,
0,
event->time,
@@ -1336,6 +1343,7 @@ meta_frames_button_press_event (GtkWidget *widget,
frame->xwindow,
op,
TRUE,
meta_ui_get_last_event_serial (gdk_display),
event->button,
0,
event->time,
@@ -1355,6 +1363,7 @@ meta_frames_button_press_event (GtkWidget *widget,
frame->xwindow,
META_GRAB_OP_MOVING,
TRUE,
meta_ui_get_last_event_serial (gdk_display),
event->button,
0,
event->time,
@@ -1889,6 +1898,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)
@@ -2110,6 +2135,13 @@ get_control (MetaFrames *frames,
void
meta_frames_push_delay_exposes (MetaFrames *frames)
{
if (frames->expose_delay_count == 0)
{
/* Make sure we've repainted things */
gdk_window_process_all_updates ();
XFlush (gdk_display);
}
frames->expose_delay_count += 1;
}

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

View File

@@ -46,7 +46,7 @@ get_fallback_icons (MetaScreen *screen,
static gboolean
find_largest_sizes (gulong *data,
int nitems,
gulong nitems,
int *width,
int *height)
{
@@ -81,7 +81,7 @@ find_largest_sizes (gulong *data,
static gboolean
find_best_size (gulong *data,
int nitems,
gulong nitems,
int ideal_width,
int ideal_height,
int *width,
@@ -520,6 +520,7 @@ meta_icon_cache_init (MetaIconCache *icon_cache)
icon_cache->origin = USING_NO_ICON;
icon_cache->prev_pixmap = None;
icon_cache->prev_mask = None;
#if 0
icon_cache->icon = NULL;
icon_cache->mini_icon = NULL;

View File

@@ -1,7 +1,9 @@
/* Metacity Keybindings */
/*
* Copyright (C) 2001 Havoc Pennington, 2002 Red Hat Inc.
* 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
@@ -27,9 +29,12 @@
#include "frame.h"
#include "place.h"
#include "prefs.h"
#include "effects.h"
#include <X11/keysym.h>
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
static gboolean all_bindings_disabled = FALSE;
@@ -1691,10 +1696,24 @@ process_keyboard_move_grab (MetaDisplay *display,
if (is_modifier (display, event->xkey.keycode))
return TRUE;
meta_window_get_position (window, &x, &y);
if (display->grab_wireframe_active)
{
x = display->grab_wireframe_rect.x;
y = display->grab_wireframe_rect.y;
}
else
{
meta_window_get_position (window, &x, &y);
}
/* FIXME in wireframe mode the edge snapping is all fucked up
* since the edge-find routines use window->rect. Window
* constraints are also broken with wireframe.
*/
smart_snap = (event->xkey.state & ShiftMask) != 0;
if (display->grab_wireframe_active)
smart_snap = FALSE;
#define SMALL_INCREMENT 1
#define NORMAL_INCREMENT 10
@@ -1707,13 +1726,18 @@ process_keyboard_move_grab (MetaDisplay *display,
if (keysym == XK_Escape)
{
/* End move and restore to original position */
/* End resize and restore to original state.
* The move_resize is only needed when !wireframe
* since in wireframe we always moveresize at the end
* of the grab only.
*/
meta_window_move_resize (display->grab_window,
TRUE,
display->grab_initial_window_pos.x,
display->grab_initial_window_pos.y,
display->grab_initial_window_pos.width,
display->grab_initial_window_pos.height);
display->grab_was_cancelled = TRUE;
}
/* When moving by increments, we still snap to edges if the move
@@ -1727,11 +1751,14 @@ process_keyboard_move_grab (MetaDisplay *display,
case XK_KP_Prior:
case XK_Up:
case XK_KP_Up:
edge = meta_window_find_next_horizontal_edge (window, FALSE);
y -= incr;
if (smart_snap || ((edge > y) && ABS (edge - y) < incr))
y = edge;
if (!display->grab_wireframe_active)
{
edge = meta_window_find_next_horizontal_edge (window, FALSE);
if (smart_snap || ((edge > y) && ABS (edge - y) < incr))
y = edge;
}
handled = TRUE;
break;
@@ -1739,11 +1766,14 @@ process_keyboard_move_grab (MetaDisplay *display,
case XK_KP_Next:
case XK_Down:
case XK_KP_Down:
edge = meta_window_find_next_horizontal_edge (window, TRUE);
y += incr;
if (smart_snap || ((edge < y) && ABS (edge - y) < incr))
y = edge;
if (!display->grab_wireframe_active)
{
edge = meta_window_find_next_horizontal_edge (window, TRUE);
if (smart_snap || ((edge < y) && ABS (edge - y) < incr))
y = edge;
}
handled = TRUE;
break;
@@ -1755,11 +1785,14 @@ process_keyboard_move_grab (MetaDisplay *display,
case XK_KP_End:
case XK_Left:
case XK_KP_Left:
edge = meta_window_find_next_vertical_edge (window, FALSE);
x -= incr;
if (smart_snap || ((edge > x) && ABS (edge - x) < incr))
x = edge;
if (!display->grab_wireframe_active)
{
edge = meta_window_find_next_vertical_edge (window, FALSE);
if (smart_snap || ((edge > x) && ABS (edge - x) < incr))
x = edge;
}
handled = TRUE;
break;
@@ -1767,18 +1800,45 @@ process_keyboard_move_grab (MetaDisplay *display,
case XK_KP_Next:
case XK_Right:
case XK_KP_Right:
edge = meta_window_find_next_vertical_edge (window, TRUE);
x += incr;
if (smart_snap || ((edge < x) && ABS (edge - x) < incr))
x = edge;
if (!display->grab_wireframe_active)
{
edge = meta_window_find_next_vertical_edge (window, TRUE);
if (smart_snap || ((edge < x) && ABS (edge - x) < incr))
x = edge;
}
handled = TRUE;
break;
}
if (handled)
{
meta_window_move (window, TRUE, x, y);
meta_window_warp_pointer (window, display->grab_op);
meta_topic (META_DEBUG_KEYBINDINGS,
"Computed new window location %d,%d due to keypress\n",
x, y);
if (display->grab_wireframe_active)
{
MetaRectangle new_xor;
display->grab_wireframe_rect.x = x;
display->grab_wireframe_rect.y = y;
meta_window_get_xor_rect (window, &display->grab_wireframe_rect,
&new_xor);
meta_effects_update_wireframe (window->screen,
&display->grab_wireframe_last_xor_rect,
&new_xor);
display->grab_wireframe_last_xor_rect = new_xor;
}
else
{
meta_window_move (window, TRUE, x, y);
}
meta_window_update_keyboard_move (window);
}
return handled;
@@ -1813,13 +1873,18 @@ process_keyboard_resize_grab (MetaDisplay *display,
if (keysym == XK_Escape)
{
/* End resize and restore to original state */
/* End resize and restore to original state.
* The move_resize is only needed when !wireframe
* since in wireframe we always moveresize at the end
* of the grab only.
*/
meta_window_move_resize (display->grab_window,
TRUE,
display->grab_initial_window_pos.x,
display->grab_initial_window_pos.y,
display->grab_initial_window_pos.width,
display->grab_initial_window_pos.height);
display->grab_was_cancelled = TRUE;
return FALSE;
}
@@ -1929,20 +1994,38 @@ process_keyboard_resize_grab (MetaDisplay *display,
if (handled)
{
meta_window_update_resize_grab_op (window, TRUE);
meta_window_update_keyboard_resize (window, TRUE);
return TRUE;
}
}
meta_window_get_position (window, &orig_x, &orig_y);
x = orig_x;
y = orig_y;
width = window->rect.width;
height = window->rect.height;
if (display->grab_wireframe_active)
{
x = display->grab_wireframe_rect.x;
y = display->grab_wireframe_rect.y;
orig_x = x;
orig_y = y;
width = display->grab_wireframe_rect.width;
height = display->grab_wireframe_rect.height;
}
else
{
meta_window_get_position (window, &orig_x, &orig_y);
x = orig_x;
y = orig_y;
width = window->rect.width;
height = window->rect.height;
}
gravity = meta_resize_gravity_from_grab_op (display->grab_op);
smart_snap = (event->xkey.state & ShiftMask) != 0;
/* FIXME in wireframe mode the edge snapping is all fucked up
* since the edge-find routines use window->rect. Window
* constraints are also broken with wireframe.
*/
smart_snap = (event->xkey.state & ShiftMask) != 0;
if (display->grab_wireframe_active)
smart_snap = FALSE;
#define SMALL_INCREMENT 1
#define NORMAL_INCREMENT 10
@@ -1992,12 +2075,16 @@ process_keyboard_resize_grab (MetaDisplay *display,
case NorthWestGravity:
case NorthEastGravity:
/* Move bottom edge up */
edge = meta_window_find_next_horizontal_edge (window, TRUE);
height -= height_inc;
if (smart_snap || ((edge > (y+height)) &&
ABS (edge - (y+height)) < height_inc))
height = edge - y;
if (!display->grab_wireframe_active)
{
edge = meta_window_find_next_horizontal_edge (window, TRUE);
if (smart_snap || ((edge > (y+height)) &&
ABS (edge - (y+height)) < height_inc))
height = edge - y;
}
handled = TRUE;
break;
@@ -2006,11 +2093,15 @@ process_keyboard_resize_grab (MetaDisplay *display,
case SouthWestGravity:
case SouthEastGravity:
/* Move top edge up */
edge = meta_window_find_next_horizontal_edge (window, FALSE);
y -= height_inc;
if (smart_snap || ((edge > y) && ABS (edge - y) < height_inc))
y = edge;
if (!display->grab_wireframe_active)
{
edge = meta_window_find_next_horizontal_edge (window, FALSE);
if (smart_snap || ((edge > y) && ABS (edge - y) < height_inc))
y = edge;
}
height += (orig_y - y);
break;
@@ -2033,12 +2124,16 @@ process_keyboard_resize_grab (MetaDisplay *display,
case NorthWestGravity:
case NorthEastGravity:
/* Move bottom edge down */
edge = meta_window_find_next_horizontal_edge (window, TRUE);
height += height_inc;
if (smart_snap || ((edge < (y+height)) &&
ABS (edge - (y+height)) < height_inc))
height = edge - y;
if (!display->grab_wireframe_active)
{
edge = meta_window_find_next_horizontal_edge (window, TRUE);
if (smart_snap || ((edge < (y+height)) &&
ABS (edge - (y+height)) < height_inc))
height = edge - y;
}
handled = TRUE;
break;
@@ -2047,11 +2142,15 @@ process_keyboard_resize_grab (MetaDisplay *display,
case SouthWestGravity:
case SouthEastGravity:
/* Move top edge down */
edge = meta_window_find_next_horizontal_edge (window, FALSE);
y += height_inc;
if (smart_snap || ((edge < y) && ABS (edge - y) < height_inc))
y = edge;
if (!display->grab_wireframe_active)
{
edge = meta_window_find_next_horizontal_edge (window, FALSE);
if (smart_snap || ((edge < y) && ABS (edge - y) < height_inc))
y = edge;
}
height -= (y - orig_y);
break;
@@ -2074,11 +2173,15 @@ process_keyboard_resize_grab (MetaDisplay *display,
case SouthEastGravity:
case NorthEastGravity:
/* Move left edge left */
edge = meta_window_find_next_vertical_edge (window, TRUE);
x -= width_inc;
if (smart_snap || ((edge > x) && ABS (edge - x) < width_inc))
x = edge;
if (!display->grab_wireframe_active)
{
edge = meta_window_find_next_vertical_edge (window, TRUE);
if (smart_snap || ((edge > x) && ABS (edge - x) < width_inc))
x = edge;
}
width += (orig_x - x);
break;
@@ -2087,12 +2190,16 @@ process_keyboard_resize_grab (MetaDisplay *display,
case SouthWestGravity:
case NorthWestGravity:
/* Move right edge left */
edge = meta_window_find_next_vertical_edge (window, FALSE);
width -= width_inc;
if (smart_snap || ((edge > (x+width)) &&
ABS (edge - (x+width)) < width_inc))
width = edge - x;
if (!display->grab_wireframe_active)
{
edge = meta_window_find_next_vertical_edge (window, FALSE);
if (smart_snap || ((edge > (x+width)) &&
ABS (edge - (x+width)) < width_inc))
width = edge - x;
}
handled = TRUE;
break;
@@ -2115,11 +2222,15 @@ process_keyboard_resize_grab (MetaDisplay *display,
case SouthEastGravity:
case NorthEastGravity:
/* Move left edge right */
edge = meta_window_find_next_vertical_edge (window, FALSE);
x += width_inc;
if (smart_snap || ((edge < x) && ABS (edge - x) < width_inc))
x = edge;
if (!display->grab_wireframe_active)
{
edge = meta_window_find_next_vertical_edge (window, FALSE);
if (smart_snap || ((edge < x) && ABS (edge - x) < width_inc))
x = edge;
}
width -= (x - orig_x);
break;
@@ -2128,12 +2239,16 @@ process_keyboard_resize_grab (MetaDisplay *display,
case SouthWestGravity:
case NorthWestGravity:
/* Move right edge right */
edge = meta_window_find_next_vertical_edge (window, TRUE);
width += width_inc;
if (smart_snap || ((edge > (x+width)) &&
ABS (edge - (x+width)) < width_inc))
width = edge - x;
if (!display->grab_wireframe_active)
{
edge = meta_window_find_next_vertical_edge (window, TRUE);
if (smart_snap || ((edge > (x+width)) &&
ABS (edge - (x+width)) < width_inc))
width = edge - x;
}
handled = TRUE;
break;
@@ -2160,8 +2275,36 @@ process_keyboard_resize_grab (MetaDisplay *display,
if (handled)
{
meta_window_move_resize (window, TRUE, x, y, width, height);
meta_window_update_resize_grab_op (window, FALSE);
meta_topic (META_DEBUG_KEYBINDINGS,
"Computed new window location %d,%d %dx%d due to keypress\n",
x, y, width, height);
if (display->grab_wireframe_active)
{
MetaRectangle new_xor;
window->display->grab_wireframe_rect.x = x;
window->display->grab_wireframe_rect.y = y;
window->display->grab_wireframe_rect.width = width;
window->display->grab_wireframe_rect.height = height;
meta_window_get_xor_rect (window,
&window->display->grab_wireframe_rect,
&new_xor);
meta_effects_update_wireframe (window->screen,
&window->display->grab_wireframe_last_xor_rect,
&new_xor);
window->display->grab_wireframe_last_xor_rect = new_xor;
/* do this after drawing the wires, so we don't draw over it */
meta_window_refresh_resize_popup (window);
}
else
{
meta_window_move_resize (window, TRUE, x, y, width, height);
}
meta_window_update_keyboard_resize (window, FALSE);
}
return handled;
@@ -2306,44 +2449,6 @@ process_tab_grab (MetaDisplay *display,
return key_used;
}
static void
switch_to_workspace (MetaDisplay *display,
MetaWorkspace *workspace)
{
MetaWindow *move_window;
move_window = NULL;
if (display->grab_op == META_GRAB_OP_MOVING)
move_window = display->grab_window;
if (move_window != NULL)
{
if (move_window->on_all_workspaces)
move_window = NULL; /* don't move it after all */
/* We put the window on the new workspace, flip spaces,
* then remove from old workspace, so the window
* never gets unmapped and we maintain the button grab
* on it.
*/
if (move_window)
{
if (!meta_workspace_contains_window (workspace,
move_window))
meta_workspace_add_window (workspace, move_window);
}
}
meta_workspace_activate (workspace);
if (move_window)
{
/* Removes window from other spaces */
meta_window_change_workspace (move_window, workspace);
meta_window_raise (move_window);
}
}
static void
handle_activate_workspace (MetaDisplay *display,
MetaScreen *screen,
@@ -2369,7 +2474,7 @@ handle_activate_workspace (MetaDisplay *display,
if (workspace)
{
switch_to_workspace (display, workspace);
meta_workspace_activate (workspace);
}
else
{
@@ -2380,23 +2485,34 @@ handle_activate_workspace (MetaDisplay *display,
static void
error_on_command (int command_index,
const char *command,
const char *message)
const char *message,
int screen_number,
Time timestamp)
{
GError *err;
char *argv[6];
char *argv[10];
char *key;
char numbuf[32];
char timestampbuf[32];
meta_warning ("Error on command %d \"%s\": %s\n",
command_index, command, message);
key = meta_prefs_get_gconf_key_for_command (command_index);
sprintf (numbuf, "%d", screen_number);
sprintf (timestampbuf, "%lu", timestamp);
argv[0] = METACITY_LIBEXECDIR"/metacity-dialog";
argv[1] = "--command-failed-error";
argv[2] = key;
argv[3] = (char*) (command ? command : "");
argv[4] = (char*) message;
argv[5] = NULL;
argv[1] = "--screen";
argv[2] = numbuf;
argv[3] = "--timestamp";
argv[4] = timestampbuf;
argv[5] = "--command-failed-error";
argv[6] = key;
argv[7] = (char*) (command ? command : "");
argv[8] = (char*) message;
argv[9] = NULL;
err = NULL;
if (!g_spawn_async_with_pipes ("/",
@@ -2418,6 +2534,48 @@ error_on_command (int command_index,
g_free (key);
}
static void
set_display_setup_func (void *data)
{
const char *screen_name = data;
char *full;
full = g_strdup_printf ("DISPLAY=%s", screen_name);
putenv (full);
/* do not free full, because putenv is lame */
}
static gboolean
meta_spawn_command_line_async_on_screen (const gchar *command_line,
MetaScreen *screen,
GError **error)
{
gboolean retval;
gchar **argv = 0;
g_return_val_if_fail (command_line != NULL, FALSE);
if (!g_shell_parse_argv (command_line,
NULL, &argv,
error))
return FALSE;
retval = g_spawn_async (NULL,
argv,
NULL,
G_SPAWN_SEARCH_PATH,
set_display_setup_func,
screen->screen_name,
NULL,
error);
g_strfreev (argv);
return retval;
}
static void
handle_run_command (MetaDisplay *display,
MetaScreen *screen,
@@ -2443,16 +2601,16 @@ handle_run_command (MetaDisplay *display,
s = g_strdup_printf (_("No command %d has been defined.\n"),
which + 1);
error_on_command (which, NULL, s);
error_on_command (which, NULL, s, screen->number, event->xkey.time);
g_free (s);
return;
}
err = NULL;
if (!g_spawn_command_line_async (command, &err))
if (!meta_spawn_command_line_async_on_screen (command, screen, &err))
{
error_on_command (which, command, err->message);
error_on_command (which, command, err->message, screen->number, event->xkey.time);
g_error_free (err);
}
@@ -2521,7 +2679,7 @@ process_workspace_switch_grab (MetaDisplay *display,
meta_topic (META_DEBUG_KEYBINDINGS,
"Activating target workspace\n");
switch_to_workspace (display, target_workspace);
meta_workspace_activate (target_workspace);
return TRUE; /* we already ended the grab */
}
@@ -2587,7 +2745,7 @@ process_workspace_switch_grab (MetaDisplay *display,
meta_topic (META_DEBUG_KEYBINDINGS,
"Activating target workspace\n");
switch_to_workspace (display, target_workspace);
meta_workspace_activate (target_workspace);
return TRUE; /* we already ended the grab */
}
@@ -2609,7 +2767,7 @@ handle_toggle_desktop (MetaDisplay *display,
if (screen->showing_desktop)
{
meta_screen_unshow_desktop (screen);
meta_workspace_focus_top_window (screen->active_workspace, NULL);
meta_workspace_focus_default_window (screen->active_workspace, NULL);
}
else
meta_screen_show_desktop (screen);
@@ -2774,6 +2932,7 @@ do_choose_window (MetaDisplay *display,
tab_op_from_tab_type (type) :
cycle_op_from_tab_type (type),
FALSE,
event->xkey.serial,
0,
binding->mask,
event->xkey.time,
@@ -3181,6 +3340,7 @@ handle_workspace_switch (MetaDisplay *display,
NULL,
META_GRAB_OP_KEYBOARD_WORKSPACE_SWITCHING,
FALSE,
event->xkey.serial,
0,
grab_mask,
event->xkey.time,
@@ -3207,7 +3367,7 @@ handle_workspace_switch (MetaDisplay *display,
meta_display_end_grab_op (display, event->xkey.time);
}
switch_to_workspace (display, next);
meta_workspace_activate (next);
if (grabbed_before_release)
{

View File

@@ -29,6 +29,11 @@
#include "prefs.h"
#include <glib-object.h>
#include <gmodule.h>
#ifdef HAVE_GCONF
#include <gconf/gconf-client.h>
#endif
#include <stdlib.h>
#include <sys/types.h>
@@ -76,6 +81,90 @@ version (void)
exit (0);
}
#define GNOME_ACCESSIBILITY_KEY "/desktop/gnome/interface/accessibility"
static char *
find_accessibility_module (const char *libname)
{
char *path;
char *fname;
char *retval;
retval = NULL;
fname = g_strconcat (libname, "." G_MODULE_SUFFIX, NULL);
path = g_strconcat (METACITY_LIBDIR"/gtk-2.0/modules", G_DIR_SEPARATOR_S, fname, NULL);
if (g_file_test (path, G_FILE_TEST_EXISTS))
retval = path;
if (path)
retval = path;
else
g_free (path);
g_free (fname);
return retval;
}
static gboolean
accessibility_invoke_module (const char *libname,
gboolean init)
{
GModule *handle;
void (*invoke_fn) (void);
const char *method;
gboolean retval = FALSE;
char *module_name;
if (init)
method = "gnome_accessibility_module_init";
else
method = "gnome_accessibility_module_shutdown";
module_name = find_accessibility_module (libname);
if (!module_name)
{
g_warning ("Accessibility: failed to find module '%s' which "
"is needed to make this application accessible",
libname);
}
else if (!(handle = g_module_open (module_name, G_MODULE_BIND_LAZY)))
{
g_warning ("Accessibility: failed to load module '%s': '%s'",
libname, g_module_error ());
}
else if (!g_module_symbol (handle, method, (gpointer *)&invoke_fn))
{
g_warning ("Accessibility: error library '%s' does not include "
"method '%s' required for accessibility support",
libname, method);
g_module_close (handle);
}
else
{
retval = TRUE;
invoke_fn ();
}
g_free (module_name);
return retval;
}
static gboolean
accessibility_invoke (gboolean init)
{
accessibility_invoke_module ("libgail", init);
accessibility_invoke_module ("libatk-bridge", init);
return TRUE;
}
int
main (int argc, char **argv)
{
@@ -289,7 +378,11 @@ main (int argc, char **argv)
#else
meta_verbose ("Compiled without startup notification\n");
#endif
#ifdef HAVE_COMPOSITE_EXTENSIONS
meta_verbose ("Compiled with composite extensions\n");
#else
meta_verbose ("Compiled without composite extensions\n");
#endif
/* Load prefs */
meta_prefs_init ();
@@ -332,18 +425,36 @@ main (int argc, char **argv)
meta_ui_set_current_theme (meta_prefs_get_theme (), FALSE);
/* Try some panic stuff, this is lame but we really
* don't want users to lose their WM :-/
/* Try to find some theme that'll work if the theme preference
* doesn't exist. First try Simple (the default theme) then just
* try anything in the themes directory.
*/
if (!meta_ui_have_a_theme ())
meta_ui_set_current_theme ("Simple", FALSE);
if (!meta_ui_have_a_theme ())
meta_ui_set_current_theme ("Atlanta", FALSE);
if (!meta_ui_have_a_theme ())
meta_ui_set_current_theme ("Crux", FALSE);
{
const char *dir_entry = NULL;
GError *err = NULL;
GDir *themes_dir = NULL;
if (!(themes_dir = g_dir_open (METACITY_DATADIR"/themes", 0, &err)))
{
meta_fatal (_("Failed to scan themes directory: %s\n"), err->message);
g_error_free (err);
}
else
{
while (((dir_entry = g_dir_read_name (themes_dir)) != NULL) &&
(!meta_ui_have_a_theme ()))
{
meta_ui_set_current_theme (dir_entry, FALSE);
}
g_dir_close (themes_dir);
}
}
if (!meta_ui_have_a_theme ())
meta_fatal (_("Could not find a theme! Be sure %s exists and contains the usual themes."),
METACITY_DATADIR"/themes");
@@ -358,6 +469,20 @@ main (int argc, char **argv)
if (!meta_display_open (NULL))
meta_exit (META_EXIT_ERROR);
{
gboolean do_init_a11y;
do_init_a11y = FALSE;
#ifdef HAVE_GCONF
do_init_a11y = gconf_client_get_bool (
gconf_client_get_default (),
GNOME_ACCESSIBILITY_KEY, NULL);
#endif
if (do_init_a11y)
accessibility_invoke (TRUE);
}
g_main_run (meta_main_loop);
{

View File

@@ -2,6 +2,7 @@
/*
* Copyright (C) 2001 Havoc Pennington
* Copyright (C) 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
@@ -36,6 +37,7 @@ struct _MenuItem
{
MetaMenuOp op;
const char *stock_id;
const gboolean checked;
const char *label;
};
@@ -49,18 +51,24 @@ struct _MenuData
static void activate_cb (GtkWidget *menuitem, gpointer data);
static MenuItem menuitems[] = {
{ META_MENU_OP_MINIMIZE, METACITY_STOCK_MINIMIZE, N_("Mi_nimize") },
{ META_MENU_OP_MAXIMIZE, METACITY_STOCK_MAXIMIZE, N_("Ma_ximize") },
{ META_MENU_OP_UNMAXIMIZE, NULL, N_("Unma_ximize") },
{ META_MENU_OP_SHADE, NULL, N_("Roll _Up") },
{ META_MENU_OP_UNSHADE, NULL, N_("_Unroll") },
{ META_MENU_OP_MOVE, NULL, N_("_Move") },
{ META_MENU_OP_RESIZE, NULL, N_("_Resize") },
{ 0, NULL, NULL }, /* separator */
{ META_MENU_OP_DELETE, METACITY_STOCK_DELETE, N_("_Close") },
{ 0, NULL, NULL }, /* separator */
{ META_MENU_OP_STICK, NULL, N_("Put on _All Workspaces") },
{ META_MENU_OP_UNSTICK, NULL, N_("Only on _This Workspace") }
{ META_MENU_OP_MINIMIZE, METACITY_STOCK_MINIMIZE, FALSE, N_("Mi_nimize") },
{ META_MENU_OP_MAXIMIZE, METACITY_STOCK_MAXIMIZE, FALSE, N_("Ma_ximize") },
{ META_MENU_OP_UNMAXIMIZE, NULL, FALSE, N_("Unma_ximize") },
{ META_MENU_OP_SHADE, NULL, FALSE, N_("Roll _Up") },
{ META_MENU_OP_UNSHADE, NULL, FALSE, N_("_Unroll") },
{ META_MENU_OP_ABOVE, NULL, FALSE, N_("On _Top") },
{ META_MENU_OP_UNABOVE, NULL, TRUE, N_("On _Top") },
{ META_MENU_OP_MOVE, NULL, FALSE, N_("_Move") },
{ META_MENU_OP_RESIZE, NULL, FALSE, N_("_Resize") },
{ 0, NULL, FALSE, NULL }, /* separator */
{ META_MENU_OP_DELETE, METACITY_STOCK_DELETE, FALSE, N_("_Close") },
{ META_MENU_OP_WORKSPACES, NULL, FALSE, NULL }, /* separator */
{ META_MENU_OP_STICK, NULL, FALSE, N_("Put on _All Workspaces") },
{ META_MENU_OP_UNSTICK, NULL, FALSE, N_("Only on _This Workspace") },
{ META_MENU_OP_MOVE_LEFT, NULL, FALSE, N_("Move to Workspace _Left") },
{ META_MENU_OP_MOVE_RIGHT, NULL, FALSE, N_("Move to Workspace R_ight") },
{ META_MENU_OP_MOVE_UP, NULL, FALSE, N_("Move to Workspace _Up") },
{ META_MENU_OP_MOVE_DOWN, NULL, FALSE, N_("Move to Workspace _Down") }
};
static void
@@ -96,6 +104,7 @@ menu_closed (GtkMenu *widget,
meta_frames_notify_menu_hide (menu->frames);
(* menu->func) (menu, gdk_display,
menu->client_xwindow,
gtk_get_current_event_time (),
0, 0,
menu->data);
@@ -114,6 +123,7 @@ activate_cb (GtkWidget *menuitem, gpointer data)
meta_frames_notify_menu_hide (md->menu->frames);
(* md->menu->func) (md->menu, gdk_display,
md->menu->client_xwindow,
gtk_get_current_event_time (),
md->op,
GPOINTER_TO_INT (g_object_get_data (G_OBJECT (menuitem),
"workspace")),
@@ -157,26 +167,30 @@ get_workspace_name_with_accel (Display *display,
* Above name is a pointer into the Workspace struct. Here we make
* a copy copy so we can have our wicked way with it.
*/
new_name = g_strdup_printf (_("Workspace %s%d"),
number < 10 ? "_" : "",
number);
if (number == 10)
new_name = g_strdup_printf (_("Workspace 1_0"));
else
new_name = g_strdup_printf (_("Workspace %s%d"),
number < 10 ? "_" : "",
number);
return new_name;
}
else
{
/*
* Otherwise this is just a normal name to which we cannot really
* add accelerators. Escape any _ characters so that the user's
* workspace names do not get mangled.
* Otherwise this is just a normal name. Escape any _ characters so that
* the user's workspace names do not get mangled. If the number is less
* than 10 we provide an accelerator.
*/
char *new_name;
const char *source;
char *dest;
/*
* Assume the worst case, that every character is a _
* Assume the worst case, that every character is a _. We also
* provide memory for " (_#)"
*/
new_name = g_malloc0 (strlen (name) * 2 + 1);
new_name = g_malloc0 (strlen (name) * 2 + 6 + 1);
/*
* Now iterate down the strings, adding '_' to escape as we go
@@ -190,6 +204,16 @@ get_workspace_name_with_accel (Display *display,
*dest++ = *source++;
}
/* People don't start at workstation 0, but workstation 1 */
if (index < 9)
{
g_snprintf (dest, 6, " (_%d)", index + 1);
}
else if (index == 9)
{
g_snprintf (dest, 6, " (_0)");
}
return new_name;
}
}
@@ -197,13 +221,20 @@ get_workspace_name_with_accel (Display *display,
static GtkWidget*
menu_item_new (const char *label,
gboolean with_image,
gboolean with_check,
unsigned int key,
MetaVirtualModifier mods)
{
GtkWidget *menu_item;
GtkWidget *accel_label;
if (with_image)
if (with_check)
{
menu_item = gtk_check_menu_item_new ();
gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (menu_item),
TRUE);
}
else if (with_image)
menu_item = gtk_image_menu_item_new ();
else
menu_item = gtk_menu_item_new ();
@@ -232,13 +263,16 @@ meta_window_menu_new (MetaFrames *frames,
int i;
MetaWindowMenu *menu;
if (n_workspaces < 2)
ops &= ~(META_MENU_OP_STICK | META_MENU_OP_UNSTICK | META_MENU_OP_WORKSPACES);
menu = g_new (MetaWindowMenu, 1);
menu->frames = frames;
menu->client_xwindow = client_xwindow;
menu->func = func;
menu->data = data;
menu->ops = ops;
menu->insensitive = insensitive;
menu->insensitive = insensitive;
menu->menu = gtk_menu_new ();
@@ -255,7 +289,7 @@ meta_window_menu_new (MetaFrames *frames,
unsigned int key;
MetaVirtualModifier mods;
if (menuitems[i].op == 0)
if (menuitems[i].label == NULL)
{
mi = gtk_separator_menu_item_new ();
}
@@ -274,17 +308,18 @@ meta_window_menu_new (MetaFrames *frames,
meta_core_get_menu_accelerator (menuitems[i].op, -1,
&key, &mods);
if (image)
{
mi = menu_item_new (_(menuitems[i].label), TRUE, key, mods);
mi = menu_item_new (_(menuitems[i].label), TRUE, FALSE, key, mods);
gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (mi),
image);
gtk_widget_show (image);
}
else
{
mi = menu_item_new (_(menuitems[i].label), FALSE, key, mods);
mi = menu_item_new (_(menuitems[i].label), FALSE,
menuitems[i].checked, key, mods);
}
if (insensitive & menuitems[i].op)
@@ -313,72 +348,74 @@ meta_window_menu_new (MetaFrames *frames,
if (ops & META_MENU_OP_WORKSPACES)
{
GtkWidget *mi;
Display *display;
Window xroot;
GdkScreen *screen;
GtkWidget *submenu;
GtkWidget *submenuitem;
meta_verbose ("Creating %d-workspace menu current space %d\n",
n_workspaces, active_workspace);
if (n_workspaces > 1)
display = gdk_x11_drawable_get_xdisplay (GTK_WIDGET (frames)->window);
screen = gdk_drawable_get_screen (GTK_WIDGET (frames)->window);
xroot = GDK_DRAWABLE_XID (gdk_screen_get_root_window (screen));
submenu = gtk_menu_new ();
submenuitem = menu_item_new (_("Move to Another _Workspace"), FALSE, FALSE, 0, 0);
gtk_menu_item_set_submenu (GTK_MENU_ITEM (submenuitem), submenu);
gtk_menu_shell_append (GTK_MENU_SHELL (menu->menu),
submenuitem);
gtk_widget_show (submenuitem);
i = 0;
while (i < n_workspaces)
{
GtkWidget *mi;
Display *display;
Window xroot;
GdkScreen *screen;
display = gdk_x11_drawable_get_xdisplay (GTK_WIDGET (frames)->window);
screen = gdk_drawable_get_screen (GTK_WIDGET (frames)->window);
xroot = GDK_DRAWABLE_XID (gdk_screen_get_root_window (screen));
i = 0;
while (i < n_workspaces)
{
char *label, *name;
MenuData *md;
unsigned int key;
MetaVirtualModifier mods;
char *label;
MenuData *md;
unsigned int key;
MetaVirtualModifier mods;
meta_core_get_menu_accelerator (META_MENU_OP_WORKSPACES,
i + 1,
&key, &mods);
meta_core_get_menu_accelerator (META_MENU_OP_WORKSPACES,
i + 1,
&key, &mods);
name = get_workspace_name_with_accel (display, xroot, i);
if (ops & META_MENU_OP_UNSTICK)
label = g_strdup_printf (_("Only on %s"), name);
else
label = g_strdup_printf(_("Move to %s"), name);
mi = menu_item_new (label, FALSE, key, mods);
label = get_workspace_name_with_accel (display, xroot, i);
mi = menu_item_new (label, FALSE, FALSE, key, mods);
g_free (name);
g_free (label);
g_free (label);
if (!(ops & META_MENU_OP_UNSTICK) &&
(active_workspace == i ||
insensitive & META_MENU_OP_WORKSPACES))
gtk_widget_set_sensitive (mi, FALSE);
else if (insensitive & META_MENU_OP_WORKSPACES)
gtk_widget_set_sensitive (mi, FALSE);
md = g_new (MenuData, 1);
if (!(ops & META_MENU_OP_UNSTICK) &&
(active_workspace == i ||
insensitive & META_MENU_OP_WORKSPACES))
gtk_widget_set_sensitive (mi, FALSE);
else if (insensitive & META_MENU_OP_WORKSPACES)
gtk_widget_set_sensitive (mi, FALSE);
md = g_new (MenuData, 1);
md->menu = menu;
md->op = META_MENU_OP_WORKSPACES;
md->menu = menu;
md->op = META_MENU_OP_WORKSPACES;
g_object_set_data (G_OBJECT (mi),
"workspace",
GINT_TO_POINTER (i));
g_object_set_data (G_OBJECT (mi),
"workspace",
GINT_TO_POINTER (i));
gtk_signal_connect_full (GTK_OBJECT (mi),
"activate",
GTK_SIGNAL_FUNC (activate_cb),
NULL,
md,
g_free, FALSE, FALSE);
gtk_signal_connect_full (GTK_OBJECT (mi),
"activate",
GTK_SIGNAL_FUNC (activate_cb),
NULL,
md,
g_free, FALSE, FALSE);
gtk_menu_shell_append (GTK_MENU_SHELL (menu->menu),
mi);
gtk_menu_shell_append (GTK_MENU_SHELL (submenu),
mi);
gtk_widget_show (mi);
gtk_widget_show (mi);
++i;
}
++i;
}
}
else

View File

@@ -30,6 +30,30 @@
#define N_(x) x
#include <gdk/gdkx.h>
#include <X11/Xatom.h>
/* FIXME: When we switch to gtk+-2.6, use of this function should be
* replaced by using the real gdk_x11_window_set_user_time.
*/
static void
copy_of_gdk_x11_window_set_user_time (GdkWindow *window,
Time timestamp)
{
GdkDisplay *display;
g_return_if_fail (window != NULL);
g_return_if_fail (GDK_IS_WINDOW (window));
if (GDK_WINDOW_DESTROYED (window))
return;
display = gdk_drawable_get_display (window);
XChangeProperty (GDK_DISPLAY_XDISPLAY (display), GDK_WINDOW_XID (window),
gdk_x11_get_xatom_by_name_for_display (display, "_NET_WM_USER_TIME"),
XA_CARDINAL, 32, PropModeReplace,
(guchar *)&timestamp, 1);
}
static Window
window_from_string (const char *str)
@@ -76,7 +100,8 @@ on_realize (GtkWidget *dialog,
static int
kill_window_question (const char *window_name,
const char *parent_str)
const char *parent_str,
Time timestamp)
{
GtkWidget *dialog;
char *str, *tmp;
@@ -109,6 +134,9 @@ kill_window_question (const char *window_name,
g_signal_connect (G_OBJECT (dialog), "realize",
G_CALLBACK (on_realize), (char*) parent_str);
gtk_widget_realize (dialog);
copy_of_gdk_x11_window_set_user_time (dialog->window, timestamp);
/* return our PID, then window ID that should be killed */
if (gtk_dialog_run (GTK_DIALOG (dialog)) == GTK_RESPONSE_ACCEPT)
g_print ("%d\n%s\n", (int) getpid (), parent_str);
@@ -220,7 +248,8 @@ create_lame_apps_list (char **lame_apps)
}
static int
warn_about_no_sm_support (char **lame_apps)
warn_about_no_sm_support (char **lame_apps,
Time timestamp)
{
GtkWidget *dialog;
GtkWidget *list;
@@ -255,6 +284,8 @@ warn_about_no_sm_support (char **lame_apps)
gtk_window_set_geometry_hints (GTK_WINDOW (dialog),
sw, NULL, 0);
gtk_window_set_resizable (GTK_WINDOW(dialog), TRUE);
/* applies to geometry widget; try to avoid scrollbars,
* but don't make the window huge
*/
@@ -265,6 +296,9 @@ warn_about_no_sm_support (char **lame_apps)
sw,
TRUE, TRUE, 0);
gtk_widget_realize (dialog);
copy_of_gdk_x11_window_set_user_time (dialog->window, timestamp);
gtk_widget_show_all (dialog);
gtk_main ();
@@ -275,7 +309,8 @@ warn_about_no_sm_support (char **lame_apps)
static int
error_about_command (const char *gconf_key,
const char *command,
const char *error)
const char *error,
Time timestamp)
{
GtkWidget *dialog;
@@ -294,6 +329,9 @@ error_about_command (const char *gconf_key,
GTK_BUTTONS_CLOSE,
"%s", error);
gtk_widget_realize (dialog);
copy_of_gdk_x11_window_set_user_time (dialog->window, timestamp);
gtk_dialog_run (GTK_DIALOG (dialog));
gtk_widget_destroy (dialog);
@@ -304,52 +342,61 @@ error_about_command (const char *gconf_key,
int
main (int argc, char **argv)
{
Time timestamp;
bindtextdomain (GETTEXT_PACKAGE, METACITY_LOCALEDIR);
bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8");
textdomain (GETTEXT_PACKAGE);
gtk_init (&argc, &argv);
if (argc < 2)
if (argc < 4)
{
g_printerr ("bad args to metacity-dialog\n");
return 1;
}
if (strcmp (argv[1], "--kill-window-question") == 0)
if (strcmp (argv[1], "--timestamp") != 0)
{
if (argc < 4)
g_printerr ("bad args to metacity-dialog\n");
return 1;
}
timestamp = strtoul (argv[2], NULL, 10);
if (strcmp (argv[3], "--kill-window-question") == 0)
{
if (argc < 6)
{
g_printerr ("bad args to metacity-dialog\n");
return 1;
}
return kill_window_question (argv[2], argv[3]);
return kill_window_question (argv[4], argv[5], timestamp);
}
else if (strcmp (argv[1], "--warn-about-no-sm-support") == 0)
else if (strcmp (argv[3], "--warn-about-no-sm-support") == 0)
{
/* argc must be even because we want title-class pairs */
if (argc < 3 || (argc % 2) != 0)
if (argc < 5 || (argc % 2) != 0)
{
g_printerr ("bad args to metacity-dialog\n");
return 1;
}
return warn_about_no_sm_support (&argv[2]);
return warn_about_no_sm_support (&argv[4], timestamp);
}
else if (strcmp (argv[1], "--command-failed-error") == 0)
else if (strcmp (argv[3], "--command-failed-error") == 0)
{
/* the args are the gconf key of the failed command, the text of
* the command, and the error message
*/
if (argc != 5)
if (argc != 7)
{
g_printerr ("bad args to metacity-dialog\n");
return 1;
}
return error_about_command (argv[2], argv[3], argv[4]);
return error_about_command (argv[4], argv[5], argv[6], timestamp);
}
g_printerr ("bad args to metacity-dialog\n");

View File

@@ -66,7 +66,7 @@
<applyto>/apps/metacity/general/action_double_click_titlebar</applyto>
<owner>metacity</owner>
<type>string</type>
<default>toggle_shade</default>
<default>toggle_maximize</default>
<locale name="C">
<short>Action on title bar double-click</short>
<long>
@@ -129,7 +129,7 @@
<applyto>/apps/metacity/general/titlebar_uses_system_font</applyto>
<owner>metacity</owner>
<type>bool</type>
<default>true</default>
<default>false</default>
<locale name="C">
<short>Use standard system font in window titles</short>
<long>
@@ -257,6 +257,25 @@
</locale>
</schema>
<schema>
<key>/schemas/apps/metacity/general/reduced_resources</key>
<applyto>/apps/metacity/general/reduced_resources</applyto>
<owner>metacity</owner>
<type>bool</type>
<default>false</default>
<locale name="C">
<short>If true, trade off usability for less resource usage</short>
<long>
If true, metacity will give the user less feedback and
less sense of "direct manipulation", by using wireframes,
avoiding animations, or other means. This is a significant
reduction in usability for many users, but may allow
legacy applications and terminal servers to function
when they would otherwise be impractical.
</long>
</locale>
</schema>
<!-- Window Keybindings -->
<schema>
@@ -269,7 +288,7 @@
<short>Activate window menu</short>
<long>
The keybinding used to activate the window menu.
The format looks like "&lt;Control&gt;a" or "&lt;Shift&gt;&lt;Alt&gt;F1.
The format looks like "&lt;Control&gt;a" or "&lt;Shift&gt;&lt;Alt&gt;F1".
The parser is
fairly liberal and allows lower or upper case, and also
abbreviations such as "&lt;Ctl&gt;" and "&lt;Ctrl&gt;". If
@@ -291,7 +310,7 @@ you set
<short>Toggle fullscreen mode</short>
<long>
The keybinding used to toggle fullscreen mode.
The format looks like "&lt;Control&gt;a" or "&lt;Shift&gt;&lt;Alt&gt;F1.
The format looks like "&lt;Control&gt;a" or "&lt;Shift&gt;&lt;Alt&gt;F1".
The parser is
fairly liberal and allows lower or upper case, and also
abbreviations such as "&lt;Ctl&gt;" and "&lt;Ctrl&gt;". If
@@ -314,7 +333,7 @@ you set
The keybinding used to toggle always on top. A window that
is always on top will always be visible over other overlapping windows.
The format looks like "&lt;Control&gt;a" or "&lt;Shift&gt;&lt;Alt&gt;F1.
The format looks like "&lt;Control&gt;a" or "&lt;Shift&gt;&lt;Alt&gt;F1".
The parser is
fairly liberal and allows lower or upper case, and also
abbreviations such as "&lt;Ctl&gt;" and "&lt;Ctrl&gt;". If
@@ -335,7 +354,7 @@ you set
<short>Toggle maximization state</short>
<long>
The keybinding used to toggle maximization.
The format looks like "&lt;Control&gt;a" or "&lt;Shift&gt;&lt;Alt&gt;F1.
The format looks like "&lt;Control&gt;a" or "&lt;Shift&gt;&lt;Alt&gt;F1".
The parser is
fairly liberal and allows lower or upper case, and also
abbreviations such as "&lt;Ctl&gt;" and "&lt;Ctrl&gt;". If
@@ -353,10 +372,10 @@ you set
<type>string</type>
<default>&lt;Alt&gt;F10</default>
<locale name="C">
<short>Maximize a window</short>
<short>Maximize window</short>
<long>
The keybinding used to maximize a window
The format looks like "&lt;Control&gt;a" or "&lt;Shift&gt;&lt;Alt&gt;F1.
The format looks like "&lt;Control&gt;a" or "&lt;Shift&gt;&lt;Alt&gt;F1".
The parser is
fairly liberal and allows lower or upper case, and also
abbreviations such as "&lt;Ctl&gt;" and "&lt;Ctrl&gt;". If you set
@@ -373,10 +392,10 @@ you set
<type>string</type>
<default>&lt;Alt&gt;F5</default>
<locale name="C">
<short>Unmaximize a window</short>
<short>Unmaximize window</short>
<long>
The keybinding used to unmaximize a window.
The format looks like "&lt;Control&gt;a" or "&lt;Shift&gt;&lt;Alt&gt;F1.
The format looks like "&lt;Control&gt;a" or "&lt;Shift&gt;&lt;Alt&gt;F1".
The parser is
fairly liberal and allows lower or upper case, and also
abbreviations such as "&lt;Ctl&gt;" and "&lt;Ctrl&gt;". If you set
@@ -391,12 +410,12 @@ you set
<applyto>/apps/metacity/window_keybindings/toggle_shaded</applyto>
<owner>metacity</owner>
<type>string</type>
<default>&lt;Alt&gt;F12</default>
<default>disabled</default>
<locale name="C">
<short>Toggle shaded state</short>
<long>
The keybinding used to toggle shaded/unshaded state.
The format looks like "&lt;Control&gt;a" or "&lt;Shift&gt;&lt;Alt&gt;F1.
The format looks like "&lt;Control&gt;a" or "&lt;Shift&gt;&lt;Alt&gt;F1".
The parser is
fairly liberal and allows lower or upper case, and also
abbreviations such as "&lt;Ctl&gt;" and "&lt;Ctrl&gt;". If
@@ -414,10 +433,10 @@ you set
<type>string</type>
<default>&lt;Alt&gt;F4</default>
<locale name="C">
<short>Close a window</short>
<short>Close window</short>
<long>
The keybinding used to close a window.
The format looks like "&lt;Control&gt;a" or "&lt;Shift&gt;&lt;Alt&gt;F1.
The format looks like "&lt;Control&gt;a" or "&lt;Shift&gt;&lt;Alt&gt;F1".
The parser is
fairly liberal and allows lower or upper case, and also
abbreviations such as "&lt;Ctl&gt;" and "&lt;Ctrl&gt;". If
@@ -435,10 +454,10 @@ you set
<type>string</type>
<default>&lt;Alt&gt;F9</default>
<locale name="C">
<short>Minimize a window</short>
<short>Minimize window</short>
<long>
The keybinding used to minimize a window.
The format looks like "&lt;Control&gt;a" or "&lt;Shift&gt;&lt;Alt&gt;F1.
The format looks like "&lt;Control&gt;a" or "&lt;Shift&gt;&lt;Alt&gt;F1".
The parser is
fairly liberal and allows lower or upper case, and also
abbreviations such as "&lt;Ctl&gt;" and "&lt;Ctrl&gt;". If
@@ -456,11 +475,11 @@ you set
<type>string</type>
<default>&lt;Alt&gt;F7</default>
<locale name="C">
<short>Move a window</short>
<short>Move window</short>
<long>
The keybinding used to enter "move mode" and begin moving a
window using the keyboard.
The format looks like "&lt;Control&gt;a" or "&lt;Shift&gt;&lt;Alt&gt;F1.
The format looks like "&lt;Control&gt;a" or "&lt;Shift&gt;&lt;Alt&gt;F1".
The parser is
fairly liberal and allows lower or upper case, and also
abbreviations such as "&lt;Ctl&gt;" and "&lt;Ctrl&gt;". If
@@ -478,11 +497,11 @@ you set
<type>string</type>
<default>&lt;Alt&gt;F8</default>
<locale name="C">
<short>Resize a window</short>
<short>Resize window</short>
<long>
The keybinding used to enter "resize mode" and begin resizing a
window using the keyboard.
The format looks like "&lt;Control&gt;a" or "&lt;Shift&gt;&lt;Alt&gt;F1.
The format looks like "&lt;Control&gt;a" or "&lt;Shift&gt;&lt;Alt&gt;F1".
The parser is
fairly liberal and allows lower or upper case, and also
abbreviations such as "&lt;Ctl&gt;" and "&lt;Ctrl&gt;". If
@@ -504,7 +523,7 @@ you set
<long>
The keybinding used to toggle whether the window is on all
workspaces or just one.
The format looks like "&lt;Control&gt;a" or "&lt;Shift&gt;&lt;Alt&gt;F1.
The format looks like "&lt;Control&gt;a" or "&lt;Shift&gt;&lt;Alt&gt;F1".
The parser is
fairly liberal and allows lower or upper case, and also
abbreviations such as "&lt;Ctl&gt;" and "&lt;Ctrl&gt;". If
@@ -527,7 +546,7 @@ you set
The keybinding used to move a window to workspace 1.
The format looks like "&lt;Control&gt;a" or
"&lt;Shift&gt;&lt;Alt&gt;F1.
"&lt;Shift&gt;&lt;Alt&gt;F1".
The parser is fairly liberal and allows lower or upper case,
and also abbreviations such as "&lt;Ctl&gt;" and
@@ -550,7 +569,7 @@ you set
The keybinding used to move a window to workspace 2.
The format looks like "&lt;Control&gt;a" or
"&lt;Shift&gt;&lt;Alt&gt;F1.
"&lt;Shift&gt;&lt;Alt&gt;F1".
The parser is fairly liberal and allows lower or upper case,
and also abbreviations such as "&lt;Ctl&gt;" and
@@ -573,7 +592,7 @@ you set
The keybinding used to move a window to workspace 3.
The format looks like "&lt;Control&gt;a" or
"&lt;Shift&gt;&lt;Alt&gt;F1.
"&lt;Shift&gt;&lt;Alt&gt;F1".
The parser is fairly liberal and allows lower or upper case,
and also abbreviations such as "&lt;Ctl&gt;" and
@@ -596,7 +615,7 @@ you set
The keybinding used to move a window to workspace 4.
The format looks like "&lt;Control&gt;a" or
"&lt;Shift&gt;&lt;Alt&gt;F1.
"&lt;Shift&gt;&lt;Alt&gt;F1".
The parser is fairly liberal and allows lower or upper case,
and also abbreviations such as "&lt;Ctl&gt;" and
@@ -619,7 +638,7 @@ you set
The keybinding used to move a window to workspace 5.
The format looks like "&lt;Control&gt;a" or
"&lt;Shift&gt;&lt;Alt&gt;F1.
"&lt;Shift&gt;&lt;Alt&gt;F1".
The parser is fairly liberal and allows lower or upper case,
and also abbreviations such as "&lt;Ctl&gt;" and
@@ -642,7 +661,7 @@ you set
The keybinding used to move a window to workspace 6.
The format looks like "&lt;Control&gt;a" or
"&lt;Shift&gt;&lt;Alt&gt;F1.
"&lt;Shift&gt;&lt;Alt&gt;F1".
The parser is fairly liberal and allows lower or upper case,
and also abbreviations such as "&lt;Ctl&gt;" and
@@ -666,7 +685,7 @@ you set
The keybinding used to move a window to workspace 7.
The format looks like "&lt;Control&gt;a" or
"&lt;Shift&gt;&lt;Alt&gt;F1.
"&lt;Shift&gt;&lt;Alt&gt;F1".
The parser is fairly liberal and allows lower or upper case,
and also abbreviations such as "&lt;Ctl&gt;" and
@@ -689,7 +708,7 @@ you set
The keybinding used to move a window to workspace 8.
The format looks like "&lt;Control&gt;a" or
"&lt;Shift&gt;&lt;Alt&gt;F1.
"&lt;Shift&gt;&lt;Alt&gt;F1".
The parser is fairly liberal and allows lower or upper case,
and also abbreviations such as "&lt;Ctl&gt;" and
@@ -712,7 +731,7 @@ you set
The keybinding used to move a window to workspace 9.
The format looks like "&lt;Control&gt;a" or
"&lt;Shift&gt;&lt;Alt&gt;F1.
"&lt;Shift&gt;&lt;Alt&gt;F1".
The parser is fairly liberal and allows lower or upper case,
and also abbreviations such as "&lt;Ctl&gt;" and
@@ -735,7 +754,7 @@ you set
The keybinding used to move a window to workspace 10.
The format looks like "&lt;Control&gt;a" or
"&lt;Shift&gt;&lt;Alt&gt;F1.
"&lt;Shift&gt;&lt;Alt&gt;F1".
The parser is fairly liberal and allows lower or upper case,
and also abbreviations such as "&lt;Ctl&gt;" and
@@ -758,7 +777,7 @@ you set
The keybinding used to move a window to workspace 11.
The format looks like "&lt;Control&gt;a" or
"&lt;Shift&gt;&lt;Alt&gt;F1.
"&lt;Shift&gt;&lt;Alt&gt;F1".
The parser is fairly liberal and allows lower or upper case,
and also abbreviations such as "&lt;Ctl&gt;" and
@@ -781,7 +800,7 @@ you set
The keybinding used to move a window to workspace 12.
The format looks like "&lt;Control&gt;a" or
"&lt;Shift&gt;&lt;Alt&gt;F1.
"&lt;Shift&gt;&lt;Alt&gt;F1".
The parser is fairly liberal and allows lower or upper case,
and also abbreviations such as "&lt;Ctl&gt;" and
@@ -798,14 +817,14 @@ you set
<applyto>/apps/metacity/window_keybindings/move_to_workspace_left</applyto>
<owner>metacity</owner>
<type>string</type>
<default>&lt;Shift&gt;&lt;Alt&gt;Left</default>
<default>&lt;Control&gt;&lt;Shift&gt;&lt;Alt&gt;Left</default>
<locale name="C">
<short>Move window one workspace to the left</short>
<long>
The keybinding used to move a window one workspace to the left.
The format looks like "&lt;Control&gt;a" or
"&lt;Shift&gt;&lt;Alt&gt;F1.
"&lt;Shift&gt;&lt;Alt&gt;F1".
The parser is fairly liberal and allows lower or upper case,
and also abbreviations such as "&lt;Ctl&gt;" and
@@ -823,14 +842,14 @@ you set
<applyto>/apps/metacity/window_keybindings/move_to_workspace_right</applyto>
<owner>metacity</owner>
<type>string</type>
<default>&lt;Shift&gt;&lt;Alt&gt;Right</default>
<default>&lt;Control&gt;&lt;Shift&gt;&lt;Alt&gt;Right</default>
<locale name="C">
<short>Move window one workspace to the right</short>
<long>
The keybinding used to move a window one workspace to the right.
The format looks like "&lt;Control&gt;a" or
"&lt;Shift&gt;&lt;Alt&gt;F1.
"&lt;Shift&gt;&lt;Alt&gt;F1".
The parser is fairly liberal and allows lower or upper case,
and also abbreviations such as "&lt;Ctl&gt;" and
@@ -847,14 +866,14 @@ you set
<applyto>/apps/metacity/window_keybindings/move_to_workspace_up</applyto>
<owner>metacity</owner>
<type>string</type>
<default>&lt;Shift&gt;&lt;Alt&gt;Up</default>
<default>&lt;Control&gt;&lt;Shift&gt;&lt;Alt&gt;Up</default>
<locale name="C">
<short>Move window one workspace up</short>
<long>
The keybinding used to move a window one workspace up.
The format looks like "&lt;Control&gt;a" or
"&lt;Shift&gt;&lt;Alt&gt;F1.
"&lt;Shift&gt;&lt;Alt&gt;F1".
The parser is fairly liberal and allows lower or upper case,
and also abbreviations such as "&lt;Ctl&gt;" and
@@ -871,14 +890,14 @@ you set
<applyto>/apps/metacity/window_keybindings/move_to_workspace_down</applyto>
<owner>metacity</owner>
<type>string</type>
<default>&lt;Shift&gt;&lt;Alt&gt;Down</default>
<default>&lt;Control&gt;&lt;Shift&gt;&lt;Alt&gt;Down</default>
<locale name="C">
<short>Move window one workspace down</short>
<long>
The keybinding used to move a window one workspace down.
The format looks like "&lt;Control&gt;a" or
"&lt;Shift&gt;&lt;Alt&gt;F1.
"&lt;Shift&gt;&lt;Alt&gt;F1".
The parser is fairly liberal and allows lower or upper case,
and also abbreviations such as "&lt;Ctl&gt;" and
@@ -905,7 +924,7 @@ you set
it lowers the window below other windows.
The format looks like "&lt;Control&gt;a" or
"&lt;Shift&gt;&lt;Alt&gt;F1.
"&lt;Shift&gt;&lt;Alt&gt;F1".
The parser is fairly liberal and allows lower or upper case,
and also abbreviations such as "&lt;Ctl&gt;" and
@@ -928,7 +947,7 @@ you set
This keybinding raises the window above other windows.
The format looks like "&lt;Control&gt;a" or
"&lt;Shift&gt;&lt;Alt&gt;F1.
"&lt;Shift&gt;&lt;Alt&gt;F1".
The parser is fairly liberal and allows lower or upper case,
and also abbreviations such as "&lt;Ctl&gt;" and
@@ -951,7 +970,7 @@ you set
This keybinding lowers a window below other windows.
The format looks like "&lt;Control&gt;a" or
"&lt;Shift&gt;&lt;Alt&gt;F1.
"&lt;Shift&gt;&lt;Alt&gt;F1".
The parser is fairly liberal and allows lower or upper case,
and also abbreviations such as "&lt;Ctl&gt;" and
@@ -974,7 +993,7 @@ you set
This keybinding resizes a window to fill available vertical space.
The format looks like "&lt;Control&gt;a" or
"&lt;Shift&gt;&lt;Alt&gt;F1.
"&lt;Shift&gt;&lt;Alt&gt;F1".
The parser is fairly liberal and allows lower or upper case,
and also abbreviations such as "&lt;Ctl&gt;" and
@@ -997,7 +1016,7 @@ you set
This keybinding resizes a window to fill available horizontal space.
The format looks like "&lt;Control&gt;a" or
"&lt;Shift&gt;&lt;Alt&gt;F1.
"&lt;Shift&gt;&lt;Alt&gt;F1".
The parser is fairly liberal and allows lower or upper case,
and also abbreviations such as "&lt;Ctl&gt;" and
@@ -1026,7 +1045,7 @@ you set
while using this binding reverses the direction of movement.
The format looks like "&lt;Control&gt;a" or
"&lt;Shift&gt;&lt;Alt&gt;F1.
"&lt;Shift&gt;&lt;Alt&gt;F1".
The parser is fairly liberal and allows lower or upper case,
and also abbreviations such as "&lt;Ctl&gt;" and
@@ -1051,7 +1070,7 @@ you set
binding makes the direction go forward again.
The format looks like "&lt;Control&gt;a" or
"&lt;Shift&gt;&lt;Alt&gt;F1.
"&lt;Shift&gt;&lt;Alt&gt;F1".
The parser is fairly liberal and allows lower or upper case,
and also abbreviations such as "&lt;Ctl&gt;" and
@@ -1075,7 +1094,7 @@ you set
the desktop, using a popup window.
The format looks like "&lt;Control&gt;a" or
"&lt;Shift&gt;&lt;Alt&gt;F1.
"&lt;Shift&gt;&lt;Alt&gt;F1".
The parser is fairly liberal and allows lower or upper case,
and also abbreviations such as "&lt;Ctl&gt;" and
@@ -1099,7 +1118,7 @@ you set
and the desktop, using a popup window.
The format looks like "&lt;Control&gt;a" or
"&lt;Shift&gt;&lt;Alt&gt;F1.
"&lt;Shift&gt;&lt;Alt&gt;F1".
The parser is fairly liberal and allows lower or upper case,
and also abbreviations such as "&lt;Ctl&gt;" and
@@ -1125,7 +1144,7 @@ you set
while using this binding reverses the direction of movement.
The format looks like "&lt;Control&gt;a" or
"&lt;Shift&gt;&lt;Alt&gt;F1.
"&lt;Shift&gt;&lt;Alt&gt;F1".
The parser is fairly liberal and allows lower or upper case,
and also abbreviations such as "&lt;Ctl&gt;" and
@@ -1150,7 +1169,7 @@ you set
binding makes the direction go forward again.
The format looks like "&lt;Control&gt;a" or
"&lt;Shift&gt;&lt;Alt&gt;F1.
"&lt;Shift&gt;&lt;Alt&gt;F1".
The parser is fairly liberal and allows lower or upper case,
and also abbreviations such as "&lt;Ctl&gt;" and
@@ -1174,7 +1193,7 @@ you set
the desktop, without a popup window.
The format looks like "&lt;Control&gt;a" or
"&lt;Shift&gt;&lt;Alt&gt;F1.
"&lt;Shift&gt;&lt;Alt&gt;F1".
The parser is fairly liberal and allows lower or upper case,
and also abbreviations such as "&lt;Ctl&gt;" and
@@ -1198,7 +1217,7 @@ you set
the desktop, without a popup window.
The format looks like "&lt;Control&gt;a" or
"&lt;Shift&gt;&lt;Alt&gt;F1.
"&lt;Shift&gt;&lt;Alt&gt;F1".
The parser is fairly liberal and allows lower or upper case,
and also abbreviations such as "&lt;Ctl&gt;" and
@@ -1222,7 +1241,7 @@ you set
focus to the desktop background.
The format looks like "&lt;Control&gt;a" or
"&lt;Shift&gt;&lt;Alt&gt;F1.
"&lt;Shift&gt;&lt;Alt&gt;F1".
The parser is fairly liberal and allows lower or upper case,
and also abbreviations such as "&lt;Ctl&gt;" and
@@ -1245,7 +1264,7 @@ you set
The keybinding that switches to workspace 1.
The format looks like "&lt;Control&gt;a" or
"&lt;Shift&gt;&lt;Alt&gt;F1.
"&lt;Shift&gt;&lt;Alt&gt;F1".
The parser is fairly liberal and allows lower or upper case,
and also abbreviations such as "&lt;Ctl&gt;" and
@@ -1268,7 +1287,7 @@ you set
The keybinding that switches to workspace 2.
The format looks like "&lt;Control&gt;a" or
"&lt;Shift&gt;&lt;Alt&gt;F1.
"&lt;Shift&gt;&lt;Alt&gt;F1".
The parser is fairly liberal and allows lower or upper case,
and also abbreviations such as "&lt;Ctl&gt;" and
@@ -1291,7 +1310,7 @@ you set
The keybinding that switches to workspace 3.
The format looks like "&lt;Control&gt;a" or
"&lt;Shift&gt;&lt;Alt&gt;F1.
"&lt;Shift&gt;&lt;Alt&gt;F1".
The parser is fairly liberal and allows lower or upper case,
and also abbreviations such as "&lt;Ctl&gt;" and
@@ -1315,7 +1334,7 @@ you set
The keybinding that switches to workspace 4.
The format looks like "&lt;Control&gt;a" or
"&lt;Shift&gt;&lt;Alt&gt;F1.
"&lt;Shift&gt;&lt;Alt&gt;F1".
The parser is fairly liberal and allows lower or upper case,
and also abbreviations such as "&lt;Ctl&gt;" and
@@ -1339,7 +1358,7 @@ you set
The keybinding that switches to workspace 5.
The format looks like "&lt;Control&gt;a" or
"&lt;Shift&gt;&lt;Alt&gt;F1.
"&lt;Shift&gt;&lt;Alt&gt;F1".
The parser is fairly liberal and allows lower or upper case,
and also abbreviations such as "&lt;Ctl&gt;" and
@@ -1364,7 +1383,7 @@ you set
The keybinding that switches to workspace 6.
The format looks like "&lt;Control&gt;a" or
"&lt;Shift&gt;&lt;Alt&gt;F1.
"&lt;Shift&gt;&lt;Alt&gt;F1".
The parser is fairly liberal and allows lower or upper case,
and also abbreviations such as "&lt;Ctl&gt;" and
@@ -1389,7 +1408,7 @@ you set
The keybinding that switches to workspace 7.
The format looks like "&lt;Control&gt;a" or
"&lt;Shift&gt;&lt;Alt&gt;F1.
"&lt;Shift&gt;&lt;Alt&gt;F1".
The parser is fairly liberal and allows lower or upper case,
and also abbreviations such as "&lt;Ctl&gt;" and
@@ -1413,7 +1432,7 @@ you set
The keybinding that switches to workspace 8.
The format looks like "&lt;Control&gt;a" or
"&lt;Shift&gt;&lt;Alt&gt;F1.
"&lt;Shift&gt;&lt;Alt&gt;F1".
The parser is fairly liberal and allows lower or upper case,
and also abbreviations such as "&lt;Ctl&gt;" and
@@ -1438,7 +1457,7 @@ you set
The keybinding that switches to workspace 9.
The format looks like "&lt;Control&gt;a" or
"&lt;Shift&gt;&lt;Alt&gt;F1.
"&lt;Shift&gt;&lt;Alt&gt;F1".
The parser is fairly liberal and allows lower or upper case,
and also abbreviations such as "&lt;Ctl&gt;" and
@@ -1463,7 +1482,7 @@ you set
The keybinding that switches to workspace 10.
The format looks like "&lt;Control&gt;a" or
"&lt;Shift&gt;&lt;Alt&gt;F1.
"&lt;Shift&gt;&lt;Alt&gt;F1".
The parser is fairly liberal and allows lower or upper case,
and also abbreviations such as "&lt;Ctl&gt;" and
@@ -1487,7 +1506,7 @@ you set
The keybinding that switches to workspace 11.
The format looks like "&lt;Control&gt;a" or
"&lt;Shift&gt;&lt;Alt&gt;F1.
"&lt;Shift&gt;&lt;Alt&gt;F1".
The parser is fairly liberal and allows lower or upper case,
and also abbreviations such as "&lt;Ctl&gt;" and
@@ -1510,7 +1529,7 @@ you set
The keybinding that switches to workspace 12.
The format looks like "&lt;Control&gt;a" or
"&lt;Shift&gt;&lt;Alt&gt;F1.
"&lt;Shift&gt;&lt;Alt&gt;F1".
The parser is fairly liberal and allows lower or upper case,
and also abbreviations such as "&lt;Ctl&gt;" and
@@ -1535,7 +1554,7 @@ you set
of the current workspace.
The format looks like "&lt;Control&gt;a" or
"&lt;Shift&gt;&lt;Alt&gt;F1.
"&lt;Shift&gt;&lt;Alt&gt;F1".
The parser is fairly liberal and allows lower or upper case,
and also abbreviations such as "&lt;Ctl&gt;" and
@@ -1561,7 +1580,7 @@ you set
of the current workspace.
The format looks like "&lt;Control&gt;a" or
"&lt;Shift&gt;&lt;Alt&gt;F1.
"&lt;Shift&gt;&lt;Alt&gt;F1".
The parser is fairly liberal and allows lower or upper case,
and also abbreviations such as "&lt;Ctl&gt;" and
@@ -1586,7 +1605,7 @@ you set
the current workspace.
The format looks like "&lt;Control&gt;a" or
"&lt;Shift&gt;&lt;Alt&gt;F1.
"&lt;Shift&gt;&lt;Alt&gt;F1".
The parser is fairly liberal and allows lower or upper case,
and also abbreviations such as "&lt;Ctl&gt;" and
@@ -1611,7 +1630,7 @@ you set
the current workspace.
The format looks like "&lt;Control&gt;a" or
"&lt;Shift&gt;&lt;Alt&gt;F1.
"&lt;Shift&gt;&lt;Alt&gt;F1".
The parser is fairly liberal and allows lower or upper case,
and also abbreviations such as "&lt;Ctl&gt;" and
@@ -1634,7 +1653,7 @@ you set
The keybinding which shows the panel's main menu.
The format looks like "&lt;Control&gt;a" or
"&lt;Shift&gt;&lt;Alt&gt;F1.
"&lt;Shift&gt;&lt;Alt&gt;F1".
The parser is fairly liberal and allows lower or upper case,
and also abbreviations such as "&lt;Ctl&gt;" and
@@ -1652,13 +1671,13 @@ you set
<type>string</type>
<default>&lt;Alt&gt;F2</default>
<locale name="C">
<short>Show the panel run dialog</short>
<short>Show the panel run application dialog</short>
<long>
The keybinding which display's the panel's "Run Program" dialog
The keybinding which display's the panel's "Run Application" dialog
box.
The format looks like "&lt;Control&gt;a" or
"&lt;Shift&gt;&lt;Alt&gt;F1.
"&lt;Shift&gt;&lt;Alt&gt;F1".
The parser is fairly liberal and allows lower or upper case,
and also abbreviations such as "&lt;Ctl&gt;" and
@@ -1681,7 +1700,7 @@ you set
The keybinding which invokes the panel's screenshot utility.
The format looks like "&lt;Control&gt;a" or
"&lt;Shift&gt;&lt;Alt&gt;F1.
"&lt;Shift&gt;&lt;Alt&gt;F1".
The parser is fairly liberal and allows lower or upper case,
and also abbreviations such as "&lt;Ctl&gt;" and
@@ -1705,7 +1724,7 @@ you set
to take a screenshot of a window.
The format looks like "&lt;Control&gt;a" or
"&lt;Shift&gt;&lt;Alt&gt;F1.
"&lt;Shift&gt;&lt;Alt&gt;F1".
The parser is fairly liberal and allows lower or upper case,
and also abbreviations such as "&lt;Ctl&gt;" and
@@ -1740,7 +1759,7 @@ you set
command in /apps/metacity/keybinding_commands
The format looks like "&lt;Control&gt;a" or
"&lt;Shift&gt;&lt;Alt&gt;F1.
"&lt;Shift&gt;&lt;Alt&gt;F1".
The parser is fairly liberal and allows lower or upper case,
and also abbreviations such as "&lt;Ctl&gt;" and

View File

@@ -668,6 +668,7 @@ meta_window_place (MetaWindow *window,
if (parent)
{
int w;
MetaRectangle area;
meta_window_get_position (parent, &x, &y);
w = parent->rect.width;
@@ -677,17 +678,25 @@ meta_window_place (MetaWindow *window,
/* center of child over center of parent */
x -= window->rect.width / 2;
/* put child down 1/5 or so from the top of parent, unless
* it makes us have more of parent showing above child than
* below
/* "visually" center window over parent, leaving twice as
* much space below as on top.
*/
if (window->rect.height <= (parent->rect.height - (parent->rect.height / 5) * 2))
y += parent->rect.height / 5;
y += (parent->rect.height - window->rect.height)/3;
/* put top of child's frame, not top of child's client */
if (fgeom)
y += fgeom->top_height;
/* clip to xinerama of parent*/
meta_window_get_work_area_current_xinerama (parent, &area);
if (x + window->rect.width > area.x + area.width)
x = area.x + area.width - window->rect.width;
if (y + window->rect.height > area.y + area.height)
y = area.y + area.height - window->rect.height;
if (x < area.x) x = area.x;
if (y < area.y) y = area.y;
meta_topic (META_DEBUG_PLACEMENT, "Centered window %s over transient parent\n",
window->desc);
@@ -826,9 +835,7 @@ meta_window_place (MetaWindow *window,
if (outer.width >= workarea.width &&
outer.height >= workarea.height)
{
outer.x = x;
outer.y = y;
meta_window_maximize_internal (window, &outer);
window->maximize_after_placement = TRUE;
}
}

View File

@@ -51,6 +51,7 @@
#define KEY_APPLICATION_BASED "/apps/metacity/general/application_based"
#define KEY_DISABLE_WORKAROUNDS "/apps/metacity/general/disable_workarounds"
#define KEY_BUTTON_LAYOUT "/apps/metacity/general/button_layout"
#define KEY_REDUCED_RESOURCES "/apps/metacity/general/reduced_resources"
#define KEY_COMMAND_PREFIX "/apps/metacity/keybinding_commands/command_"
#define KEY_SCREEN_BINDINGS_PREFIX "/apps/metacity/global_keybindings"
@@ -83,6 +84,8 @@ static gboolean auto_raise = FALSE;
static gboolean auto_raise_delay = 500;
static gboolean provide_visual_bell = TRUE;
static gboolean bell_is_audible = TRUE;
static gboolean reduced_resources = FALSE;
static MetaVisualBellType visual_bell_type = META_VISUAL_BELL_INVALID;
static MetaButtonLayout button_layout = {
{
@@ -129,6 +132,7 @@ static gboolean update_command (const char *name,
const char *value);
static gboolean update_workspace_name (const char *name,
const char *value);
static gboolean update_reduced_resources (gboolean value);
static void change_notify (GConfClient *client,
guint cnxn_id,
@@ -372,7 +376,6 @@ meta_prefs_init (void)
cleanup_error (&err);
update_button_layout (str_val);
g_free (str_val);
#endif /* HAVE_GCONF */
bool_val = gconf_client_get_bool (default_client, KEY_VISUAL_BELL,
&err);
@@ -388,6 +391,12 @@ meta_prefs_init (void)
update_visual_bell_type (str_val);
g_free (str_val);
bool_val = gconf_client_get_bool (default_client, KEY_REDUCED_RESOURCES,
&err);
cleanup_error (&err);
update_reduced_resources (bool_val);
#endif /* HAVE_GCONF */
/* Load keybindings prefs */
init_bindings ();
@@ -706,6 +715,13 @@ change_notify (GConfClient *client,
{
gboolean b;
if (value && value->type != GCONF_VALUE_BOOL)
{
meta_warning (_("GConf key \"%s\" is set to an invalid type\n"),
key);
goto out;
}
b = value ? gconf_value_get_bool (value) : provide_visual_bell;
if (update_visual_bell (b, bell_is_audible))
queue_changed (META_PREF_VISUAL_BELL);
@@ -714,6 +730,13 @@ change_notify (GConfClient *client,
{
gboolean b;
if (value && value->type != GCONF_VALUE_BOOL)
{
meta_warning (_("GConf key \"%s\" is set to an invalid type\n"),
key);
goto out;
}
b = value ? gconf_value_get_bool (value) : bell_is_audible;
if (update_visual_bell (provide_visual_bell, b))
queue_changed (META_PREF_AUDIBLE_BELL);
@@ -733,6 +756,22 @@ change_notify (GConfClient *client,
if (update_visual_bell_type (str))
queue_changed (META_PREF_VISUAL_BELL_TYPE);
}
else if (strcmp (key, KEY_REDUCED_RESOURCES) == 0)
{
gboolean b;
if (value && value->type != GCONF_VALUE_BOOL)
{
meta_warning (_("GConf key \"%s\" is set to an invalid type\n"),
KEY_REDUCED_RESOURCES);
goto out;
}
b = value ? gconf_value_get_bool (value) : reduced_resources;
if (update_reduced_resources (b))
queue_changed (META_PREF_REDUCED_RESOURCES);
}
else
{
meta_topic (META_DEBUG_PREFS, "Key %s doesn't mean anything to Metacity\n",
@@ -1239,6 +1278,16 @@ update_auto_raise_delay (int value)
return old != auto_raise_delay;
}
static gboolean
update_reduced_resources (gboolean value)
{
gboolean old = reduced_resources;
reduced_resources = value;
return old != reduced_resources;
}
#endif /* HAVE_GCONF */
#ifdef WITH_VERBOSE_MODE
@@ -1305,6 +1354,10 @@ meta_preference_to_string (MetaPreference pref)
case META_PREF_VISUAL_BELL_TYPE:
return "VISUAL_BELL_TYPE";
break;
case META_PREF_REDUCED_RESOURCES:
return "REDUCED_RESOURCES";
break;
}
return "(unknown)";
@@ -1974,6 +2027,12 @@ meta_prefs_get_auto_raise_delay ()
return auto_raise_delay;
}
gboolean
meta_prefs_get_reduced_resources ()
{
return reduced_resources;
}
MetaKeyBindingAction
meta_prefs_get_keybinding_action (const char *name)
{

View File

@@ -45,7 +45,8 @@ typedef enum
META_PREF_WORKSPACE_NAMES,
META_PREF_VISUAL_BELL,
META_PREF_AUDIBLE_BELL,
META_PREF_VISUAL_BELL_TYPE
META_PREF_VISUAL_BELL_TYPE,
META_PREF_REDUCED_RESOURCES
} MetaPreference;
typedef void (* MetaPrefsChangedFunc) (MetaPreference pref,
@@ -69,6 +70,7 @@ gboolean meta_prefs_get_application_based (void);
gboolean meta_prefs_get_disable_workarounds (void);
gboolean meta_prefs_get_auto_raise (void);
int meta_prefs_get_auto_raise_delay (void);
gboolean meta_prefs_get_reduced_resources (void);
const char* meta_prefs_get_command (int i);
@@ -222,7 +224,7 @@ typedef enum _MetaKeyBindingAction
META_KEYBINDING_ACTION_COMMAND_9,
META_KEYBINDING_ACTION_COMMAND_10,
META_KEYBINDING_ACTION_COMMAND_11,
META_KEYBINDING_ACTION_COMMAND_12,
META_KEYBINDING_ACTION_COMMAND_12
} MetaKeyBindingAction;
typedef struct

View File

@@ -1,11 +1,11 @@
#! /bin/bash
if test -z "$XNEST_DISPLAY"; then
XNEST_DISPLAY=:1
XNEST_DISPLAY=:8
fi
if test -z "$CLIENT_DISPLAY"; then
CLIENT_DISPLAY=:1
CLIENT_DISPLAY=:8
fi
if test -z "$METACITY_DISPLAY"; then

View File

@@ -34,6 +34,7 @@
#include "keybindings.h"
#include "stack.h"
#include "xprops.h"
#include "compositor.h"
#ifdef HAVE_SOLARIS_XINERAMA
#include <X11/extensions/xinerama.h>
@@ -56,6 +57,9 @@ static void set_workspace_names (MetaScreen *screen);
static void prefs_changed_callback (MetaPreference pref,
gpointer data);
static void set_desktop_geometry_hint (MetaScreen *screen);
static void set_desktop_viewport_hint (MetaScreen *screen);
#ifdef HAVE_STARTUP_NOTIFICATION
static void meta_screen_sn_event (SnMonitorEvent *event,
void *user_data);
@@ -81,7 +85,7 @@ set_wm_check_hint (MetaScreen *screen)
static int
set_supported_hint (MetaScreen *screen)
{
#define N_SUPPORTED 49
#define N_SUPPORTED 58
Atom atoms[N_SUPPORTED];
atoms[0] = screen->display->atom_net_wm_name;
@@ -133,6 +137,17 @@ set_supported_hint (MetaScreen *screen)
atoms[46] = screen->display->atom_net_wm_state_above;
atoms[47] = screen->display->atom_net_wm_state_below;
atoms[48] = screen->display->atom_net_startup_id;
atoms[49] = screen->display->atom_net_wm_strut_partial;
atoms[50] = screen->display->atom_net_wm_action_fullscreen;
atoms[51] = screen->display->atom_net_wm_action_minimize;
atoms[52] = screen->display->atom_net_frame_extents;
atoms[53] = screen->display->atom_net_request_frame_extents;
atoms[54] = screen->display->atom_net_wm_user_time;
atoms[55] = screen->display->atom_net_wm_state_demands_attention;
atoms[56] = screen->display->atom_net_desktop_geometry;
atoms[57] = screen->display->atom_net_desktop_viewport;
//atoms[58] = screen->display->atom_net_restack_window;
//atoms[59] = screen->display->atom_net_moveresize_window;
XChangeProperty (screen->display->xdisplay, screen->xroot,
screen->display->atom_net_supported,
@@ -356,7 +371,8 @@ reload_xinerama_infos (MetaScreen *screen)
MetaScreen*
meta_screen_new (MetaDisplay *display,
int number)
int number,
Time timestamp)
{
MetaScreen *screen;
Window xroot;
@@ -422,24 +438,7 @@ meta_screen_new (MetaDisplay *display,
new_wm_sn_owner = meta_create_offscreen_window (xdisplay, xroot);
{
/* Generate a timestamp */
XSetWindowAttributes attrs;
XEvent event;
attrs.event_mask = PropertyChangeMask;
XChangeWindowAttributes (xdisplay, new_wm_sn_owner, CWEventMask, &attrs);
XChangeProperty (xdisplay,
new_wm_sn_owner, XA_WM_CLASS, XA_STRING, 8,
PropModeAppend, NULL, 0);
XWindowEvent (xdisplay, new_wm_sn_owner, PropertyChangeMask, &event);
attrs.event_mask = NoEventMask;
XChangeWindowAttributes (display->xdisplay,
new_wm_sn_owner, CWEventMask, &attrs);
manager_timestamp = event.xproperty.time;
}
manager_timestamp = timestamp;
XSetSelectionOwner (xdisplay, wm_sn_atom, new_wm_sn_owner,
manager_timestamp);
@@ -498,6 +497,9 @@ meta_screen_new (MetaDisplay *display,
LeaveWindowMask | EnterWindowMask |
KeyPressMask | KeyReleaseMask |
FocusChangeMask | StructureNotifyMask |
#ifdef HAVE_COMPOSITE_EXTENSIONS
ExposureMask |
#endif
attr.your_event_mask);
if (meta_error_trap_pop_with_return (display, FALSE) != Success)
{
@@ -538,19 +540,34 @@ meta_screen_new (MetaDisplay *display,
screen->starting_corner = META_SCREEN_TOPLEFT;
screen->showing_desktop = FALSE;
screen->compositor_windows = NULL;
screen->damage_region = None;
screen->root_picture = None;
screen->trans_pixmap = None;
screen->trans_picture = None;
{
XGCValues gc_values;
gc_values.subwindow_mode = IncludeInferiors;
gc_values.function = GXinvert;
gc_values.line_width = META_WIREFRAME_XOR_LINE_WIDTH;
screen->root_xor_gc = XCreateGC (screen->display->xdisplay,
screen->xroot,
GCSubwindowMode | GCFunction | GCLineWidth,
&gc_values);
}
screen->xinerama_infos = NULL;
screen->n_xinerama_infos = 0;
screen->last_xinerama_index = 0;
screen->last_xinerama_index = 0;
reload_xinerama_infos (screen);
meta_screen_set_cursor (screen, META_CURSOR_DEFAULT);
if (display->leader_window == None)
display->leader_window = meta_create_offscreen_window (display->xdisplay,
screen->xroot);
if (display->no_focus_window == None)
{
display->no_focus_window = meta_create_offscreen_window (display->xdisplay,
@@ -567,6 +584,10 @@ meta_screen_new (MetaDisplay *display,
set_wm_check_hint (screen);
set_desktop_viewport_hint (screen);
set_desktop_geometry_hint (screen);
meta_screen_update_workspace_layout (screen);
/* Get current workspace */
@@ -622,9 +643,12 @@ meta_screen_new (MetaDisplay *display,
if (space != NULL)
meta_workspace_activate (space);
}
meta_compositor_manage_screen (screen->display->compositor,
screen);
meta_verbose ("Added screen %d ('%s') root 0x%lx\n",
screen->number, screen->screen_name, screen->xroot);
screen->number, screen->screen_name, screen->xroot);
return screen;
}
@@ -640,6 +664,9 @@ meta_screen_free (MetaScreen *screen)
meta_display_grab (display);
meta_compositor_unmanage_screen (screen->display->compositor,
screen);
meta_display_unmanage_windows_for_screen (display, screen);
meta_prefs_remove_listener (prefs_changed_callback, screen);
@@ -679,6 +706,9 @@ meta_screen_free (MetaScreen *screen)
if (screen->work_area_idle != 0)
g_source_remove (screen->work_area_idle);
XFreeGC (screen->display->xdisplay,
screen->root_xor_gc);
g_free (screen->screen_name);
g_free (screen);
@@ -714,7 +744,26 @@ meta_screen_manage_all_windows (MetaScreen *screen)
i = 0;
while (i < n_children)
{
meta_window_new (screen->display, children[i], TRUE);
XWindowAttributes attrs;
meta_error_trap_push_with_return (screen->display);
XGetWindowAttributes (screen->display->xdisplay,
children[i], &attrs);
if (meta_error_trap_pop_with_return (screen->display, TRUE) != Success)
{
meta_verbose ("Failed to get attributes for window 0x%lx\n",
children[i]);
}
else
{
meta_window_new_with_attrs (screen->display, children[i], TRUE,
&attrs);
meta_compositor_add_window (screen->display->compositor,
children[i], &attrs);
}
++i;
}
@@ -929,6 +978,51 @@ set_number_of_spaces_hint (MetaScreen *screen,
meta_error_trap_pop (screen->display, FALSE);
}
static void
set_desktop_geometry_hint (MetaScreen *screen)
{
unsigned long data[2];
if (screen->closing > 0)
return;
data[0] = screen->width;
data[1] = screen->height;
meta_verbose ("Setting _NET_DESKTOP_GEOMETRY to %ld, %ld\n", data[0], data[1]);
meta_error_trap_push (screen->display);
XChangeProperty (screen->display->xdisplay, screen->xroot,
screen->display->atom_net_desktop_geometry,
XA_CARDINAL,
32, PropModeReplace, (guchar*) data, 2);
meta_error_trap_pop (screen->display, FALSE);
}
static void
set_desktop_viewport_hint (MetaScreen *screen)
{
unsigned long data[2];
if (screen->closing > 0)
return;
/*
* Metacity does not implement viewports, so this is a fixed 0,0
*/
data[0] = 0;
data[1] = 0;
meta_verbose ("Setting _NET_DESKTOP_VIEWPORT to 0, 0\n");
meta_error_trap_push (screen->display);
XChangeProperty (screen->display->xdisplay, screen->xroot,
screen->display->atom_net_desktop_viewport,
XA_CARDINAL,
32, PropModeReplace, (guchar*) data, 2);
meta_error_trap_pop (screen->display, FALSE);
}
static void
update_num_workspaces (MetaScreen *screen)
{
@@ -1029,6 +1123,7 @@ meta_screen_set_cursor (MetaScreen *screen,
xcursor = meta_display_create_x_cursor (screen->display, cursor);
XDefineCursor (screen->display->xdisplay, screen->xroot, xcursor);
XFlush (screen->display->xdisplay);
XFreeCursor (screen->display->xdisplay, xcursor);
}
@@ -1188,9 +1283,9 @@ meta_screen_ensure_workspace_popup (MetaScreen *screen)
/* don't show tab popup, since proper space isn't selected yet */
}
void
meta_screen_focus_mouse_window (MetaScreen *screen,
MetaWindow *not_this_one)
MetaWindow*
meta_screen_get_mouse_window (MetaScreen *screen,
MetaWindow *not_this_one)
{
MetaWindow *window;
Window root_return, child_return;
@@ -1220,22 +1315,7 @@ meta_screen_focus_mouse_window (MetaScreen *screen,
root_x_return,
root_y_return);
/* FIXME I'm a loser on the CurrentTime front */
if (window)
{
meta_topic (META_DEBUG_FOCUS,
"Focusing mouse window %s\n", window->desc);
meta_window_focus (window, meta_display_get_current_time (screen->display));
/* Also raise the window if in click-to-focus */
if (meta_prefs_get_focus_mode () == META_FOCUS_MODE_CLICK)
meta_window_raise (window);
}
else
{
meta_topic (META_DEBUG_FOCUS, "No mouse window to focus found\n");
}
return window;
}
const MetaXineramaScreenInfo*
@@ -1572,6 +1652,8 @@ meta_screen_update_workspace_layout (MetaScreen *screen)
break;
}
}
else
screen->starting_corner = META_SCREEN_TOPLEFT;
}
else
{
@@ -1679,6 +1761,7 @@ meta_create_offscreen_window (Display *xdisplay,
* (but on a display we are managing at least one screen for)
*/
attrs.override_redirect = True;
attrs.event_mask = PropertyChangeMask;
return XCreateWindow (xdisplay,
parent,
@@ -1687,7 +1770,7 @@ meta_create_offscreen_window (Display *xdisplay,
CopyFromParent,
CopyFromParent,
CopyFromParent,
CWOverrideRedirect,
CWOverrideRedirect | CWEventMask,
&attrs);
}
@@ -2077,6 +2160,7 @@ meta_screen_resize (MetaScreen *screen,
screen->height = height;
reload_xinerama_infos (screen);
set_desktop_geometry_hint (screen);
/* Queue a resize on all the windows */
meta_screen_foreach_window (screen, meta_screen_resize_func, 0);
@@ -2442,6 +2526,7 @@ meta_screen_apply_startup_properties (MetaScreen *screen,
if (sequence != NULL)
{
int space;
Time timestamp;
meta_topic (META_DEBUG_STARTUP,
"Found startup sequence for window %s ID \"%s\"\n",
@@ -2461,6 +2546,17 @@ meta_screen_apply_startup_properties (MetaScreen *screen,
}
}
if (!window->initial_timestamp_set)
{
timestamp = sn_startup_sequence_get_timestamp (sequence);
meta_topic (META_DEBUG_STARTUP,
"Setting initial window timestamp to %lu based on startup info\n",
timestamp);
window->initial_timestamp_set = TRUE;
window->initial_timestamp = timestamp;
}
return;
}
else

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