Compare commits

...

306 Commits

Author SHA1 Message Date
Elijah Newren
c8d135b353 2.13.34 release
2006-01-20  Elijah Newren  <newren gmail com>

	* NEWS:	2.13.34 release
2006-01-21 01:33:49 +00:00
Elijah Newren
8e5425a86f fixed_directions is only meant for explicit user interactions; disable it
2006-01-20  Elijah Newren  <newren gmail com>

	* src/constraints.c (setup_constraint_info): fixed_directions is
	only meant for explicit user interactions; disable it for
	everything else.  There are other bugs and improvements that could
	be made with fixed_directions that I should be filing too, but at
	least put a FIXME there for now--I'm so lame.  Fixes #327822.
2006-01-21 01:09:46 +00:00
Ignacio Casal Quinteiro
0ea8552531 *** empty log message *** 2006-01-21 00:08:11 +00:00
Elijah Newren
dcec11274a Avoid flashing when closing a maximized window. Fixes #317254.
2006-01-20  Elijah Newren  <newren gmail com>

	Avoid flashing when closing a maximized window.  Fixes #317254.

	* src/window.c (unmaximize_window_before_freeing): new function
	that just fixes the net_wm_state and sends a configure_notify,
	(meta_window_free): use unmaximize_window_before_freeing() instead
	of meta_window_unmaximize() to avoid flicker
2006-01-20 23:36:23 +00:00
Elijah Newren
6f318f1a75 Fix unitialized value problem when in raise-on-click mode. Søren,
2006-01-20  Elijah Newren  <newren gmail com>

	Fix unitialized value problem when in raise-on-click mode.  Søren,
	#327572.

	* src/display.c (meta_display_check_threshold_reached): make
	function be a no op if raise_on_click!=FALSE

	* src/display.h (struct MetaDisplay): point out that
	grab_initial_[xy] and grab_threshold_movement_reached are only for
	raise_on_click==FALSE mode.
2006-01-20 23:02:24 +00:00
Elijah Newren
5568f75cb0 Patch from Søren to fix some reading-from-free'd-data errors. #327575
2006-01-20  Elijah Newren  <newren gmail com>

	Patch from Søren to fix some reading-from-free'd-data errors.
	#327575

	* src/edge-resistance.c (meta_display_cleanup_edges): store the
	edges in a hash table so that we can still read their values
	within the loop from the other array they are stored in, then free
	them all at the end.
2006-01-20 22:57:42 +00:00
Elijah Newren
e272295976 Fix various initialization and default issues, especially for
2006-01-20  Elijah Newren  <newren gmail com>

	Fix various initialization and default issues, especially for
	--disable-gconf.  Make --disable-gconf actually work.  #326661.

	* configure.in: Fix compilation with --disable-gconf
	* src/metacity.schemas.in: Add a note that if any defaults are
	  changed in this file, src/prefs.c may need to be updated to
	  reflect the change
	* src/prefs.c: set various static global vars to the right default
	value, (meta_prefs_init): get the titlebar_font and current_theme
	handled better when not using gconf, (struct MetaSimpleKeyMapping,
	screen_string_bindings, window_string_bindings): helper vars to
	allow some keybindings to work even without gconf,
	(init_bindings): initialize bindings for the without-gconf case
	too, (init_commands): make sure these are all NULL for the
	non-gconf case so that we don't access random memory,
	(init_workspace_names): just give these all a default name for the
	non-gconf case,
	(meta_prefs_change_workspace_name): actually change the name for
	the non-gconf case too
2006-01-20 22:42:25 +00:00
Elijah Newren
a556a7334a More careful error handling of values returned by GConf. Fixes #326615.
2006-01-20  Elijah Newren  <newren gmail com>

	More careful error handling of values returned by GConf.  Fixes
	#326615.

	* src/prefs.c (get_bool): new helper function, (meta_prefs_init):
	use get_bool to handle the case of a gconf key not existing,
	(update_cursor_size): sanity check for sane values
2006-01-20 22:32:28 +00:00
Elijah Newren
af14d9d2a1 Prevent rapidly repeated visual bells from hanging metacity. Fixes
2006-01-20  Elijah Newren  <newren gmail com>

	Prevent rapidly repeated visual bells from hanging metacity.
	Fixes #322032.

	* src/display.h (struct MetaDisplay): add a last_bell_time field,
	(XSERVER_TIME_IS_BEFORE_ASSUMING_REAL_TIMESTAMPS macro,
	XERVER_TIME_IS_BEFORE macro): add parentheses around usage of
	macro parameter

	* src/display.c (meta_display_open): initialize last_bell_time,
	(event_callback): don't allow more than one bell per second
2006-01-20 22:08:52 +00:00
Elijah Newren
32d4bd6b63 Patch from Kjartan Maraas to fix a lot of tiny issues (unused variable
2006-01-20  Elijah Newren  <newren gmail com>

	* src/async-getprop.c:
	* src/common.h:
	* src/display.c:
	* src/eggaccelerators.c:
	* src/frames.c:
	* src/gradient.c:
	* src/iconcache.c:
	* src/keybindings.c:
	* src/metaaccellabel.c:
	* src/place.c:
	* src/prefs.c:
	* src/preview-widget.c:
	* src/screen.c:
	* src/session.c:
	* src/stack.c:
	* src/tabpopup.c:
	* src/theme-viewer.c:
	* src/theme.c:
	* src/window-props.c:
	* src/window.c:
	* src/workspace.c:
	* src/tools/metacity-window-demo.c:
	* src/wm-tester/test-gravity.c:
	* src/wm-tester/test-resizing.c:
	* src/wm-tester/test-size-hints.c:
	Patch from Kjartan Maraas to fix a lot of tiny issues (unused
	variable removal, making unused variables used again, correction
	of types passed/declared for printf arguments, removal of unneeded
	breaks and returns, dead code removal, dead code revival, renaming
	to prevent shadowed variables, declaring unexported functions as
	static) spotted by the intel compiler.  #321439
2006-01-20 22:03:56 +00:00
Elijah Newren
4c10722262 Patch from Björn Lindqvist to fix #98340.
2006-01-20  Elijah Newren  <newren gmail com>

	Patch from Björn Lindqvist to fix #98340.

	* src/screen.c (meta_screen_ensure_tab_popup): Make sure an
	outline border is shown even if a window frame's width is 0.
	Also, correctly handle window outlines in showing desktop mode.
2006-01-20 21:48:51 +00:00
Søren Sandmann
cc790655f2 Make minimize animation update again.
Fri Jan 20 16:42:25 2006  Søren Sandmann  <sandmann@redhat.com>

        * src/compositor.c: Make minimize animation update again.
2006-01-20 21:43:13 +00:00
Vincent van Adrighem
1bce2c55fe Translation updated by Tino Meinen.
2006-01-20  Vincent van Adrighem  <adrighem@gnome.org>

	* nl.po: Translation updated by Tino Meinen.
2006-01-20 12:50:15 +00:00
Søren Sandmann
5f9a097d2c g_object_unref() rather than ws_region_unref().
Thu Jan 19 18:05:47 2006  Søren Sandmann  <sandmann@redhat.com>

	* src/compositor.c (meta_compositor_manage_screen):
	g_object_unref() rather than ws_region_unref().
2006-01-19 23:06:19 +00:00
Søren Sandmann
24976318b5 Port to changes in libcm
Thu Jan 19 16:50:50 2006  Søren Sandmann  <sandmann@redhat.com>

        * src/compositor.c: Port to changes in libcm
2006-01-19 21:51:54 +00:00
Funda Wang
59d7d891db Updated metacity translation. 2006-01-18 13:40:28 +00:00
Søren Sandmann
8638300708 Port to changes in libcm.
Tue Jan 17 17:25:29 2006  Søren Sandmann  <sandmann@redhat.com>

	* src/compositor.c: Port to changes in libcm.
2006-01-17 22:27:10 +00:00
Ignacio Casal Quinteiro
a42d6647b5 *** empty log message *** 2006-01-17 20:19:07 +00:00
Ilkka Tuohela
0a815fb8f8 Updated Finnish translation 2006-01-16 20:00:56 +00:00
Elijah Newren
4dd216f5a8 manually define HOST_NAME_MAX if not already defined to fix Solaris
2006-01-16  Elijah Newren  <newren gmail com>

	* src/window-props.c: manually define HOST_NAME_MAX if not already
	defined to fix Solaris compilation issue.  Caught by Damien
	Carbery, patch from Havoc.  #326745
2006-01-16 17:37:53 +00:00
Elijah Newren
4d868c1ddc post-release version bump to 2.13.34
2006-01-16  Elijah Newren  <newren@gmail.com>

	* configure.in: post-release version bump to 2.13.34
2006-01-16 17:14:20 +00:00
Elijah Newren
97981e4322 2.13.21 release
2006-01-16  Elijah Newren  <newren@gmail.com>

	* NEWS:	2.13.21 release
2006-01-16 17:13:20 +00:00
Søren Sandmann
35dae65862 Really turn off draw-in-a-loop.
Mon Jan 16 11:55:20 2006  Søren Sandmann  <sandmann@redhat.com>

	* src/compositor.c (meta_compositor_manage_screen): Really turn
	off draw-in-a-loop.
2006-01-16 16:56:09 +00:00
Kyle Ambroff
fac7010411 If no valid window is found in the MRU list, then set focus to the desktop
2006-01-15  Kyle Ambroff  <kambroff@csus.edu>

	* src/workspace.c (focus_ancestor_or_mru_window):
	If no valid window is found in the MRU list, then set focus to the
	desktop window. (#317405)
2006-01-16 06:07:29 +00:00
Francisco Javier F. Serrador
d552ca35f6 Updated Spanish translation.
2006-01-15  Francisco Javier F. Serrador  <serrador@cvs.gnome.org>

	* es.po: Updated Spanish translation.
2006-01-15 19:32:28 +00:00
Elijah Newren
9fdd3d165d Fix accidental overzealous focus holding by the terminal introduced by the
2006-01-15  Elijah Newren  <newren@gmail.com>

	Fix accidental overzealous focus holding by the terminal
	introduced by the original patch in bug 326159.  Windows launched
	from panel icons, the panel menu, or global keybindings should get
	focus now.  #326159.

	* src/display.c (meta_display_open, event_callback):
	* src/display.h (struct MetaDisplay):
	* src/keybindings.c (process_event):
	* src/window.c (meta_window_set_user_time):
	Add a new allow_terminal_deactivation field to MetaDisplay and use
	it to track whether the user's last action was interaction with
	the terminal or some outside action (global keybinding, clicking
	on a dock, etc.) likely to launch a new window.

	* src/window.c (window_state_on_map):
	Allow the focus switch from a terminal to something else if
	allow_terminal_deactiviation is true.

	* src/keybindings.c (handle_panel_keybinding):
	Remove some unneeded code.
2006-01-15 17:03:57 +00:00
Elijah Newren
ef792fc1f7 Patch from Jens Granseuer to fix more build issues with gcc 2.95. #327050.
2006-01-15  Elijah Newren  <newren@gmail.com>

	Patch from Jens Granseuer to fix more build issues with gcc 2.95.
	#327050.

	* src/boxes.c (meta_rectangle_edge_cmp_ignore_type):
	* src/window.c (meta_window_show):
	Remove C99 style variable initiailization
2006-01-15 16:37:06 +00:00
Elijah Newren
50bcc976bc Don't dereference a NULL string. Fixes #327013.
2006-01-14  Elijah Newren  <newren gmail com>

	* src/window.c (__window_is_terminal): Don't dereference a NULL
	string.  Fixes #327013.
2006-01-15 04:45:34 +00:00
Elijah Newren
def12b85b8 fix compilation when HAVE_COMPOSITE_EXTENSIONS is undefined. #326912
2006-01-14  Elijah Newren  <newren gmail com>

	* src/compositor.[ch]: fix compilation when
	HAVE_COMPOSITE_EXTENSIONS is undefined.  #326912
2006-01-14 21:51:46 +00:00
Takeshi AIHANA
5a652acf88 Updated Japanese translation for v2.13.13.
2006-01-14  Takeshi AIHANA <takeshi.aihana@gmail.com>

	* ja.po: Updated Japanese translation for v2.13.13.
2006-01-14 15:57:24 +00:00
Søren Sandmann
efe25a80ed Only update on damage events.
Fri Jan 13 16:37:26 2006  Søren Sandmann  <sandmann@redhat.com>

	* src/compositor.c (update): Only update on damage events.
2006-01-13 21:38:56 +00:00
Elijah Newren
f9d11c0be6 Patch from Damien Carbery. Fixes #326746.
2006-01-13  Elijah Newren  <newren gmail com>

	Patch from Damien Carbery.  Fixes #326746.

	* src/util.c: explicitly #include Xlib.h to fix a compilation
	issue on Solaris.
2006-01-13 21:36:10 +00:00
Søren Sandmann
fea6191473 Add a dependency on libcm when building with compositor.
Fri Jan 13 14:40:19 2006  Søren Sandmann  <sandmann@redhat.com>

	* configure.in: Add a dependency on libcm when building with
	compositor.

	* src/window.c (meta_window_hide): Make this function static.

	* src/window.c (implement_showing): Use meta_compositor_minimize()
	to do a weird minimize effect.

	* src/compositor.[ch]: Beginning of new GL based compositor.

	* src/screen.h (struct _MetaScreen): Add void pointer to
	compositor data.

	* src/screen.c (meta_screen_new): Remove obsolete compositor
	stuff; initialize compositor_data. Don't composite manage screen
	out of this function.

	* src/errors.c (x_error_handler): Check that display is non-NULL
	before using it. Add comment about how that can happen.

	* src/display.c (meta_display_{begin,end}_grab_op): Remove
	explicity damage of windows.

	* src/display.c (meta_display_open): Composite manage all the
	screens.
2006-01-13 19:41:01 +00:00
Adam Weinberger
0eab7bd14c Updated Canadian English translation.
2006-01-11  Adam Weinberger  <adamw@gnome.org>

	* en_CA.po: Updated Canadian English translation.
2006-01-11 17:51:22 +00:00
Elijah Newren
9ec589b3b8 Replace __PRETTY_FUNCTION__ with G_STRFUNC, because lesser compilers don't
2006-01-11  Elijah Newren  <newren gmail com>

	* src/textboxes.c (test_area, test_intersect, test_equal,
	  test_overlap_funcs, test_basic_fitting, test_merge_regions,
	  test_regions_okay, test_region_fitting, test_clamping_to_region,
	  test_clipping_to_region, test_shoving_into_region,
	  test_find_onscreen_edges,
	  test_find_nonintersected_xinerama_edges, test_gravity_resize,
	  test_find_closest_point_to_line):
	Replace __PRETTY_FUNCTION__ with G_STRFUNC, because lesser
	compilers don't support the former.  Caught by Damien Carbery, fix
	suggested by Ray Strode.  #326281.
2006-01-11 16:35:03 +00:00
Theppitak Karoonboonyanan
d0b1dab993 Updated Thai translation.
2006-01-11  Theppitak Karoonboonyanan  <thep@linux.thai.net>

	* th.po: Updated Thai translation.
2006-01-11 14:58:43 +00:00
Ankitkumar Rameshchandra Patel
4689944194 Updated Translation 2006-01-11 06:40:09 +00:00
Clytie Siddall
1f6dbf75fa vi.po: Updated Vietnamese translation. 2006-01-11 05:43:30 +00:00
Elijah Newren
51b8c402d8 post-release version bump to 2.13.21
2006-01-10  Elijah Newren  <newren@gmail.com>

	* configure.in: post-release version bump to 2.13.21
2006-01-10 20:08:27 +00:00
Elijah Newren
f0322ee76c 2.13.13 release
2006-01-10  Elijah Newren  <newren@gmail.com>

	* NEWS:	2.13.13 release
2006-01-10 20:07:34 +00:00
Elijah Newren
5913b8c5ab Whoops, I forgot to keep my copyright info updated with my previous
2006-01-10  Elijah Newren  <newren@gmail.com>

	* src/bell.c:
	* src/boxes.c:
	* src/boxes.h:
	* src/constraints.c:
	* src/core.c:
	* src/display.c:
	* src/display.h:
	* src/edge-resistance.c:
	* src/frames.c:
	* src/keybindings.c:
	* src/main.c:
	* src/prefs.c:
	* src/prefs.h:
	* src/screen.c:
	* src/screen.h:
	* src/window.c:
	* src/window.h:
	Whoops, I forgot to keep my copyright info updated with my previous
	commits as Havoc had asked me to do.  Doing that now...
2006-01-10 19:43:21 +00:00
Elijah Newren
52df880f32 Add a raise on click option, basically only because all the major distros
2006-01-10  Elijah Newren  <newren@gmail.com>

	Add a raise on click option, basically only because all the major
	distros are patching it in anyway.  See #326156.

	* src/metacity.schemas.in: add the new gconf key and explanation

	* src/prefs.[ch] (#define KEY_RAISE_ON_CLICK, static gboolean
	  raise_on_click, update_raise_on_click, meta_prefs_init,
	  change_notify, meta_prefs_get_raise_on_click,
	  meta_preference_to_string):
	Add all the normal preference handling stuff for this new
	raise-on-click option.

	* src/core.c (meta_core_show_window_menu):
	* src/display.c (event_callback, meta_display_begin_grab_op):
	* src/window.c (window_activate, meta_window_configure_request, ):
	Only raise the window if in raise_on_click mode.

	* src/display.c (meta_display_begin_grab_op,
	  meta_display_end_grab_op, meta_display_check_threshold_reached):
	* src/display.h (struct MetaDisplay):
	* src/window.c (meta_window_handle_mouse_grab_op_event):
	if not in raise-on-click mode only raise on button release if the
	click didn't start a move or resize operation; needs a few extra
	MetaDisplay fields to handle this

	* src/core.c (meta_core_user_lower_and_unfocus):
	no need to do the MRU shuffling if not maintaining the stacking
	order == MRU order invariant

	* src/frames.c (meta_frames_button_press_event):
	* src/window.c (meta_window_begin_grab_op):
	remove an unneeded window raising that is already handled elsewhere
2006-01-10 19:35:03 +00:00
Elijah Newren
f6270596de Don't "steal" focus from terminal windows for new window mappings as the
2006-01-10  Elijah Newren  <newren@gmail.com>

	Don't "steal" focus from terminal windows for new window mappings
	as the difference in usage between terminals and other apps seems
	to suggest this difference in treatment.  See #326159 for details,
	feedback welcome.

	* src/window.[ch] (__window_is_terminal): New function, currently
	an ugly hack and should be replaced by a new property set by
	applications if the behavior works to our liking,
	(window_state_on_map): don't transfer focus to new windows from
	terminals unless the new window is a transient of the focused
	terminal

	* src/keybindigns.c (handle_panel_keybinding): panel run dialog
	keybinding should be counted as an explicit transfer of focus to
	the new window, so override the
	don't-transfer-focus-from-terminals in this case
2006-01-10 18:33:53 +00:00
Elijah Newren
a4d1c6fd61 More thorough handling of source indication. Part of #326041.
2006-01-09  Elijah Newren  <newren@gmail.com>

	More thorough handling of source indication.  Part of #326041.

	* src/window.c (window_activate): new function based off the old
	meta_window_activate but which also takes source indication into
	account, (meta_window_active): just call window_activate() with
	the necessary source indication to get the behavior wanted,
	(meta_window_client_message): check source indication too for
	_net_active_window messages

	* src/window.h (enum MetaClientType): convenience enum for source
	indication handling
2006-01-10 05:44:40 +00:00
Elijah Newren
0f8add8b37 Make the taskbar less flash happy and fix up some related stacking issues.
2006-01-09  Elijah Newren  <newren@gmail.com>

	Make the taskbar less flash happy and fix up some related stacking
	issues.  #326035.

	* src/window.c (windows_overlap): new function,
	(meta_window_show): if a window is denied focus but doesn't
	overlap with the focus window there is no need to set the demands
	attention hint nor stack that window below the focus window,
	(meta_window_get_outer_rect): we're not modifying the window so
	declare it to be const
2006-01-10 05:14:48 +00:00
Elijah Newren
8c5b6c875a Fix window outline for minimized windows when using alt-esc. #325092.
2006-01-09  Elijah Newren  <newren@gmail.com>

	Fix window outline for minimized windows when using alt-esc.
	#325092.

	* src/display.c (meta_display_begin_grab_op): Specify the showing
	type of tabbing operation (Alt tab vs. alt-esc) in addition to the
	listing type of tabbing operation (docks vs normal windows) to
	meta_screen_ensure_tab_popup().

	* src/display.h (enum MetaTabShowType): new convenience enum

	* src/screen.[ch] (meta_screen_ensure_tab_popup): require the
	showing type be specified in addition to the tabbing type; put the
	outline around the window instead of the icon when in alt-esc
	mode.
2006-01-10 05:05:40 +00:00
Elijah Newren
ae52d731be Fix reduced resources resize handling for windows with sizing or resizing
2006-01-09  Elijah Newren  <newren@gmail.com>

	Fix reduced resources resize handling for windows with sizing or
	resizing constraints.  #325774.

	* src/display.c (meta_display_end_grab_op): Provide constraints.c
	with the correct gravity information.
2006-01-10 05:01:08 +00:00
Elijah Newren
d884f9ce8a Be more strict about what is considered a valid region with partial
2006-01-09  Elijah Newren  <newren@gmail.com>

	Be more strict about what is considered a valid region with
	partial struts.  Fixes #322070.

	* src/boxes.[ch]:
	(meta_rectangle_expand_region_conditionally):
	new function behaving like meta_rectangle_expand_region() but
	which only does so when the width and height of the rectangles
	meet a certain threshold

	(replace_rect_with_list):
	Remove a compiling warning

	* src/constraints.c:
	(constrain_partially_onscreen):
	provide minimum thresholds in each direction for the size of the
	rectangles to avoid cases where only a single pixel thick layer of
	a window might be showing
2006-01-10 04:57:51 +00:00
Elijah Newren
ee54debd6a Use the right function to remove the timeout so that we don't crash if
2006-01-09  Elijah Newren  <newren@gmail.com>

	* src/bell.c (meta_bell_notify_frame_destroy): Use the right
	function to remove the timeout so that we don't crash if removed
	at an inopportune time.  Fixes #322031.
2006-01-10 04:50:17 +00:00
Elijah Newren
24cfed8cf0 Remove the "pull-away" edge resistance. Fixes another of the zillions of
2006-01-09  Elijah Newren  <newren@gmail.com>

	* src/edge-resistance.c (apply_edge_resistance): Remove the
	"pull-away" edge resistance.  Fixes another of the zillions of
	issues covered in #321905.
2006-01-10 04:46:45 +00:00
Elijah Newren
008a811e10 Revert to the old edge resistance behavior for keyboard movement/resizing
2006-01-09  Elijah Newren  <newren@gmail.com>

	* src/edge-resistance.c (apply_edge_resistance): Revert to the old
	edge resistance behavior for keyboard movement/resizing based
	resistance.  Not only makes the code much simpler and shorter, but
	also fixes another of the zillions of issues covered in #321905.
2006-01-10 04:42:30 +00:00
Elijah Newren
de65967b62 Remove the timeout resistance at screen/xinerama edges for the whiners.
2006-01-09  Elijah Newren  <newren@gmail.com>

	* src/edge-resistance.c (apply_edge_resistance): Remove the
	timeout resistance at screen/xinerama edges for the whiners.
	Okay, it made sense.  Fixes another of the zillions of issues
	covered in #321905.
2006-01-10 04:39:53 +00:00
Elijah Newren
35532d14cb Make extra timeout edge resistance apply even if one edge already
2006-01-09  Elijah Newren  <newren@gmail.com>

	* src/edge-resistance.c (apply_edge_resistance): Make extra
	timeout edge resistance apply even if one edge already offscreen.
	Fixes another of the zillions of issues covered in #321905.
2006-01-10 04:36:36 +00:00
Elijah Newren
9516694385 Allow edge resistance at both sides of a window and also when edges don't
2006-01-09  Elijah Newren  <newren@gmail.com>

	Allow edge resistance at both sides of a window and also when
	edges don't overlap but are a single pixel away from doing so.
	Fixes one of the zillions of issues covered in #321905.

	* src/boxes.[ch]:
	(meta_rectangle_edges_align):
	new function to handle the overlap or off by one determining
	whether edge resistance should kick in for an edge.

	(meta_rectangle_edge_cmp_ignore_type):
	new function to sort edges but ignore the type so that e.g. left &
	right edges of windows can be used interchangeably.

	(meta_rectangle_edge_cmp):
	now uses meta_rectangle_edge_cmp_ignore_type() to do most the work
	and just adds an extra condition

	* src/edge-resistance.c:
	(find_nearest_position):
	use meta_rectangle_edges_align() now to determine whether the
	edges align,

	(apply_edge_resistance, apply_edge_resistance_to_each_side):
	have the edge resistance kick in if either the beginning or ending
	positions would cause overlap in the given direction -- fixes an
	uncommon but annoying corner case,

	(apply_edge_snapping, apply_edge_resistance_to_each_side,
	 meta_display_cleanup_edges,
	 stupid_sort_requiring_extra_pointer_dereference, cache_edges):
	mix edges from both sides now
2006-01-10 04:33:58 +00:00
Elijah Newren
9eb56f151c Plug a few leaks. Fixes #309178.
2006-01-09  Elijah Newren  <newren@gmail.com>

	Plug a few leaks.  Fixes #309178.

	* src/main.c (main): remove an unneeded g_set_prgname() call, free
	some strings allocated by the GOptions parsing
2006-01-10 04:18:09 +00:00
Kjartan Maraas
e3ff2316fe Updated Norwegian bokmål translation. Same
2006-01-06  Kjartan Maraas  <kmaraas@gnome.org>

	* nb.po: Updated Norwegian bokmål translation.
	* no.po: Same
2006-01-06 17:58:32 +00:00
Elijah Newren
ab0ba52f89 Clarify how/why metacity-message is used a little 2006-01-02 19:01:29 +00:00
Elijah Newren
339948fcf2 Patch from Björn Lindqvist to fix a logic error. #322149.
2006-01-02  Elijah Newren  <newren@gmail.com>

	Patch from Björn Lindqvist to fix a logic error.  #322149.

	* src/window.c (update_resize): && should have been ||.
2006-01-02 18:48:30 +00:00
Elijah Newren
ebd0c7e9a6 Patch from Jens Granseuer to fix build with gcc 2.95. #322622.
2006-01-02  Elijah Newren  <newren@gmail.com>

	Patch from Jens Granseuer to fix build with gcc 2.95.  #322622.

	* src/boxes.c (meta_rectangle_region_to_string,
	  meta_rectangle_edge_list_to_string, fix_up_edges):
	* src/constraints.c (meta_window_constrain, setup_constraint_info,
	  place_window_if_needed, constrain_maximization,
	  constrain_fullscreen, constrain_size_increments,
	  constrain_size_limits, constrain_aspect_ratio,
	  do_screen_and_xinerama_relative_constrai,
	  constrain_to_single_xinerama, constrain_fully_onscreen,
	  constrain_partially_onscreen):
	* src/edge-resistance.c (find_nearest_position,
	  apply_edge_resistance, apply_edge_resistance_to_each_side):
	* src/testboxes.c (test_clamping_to_region,
	  test_clipping_to_region, test_shoving_into_region):
	* src/window.c (meta_window_new_with_attrs,
	  meta_window_apply_session_info, meta_window_resize,
	  meta_window_resize_with_gravity, meta_window_configure_request):
	Remove C99 style variable initiailization
2006-01-02 18:37:46 +00:00
Elijah Newren
d530c3e405 post-release version bump to 2.13.13
2006-01-02  Elijah Newren  <newren@gmail.com>

	* configure.in: post-release version bump to 2.13.13
2006-01-02 18:00:18 +00:00
Elijah Newren
be86740b3d 2.13.8 release
2006-01-02  Elijah Newren  <newren@gmail.com>

	* NEWS:	2.13.8 release
2006-01-02 17:59:18 +00:00
Ilkka Tuohela
d4771cd9cf Updated Finnish translation 2005-12-30 14:03:29 +00:00
Clytie Siddall
a59f14adbc vi.po: Updated Vietnamese translation. 2005-12-30 07:49:05 +00:00
Elijah Newren
703f58cdf7 Make the workspace switcher work with dual-head (non-xinerama) setups.
2005-12-27  Elijah Newren  <newren@gmail.com>

	Make the workspace switcher work with dual-head (non-xinerama)
	setups.  Fixes #319423.

	* src/display.c (meta_display_open, event_callback,
	  meta_display_focus_the_no_focus_window):
	* src/display.h (struct MetaDisplay,
	  meta_display_focus_the_no_focus_window):
	* src/keybindings.c (primary_modifier_still_pressed):
	* src/screen.c (meta_screen_new):
	* src/screen.h (struct MetaScreen):
	* src/window.c (meta_window_new_with_attrs, meta_window_show):
	* src/workspace.c (meta_workspace_focus_default_window):
	Replace display->no_focus_window with a no_focus_window for each
	screen.

	* src/display.[ch] (meta_display_xwindow_is_a_no_focus_window,
	  event_callback):
	* src/window.c (meta_window_new_with_attrs):
	New utility function, meta_display_xwindow_is_a_no_focus_window(),
	for checking if the given xwindow is a no_focus_window for one of
	the screens.
2005-12-28 06:24:30 +00:00
Elijah Newren
5e9f20e94c since the title is going to be treated as markup, escape it. Fixes
2005-12-27  Elijah Newren  <newren@gmail.com>

	* src/tabpopup.c (meta_ui_tab_popup_new): since the title is going
	to be treated as markup, escape it.  Fixes #324846.
2005-12-27 16:40:47 +00:00
Kang Jeong-Hee
a710235e86 ko.po updated 2005-12-25 14:27:11 +00:00
Elijah Newren
53cba6ed37 Oops, I only meant to commit the changes to rationales.txt in the last commit 2005-12-22 07:08:38 +00:00
Elijah Newren
7e821f37fd Add xinerama and multi-head tracker bugs 2005-12-22 06:18:38 +00:00
Arangel Angov
830baad257 Macedonian Translation update <arangela@cvs.gnome.org> 2005-12-18 23:17:08 +00:00
Kang Jeong-Hee
6a9242b192 compile with compositor enabled 2005-12-14 12:47:35 +00:00
Elijah Newren
013c8b82db post-release version bump to 2.13.8
2005-12-12  Elijah Newren  <newren@gmail.com>

	* configure.in: post-release version bump to 2.13.8
2005-12-12 18:44:32 +00:00
Elijah Newren
37fb0af742 2.13.5 release
2005-12-12  Elijah Newren  <newren@gmail.com>

	* NEWS:	2.13.5 release
2005-12-12 18:41:02 +00:00
Elijah Newren
12193322a8 make the debugging message actually correspond to the code. Patch from
2005-12-12  Elijah Newren  <newren@gmail.com>

	* src/window.c (update_net_frame_extents): make the debugging
	message actually correspond to the code.  Patch from Björn
	Lindqvist.  Fixes #322051.
2005-12-12 18:22:40 +00:00
Miloslav Trmac
d9721257d2 Updated Czech translation.
2005-12-11  Miloslav Trmac  <mitr@volny.cz>

	* cs.po: Updated Czech translation.
2005-12-11 21:59:28 +00:00
Ankitkumar Rameshchandra Patel
c08a660368 Updated Gujarati Translation 2005-12-11 13:27:25 +00:00
Adam Weinberger
77b148afdc Updated Canadian English translation.
2005-12-03  Adam Weinberger  <adamw@gnome.org>

	* en_CA.po: Updated Canadian English translation.
2005-12-03 21:02:19 +00:00
Kjartan Maraas
b4635f2143 Updated Norwegian bokmål translation. Same
2005-12-03  Kjartan Maraas  <kmaraas@gnome.org>

	* nb.po: Updated Norwegian bokmål translation.
	* no.po: Same
2005-12-03 10:59:44 +00:00
Kjartan Maraas
b3f465c727 Make the wireframe a bit slimmer 2005-11-29 21:36:12 +00:00
Davyd Madeley
616d778f6b display hostname in titlebar for remote X clients. Closes bug #322202.
2005-11-24  Davyd Madeley  <davyd@fugro-fsi.com.au>

        * src/window-props.c: display hostname in titlebar for remote X
          clients. Closes bug #322202.
2005-11-23 17:08:03 +00:00
Marcel Telka
6fa00967a5 Updated Slovak translation.
2005-11-22  Marcel Telka  <marcel@telka.sk>

	* sk.po: Updated Slovak translation.
2005-11-22 23:08:02 +00:00
Elijah Newren
35925d1cf1 post-release version bump to 2.13.5
2005-11-22  Elijah Newren  <newren@gmail.com>

	* configure.in: post-release version bump to 2.13.5
2005-11-22 16:12:54 +00:00
Elijah Newren
d74b0ce151 2.13.3 release
2005-11-22  Elijah Newren  <newren@gmail.com>

	* NEWS:	2.13.3 release
2005-11-22 16:11:53 +00:00
Alexander Shopov
ca6991d4a8 Updated Bulgarian translation by Alexander Shopov <ash@contact.bg>
2005-11-22  Alexander Shopov  <ash@contact.bg>

	* bg.po: Updated Bulgarian translation by
	Alexander Shopov <ash@contact.bg>
2005-11-22 15:54:50 +00:00
Elijah Newren
ca2fe384bc Don't allow removing a window from maximized or fullscreened state to
2005-11-22  Elijah Newren  <newren@gmail.com>

	Don't allow removing a window from maximized or fullscreened state
	to place the titlebar under the top panel.  Fixes #322075.

	* src/display.c (handle_net_moveresize_window): fix up previous
	comments now that I know a little more, modify the code just
	slightly to clarify that this is NOT a manual user move/resize
	operation

	* src/window.c (meta_window_unmaximize,
	  meta_window_unmake_fullscreen,
	  meta_window_shove_titlebar_onscreen):
	don't claim that these are manual user move/resize operations
2005-11-22 15:48:30 +00:00
Theppitak Karoonboonyanan
65168cf8c9 Updated Thai translation.
2005-11-22  Theppitak Karoonboonyanan  <thep@linux.thai.net>

	* th.po: Updated Thai translation.
2005-11-22 06:03:52 +00:00
Elijah Newren
b03d82661f Relax the partially onscreen constraint to allow the titlebar to touch the
2005-11-21  Elijah Newren  <newren@gmail.com>

	* src/constraints.c (constrain_partially_onscreen): Relax the
	partially onscreen constraint to allow the titlebar to touch the
	bottom panel in order to make the new constraints code function
	the same as the old version.  Fixes #322071.
2005-11-22 00:22:41 +00:00
Francisco Javier F. Serrador
20e6b8d2f8 Updated Spanish translation.
2005-11-21  Francisco Javier F. Serrador  <serrador@cvs.gnome.org>

	* es.po: Updated Spanish translation.
2005-11-21 22:20:32 +00:00
Elijah Newren
3426844ad5 When updating the xinerama due to placement, update which maximal/spanning
2005-11-21  Elijah Newren  <newren@gmail.com>

	* src/constraints.c (place_window_if_needed): When updating the
	xinerama due to placement, update which maximal/spanning rect set
	to use as well
2005-11-21 21:35:31 +00:00
Elijah Newren
a3902fb922 Oops, missed a couple cleanups in this documentation 2005-11-21 18:19:58 +00:00
Elijah Newren
0fdbdbd236 It took me a little while to figure out how struts & workareas are updated
2005-11-21  Elijah Newren  <newren@gmail.com>

	* doc/strut-and-related-updating.txt: It took me a little while to
	figure out how struts & workareas are updated and to learn what
	all the related functions were used for so I thought I'd clean up
	my notes and make them available.  This will probably be more
	useful now since regions and edges are also computed and stored at
	the some time as the workareas.
2005-11-21 18:16:52 +00:00
Elijah Newren
9641bc5ee7 compute the frame geometry due to maximization only after actually
2005-11-20  Elijah Newren  <newren@gmail.com>

	* src/constraints.c (place_window_if_needed): compute the frame
	geometry due to maximization only after actually maximizing.
	Fixes #321902.
2005-11-21 06:00:18 +00:00
Davyd Madeley
d1da3438d4 Use GPOINTER_TO_INT() macro instead of cast to allow compilation on 64-bit
2005-11-21  Davyd Madeley  <davyd@fugro-fsi.com.au>

        * src/edge-resistance.c (meta_display_compute_resistance_and_snap):
          Use GPOINTER_TO_INT() macro instead of cast to allow compilation on
          64-bit architectures without warning.
2005-11-21 02:58:36 +00:00
Francisco Javier F. Serrador
f9a4aea0cf Updated Spanish translation.
2005-11-20  Francisco Javier F. Serrador  <serrador@cvs.gnome.org>

	* es.po: Updated Spanish translation.
2005-11-20 18:04:11 +00:00
Ignacio Casal Quinteiro
0ac220aecd *** empty log message *** 2005-11-20 11:31:22 +00:00
Elijah Newren
075d6d34db differentiate between movement towards an edge and movement away from one.
2005-11-19  Elijah Newren  <newren@gmail.com>

	* src/edge-resistance.c (apply_edge_resistance): differentiate
	between movement towards an edge and movement away from one.  Pick
	smaller constants for movement away from an edge.
2005-11-20 04:02:46 +00:00
Takeshi AIHANA
dfbec3a4c3 Updated Japanese translation for v2.13.2.
2005-11-20  Takeshi AIHANA <aihana@gnome.gr.jp>

	* ja.po: Updated Japanese translation for v2.13.2.
2005-11-20 02:58:03 +00:00
Elijah Newren
466ce4a936 Add another fixed bug to the ChangeLog and NEWS that I missed earlier 2005-11-19 21:53:12 +00:00
Elijah Newren
c78a98e066 post-release version bump to 2.13.3
2005-11-19  Elijah Newren  <newren@gmail.com>

	* configure.in: post-release version bump to 2.13.3
2005-11-19 16:54:03 +00:00
Elijah Newren
a5165ee24d 2.13.2 release
2005-11-19  Elijah Newren  <newren@gmail.com>

	* NEWS:	2.13.2 release
2005-11-19 16:52:25 +00:00
Elijah Newren
a7201d27d1 Merge of all the changes on the constraints_experiments branch. This is
2005-11-18  Elijah Newren  <newren@gmail.com>

	Merge of all the changes on the constraints_experiments branch.
	This is just a summary, to get the full ChangeLog of those
	changes (approx. 2000 lines):
	  cvs -q -z3 update -Pd -r constraints_experiments
	  cvs -q -z3 diff -pu -r CONSTRAINTS_EXPERIMENTS_BRANCHPOINT ChangeLog

	Bugs fixed:
	  unfiled - constraints.c is overly complicated[1]
	  unfiled - constraints.c is not robust when all constraints
	            cannot simultaneously be met (constraints need to be
	            prioritized)
	  unfiled - keep-titlebar-onscreen constraint is decoration
	            unaware (since get_outermost_onscreen_positions()
	            forgets to include decorations)
	  unfiled - keyboard snap-moving and snap-resizing snap to hidden
	            edges
	   109553 - gravity w/ simultaneous move & resize doesn't work
	   113601 - maximize vertical and horizontal should toggle and be
	            constrained
	   122196 - windows show up under vertical panels
	   122670 - jerky/random resizing of window via keyboard[2]
	   124582 - keyboard and mouse snap-resizing and snap-moving
	            erroneously moves the window multidimensionally
	   136307 - don't allow apps to resize themselves off the screen
	            (*cough* filechooser *cough*)
	   142016, 143784 - windows should not span multiple xineramas
	            unless placed there by the user
	   143145 - clamp new windows to screensize and force them
	            onscreen, if they'll fit
	   144126 - Handle pathological strut lists sanely[3]
	   149867 - fixed aspect ratio windows are difficult to resize[4]
	   152898 - make screen edges consistent; allow easy slamming of
	            windows into the left, right, and bottom edges of the
	            screen too.
	   154706 - bouncing weirdness at screen edge with keyboard moving
	            or resizing
	   156699 - avoid struts when placing windows, if possible (nasty
	            a11y blocker)
	   302456 - dragging offscreen too restrictive
	   304857 - wireframe moving off the top of the screen is misleading
	   308521 - make uni-directional resizing easier with
	            alt-middle-drag and prevent the occasional super
	            annoying resize-the-wrong-side(s) behavior
	   312007 - snap-resize moves windows with a minimum size
	            constraint
	   312104 - resizing the top of a window can cause the bottom to
	            grow
	   319351 - don't instantly snap on mouse-move-snapping, remove
	            braindeadedness of having order of releasing shift and
	            releasing button press matter so much

	   [1] fixed in my opinion, anyway.
	   [2] Actually, it's not totally fixed--it's just annoying
	       instead of almost completely unusable.  Matthias had a
	       suggestion that may fix the remainder of the problems (see
	       http://tinyurl.com/bwzuu).
	   [3] This bug was originally about not-quite-so-pathological
	       cases but was left open for the worse cases. The code from
	       the branch handles the remainder of the cases mentioned in
	       this bug.
	   [4] Actually, although it's far better there's still some minor
	       issues left: a slight drift that's only noticeable after
	       lots of resizing, and potential problems with partially
	       onscreen constraints due to not clearing any
	       fixed_directions flags (aspect ratio windows get resized in
	       both directions and thus aren't fixed in one of them)

	New feature:
	    81704 - edge resistance for user move and resize operations;
	            in particular 3 different kinds of resistance are
	            implemented:
             	 Pixel-Distance: window movement is resisted when it
	     	   aligns with an edge unless the movement is greater than
	     	   a threshold number of pixels
             	 Timeout: window movement past an edge is prevented until
	     	   a certain amount of time has elapsed during the
	     	   operation since the first request to move it past that
	     	   edge
             	 Keyboard-Buildup: when moving or resizing with the
	     	   keyboard, once a window is aligned with a certain edge
	     	   it cannot move past until the correct direction has
	     	   been pressed enough times (e.g. 2 or 3 times)

	Major changes:
	  - constraints.c has been rewritten; very few lines of code from
	    the old version remain.  There is a comment near the top of
	    the function explaining the basics of how the new framework
	    works.  A more detailed explanation can be found in
	    doc/how-constraints-works.txt
	  - edge-resistance.[ch] are new files implementing edge-resistance.
	  - boxes.[ch] are new files containing low-level error-prone
	    functions used heavily in constraints.c and edge-resistance.c,
	    among various places throughout the code.  testboxes.c
	    contains a thorough testsuite for the boxes.[ch] functions
	    compiled into a program, testboxes.
	  - meta_window_move_resize_internal() *must* be told the gravity
	    of the associated operation (if it's just a move operation,
	    the gravity will be ignored, but for resize and move+resize
	    the correct value is needed)
	  - the craziness of different values that
	    meta_window_move_resize_internal() accepts has been documented
	    in a large comment at the beginning of the function.  It may
	    be possible to clean this up some, but until then things will
	    remain as they were before--caller beware.
	  - screen and xinerama usable areas (i.e. places not covered by
	    e.g. panels) are cached in the workspace now, as are the
	    screen and xinerama edges.  These get updated with the
	    workarea in src/workspace.c:ensure_work_areas_validated()
2005-11-19 14:58:50 +00:00
Vincent van Adrighem
cfb3bd081a Translation updated by Wouter Bolsterlee.
2005-11-17  Vincent van Adrighem  <adrighem@gnome.org>

	* nl.po: Translation updated by Wouter Bolsterlee.
2005-11-16 23:22:35 +00:00
Elijah Newren
d0095e947f post-release version bump to 2.13.2
2005-11-14  Elijah Newren  <newren@gmail.com>

	* configure.in: post-release version bump to 2.13.2
2005-11-14 18:28:32 +00:00
Elijah Newren
ef486d855c 2.13.1 release
2005-11-14  Elijah Newren  <newren@gmail.com>

	* NEWS:	2.13.1 release
2005-11-14 18:27:22 +00:00
Theppitak Karoonboonyanan
2e10145b33 Updated Thai translation.
2005-11-13  Theppitak Karoonboonyanan  <thep@linux.thai.net>

	* th.po: Updated Thai translation.
2005-11-13 06:20:15 +00:00
Aidan Delaney
6677b55cd5 Changed the 'minimized' field of the MetaTabEntry struct to 'hidden'.
2005-11-11 Aidan Delaney <a.j.delaney@brighton.ac.uk>

       * src/tabpopup.h: (struct _MetaTabEntry):
       * src/tabpopup.c: (meta_ui_tab_popup_new):
       * src/screen.c: (meta_screen_ensure_tab_popup):
       Changed the 'minimized' field of the MetaTabEntry struct to
       'hidden'.  Fixes reopened bug #168455.
2005-11-12 00:34:32 +00:00
Norayr Chilingaryan
7c1aa16c3b bugfix ;) 2005-11-08 14:18:08 +00:00
Miloslav Trmac
e2e2c6401b Updated Czech translation.
2005-11-03  Miloslav Trmac  <mitr@volny.cz>

	* cs.po: Updated Czech translation.
2005-11-02 23:02:27 +00:00
Kjartan Maraas
4752ef55c7 Merge fix for bug #320050 from stable.
2005-10-29  Kjartan Maraas  <kmaraas@gnome.org>

	* src/eventqueue.c: (meta_event_queue_new): Merge fix
	for bug #320050 from stable.
2005-10-29 07:37:45 +00:00
Francisco Javier F. Serrador
55f62585d0 Updated Spanish translation.
2005-10-28  Francisco Javier F. Serrador  <serrador@cvs.gnome.org>

	* es.po: Updated Spanish translation.
2005-10-28 20:07:07 +00:00
Takeshi AIHANA
a11e758b4b Updated Japanese translation for v2.13.0.
2005-10-29  Takeshi AIHANA <aihana@gnome.gr.jp>

	* ja.po: Updated Japanese translation for v2.13.0.
2005-10-28 15:07:54 +00:00
Erdal Ronahi
828d2ca01e Added Kurdish translation 2005-10-27 18:20:58 +00:00
Philip O'Brien
064303e98e add handling for META_PREF_CURSOR_THEME and META_PREF_CURSOR_SIZE for more
2005-10-25  Philip O'Brien  <philip.obrien@dal.ca>

	* src/prefs.c (meta_preference_to_string): add handling for
	META_PREF_CURSOR_THEME and META_PREF_CURSOR_SIZE for more complete
	debug info
2005-10-25 16:43:01 +00:00
Elijah Newren
094449d097 post-release version bump to 2.13.1
2005-10-24  Elijah Newren  <newren@gmail.com>

	* configure.in: post-release version bump to 2.13.1
2005-10-24 22:40:49 +00:00
Elijah Newren
ddd1d6616d 2.13.0 release
2005-10-24  Elijah Newren  <newren@gmail.com>

	* NEWS:	2.13.0 release
2005-10-24 22:39:15 +00:00
Elijah Newren
f2acdda740 Fix edge snapping for multi-screen (non-xinerama) setups. #319425
2005-10-23  Elijah Newren  <newren@gmail.com>

	Fix edge snapping for multi-screen (non-xinerama) setups.  #319425

	* src/place.c (get_windows_showing_on_same_screen,
	get_vertical_edges, get_horizontal_edges): rename
	get_windows_on_same_workspace() to
	get_windows_showing_on_same_screen()

	* src/place.c (get_windows_showing_on_same_screen): exclude windows
	in the list that are on a different screen
2005-10-23 21:19:22 +00:00
Elijah Newren
7c70749ae8 Clarify why METACITY_VERBOSE=1 is bad without META_USE_LOGFILE=1; point to
2005-10-20  Elijah Newren  <newren@gmail.com>

	* HACKING: Clarify why METACITY_VERBOSE=1 is bad without
	META_USE_LOGFILE=1; point to bug 305091 for details.
2005-10-21 00:22:38 +00:00
Marcel Telka
37ced4cc32 Updated Slovak translation.
2005-10-17  Marcel Telka  <marcel@telka.sk>

	* sk.po: Updated Slovak translation.
2005-10-17 04:28:32 +00:00
Vincent van Adrighem
0bf176de5b Translation updated.
2005-10-15  Vincent van Adrighem  <adrighem@gnome.org>

	* nl.po: Translation updated.
2005-10-15 12:57:14 +00:00
Vincent van Adrighem
f4a587f05e Translation updated.
2005-10-14  Vincent van Adrighem  <adrighem@gnome.org>

	* nl.po: Translation updated.
2005-10-14 12:25:09 +00:00
Kostas Papadimas
27b0a5e0b0 Updated Greek translation 2005-10-14 09:38:59 +00:00
Muktha
62fb5e6eb4 Make the unfocussed Simple window border visible with high contrast
2005-10-13  Muktha  <muktha.narayan@wipro.com>

        * src/themes/Simple/metacity-theme-1.xml: Make the unfocussed
        Simple window border visible with high contrast inverse theme.
        Fixes #121361.
2005-10-13 05:51:24 +00:00
Priit Laes
9292fe606a Translation updated by Ivar Smolin.
2005-10-10  Priit Laes  <plaes@cvs.gnome.org>

	* et.po: Translation updated by Ivar Smolin.
2005-10-10 19:36:56 +00:00
Elijah Newren
7ef871f73a Fix a crash that occurs when removing some virtual desktops and windows
2005-10-08  Elijah Newren  <newren@gmail.com>

	Fix a crash that occurs when removing some virtual desktops and
	windows happen to be on those desktops.  #318306.

	* src/workspace.c (meta_workspace_relocate_windows): Since windows
	cannot be on more than one workspace at a time, remove the window
	from the old workspace before adding it to the new one.
2005-10-08 23:18:05 +00:00
Elijah Newren
29e38a2f53 Add my copyright notice to a number of files on which it should already
2005-10-08  Elijah Newren  <newren@gmail.com>

	Add my copyright notice to a number of files on which it should
	already exist.
2005-10-08 19:38:54 +00:00
Alexander Shopov
3e77dd1ace Updated Bulgarian translation by Alexander Shopov <ash@contact.bg>
2005-10-04  Alexander Shopov  <ash@contact.bg>

	* bg.po: Updated Bulgarian translation by
	Alexander Shopov <ash@contact.bg>
2005-10-04 07:42:02 +00:00
Funda Wang
5b28d889fa Updated Simplified Chinese translation 2005-10-04 06:49:38 +00:00
Adam Weinberger
fcf89cc2fa Updated Canadian English translation.
2005-10-04  Adam Weinberger  <adamw@gnome.org>

	* en_CA.po: Updated Canadian English translation.
2005-10-04 04:06:13 +00:00
Elijah Newren
0a13bf3270 clarify the meaning of the auto_raise preference. Fixes one of the issues
2005-10-03  Elijah Newren  <newren@gmail.com>

	* src/metacity.schemas.in: clarify the meaning of the auto_raise
	preference.  Fixes one of the issues in #312421.
2005-10-03 20:10:56 +00:00
Elijah Newren
4aaf6e3eb4 Patch from Ross Cohen to make alt-esc consistent with alt-tab by leaving
2005-10-03  Elijah Newren  <newren@gmail.com>

	Patch from Ross Cohen to make alt-esc consistent with alt-tab by
	leaving stacking of unselected windows unchanged.  Fixes #314285.

	* src/keybindings.c (process_tab_grab): before raising and showing
	the next candidate, reset the stack positions to what they were
	at the beginning of the grab
2005-10-03 20:05:44 +00:00
Elijah Newren
12daca5cb1 Patch from Ross Cohen to make alt-esc (show windows instantly) actually
2005-10-03  Elijah Newren  <newren@gmail.com>

	Patch from Ross Cohen to make alt-esc (show windows instantly)
	actually show minimized windows too.  Fixes #107072.

	* src/keybindings.c (process_tab_grab): initialize tab_unminimized
	to FALSE for the target window when starting the grab, when
	advancing through the list check to find the previous window and
	re-minimize it if it was tab-unminimized, unminimize the new
	window we're alt-esc'ing to if it's minimized, (do_choose_window):
	raise and unminimize the initial window as well in alt-esc'ing

	* src/window.h (struct _MetaWindow): add a tab_unminimized field

	* src/window.c (meta_window_new_with_attrs): initialize
	tab_unminimized to false
2005-10-03 20:02:31 +00:00
Elijah Newren
1a8c2aa027 Branched for Gnome 2.13. :-)
2005-10-03  Elijah Newren  <newren@gmail.com>

	Branched for Gnome 2.13.  :-)

	* configure.in: bump version to 2.13.0.  Add UNSTABLE warning.
	* README: add 2.13.x to the list of unstable branches
2005-10-03 19:53:55 +00:00
Elijah Newren
26dbf9856b A combination of a couple memory leaks fixes, from Kjartan, Soeren, and I.
2005-10-03  Elijah Newren  <newren@gmail.com>

	A combination of a couple memory leaks fixes, from Kjartan,
	Soeren, and I.  Fixes #313030.

	* src/bell.c (meta_bell_flash_screen): call XFreeGC()

	* src/frames.c (invalidate_cache): free pixels

	* src/window.c (meta_window_show_menu): call
	meta_screen_free_workspace_layout()
2005-10-03 19:22:40 +00:00
Elijah Newren
ea4cd88285 Patch from Björn Lindqvist fix the workspace switcher tabpopup to display
2005-10-03  Elijah Newren  <newren@gmail.com>

	Patch from Björn Lindqvist fix the workspace switcher tabpopup to
	display the right windows and to fix the
	pick-a-new-window-to-focus algorithm in order to not select
	windows that aren't showing.  Fixes #170475.

	* src/tabpopup.c (meta_convert_meta_to_wnck,
	meta_select_workspace_expose_event): factor out conversion code
	from meta_select_workspace_expose_event() into the new
	meta_convert_meta_to_wnck() function

	* src/tabpopup.c (meta_select_workspace_expose_event):
	* src/workspace.c (focus_ancestor_or_mru_window):
	replace the buggy window->minimized logic with
	!meta_window_showing_on_its_workspace (window)
2005-10-03 19:06:17 +00:00
Elijah Newren
47f1a8634b Patch from Björn Lindqvist to have ancestors come along with the
2005-10-03  Elijah Newren  <newren@gmail.com>

	Patch from Björn Lindqvist to have ancestors come along with the
	transient when moving the window from one workspace to another.
	Fixes #314977.

	* src/window.c (meta_window_change_workspace): have all ancestors
	change workspaces too
2005-10-03 19:00:01 +00:00
Elijah Newren
c3624745ae post-release version bump to 2.12.2
2005-10-03  Elijah Newren  <newren@gmail.com>

	* configure.in: post-release version bump to 2.12.2
2005-10-03 18:35:55 +00:00
Elijah Newren
2aee817a56 2.12.1 release
2005-10-03  Elijah Newren  <newren@gmail.com>

	* NEWS:	2.12.1 release
2005-10-03 18:34:18 +00:00
Elijah Newren
ef5299ee92 Truncate ridiculously long titles to avoid crashing or letting the pager
2005-10-03  Elijah Newren  <newren@gmail.com>

	Truncate ridiculously long titles to avoid crashing or letting the
	pager crash.  Based on patch from Ray, incorporating suggestions
	from Havoc and some extensions of my own.  Fixes #315070.

	* src/display.c (set_utf8_string_hint, meta_display_open):
	* src/xprops.[ch] (meta_prop_set_utf8_string_hint):
	Move set_utf8_string_hint() to props.[ch], namespace it
	("meta_prop_"), and make it public

	* src/tabpopup.c (utf8_strndup, meta_ui_tab_popup_new):
	* src/util.[ch] (meta_g_utf8_strndup):
	Move utf8_strndup() to util.[ch], namespace it ("meta_g_"), and
	make it public

	* src/display.c (meta_display_open):
	* src/display.h (struct _MetaDisplay):
	add net_wm_visible_name and net_wm_visible_icon_name atoms to the
	list of atoms we work with

	* src/window-props.c (set_window_title, set_icon_title): If title
	length is greater than 512, truncate it and set
	_NET_WM_VISIBLE_NAME or _NET_WM_VISIBLE_ICON_NAME accordingly
2005-10-03 18:13:45 +00:00
Elijah Newren
fcba59e685 Get the tabbing window outline to work with gtk+ 2.8.4 again. Fixes
2005-10-03  Elijah Newren  <newren@gmail.com>

	Get the tabbing window outline to work with gtk+ 2.8.4 again.
	Fixes #317528.

	* src/tabpopup.c (display_entry): gtk+ 2.8.4 needs to know the
	mapped state of its windows (see bug 316180), and since we
	manually map with gdk_window_show_unraised() we need to manually
	set the mapped state too
2005-10-03 17:11:49 +00:00
Runa Bhattacharjee
662da0ec3c Added Entry for Updation of Bengali (bn) Translation:10/03 2005-10-03 05:46:53 +00:00
Runa Bhattacharjee
66c5548061 Updated Bengali (bn) Translation:10/03 2005-10-03 05:46:30 +00:00
Christian Rose
9503b4ba21 Fix the date in the ChangeLog entry. 2005-10-02 21:45:32 +00:00
Christian Rose
72c5649bc3 Reverted unauthorized changes made by user 'kloczek'.
2005-09-29  Christian Rose  <menthos@menthos.com>

	* sv.po: Reverted unauthorized changes made by
	user 'kloczek'.
2005-10-02 21:37:52 +00:00
Alessio Frusciante
43d72674e9 Updated Italian translation. 2005-09-26 20:07:26 +00:00
Funda Wang
943f4f66fb Updated Simplified Chinese translation 2005-09-24 15:17:34 +00:00
Francisco Javier F. Serrador
997b5dcccf Updated Spanish translation.
2005-09-21  Francisco Javier F. Serrador  <serrador@cvs.gnome.org>

	* es.po: Updated Spanish translation.
2005-09-21 18:35:16 +00:00
Christian Rose
94da2b94d7 Updated Swedish translation.
2005-09-20  Christian Rose  <menthos@menthos.com>

	* sv.po: Updated Swedish translation.
2005-09-20 19:59:25 +00:00
Tomasz Kłoczko
c502053ffc removed outdated strings and run "make update-po". 2005-09-19 14:25:36 +00:00
Nguyen Thai Ngoc Duy
213833f333 Fixed Kông 2005-09-17 05:40:13 +00:00
Clytie Siddall
9136686aa4 vi.po: Updated Vietnamese translation. 2005-09-16 07:45:55 +00:00
Inaki Larranaga
8eed998780 Updated Basque translation.
2005-09-08  Inaki Larranaga  <dooteo@euskalgnu.org>

	* eu.po: Updated Basque translation.
2005-09-08 18:52:51 +00:00
Priit Laes
0d1c28948d Translation updated by Ivar Smolin.
2005-09-07  Priit Laes  <plaes@cvs.gnome.org>

	* et.po: Translation updated by Ivar Smolin.
2005-09-07 05:18:49 +00:00
Elijah Newren
d02dc0e89a file constraints-ideas.txt was initially added on branch constraints_experiments. 2005-09-06 21:51:06 +00:00
Elijah Newren
b4f123c332 post-release version bump to 2.12.1
2005-09-05  Elijah Newren  <newren@gmail.com>

	* configure.in: post-release version bump to 2.12.1
2005-09-05 23:29:24 +00:00
Elijah Newren
422ee61608 2.12.0 release
2005-09-05  Elijah Newren  <newren@gmail.com>

	* configure.in:
	* README:
	* NEWS:
	2.12.0 release
2005-09-05 23:28:16 +00:00
Danilo Šegan
06df0d64ad Added Armenian translation. 2005-09-04 16:19:12 +00:00
Ignacio Casal Quinteiro
4c96a68427 *** empty log message *** 2005-09-04 09:26:15 +00:00
Elijah Newren
86bbde337c Add tips on how to more easily get the ids of windows, and how to shorten
2005-09-03  Elijah Newren  <newren@gmail.com>

	* HACKING: Add tips on how to more easily get the ids of windows,
	and how to shorten xprop output.
2005-09-03 23:33:27 +00:00
Danilo Šegan
809a1c173f Updated Serbian translation. 2005-09-03 19:07:50 +00:00
Amanpreet Singh Alam
735188fd2b update by amanpreetalam@yahoo.com 2005-09-02 19:45:30 +00:00
Brent Smith
6bb6566b86 Moved the call to meta_screen_get_natural_xinerama_list to earlier in
2005-09-02  Brent Smith  <gnome@nextreality.net>

        * src/place.c: (meta_window_place): Moved the call to
        meta_screen_get_natural_xinerama_list to earlier in
        function so that xineramas_list is allocated before
        find_first_fit is called.  Fixes #315000
2005-09-02 15:54:34 +00:00
Leonid Kanter
304a05b9a3 Updated Russian translation 2005-09-02 10:48:31 +00:00
Baris Cicek
7f90738dba Updated Turkish translation 2005-09-01 16:09:45 +00:00
Žygimantas Beručka
909de04b89 Updated Lithuanian translation.
2005-08-31  Žygimantas Beručka  <zygis@gnome.org>

	* lt.po: Updated Lithuanian translation.
2005-08-31 07:49:41 +00:00
Hendrik Richter
b751ceb159 Updated German translation.
2005-08-30  Hendrik Richter  <hendi@gnome-de.org>

	* de.po: Updated German translation.
2005-08-30 14:56:26 +00:00
Jens Seidel
feebb2f42e Typo corrections 2005-08-29 21:40:20 +00:00
Changwoo Ryu
2139d4e25e Updated Korean translation by Young-Ho Cha.
2005-08-30  Changwoo Ryu  <cwryu@debian.org>

	* ko.po: Updated Korean translation by Young-Ho Cha.
2005-08-29 17:35:59 +00:00
Telsa Gwynne
3ed91c8e14 Updated Welsh translation 2005-08-29 16:03:54 +00:00
Christophe Merlet
02d6e62aec Updated French translation. 2005-08-28 11:56:46 +00:00
Vincent van Adrighem
8126d0953d Translation updated by Michiel Sikkes.
2005-08-25  Vincent van Adrighem  <adrighem@gnome.org>

	* nl.po: Translation updated by Michiel Sikkes.
2005-08-25 16:03:03 +00:00
Elijah Newren
fc6dbd84b9 post-release version bump to 2.11.5
2005-08-22  Elijah Newren  <newren@gmail.com>

	* configure.in: post-release version bump to 2.11.5
2005-08-22 19:05:18 +00:00
Elijah Newren
e16863f783 2.11.3 release
2005-08-22  Elijah Newren  <newren@gmail.com>

	* NEWS:	2.11.3 release
2005-08-22 19:03:58 +00:00
Elijah Newren
96c238bbc6 Patch from Björn Lindqvist to check for the appropriate versions of glib
2005-08-22  Elijah Newren  <newren@gmail.com>

	* configure.in: Patch from Björn Lindqvist to check for the
	appropriate versions of glib and gtk.  Fixes #314116.
2005-08-22 18:40:07 +00:00
Josep Puigdemont i Casamajó
2df2e18a9b Updated Catalan translation. 2005-08-20 14:00:55 +00:00
Priit Laes
5305e17392 Translation updated by Ivar Smolin.
2005-08-19  Priit Laes  <plaes@cvs.gnome.org>

	* et.po: Translation updated by Ivar Smolin.
2005-08-19 05:55:01 +00:00
Laurent Dhima
cb19fdc3ce Updated Albanian translation.
2005-08-17  Laurent Dhima  <laurenti@alblinux.net>

	* sq.po: Updated Albanian translation.
2005-08-17 10:04:01 +00:00
Maxim Dziumanenko
7d1e1b042f Updated Ukrainian translation.
2005-08-15  Maxim Dziumanenko <mvd@mylinux.ua>

	* Updated Ukrainian translation.
2005-08-15 21:39:07 +00:00
Gabor Kelemen
4b4d6cac42 Hungarian translation updated.
2005-08-15  Gabor Kelemen  <kelemeng@gnome.hu>

	* hu.po: Hungarian translation updated.
2005-08-14 22:13:03 +00:00
Mugurel Tudor
905a92a20a Updated Romanian translation
2005-08-15  Mugurel Tudor  <mugurelu@gnome.ro>

        * ro.po: Updated Romanian translation
2005-08-14 21:51:32 +00:00
Mohammad DAMT
f1bcb6b51a Updated Indonesian translation
2005-08-14  Mohammad DAMT  <mdamt@gnome.org>

  * id.po: Updated Indonesian translation
2005-08-14 07:28:08 +00:00
Kostas Papadimas
a39cb116c7 Updated Greek Translation 2005-08-13 10:08:17 +00:00
Elijah Newren
87f613fbbe Avoid obscuring centered-on-desktop windows which are denied focus. Fixes
2005-08-12  Elijah Newren  <newren@gmail.com>

        * src/place.c (meta_window_place): Avoid obscuring
        centered-on-desktop windows which are denied focus.  Fixes
        #313234.
2005-08-13 03:58:24 +00:00
Duarte Loreto
f38e760506 Updated Portuguese translation.
2005-08-11  Duarte Loreto <happyguy_pt@hotmail.com>

	* pt.po: Updated Portuguese translation.
2005-08-11 16:16:20 +00:00
Alexander Shopov
05dcc58174 Updated Bulgarian translation by Rostislav Raykov <zbrox@i-space.org>
2005-08-10  Alexander Shopov  <ash@contact.bg>

	* bg.po: Updated Bulgarian translation by
	Rostislav Raykov <zbrox@i-space.org>
2005-08-10 19:38:56 +00:00
Elijah Newren
ce42492db4 Use consistent notation; [#bug-number] not [bug-number] 2005-08-08 23:03:28 +00:00
Elijah Newren
893fadf7d6 post-release version bump to 2.11.3
2005-08-08  Elijah Newren  <newren@gmail.com>

	* configure.in: post-release version bump to 2.11.3
2005-08-08 21:49:50 +00:00
Elijah Newren
a182b353ce 2.11.2 release
2005-08-08  Elijah Newren  <newren@gmail.com>

	* NEWS:	2.11.2 release
2005-08-08 21:48:08 +00:00
Elijah Newren
f335b0c381 Patch from Brent Smith to fix a duplicate string. Fixes #309774.
2005-08-08  Elijah Newren  <newren@gmail.com>

	Patch from Brent Smith to fix a duplicate string.  Fixes #309774.

	* src/theme-parser.c (parse_toplevel_element, parse_draw_op_element):

	Change "No \"%s\" attribute on element <%s>" string to "No \"%s\"
	attribute on <%s> element"
2005-08-08 21:31:31 +00:00
Ray Strode
2972ab6df6 Improve the behavior of keyboard move/resize and edge snapping. Still not
2005-08-03  Ray Strode  <rstrode@redhat.com>

	Improve the behavior of keyboard move/resize and edge
	snapping.  Still not perfect, bug 310888.

	* src/effects.c (draw_xor_rect): Make the outside of a
	wireframe rectangle line up with the outside edge of its
	window, instead of centering the wireframe edges on the
	window edges.

	* src/keybindings.c (process_keyboard_move_grab): allow
	edge snapping in wireframe mode.  Adjust code to take
	into account changed semantics of find_next_*_edge
	functions.
	(process_keyboard_resize_grab_op_change): new function
	to take some orthogonal logic out of
	process_keyboard_resize_grab_op.  Only allow keyboard
	resize cursor to go to flat edges, not corners.
	(process_keyboard_resize_grab):  allow edge snapping in
	wireframe mode.  Fix up snapping logic.

	* src/place.c (get_{vertical,horizontal}_edges): use
	GArray instead of int *, since the number of output
	edges isn't known until the middle of the function now.
	Use xor rect extents instead of window extends if in
	wireframe mode.
	(meta_window_find_next_{vertical,horizontal}_edge: add
	new source_edge_position parameter to specify which edge
	on the active window to start from when looking for next
	edge on the screen. Return the coordinate of the edge
	found and not the coordinate of where the window should be
	moved to snap to where the edge was found.

	* src/window.c (update_move): all the user to specify
	an edge to resize with mouse in keyboard resize mode.
	window
2005-08-03 02:22:00 +00:00
Chao-Hsiung Liao
8e927fd300 Updated Traditional Chinese translation.
2005-08-02  Chao-Hsiung Liao  <j_h_liau@yahoo.com.tw>

	* zh_TW.po: Updated Traditional Chinese translation.
2005-08-02 12:30:10 +00:00
Elijah Newren
c50c8e6f7d Change default theme from "Simple" to "Clearlooks".
2005-08-01  Elijah Newren  <newren@gmail.com>

	* src/metacity.schemas.in: Change default theme from "Simple" to
	"Clearlooks".
2005-08-01 14:56:24 +00:00
Rajesh Ranjan
d8a1b9750b upded by rranjan@redhat.com 2005-08-01 09:41:23 +00:00
Elijah Newren
1b2e5e56a8 use only the expected_focus_window instead of both the focused_window and
2005-07-31  Elijah Newren  <newren@gmail.com>

	* src/stack.c (is_focused_foreach, get_standalone_layer): use only
	the expected_focus_window instead of both the focused_window and
	the expected_focus_window.  Removes an infinite flicker loop in
	sloppy and mouse focus, and an ugly one time flicker in click to
	focus.  Fixes #311400.
2005-08-01 04:58:58 +00:00
Yair Hershkovitz
7a9be72bdf Updated Hebrew translation by Yuval Tanai.
2005-07-31  Yair Hershkovitz  <yairhr@gmail.com>

	* he.po: Updated Hebrew translation by Yuval Tanai.
2005-07-31 12:52:13 +00:00
Elijah Newren
d5705ef576 Patch from Jaap Haitsma to make sure that Metacity dialogs have icons.
2005-07-30  Elijah Newren  <newren@gmail.com>

        Patch from Jaap Haitsma to make sure that Metacity dialogs have
        icons.  Fixes #309876.

        * src/metacity-dialog.c (kill_window_question,
        warn_about_no_sm_support, error_about_command): call
        gtk_window_set_icon_name() to set the dialog icon
2005-07-30 15:18:01 +00:00
Elijah Newren
20b7ee18ef remove some unneeded debug spew that was causing crashes. Fixes #311819.
2005-07-28  Elijah Newren  <newren@gmail.com>

	* src/place.c (avoid_being_obscured_as_second_modal_dialog):
	remove some unneeded debug spew that was causing crashes.  Fixes
	#311819.
2005-07-28 19:05:28 +00:00
Artur Flinta
7311386172 Updated Polish translation by GNOME PL Team.
2005-07-28  Artur Flinta  <aflinta@cvs.gnome.org>

	* pl.po: Updated Polish translation by GNOME PL Team.
2005-07-28 13:11:23 +00:00
Raphael Higino
91e594863c Converted to UTF-8 2005-07-26 15:12:11 +00:00
Raphael Higino
455dbdf67a Updated pt_BR translation 2005-07-26 15:06:48 +00:00
Elijah Newren
7f1fd68952 post-release version bump to 2.11.2
2005-07-24  Elijah Newren  <newren@gmail.com>

	* configure.in: post-release version bump to 2.11.2
2005-07-25 03:36:53 +00:00
Elijah Newren
9c97fd2b9b 2.11.1 release
2005-07-24  Elijah Newren  <newren@gmail.com>

	* NEWS:	2.11.1 release
2005-07-25 03:32:50 +00:00
Elijah Newren
266f78d9a8 try to place windows denied focus near the focus window and fix a xinerama
2005-07-24  Elijah Newren  <newren@gmail.com>

	* src/place.c (find_most_freespace): try to place windows denied
	focus near the focus window and fix a xinerama bug with the
	placement, (avoid_being_obscured_as_a_second_modal_dialog): avoid
	modal dialogs being obscured in somewhat pathologically strange
	circumstances that Eclipse seems to be good at triggering,
	(meta_window_place): have dialog windows make use of
	avoid_being_obscured_as_a_second_modal_dialog().  Fixes one of the
	issues found in #307875.
2005-07-25 02:12:58 +00:00
Elijah Newren
c25b8ec616 raise the window as well as its ancestor; fixes a stacking bug with an
2005-07-24  Elijah Newren  <newren@gmail.com>

	* src/window.c (meta_window_raise): raise the window as well as
	its ancestor; fixes a stacking bug with an ancestor that has more
	than one child window.  Fixes one of the issues in #307875.
2005-07-25 01:52:50 +00:00
Elijah Newren
c64bda776b restore original window size if the window was maximized, as the FIXME
2005-07-24  Elijah Newren  <newren@gmail.com>

	* src/window.c (meta_window_free): restore original window size if
	the window was maximized, as the FIXME says.  ;-) Fixes #137185.
2005-07-25 01:39:24 +00:00
Ilkka Tuohela
ef5c3f976a Updated Finnish translation 2005-07-24 18:16:22 +00:00
Kjartan Maraas
7e2a44039f Updated Norwegian bokmål translation. Same
2005-07-24  Kjartan Maraas  <kmaraas@gnome.org>

	* nb.po: Updated Norwegian bokmål translation.
	* no.po: Same
2005-07-24 17:02:05 +00:00
Elijah Newren
225407f3b3 revert the patch from #128380--change _NET_ACTIVE_WINDOW behavior to what
2005-07-23  Elijah Newren  <newren@gmail.com>

	* src/window.c: (meta_window_activate): revert the patch from
	#128380--change _NET_ACTIVE_WINDOW behavior to what it originally
	was.
2005-07-24 01:13:41 +00:00
Clytie Siddall
845a7fe554 vi.po: Updated Vietnamese translation. 2005-07-23 11:19:42 +00:00
Funda Wang
969a4ab3ef Updated Simplified Chinese translation 2005-07-23 08:11:47 +00:00
Nguyen Thai Ngoc Duy
10ea37ec4a Merged from gnome-2.10 2005-07-21 11:47:47 +00:00
Ankitkumar Rameshchandra Patel
b102891467 updated Translations 2005-07-21 07:48:29 +00:00
Marcel Telka
4c143b3635 Updated Slovak translation.
2005-07-20  Marcel Telka  <marcel@telka.sk>

	* sk.po: Updated Slovak translation.
2005-07-20 21:36:56 +00:00
Ivan Stojmirov
eb04fe1ec7 done 2005-07-20 21:35:12 +00:00
Adam Weinberger
2126caf511 Updated Canadian English translation.
2005-07-18  Adam Weinberger  <adamw@gnome.org>

	* en_CA.po: Updated Canadian English translation.
2005-07-18 09:02:10 +00:00
Matthias Clasen
b6fa0deff3 Forgotten configure changes for the cursor theme changes. 2005-07-18 04:13:12 +00:00
Christophe Merlet
10ee3e89dc Updated French translation. 2005-07-17 17:25:06 +00:00
Francisco Javier F. Serrador
364b402e8d Updated Spanish translation.
2005-07-17  Francisco Javier F. Serrador  <serrador@cvs.gnome.org>

	* es.po: Updated Spanish translation.
2005-07-17 10:49:34 +00:00
Theppitak Karoonboonyanan
65e2f2ba4b Updated Thai translation.
2005-07-17  Theppitak Karoonboonyanan  <thep@linux.thai.net>

	* th.po: Updated Thai translation.
2005-07-17 02:25:42 +00:00
Nikos Charonitakis
4c7dc0bbb4 Updated Greek translation 2005-07-16 22:52:06 +00:00
Takeshi AIHANA
1b52fa05e6 Fixed encoding to UTF-8.
2005-07-16  Takeshi AIHANA <aihana@gnome.gr.jp>

	* ja.po: Fixed encoding to UTF-8.
2005-07-16 01:18:02 +00:00
Takeshi AIHANA
3f214dd33d Updated Japanese translation for v2.11.0.
2005-07-16  Takeshi AIHANA <aihana@gnome.gr.jp>

	* ja.po: Updated Japanese translation for v2.11.0.
2005-07-16 01:13:57 +00:00
Ignacio Casal Quinteiro
b54ff6be9f *** empty log message *** 2005-07-15 15:05:38 +00:00
Yair Hershkovitz
c62efca089 Updated Hebrew translation.
2005-07-14  Yair Hershkovitz  <yairhr@gmail.com>

	* he.po: Updated Hebrew translation.
2005-07-14 21:02:35 +00:00
Elijah Newren
6c023bfef7 Patch from Ken Harris to provide a more lenient threshold for drawing
2005-07-14  Elijah Newren  <newren@gmail.com>

	Patch from Ken Harris to provide a more lenient threshold for
	drawing rounded corners.  Fixes #122065.

	* src/theme.c (meta_frame_layout_calc_geometry): use height +
	width > 5 instead of height > 3 && width > 3 as criterion
2005-07-14 21:00:26 +00:00
Miloslav Trmac
020736a42f Updated Czech translation.
2005-07-14  Miloslav Trmac  <mitr@volny.cz>

	* cs.po: Updated Czech translation.
2005-07-14 09:06:43 +00:00
Elijah Newren
c635ac51cb Fix a slight bug (causing possible miscoloring of parts of the titlebar)
2005-07-13  Elijah Newren  <newren@gmail.com>

	Fix a slight bug (causing possible miscoloring of parts of the
	titlebar) introduced by the patch from #169982.

	* src/gradient.c:
	(meta_gradient_create_interwoven):
	(meta_gradient_create_multi_vertical):

	bitshifting operators do not take precedence over typecasting, so
	make sure to use parentheses to get the right operation order.
2005-07-13 18:24:56 +00:00
Marcel Telka
053c1b9d19 Updated Slovak translation.
2005-07-13  Marcel Telka  <marcel@telka.sk>

	* sk.po: Updated Slovak translation.
2005-07-13 05:11:19 +00:00
Elijah Newren
241a44e69c post-release version bump to 2.11.1
2005-07-12  Elijah Newren  <newren@gmail.com>

	* configure.in: post-release version bump to 2.11.1
2005-07-12 23:19:16 +00:00
Elijah Newren
b22e85f81a 2.11.0 release
2005-07-12  Elijah Newren  <newren@gmail.com>

	* NEWS:	2.11.0 release
2005-07-12 23:18:04 +00:00
Elijah Newren
7bda73a415 Patch from Andrew Johnson to speed up vertical gradients. Fixes #169982.
2005-07-12  Elijah Newren  <newren@gmail.com>

	Patch from Andrew Johnson to speed up vertical gradients.  Fixes
	#169982.

	* src/gradient.c:
	(meta_gradient_create_interwoven):
	(meta_gradient_create_vertical):
	(meta_gradient_create_multi_vertical):

	use memcpy instead of really long loops to set values in memory to
	a given pattern.
2005-07-12 22:34:25 +00:00
Elijah Newren
0e956c674f Patch from Björn Lindqvist to split up main() into more manageable chunks
2005-07-12  Elijah Newren  <newren@gmail.com>

	Patch from Björn Lindqvist to split up main() into more manageable
	chunks and make use of GOpt.  Closes #305331.

	* src/main.c (usage): remove this function,
	(meta_print_compilation_info): new function taken from main(),
	(meta_print_self_identity): new function taken from main(),
	(struct MetaArguments) new struct to replace some free variables,
	(meta_parse_options): new funcion taken from main() but now using
	GOpt, (meta_select_display): new function taken from main()
2005-07-12 20:54:34 +00:00
Aivars Kalvans
d09fb9f806 free ->xinerama_infos Closes bug#307884
2005-07-12  Aivars Kalvans <aivars.kalvans@inbox.lv>

        * src/screen.c (meta_screen_free): free ->xinerama_infos
        Closes bug#307884
2005-07-12 19:01:38 +00:00
Priit Laes
61c6519798 Translation updated by Ivar Smolin.
2005-07-12  Priit Laes  <plaes@cvs.gnome.org>

	* et.po: Translation updated by Ivar Smolin.
2005-07-11 21:36:13 +00:00
Elijah Newren
786af7ea61 Stuff I forgot to do when I branched an hour or so ago before Matthias'
2005-07-11  Elijah Newren  <newren@gmail.com>

        Stuff I forgot to do when I branched an hour or so ago before
        Matthias' commit...

        * configure.in: bump version to 2.11.0.  Add UNSTABLE warning.
        * README: add 2.11.x to the list of unstable branches
2005-07-11 13:31:53 +00:00
Matthias Clasen
8ce054b21b React to cursor theme changes: (#308106)
2005-07-11  Matthias Clasen  <mclasen@redhat.com>

	React to cursor theme changes: (#308106)

	* src/prefs.h:
	* src/prefs.c: Expose the GConf keys for cursor theme
	and size as preferences META_PREF_CURSOR_THEME and
	META_PREF_CURSOR_SIZE with getters meta_prefs_get_cursor_theme()
	and meta_prefs_get_cursor_size().

	* src/display.c (meta_display_open): Initialize the cursor
	theme and size.

	* src/display.h:
	* src/display.c (meta_display_set_cursor_theme): New function
	to change the cursor theme and update all cursors.

	* src/screen.h
	* src/screen.c (meta_screen_update_cursor): New function to
	refesh the root cursor of a screen.

	* src/main.c (prefs_changed_callback): Update the cursor
	theme when the cursor preferences change.
2005-07-11 13:25:08 +00:00
Clytie Siddall
7335b44d3e vi.po: Updated Vietnamese translation.CVS: ---------------------------------------------------------------------- 2005-07-08 06:55:05 +00:00
Christian Rose
e4bd174a7b Updated Galician translation by Ignacio Casal Quinteiro
2004-07-06  Christian Rose  <menthos@menthos.com>

	* gl.po: Updated Galician translation by
	Ignacio Casal Quinteiro <nacho.resa@gmail.com>.
2005-07-06 06:24:12 +00:00
Hendrik Richter
3a6a4966e2 Fixed German translation by Jens Seidel <jensseidel@users.sf.net>.
2005-07-04  Hendrik Richter  <hendi@gnome-de.org>

	* de.po: Fixed German translation by
	Jens Seidel <jensseidel@users.sf.net>.
2005-07-04 18:03:31 +00:00
Ivan Stojmirov
14d54719d7 translated 98% 2005-07-03 11:52:06 +00:00
Elijah Newren
bd56f4ec07 post-release version bump to 2.10.3
2005-06-27  Elijah Newren  <newren@gmail.com>

	* configure.in: post-release version bump to 2.10.3
2005-06-27 23:27:33 +00:00
Elijah Newren
3b6f14fa6f 2.10.2 release
2005-06-27  Elijah Newren  <newren@gmail.com>

	* NEWS:	2.10.2 release
2005-06-27 23:26:24 +00:00
Soeren Sandmann
947e45d27d Add a cache of pixmaps for recently exposed frame areas. Makes metacity a
Sun Jun 26 11:19:18 2005  Soeren Sandmann  <sandmann@redhat.com>

	* src/frames.c: Add a cache of pixmaps for recently exposed frame
	areas. Makes metacity a bit faster when dragging windows around.
	See bug 141813.
2005-06-26 21:58:37 +00:00
Rajesh Ranjan
a85aea8b18 updted by rranjan@redhat.com 2005-06-24 07:53:13 +00:00
Ignacio Casal Quinteiro
c35bc07c74 *** empty log message *** 2005-06-23 17:22:46 +00:00
Kwok-Koon Cheung
4f98706852 fix language team reference 2005-06-23 01:22:12 +00:00
Rajesh Ranjan
b5b0255e4c updtaed by rranjan@redhat.com 2005-06-15 06:09:12 +00:00
Ryan Lortie
e003ba87d1 Prevent using the address of a local variable as a hash key. (Bug #307209)
2005-06-10  Ryan Lortie  <desrt@desrt.ca>

        * src/frames.c: Prevent using the address of a local variable
          as a hash key.  (Bug #307209)

        * src/xprops.c (meta_prop_get_values): Fix a small leak in the
          case of a SYNC_COUNTER property value and HAVE_XSYNC not
          defined.  (Bug #307214)
2005-06-11 02:28:04 +00:00
Ray Strode
064a86e620 Cleanup font data when done with it (bug 306720).
2005-06-07  Ray Strode  <rstrode@redhat.com>

	Cleanup font data when done with it (bug 306720).

	* src/effects.c (draw_xor_rect): free font info structure.
	* src/screen.c (meta_screen_new): pass a 1 not a 0 to
	XFreeFontInfo to free font info structure.
	(meta_screen_free): call XUnloadFont on GC font before freeing
	the GC.
2005-06-07 15:52:56 +00:00
Theppitak Karoonboonyanan
1ff193b819 Updated Thai translation.
2005-06-05  Theppitak Karoonboonyanan  <thep@linux.thai.net>

	* th.po: Updated Thai translation.
2005-06-05 16:26:46 +00:00
Elijah Newren
3fdf721286 If a window requests to be raised and is denied, set the demands attention
2005-06-02  Elijah Newren  <newren@gmail.com>

	* src/window.c (meta_window_configure_request): If a window
	requests to be raised and is denied, set the demands attention
	hint.  Fixes #305882.
2005-06-02 15:47:37 +00:00
Elijah Newren
90dc2116ad if the window has a modal transient which is being unmanaged, don't focus
2005-06-02  Elijah Newren  <newren@gmail.com>

	* src/window.c (meta_window_focus): if the window has a modal
	transient which is being unmanaged, don't focus it.  Fixes the
	Metacity issue reported in #305362.
2005-06-02 15:24:40 +00:00
Priit Laes
d5eaa386dd Translation updated.
2005-06-01  Priit Laes  <plaes@cvs.gnome.org>

	* et.po: Translation updated.
2005-06-01 20:10:27 +00:00
Ray Strode
14b8de3727 Bug 305564 again.
2005-05-30  Ray Strode  <rstrode@redhat.com>

	Bug 305564 again.

	When drawing XOR resize popup use "fixed" font instead of
	-misc-fixed-*-16-* xlfd.  Should work on more xservers.

	Also take steps to fail better if the xserver isn't
	cooperating.

	* src/effects.c (draw_xor_rect): if we can't draw font box
	for whatever reason, at least draw grid frames.

	* src/screen.c (meta_screen_new): use fixed alias instead
	of a xfld.  Don't pass GCFont to XCreateGC if font couldn't
	be loaded.  Print a warning if font couldn't be loaded.
2005-05-30 20:15:26 +00:00
Elijah Newren
1799ef6006 Add a clarification that METACITY_VERBOSE needs to be accompanied by
2005-05-26  Elijah Newren  <newren@gmail.com>

	* HACKING: Add a clarification that METACITY_VERBOSE needs to be
	accompanied by METACITY_USE_LOGFILE
2005-05-26 22:05:04 +00:00
Elijah Newren
be49961944 Patch from Greg Hudson to make sure window position is calculated
2005-05-26  Elijah Newren  <newren@gmail.com>

	* src/window.c (meta_window_configure_request): Patch from Greg
	Hudson to make sure window position is calculated correctly for
	reconfigure requests when part of the XWindowChanges structure is
	uninitialized.  Fixes #305257.
2005-05-26 20:14:15 +00:00
Ray Strode
7b416a0a2d Actually commit the stuff mentioned in the last ChangeLog entry.
2005-05-26  Ray Strode  <rstrode@redhat.com>

	Actually commit the stuff mentioned in the last
	ChangeLog entry.
2005-05-26 19:58:17 +00:00
Ray Strode
2e0d27d0f1 Add a resize popup when resizing constrained windows, (bug 305564).
2005-05-26  Ray Strode  <rstrode@redhat.com>

	Add a resize popup when resizing constrained
	windows, (bug 305564).

	* src/display.c:
	(meta_display_begin_grab_op),
	(meta_display_end_grab_op):
	* src/keybindings.c (process_keyboard_move_grab),
	(process_keyboard_resize_grab): Call
	meta_window_{begin,update,end}_wireframe convenience
	functions instead of the meta_effects counterparts.

	* src/display.h: keep track of old wireframe geometry to
	clean up xor popup on resize

	* src/effects.[ch] (meta_effects_begin_wireframe),
	(meta_effects_update_wireframe),
	(meta_effects_end_wireframe),
	(draw_xor_rect): take optional width and height arguments
	to show to user in resize popup. Draw resize popup if
	width and height >= 0 and wireframe isn't smaller than
	the popup would be.

	* src/screen.c (meta_screen_new): load a largish font for
	the resize popup

	* src/window.[ch]
	(meta_window_move_resize_internal): update
	wireframe resize popup when the window is resized.
	(meta_window_get_wireframe_geometry): new function to
	calculate the numbers to display in resize popup
	(meta_window_begin_wireframe),
	(meta_window_update_wireframe),
	(meta_window_end_wireframe): new functions to reduce
	repetitive wireframe code.  Functions handle updating
	wireframe and resize popup geometry.
	(update_move), (update_resize),
	(meta_window_refresh_resize_popup): remove fixme and
	add debug message.
2005-05-26 19:27:01 +00:00
Elijah Newren
e1891161d0 don't accidentally treat maximize vertically as maximize in both
2005-05-26  Elijah Newren  <newren@gmail.com>

	* src/window.c (check_maximize_to_work_area): don't accidentally
	treat maximize vertically as maximize in both directions.  Fixes
	#302204.
2005-05-26 18:42:55 +00:00
Elijah Newren
eb46b01e97 put all transients of the new window, if any exist, in the calc_showing
2005-05-26  Elijah Newren  <newren@gmail.com>

	* src/window.c: (meta_window_new_with_attrs): put all transients
	of the new window, if any exist, in the calc_showing queue.  Fixes
	#303284.
2005-05-26 17:15:56 +00:00
Nikos Charonitakis
b71671f94f updated Greek translation 2005-05-19 20:35:22 +00:00
Kostas Papadimas
5f23d91c39 Updated Greek Translation. 2005-05-11 11:28:03 +00:00
Adi Attar
54f2bb3648 Updated Xhosa translation.
2005-05-10  Adi Attar  <aattar@cvs.gnome.org>

	* xh.po: Updated Xhosa translation.
2005-05-10 14:41:38 +00:00
Kostas Papadimas
4223bc53f8 Updated Greek Translation. 2005-04-28 11:17:20 +00:00
Priit Laes
7b1f4e8a8b Translation updated by Ivar Smolin.
2005-04-25  Priit Laes  <plaes@cvs.gnome.org>

	* et.po: Translation updated by Ivar Smolin.
2005-04-25 09:43:56 +00:00
Pauli Virtanen
18f7f5f76d Fix a small mistranslation.
2005-04-17  Pauli Virtanen <pauli.virtanen@hut.fi>

	 * fi.po: Fix a small mistranslation.
2005-04-17 17:30:58 +00:00
Søren Sandmann Pedersen
9c4d95d9c8 file lmctypes.h was initially added on branch spiffifity. 2005-04-13 19:04:26 +00:00
Søren Sandmann Pedersen
6f5fedcc7c file lmcbits.c was initially added on branch spiffifity. 2005-04-13 18:45:19 +00:00
Søren Sandmann Pedersen
da578b2e4a file lmcbits.h was initially added on branch spiffifity. 2005-04-13 18:45:19 +00:00
Søren Sandmann Pedersen
030ad7c7fc file lmctexture.c was initially added on branch spiffifity. 2005-04-13 18:45:19 +00:00
Søren Sandmann Pedersen
2876a8ea4d file lmctexture.h was initially added on branch spiffifity. 2005-04-13 18:45:19 +00:00
Elijah Newren
a11aaf96c7 post-release version bump to 2.10.2
2005-04-11  Elijah Newren  <newren@gmail.com>

	* configure.in: post-release version bump to 2.10.2
2005-04-11 22:29:44 +00:00
Elijah Newren
b49c0ec888 2.10.1 release
2005-04-11  Elijah Newren  <newren@gmail.com>

	* NEWS:	2.10.1 release
2005-04-11 22:28:04 +00:00
Christopher Orr
1ba71ab9ff Updated British English translation.
2005-04-09  Christopher Orr  <chris@protactin.co.uk>

	* en_GB.po: Updated British English translation.
2005-04-09 14:13:24 +00:00
Dan Winship
82c8ca4588 Make sure the "Close" button has the focus, not the table. (#172703)
* src/metacity-dialog.c (warn_about_no_sm_support): Make sure the
        "Close" button has the focus, not the table. (#172703)
2005-04-08 14:49:01 +00:00
Roozbeh Pournader
7d9d9f52cd Updated Persian translation by Elnaz Sarbar <elnaz@farsiweb.info>.
2005-04-06  Roozbeh Pournader  <roozbeh@farsiweb.info>

	* fa.po: Updated Persian translation by
	  Elnaz Sarbar <elnaz@farsiweb.info>.
2005-04-06 14:52:45 +00:00
Pawan Chitrakar
9cb157caf8 Added Nepali Translation
2005-04-05  Pawan Chitrakar  <pawan@nplinux.org>

	* ne.po: Added Nepali Translation

	* configure.in: Added ne in ALL_LINGUAS
2005-04-05 04:12:43 +00:00
Gabor Kelemen
8eb38bb871 Hungarian translation updated.
2005-04-03  Gabor Kelemen  <kelemeng@gnome.hu>

	* hu.po: Hungarian translation updated.
2005-04-03 14:15:50 +00:00
Steven Michael Murphy
2b86f5d870 Added new Language, Kinyarwanda (rw), to this package 2005-04-01 01:32:22 +00:00
Adi Attar
0a7bbc9b06 Updated Xhosa translation.
2005-03-29  Adi Attar  <aattar@cvs.gnome.org>

	* xh.po: Updated Xhosa translation.
2005-03-29 13:47:28 +00:00
Adam Weinberger
16012cb7f2 Updated Canadian English translation.
* en_CA.po: Updated Canadian English translation.
2005-03-17 05:26:21 +00:00
Lex Hider
c9592c587e add doc/code-overview.txt and doc/how-to-get-focus-right.txt
2005-03-17  Lex Hider  <Lex.Hider@gmail.com>

	* doc/Makefile.am (EXTRA_DIST): add doc/code-overview.txt and
	doc/how-to-get-focus-right.txt
2005-03-17 00:01:15 +00:00
Baris Cicek
c48b52456b Updated Turkish Translation
* tr.po: Updated Turkish Translation
2005-03-13 01:35:40 +00:00
Adi Attar
48fa3d5fcb Added Xhosa translation. Added "xh" to ALL_LINGUAS.
2005-03-10  Adi Attar  <aattar@cvs.gnome.org>

	* xh.po: Added Xhosa translation.
	* configure.in: Added "xh" to ALL_LINGUAS.
2005-03-10 15:17:34 +00:00
Elijah Newren
5b2061b520 post-release version bump to 2.10.1
2005-03-07  Elijah Newren  <newren@gmail.com>

	* configure.in: post-release version bump to 2.10.1
2005-03-07 16:12:32 +00:00
Elijah Newren
c16108aba3 2.10.0 release
2005-03-07  Elijah Newren  <newren@gmail.com>

	* configure.in:
	* README:
	* NEWS:
	2.10.0 release
2005-03-07 16:11:28 +00:00
Vincent van Adrighem
de4ab5cede Translation updated by Reinout van Schouwen.
2005-03-07  Vincent van Adrighem  <adrighem@gnome.org>

	* nl.po: Translation updated by Reinout van Schouwen.
2005-03-07 13:14:14 +00:00
Mugurel Tudor
1a9d5ef701 Updated Romanian translation
2005-03-07  Mugurel Tudor  <mugurelu@go.ro>

        * ro.po: Updated Romanian translation
2005-03-06 22:07:39 +00:00
Laszlo Dvornik
4fd7ed876d Hungarian translation updated by Gabor Kelemen.
2005-03-04  Laszlo Dvornik  <dvornik@gnome.hu>

	* hu.po: Hungarian translation updated by Gabor Kelemen.
2005-03-04 15:10:20 +00:00
Alexander Shopov
8c2b7c174c Updated Bulgarian translation by Vladimir Petkov <vpetkov@i-space.org>
2005-03-03  Alexander Shopov  <ash@contact.bg>

	* bg.po: Updated Bulgarian translation by
	Vladimir Petkov <vpetkov@i-space.org>
2005-03-03 15:06:41 +00:00
Amanpreet Singh Alam
c56b7d8334 update by amanpreetalam@yahoo.com 2005-03-03 12:09:03 +00:00
Žygimantas Beručka
c897d3f17c Updated Lithuanian translation.
2005-03-03  Žygimantas Beručka  <uid0@akl.lt>

        * lt.po: Updated Lithuanian translation.
2005-03-03 11:41:59 +00:00
Danilo Šegan
f58cf15ac2 Updated Serbian translation. 2005-03-02 22:36:11 +00:00
Kwok-Koon Cheung
e881c2dbda Updated traditional Chinese translation from GNOME HK Team
* zh_TW.po: Updated traditional Chinese translation from GNOME HK Team
2005-03-02 13:58:09 +00:00
Elijah Newren
73b36aa64d post-release version bump to 2.9.55
2005-02-28  Elijah Newren  <newren@gmail.com>

	* configure.in: post-release version bump to 2.9.55
2005-02-28 21:54:29 +00:00
Elijah Newren
3b00d7a6a8 Metacity 2.9.34 unstable release
2005-02-21  Elijah Newren  <newren@gmail.com>

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

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

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

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

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

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

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

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

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

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

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

	* configure.in: post-release version bump to 2.9.34
2005-02-22 02:48:45 +00:00
145 changed files with 71190 additions and 44301 deletions

View File

@@ -15,6 +15,7 @@ ltconfig
ltmain.sh
stamp-h
stamp-h.in
stamp-h1
stamp.h
version.h
config.h.in

1436
ChangeLog

File diff suppressed because it is too large Load Diff

30
HACKING
View File

@@ -69,16 +69,22 @@ Relevant standards and X properties
xprop
in a terminal and click on one of the windows on your screen. That gives
you the x properties for that window. Look through them and get a basic
idea of what's there for kicks. Next, try running
idea of what's there for kicks. Note that you can get rid of some of the
verboseness by grepping out the _NET_WM_ICON stuff, i.e.
xprop | grep -v _NET_WM_ICON
Next, try running
xprop -root
in a terminal. There's all the properties of the root window (which you
can think of as the "main" window). You can also manually specify
individual windows that you want the properties of with
can think of as the "main" Xserver window). You can also manually
specify individual windows that you want the properties of with
xprop -id <id>
if you know the id of the window in question (you can get this from the
_NET_CLIENT_STACKING property of the root window). Finally, it can also
be useful to add "-spy" (without the quotes) to the xprop command to get
it to continually monitor that window and report any changes to you.
if you know the id of the window in question. You can get the id of a
given window by either running xwininfo, e.g.
xwininfo | grep "Window id" | cut -f 4 -d ' '
or by looking at the _NET_CLIENT_STACKING property of the root
window. Finally, it can also be useful to add "-spy" (without the
quotes) to the xprop command to get it to continually monitor that
window and report any changes to you.
Debugging information
Trying to run a window manager under a typical debugger, such as gdb,
@@ -101,6 +107,9 @@ Debugging information
useful to get more information than just warnings. You can set
METACITY_VERBOSE to do that, like so:
METACITY_VERBOSE=1 METACITY_USE_LOGFILE=1 metacity --replace
(note that METACITY_VERBOSE=1 can be problematic without
METACITY_USE_LOGFILE=1; avoid it unless running in from something that
won't be managed by the new Metacity--see bug 305091 for more details).
There are also other flags, such as METACITY_DEBUG, most of which I
haven't tried and don't know what they do. Go to the source code
directory and run
@@ -175,6 +184,13 @@ Debugging information
metacity-message restart
metacity-message enable-keybindings
metacity-message disable-keybindings
The first of these is useful for testing themes, the second is just
another way (besides the --restart flag to metacity itself) of
restarting metacity, and the third is useful for testing Metacity when
running it under an Xnest (typically, the Metacity under the Xnest
wouldn't get keybinding notifications--making keyboard navigation not
work--but if you disable the keybindings for the global Metacity then
the Metacity under the Xnest can then get those keybinding notifications).
metacity-window-demo
metacity-window-demo is good for trying behavior of various kinds

520
NEWS
View File

@@ -1,3 +1,523 @@
2.13.34
==
Thanks to Damien Carbery, Havoc Pennington, S<>ren Sandmann,
Bj<EFBFBD>rn Lindqvist, Kjartan Maraas, Elijah Newren for improvements in
this release.
- manually define HOST_NAME_MAX if not already defined to fix Solaris
compilation issue (Damien, Havoc) [#326745]
- compositor improvements: port to changes in libcm, do it again, fix
unrefing, make minimize animation update again (all done by S<>ren)
- make sure an outline border is shown even if a window decoration's
width is 0 (Bj<42>rn) [#98340]
- correctly handle window alt-tab outlines in showing desktop mode
(Bj<42>rn) [#98340]
- fix lots of tiny issues spotted by the intel compiler (Kjartan)
[#321439]
- prevent rapidly repeated visual bells from hanging metacity
(Elijah) [#322032]
- more careful error handling of values returned by GConf (Elijah)
[#326615]
- fix various initialization and default issues, especially for
running with --disable-gconf. Make --disable-gconf actually work.
(Elijah) [#326661]
- fix some reading-from-free'd-data errors (S<>ren) [#327575]
- fix an unitialized value problem when in raise-on-click mode
(S<>ren) [#327572]
- avoid flashing original-sized window when closing a maximized
window (Elijah) [#317254]
- prevent windows from sometimes getting shoved and smashed by
sliding (and possibly auto-hiding) panels (Elijah) [#327822]
Translations
Ilkka Tuohela (fi), Ignacio Casal Quinteiro (gl), Tino Meinen (nl),
Funda Wang (zh_CN)
2.13.21
==
Thanks to Damien Carbery, Ray Strode, S<>ren Sandmann, Elijah
Newren, Jens Granseuer, and Kyle Ambroff for improvements in this
release.
- Fix Solaris compilation issues (Ray, Damien) [#326281, #326746]
- Merge compositor work from branches to get the beginnings of an openGL
based compositor. Still not ready and thus disabled by default.
(S<>ren)
- Composite fixes: Only update composite on damage events (S<>ren), get
non-composite compilation working again (Elijah), Really turn off
draw-in-a-loop (S<>ren)
- Don't dereference a NULL string (Elijah) [#327013]
- GCC 2.95 fix; remove more C99 style variable initiailizations (Jens)
[#327050]
- Fix accidental overzealous focus holding by the terminal (introduced in
last release) so that windows launched from panel icons, the panel
menu, or global keybindings should get focus now. (Elijah) [#326159]
- If no valid window is found in the MRU list, then set focus to the
desktop window. (Kyle) [#317405]
Translations
Adam Weinberger (en_CA), Francisco Javier F. Serrador (es), Ankit
Patel (gu), Takeshi AIHANA (ja), Theppitak Karoonboonyanan (th),
Clytie Siddall (vi)
2.13.13
==
Thanks to Jens Granseuer, Bj<42>rn Lindqvist, and Elijah Newren for
improvements in this release.
- Remove C99 style variable initiailization (Jens) [#322622]
- Fix a logic error (Bj<42>rn) [#322149]
- Plug a few leaks (Elijah) [#309178]
- Allow edge resistance at both sides of a window and also when edges
don't overlap but are a single pixel away from doing so (Elijah)
[part of #321905]
- Remove the timeout resistance at screen/xinerama edges (Elijah)
[part of #321905]
- Revert to the old edge resistance behavior for keyboard
movement/resizing based resistance (Elijah) [part of #321905]
- Remove the "pull-away" edge resistance (Elijah) [part of #321905]
- Avoid crashing when visual bell is in use and focus window is
closed (Elijah) [#322031]
- Be more strict about what is considered a valid region with partial
struts (Elijah) [#322070]
- Fix reduced resources resize handling for windows with sizing or
resizing constraints (Elijah) [#325774]
- Fix window outline for minimized windows when using alt-esc
(Elijah) [#325092]
- Make the taskbar less flash happy and fix up some related stacking
issues (Elijah) [#326035]
- More thorough handling of source indication (Elijah) [part of #326041]
- Don't "steal" focus from terminal windows for new window mappings
as the difference in usage between terminals and other apps seems
to suggest this difference in treatment. See bug #326159 for
details, feedback welcome (Elijah) [#326159]
- Add a raise on click option, basically only because all the major
distros are patching it in anyway (though each and every one of
them has bugs in their implementations). (Elijah) [#326156]
Translations
Kjartan Maraas (nb), Kjartan Maraas (no)
2.13.8
==
Thanks to Kang Jeong-Hee and Elijah Newren for improvements in this
release.
- Fix some compilation warnings and issues (Kang)
- Escape the title since it is going to be treated as Markup (Elijah)
[#324846]
- Make the workspace switcher work with dual-head (non-xinerama)
setups (Elijah) [#319423]
Translations
Ilkka Tuohela (fi), Ankit Patel (gu), Kang Joeng-Hee (ko)
2.13.5
==
Thanks to Davyd Madeley, Kjartan Maraas, and Bj<42>rn Lindqvist for
improvements in this release.
- Make a debugging message actually correspond to the code (Bj<42>rn)
[#322051]
- Make the wireframe a bit slimmer (Kjartan) [#320051]
- Display hostname in titlebar for remote X clients (Davyd) [#322202]
Translations
Miloslav Trmac (cs), Adam Weinberger (en_CA), Ankit Patel (gu),
Kjartan Maraas (nb), Kjartan Maraas (no), Marcel Telka (sk)
2.13.3
==
This is a special edition release just for gicmo, code-named 'elijah,
please do a release so magic seb can bring it to me'. It fixes a
number of issues due to the major constraints changes found since the
last release.
Thanks to Davyd Madeley and Elijah Newren for improvements in this release.
- Differentiate between movement towards an edge and movement away from
one for edge-resistance. Pick smaller constants for movement away from
an edge (Elijah)
- Use GPOINTER_TO_INT() macro instead of cast to allow compilation on
64-bit architectures without warning (Davyd)
- compute the frame geometry due to maximization only after actually
maximizing (Elijah) [#321902]
- add some developer documentation on updating struts, workareas, regions,
and edges (Elijah)
- When updating the xinerama due to placement, update which
maximal/spanning rect set to use as well (Elijah) [#322068]
- Relax the partially onscreen constraint to allow the titlebar to touch
the bottom panel in order to make the new constraints code function the
same as the old version (Elijah) [#322071]
- Don't allow removing a window from maximized or fullscreened state to
place the titlebar under the top panel (Elijah) [#322075]
Translations
Vladimir Petkov (bg), Francisco Javier F. Serrador (es), Ignacio Casal
Quinteiro (gl), Takeshi AIHANA (ja), Theppitak Karoonboonyanan (th)
2.13.2
==
This release just contains a merge of all the changes on the
constraints_experiments branch.
Thanks to Havoc Pennington for reviewing the gargantuan patch and
suggesting lots of little fixes for making it better, to Rob Adams and
Soeren Sandmann for grilling me on how some of the difficult internals work
-- allowing me to improve the documentation, to Olav Vitters for finding an
easy-to-fix crasher bug in early testing and for repeatedly extending my
deadline for switching from working on Metacity to Bugzilla, to Ray Strode
for finding two crashers and fixing one of them in early testing, to Bryan
Clark for usability advice, to Davyd Madeley and Christian Kellner for
testing Xinerama stuff, to Sebastien Bacher for packaging an early version
and finding some obscure bugs (that I unfortunately still can't duplicate
and will probably still need to fix once I can),
Bugs fixed:
unfiled - constraints.c is overly complicated[1]
unfiled - constraints.c is not robust when all constraints cannot
simultaneously be met (constraints need to be prioritized)
unfiled - keep-titlebar-onscreen constraint is decoration unaware (since
get_outermost_onscreen_positions() forgets to include
decorations)
unfiled - keyboard snap-moving and snap-resizing snap to hidden edges
86644 - resize should have a shift option like move does
109553 - gravity w/ simultaneous move & resize doesn't work
113601 - maximize vertical and horizontal should toggle and be
constrained
122196 - windows show up under vertical panels
122670 - jerky/random resizing of window via keyboard[2]
124582 - keyboard and mouse snap-resizing and snap-moving erroneously
moves the window multidimensionally
136307 - don't allow apps to resize themselves off the screen (*cough*
filechooser *cough*)
142016, 143784 - windows should not span multiple xineramas unless
placed there by the user
143145 - clamp new windows to screensize and force them onscreen, if
they'll fit
144126 - Handle pathological strut lists sanely[3]
149867 - fixed aspect ratio windows are difficult to resize[4]
152898 - make screen edges consistent; allow easy slamming of windows
into the left, right, and bottom edges of the screen too.
154706 - bouncing weirdness at screen edge with keyboard moving or
resizing
156699 - avoid struts when placing windows, if possible (nasty a11y
blocker)
302456 - dragging offscreen too restrictive
304857 - wireframe moving off the top of the screen is misleading
308521 - make uni-directional resizing easier with alt-middle-drag and
prevent the occasional super annoying resize-the-wrong-side(s)
behavior
312007 - snap-resize moves windows with a minimum size constraint
312104 - resizing the top of a window can cause the bottom to grow
319351 - don't instantly snap on mouse-move-snapping, remove
braindeadedness of having order of releasing shift and
releasing button press matter so much
[1] fixed in my opinion, anyway.
[2] Actually, it's not totally fixed--it's just annoying
instead of almost completely unusable. Matthias had a
suggestion that may fix the remainder of the problems (see
http://tinyurl.com/bwzuu).
[3] This bug was originally about not-quite-so-pathological
cases but was left open for the worse cases. The code from
the branch handles the remainder of the cases mentioned in
this bug.
[4] Actually, although it's far better there's still some minor
issues left: a slight drift that's only noticeable after
lots of resizing, and potential problems with partially
onscreen constraints due to not clearing any
fixed_directions flags (aspect ratio windows get resized in
both directions and thus aren't fixed in one of them)
New feature:
81704 - edge resistance for user move and resize operations; in
particular 3 different kinds of resistance are implemented:
Pixel-Distance: window movement is resisted when it aligns with an
edge unless the movement is greater than a threshold number of
pixels
Timeout: window movement past an edge is prevented until a certain
amount of time has elapsed during the operation since the first
request to move it past that edge
Keyboard-Buildup: when moving or resizing with the keyboard, once a
window is aligned with a certain edge it cannot move past until the
correct direction has been pressed enough times (e.g. 2 or 3 times)
Major code changes:
- constraints.c has been rewritten; very few lines of code from the old
version remain. There is a comment near the top of the function
explaining the basics of how the new framework works. A more detailed
explanation can be found in doc/how-constraints-works.txt
- edge-resistance.[ch] are new files implementing edge-resistance.
- boxes.[ch] are new files containing low-level error-prone functions
used heavily in constraints.c and edge-resistance.c, among various
places throughout the code. testboxes.c contains a thorough testsuite
for the boxes.[ch] functions compiled into a program, testboxes.
- meta_window_move_resize_internal() *must* be told the gravity of the
associated operation (if it's just a move operation, the gravity will
be ignored, but for resize and move+resize the correct value is needed)
- the craziness of different values that
meta_window_move_resize_internal() accepts has been documented in a
large comment at the beginning of the function. It may be possible to
clean this up some, but until then things will remain as they were
before--caller beware.
- screen and xinerama usable areas (i.e. places not covered by
e.g. panels) are cached in the workspace now, as are the screen and
xinerama edges. These get updated with the workarea in
src/workspace.c:ensure_work_areas_validated()
Translation
Michiel Sikkes (nl)
2.13.1
==
Thanks to Philip O'Brien, Kjartan Maraas, and Aidan Delaney for
improvements in this release.
- add handling for META_PREF_CURSOR_THEME and META_PREF_CURSOR_SIZE
for more complete debug info (Philip) [#318976]
- Remove possible g_source leak in #ifdef'd out code, in case anyone uses
it in the future (Kjartan) [#320050]
- Changed the 'minimized' field of the MetaTabEntry struct to 'hidden'
(Aidan) [#168455]
Translations
Miloslav Trmac (cs), Francisco Javier F. Serrador (es), Takeshi AIHANA (ja),
Erdal Ronahi (ku), Theppitak Karoonboonyanan (th)
2.13.0
==
Thanks to Bj<42>rn Lindqvist, Kjartan Maraas, S<>ren Sandmann,
Elijah Newren, Ross Cohen, and Muktha for improvements in this release
since 2.12.1.
- Mave ancestors come along with the transient when moving the window from
one workspace to another (Bj<42>rn) [#314977]
- Fix the workspace switcher tabpopup to display the right windows and to
fix the pick-a-new-window-to-focus algorithm in order to not select
windows that aren't showing (Bj<42>rn) [#170475]
- Fix a couple memory leaks (Kjartan, S<>ren, Elijah) [#313030]
- Make alt-esc (the "switch between windows immediately" keybinding)
actually show minimized windows too (Ross) [#107072]
- Make alt-esc consistent with alt-tab by leaving stacking of unselected
windows unchanged (Ross) [#314285]
- Clarify the meaning of the auto_raise preference (Elijah) [#312421]
- Fix a crash that occurs when removing some virtual desktops and windows
happen to be on those desktops (Elijah) [#318306]
- Make the unfocussed Simple window border visible with high contrast
inverse theme (Muktha) [#121361]
- Fix edge snapping for multi-screen (non-xinerama) setups (Elijah)
[#319425]
Translations
Vladimir Petkov (bg), Kostas Papadimas (el), Adam Weinberger (en_CA),
Ivar Smolin (et), Michiel Sikkes (nl), Marcel Telka (sk), Funda
Wang (zh_CN)
2.12.1
==
Thanks to Ray Strode, Havoc Pennington, and Elijah Newren for
improvements in this release.
- Truncate ridiculously long titles to avoid crashing or letting the
pager crash (Ray, Havoc, Elijah) [#315070]
- Get the tabbing window outline to work with gtk+ 2.8.4 again
(Elijah) [#317528]
Translations
Mahay Alam Khan (bn), Francisco Javier F. Serrador (es), Ivar Smolin (et),
I<>aki Larra<72>aga Murgoitio (eu), Luca Ferretti (it), Christian Rose (sv),
Clytie Siddall (vi), Funda Wang (zh_CN)
2.12.0
==
Thanks to Brent Smith for finding the crasher in the release candidate!
- Fix an uninitialized variable problem causing crashes (Brent) [#315000]
Translations
Bryn Salisbury (cy), Hendrik Richter (de), Christophe Merlet (RedFox) (fr),
Ignacio Casal Quinteiro (gl), Norayr Chilingaryan (hy), Young-Ho Cha (ko),
<20>ygimantas Berucka (lt), Michiel Sikkes (nl), Leonid Kanter (ru), Danilo
<1B>egan(sr), Baris Cicek (tr)
2.11.3
==
Thanks to Bj<42>rn Lindqvist and Elijah Newren for improvements in
this release.
- Check for the right versions of glib and gtk+ (Bj<42>rn) [#314116]
- Avoid obscuring centered-on-desktop windows which are denied focus
(Elijah) [#313234]
Translations
Vladimir Petkov (bg), Jordi Mallach (ca), Kostas Papadimas (el),
Ivar Smolin (et), Gabor Kelemen (hu), Mohammad DAMT (id), Duarte
Loreto (pt), Mugurel Tudor (ro), Laurent Dhima (sq), Maxim
Dziumanenko (uk)
2.11.2
==
Thanks to Elijah Newren, Jaap Haitsma, Ray Strode, and Brent Smith for
improvements in this release.
- Fix an easy to trigger crasher in 2.11.1 caused by unneeded
debugging spew (Elijah) [#311819]
- Make sure that Metacity dialogs have icons (Jaap) [#309876]
- Fix an infinite restacking flicker loop in sloppy and mouse focus
with fullscreen windows (Elijah) [#311400]
- Change default theme from Simple to Clearlooks (Elijah)
- Vastly improve the behavior of keyboard move/resize and edge
snapping (Ray) [#310888]
- Remove a duplicate string (Brent) [#309774]
Translations
Yuval Tanny (he), Gnome PL Team (pl), Raphael Higino (pt_BR),
Chao-Hsiung Liao (zh_TW)
2.11.1
==
Thanks to Elijah Newren, Ken Harris, Matthias Clasen, Christian
Persch, and Billy Biggs for improvements in this release.
- Fix a miscoloring of parts of the titlebar introduced in the last
unstable release (Elijah) [follow-up to #169982]
- Provide a more lenient threshold for drawing rounded corners (Ken)
[#122065]
- Make the Xcursor changes in the last unstable release effective
(Matthias) [follow-up to #308106]
- Revert the _NET_ACTIVE_WINDOW behavior change made in the 2.9.x
unstable series; activation includes changing a window to the
current workspace again (Elijah) [reversion of #128380]
- Restore original window size if the window was maximized upon
withdrawing it (Elijah, Christian) [#137185]
- Fix a raising bug with a window that has more than one child window
(Elijah, Billy) [part of #307875]
- Try to place windows denied focus near the focus window and fix a
xinerama bug with the placement (Elijah) [part of #307875]
- Avoid modal dialogs being obscured in somewhat pathologically
strange circumstances that Eclipse seems to be good at triggering
(Elijah) [part of #307875]
Translations
Miloslav Trmac (cs), Kostas Papadimas (el), Adam Weinberger (en_CA),
Francisco Javier F. Serrador (es), Ilkka Tuohela (fi), Christophe
Merlet (RedFox) (fr), Ignacio Casal Quinteiro (gl), Ankit
Patel (gu), Yair Hershkovitz (he), Takeshi AIHANA (ja), Kjartan
Maraas (nb), Kjartan Maraas (no), Marcel Telka (sk), Theppitak
Karoonboonyanan (th), Clytie Siddall (vi), Funda Wang (zh_CN)
2.11.0
==
This release contains all fixes up to Metacity 2.10.2 plus some new goodies.
Thanks to Matthias Clasen, Aivars Kalvans, Bj<42>rn Lindqvist, and
Andrew Johnson for improvements in this release.
- React to cursor theme changes (Matthias) [#308106]
- Plug a small leak with xinerama information (Aivars) [#307884]
- Split up main() into more manageable chunks and make use of GOpt
(Bj<42>rn) [#305331]
- Speed up vertical gradients (Andrew) [#169982]
Translations
Hendrik Richter (de), Ivar Smolin (et), Ignacio Casal
Quinteiro (gl), Clytie Siddall (vi)
2.10.2
==
Thanks to Billy Biggs, Greg Hudson, Elijah Newren, Ray Strode, Ryan
Lortie, and Soeren Sandmann for improvements in this release.
- Makes metacity a bit faster when dragging windows around (Soeren) [#141813]
- Fix simple memory error, using the address of a local variable as a
hash key (Ryan) [#307209]
- Fix a small leak in the case of a SYNC_COUNTER property value and
HAVE_XSYNC not defined (Ryan) [#307214]
- Cleanup font data when done with it (Ray) [#306720]
- If the window has a modal transient which is being unmanaged, don't
focus it (Elijah) [#305362]
- Make sure window position is calculated correctly for reconfigure
requests when part of the XWindowChanges structure is uninitialized
(Greg) [#305257]
- Add a resize popup when resizing constrained windows (Ray) [#305564]
- Don't accidentally treat maximize vertically as maximize in both
directions (Elijah) [#302204]
- Put all transients of the new window, if any exist, in the
calc_showing queue (Elijah, Billy) [#303284]
Translations
Kostas Papadimas (el), Priit Laes (et), Pauli Virtanen (fi), Ignacio
Casal Quinteiro (gl), Theppitak Karoonboonyanan (th), Canonical
Ltd (xh), Woodman Tuen (zh_TW)
2.10.1
==
This is a stable release to coincide with the release of Gnome 2.10.0.
Thanks to Dan Winship and Lex Hider for fixes in this release.
- Make sure the "Close" button has the focus in the
buggy-session-management-applications-warning dialog instead of the
table (Dan) [#172703]
- add doc/code-overview.txt and doc/how-to-get-focus-right.txt to the
distributed files (Lex) [#170519]
Translations
Adam Weinberger (en_CA), Christopher Orr (en_GB), Elnaz Sarbar (fa),
Gabor Kelemen (hu), Jyotsna Shrestha (ne), Steve Murphy (rw),
Baris Cicek (tr), Canonical Ltd (xh)
2.10.0
==
This is a stable release to coincide with the release of Gnome 2.10.0.
The only difference between this version and 2.9.34 is some
translation updates.
Translations
Vladimir Petkov (bg), Gabor Kelemen (hu), <20>ygimantas Berucka (lt),
Reinout van Schouwen (nl), Mugurel Tudor (ro), Danilo <20>egan (sr),
Woodman Tuen (zh_TW)
2.9.34
==
This is an unstable release to coincide with the release of Gnome
2.10.0 release candidate 1 (2.9.92).
Thanks to Aidan Delaney, Elijah Newren, and Joe Marcus Clarke for
fixes in this release.
- Fix crash that occurs when stupid apps claim that a window is its
own parent (Elijah, Joe) [#168207]
- Prevent the visual bell from changing the focus window (Elijah)
[#123366]
- Make sure that icons in the alt-tab popup are dimmed for all hidden
windows, not just minimized ones (Aidan) [#168455]
Translations
Elnaz Sarbar (fa), Ankit Patel (gu), Luca Ferretti (it),
Reinout van Schouwen (nl), Gnome PL Team (pl),
Alexandre Folle de Menezes (pt_BR)
2.9.21
==

5
README
View File

@@ -6,9 +6,10 @@ 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, 2.8.0, 2.8.1, 2.8.1.x, 2.8.5-
The stable releases so far are 2.4.x, 2.6.x, 2.8.[01], 2.8.1.x, 2.8.5-, 2.10.x,
2.12.x.
Unstable branches are 2.3.x, 2.5.x, 2.8.2-4, 2.9.x)
Unstable branches are 2.3.x, 2.5.x, 2.8.2-4, 2.9.x, 2.11.x, 2.13.x
COMPILING METACITY
===

View File

@@ -2,7 +2,7 @@ AC_PREREQ(2.50)
# Fibonacci sequence for micro version numbering:
# 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987
AC_INIT([metacity], [2.9.21],
AC_INIT([metacity], [2.13.34],
[http://bugzilla.gnome.org/enter_bug.cgi?product=metacity])
AC_CONFIG_SRCDIR(src/display.c)
@@ -155,12 +155,15 @@ AC_ARG_ENABLE(shape,
## try definining HAVE_BACKTRACE
AC_CHECK_HEADERS(execinfo.h, [AC_CHECK_FUNCS(backtrace)])
ALL_LINGUAS="am ar az be bg bn bs ca cs cy da de el en_CA en_GB es et eu fa fi fr ga gl gu he hi hr hu id is it ja ko lt lv mk ml mn ms nb nl nn no or pa pl pt pt_BR ro ru sl sk sq sr sr@Latn sv ta th tk tr uk vi wa zh_CN zh_TW"
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 hy id is it ja ko ku lt lv mk ml mn ms nb ne nl nn no or pa pl pt pt_BR ro ru rw sl sk sq sr sr@Latn sv ta th tk tr uk vi wa xh zh_CN zh_TW"
AM_GLIB_GNU_GETTEXT
## here we get the flags we'll actually use
PKG_CHECK_MODULES(METACITY_MESSAGE, gtk+-2.0 >= 2.2.0)
PKG_CHECK_MODULES(METACITY_WINDOW_DEMO, gtk+-2.0 >= 2.2.0)
# GOptionEntry requires glib-2.6.0
PKG_CHECK_MODULES(ALL, glib-2.0 >= 2.6.0)
# gtk_window_set_icon_name requires gtk2+-2.60
PKG_CHECK_MODULES(METACITY_MESSAGE, gtk+-2.0 >= 2.6.0)
PKG_CHECK_MODULES(METACITY_WINDOW_DEMO, gtk+-2.0 >= 2.6.0)
if $PKG_CONFIG --atleast-version 1.2.0 pangoxft; then
echo "pangoxft found"
@@ -219,7 +222,7 @@ fi
if test x$have_xcomposite = xyes; then
echo "Building with CompositeExt"
METACITY_PC_MODULES="$METACITY_PC_MODULES xcomposite >= $XCOMPOSITE_VERSION xfixes xrender xdamage"
METACITY_PC_MODULES="$METACITY_PC_MODULES xcomposite >= $XCOMPOSITE_VERSION xfixes xrender xdamage cm"
AC_DEFINE(HAVE_COMPOSITE_EXTENSIONS, , [Building with compositing manager support])
## force on render also
@@ -258,6 +261,20 @@ if test x$have_xrender = xyes; then
AC_DEFINE(HAVE_RENDER, , [Building with Render extension support])
fi
AC_MSG_CHECKING([Xcursor])
if $PKG_CONFIG xcursor; then
have_xcursor=yes
else
have_xcursor=no
fi
AC_MSG_RESULT($have_xcursor)
if test x$have_xcursor = xyes; then
echo "Building with Xcursor"
METACITY_PC_MODULES="$METACITY_PC_MODULES xcursor"
AC_DEFINE(HAVE_XCURSOR, , [Building with Xcursor support])
fi
PKG_CHECK_MODULES(METACITY, $METACITY_PC_MODULES)
AC_PATH_XTRA
@@ -446,6 +463,9 @@ if test x$enable_gconf = xyes; then
fi
AM_GCONF_SOURCE_2
else
GCONF_SCHEMAS_INSTALL_TRUE='#'
GCONF_SCHEMAS_INSTALL_FALSE=
fi
AC_CONFIG_FILES([
@@ -498,6 +518,7 @@ metacity-$VERSION:
Resize-and-rotate: ${found_randr}
Xsync: ${found_xsync}
Render: ${have_xrender}
Xcursor: ${have_xcursor}
"
echo "This is the UNSTABLE branch of metacity"
echo "Use 2.8.x (where x > 5) for stable (gnome-2-8 branch in CVS)"
echo "Use 2.12.x for stable (gnome-2-12 branch in CVS)"

View File

@@ -1,3 +1,4 @@
SUBDIRS = man
EXTRA_DIST=theme-format.txt metacity-theme.dtd dialogs.txt
EXTRA_DIST=theme-format.txt metacity-theme.dtd dialogs.txt code-overview.txt \
how-to-get-focus-right.txt

View File

@@ -0,0 +1,283 @@
File contents:
Basic Ideas
Important points to remember
Explanation of fields in the ConstraintInfo struct
Gory details of resize_gravity vs. fixed_directions
IMPORTANT NOTE: There's a big comment at the top of constraints.c
explaining how to add extra constraints or tweak others. Read it. I put
that information there because it may be enough information by itself for
people to hack on constraints.c. I won't duplicate that information in
this file; this file is for deeper details.
---------------------------------------------------------------------------
Basic Ideas
---------------------------------------------------------------------------
There are a couple basic ideas behind how this constraints.c code works and
why it works that way:
1) Split the low-level error-prone operations into a special file
2) Add robustness by prioritizing constraints
3) Make use of a minimal spanning set of rectangles for the
"onscreen region" (screen minus struts).
4) Constraints can be user-action vs app-action oriented
5) Avoid over-complification ;-)
Some more details explaining these basic ideas:
1) Split tedious operations out
boxes.[ch] have been added which contain many common, tedious, and
error-prone operations. I find that this separation helps a lot for
managing the complexity and ensuring that things work correctly.
Also, note that testboxes.c thoroughly tests all functionality in
boxes.[ch] and a testboxes program is automatically compiled.
Note that functions have also been added to this file to handle some
of the tedium necessary for edge resistance as well.
2) Prioritize constraints
In the old code, if each and every constraint could not be
simultaneously satisfied, then it would result in some
difficult-to-predict set of constraints being violated. This was
because constraints were applied in order, with the possibility for
each making changes that violated previous constraints, with no
checking done at the end.
Now, all constraints have an associated priority, defined in the
ConstraintPriority enum near the top of constraints.c. The
constraints are all applied, and then are all checked; if not all are
satisfied then the least important constraints are dropped and the
process is repeated. This ensures that the most important constraints
are satisfied.
A special note to make here is that if any one given constraint is
impossible to satisfy even individually (e.g. if minimum size hints
specify a larger window than the screen size, making the
fully-onscreen constraint impossible to satisfy) then we treat the
constraint as being satisfied. This sounds counter-intuitive, but the
idea is that we want to satisfy as many constraints as possible and if
we treat it as a violation then all constraints with a lesser priority
also get dropped along with the impossible to satisfy one.
3) Using maximal/spanning rectangles
The constraints rely heavily on something I call spanning rectangles
(which Soeren referred to as maximal rectangles, a name which I think
I like better but I don't want to go change all the code now). These
spanning rectangles have the property that a window will fit on the
screen if and only if it fits within at least one of the rectangles.
Soeren had an alternative way of describing these rectangles, namely
that they were rectangles with the property that if you made any of
them larger in any direction, they would overlap with struts or be
offscreen (with the implicit assumption that there are enough of these
rectangles that combined they cover all relevant parts of the screen).
Note that, by necessity, these spanning/maximal rectangles will often
overlap each other.
Such a list makes it relatively easy to define operations like
window-is-onscreen or clamp-window-to-region or
shove-window-into-region. Since we have a on-single-xinerama
constraint in addition to the onscreen constraint(s), we cache
number_xineramas + 1 of these lists in the workspace. These lists
then only need to be updated whenever the workarea is (e.g. when strut
list change or screen or xinerama size changes).
4) Constraints can be user-action vs app-action oriented
Such differentiation requires special care for the constraints to be
consistent; e.g. if the user does something and one constraint
applies, then the app does something you have to be careful that the
constraint on the app action doesn't result in some jarring motion.
In particular, the constraints currently allow offscreen movement or
resizing for user actions only. The way consistency is handled is
that at the end of the constraints, update_onscreen_requirements()
checks to see if the window is offscreen or split across xineramas and
updates window->require_fully_onscreen and
window->require_on_single_xinerama appropriately.
5) Avoid over-complification
The previous code tried to reform the constraints into terms of a
single variable. This made the code rather difficult to
understand. ("This is a rather complicated fix for an obscure bug
that happened when resizing a window and encountering a constraint
such as the top edge of the screen.") It also failed, even on the
very example for which it used as justification for the complexity
(bug 312104 -- when keyboard resizing the top of the window,
Metacity extends the bottom once the titlebar hits the top panel),
though the reason why it failed is somewhat mysterious as it should
have worked. Further, it didn't really reform the constraints in
terms of a single variable -- there was both an x_move_delta and an
x_resize_delta, and the existence of both caused bug 109553
(gravity with simultaneous move and resize doesn't work)
---------------------------------------------------------------------------
Important points to remember
---------------------------------------------------------------------------
- Inner vs Outer window
Note that because of how configure requests work and
meta_window_move_resize_internal() and friends are set up, that the
rectangles passed to meta_window_constrain() are with respect to inner
window positions instead of outer window positions (meaning that window
manager decorations are not included in the position/size). For the
constraints that need to be enforced with respect to outer window
positions, you'll need to make use of the extend_by_frame() and
unextend_by_frame() functions.
- meta_window_move_resize_internal() accepts a really hairy set of
inputs. See the huge comment at the beginning of that function.
constraints gets screwed up if that function can't sanitize the input,
so be very careful about that. It used to be pretty busted.
---------------------------------------------------------------------------
Explanation of fields in the ConstraintInfo strut
---------------------------------------------------------------------------
As of the time of this writing, ConstraintInfo had the following fields:
orig
current
fgeom
action_type
is_user_action
resize_gravity
fixed_directions
work_area_xinerama
entire_xinerama
usable_screen_region
usable_xinerama_region
A brief description of each and/or pointers to more information are found
below:
orig
The previous position and size of the window, ignoring any window
decorations
current
The requested position and size of the window, ignoring any window
decorations. This rectangle gets modified by the various constraints
to specify the allowed position closest to the requested position.
fgeom
The geometry of the window frame (i.e. "decorations"), if it exists.
Otherwise, it's a dummy 0-size frame for convenience (i.e. this pointer
is guaranteed to be non-NULL so you don't have to do the stupid check).
action_type
Whether the action being constrained is a move, resize, or a combined
move and resize. Some constraints can run faster with this information
(e.g. constraining size increment hints or min size hints don't need to
do anything for pure move operations). This may also be used for
providing slightly different behavior (e.g. clip-to-region instead of
shove-into-region for resize vs. moving operations), but doesn't
currently have a lot of use for this.
is_user_action
Used to determine whether the action being constrained is a user
action. If so, certain parts of the constraint may be relaxed. Note
that this requires care to get right; see item 4 of the basic ideas
section for more details.
resize_gravity
The gravity used in the resize operation, used in order to make sure
windows are resized correctly if constraints specify that their size
must be modified. Explained further in the resize_gravity
vs. fixed_directions section.
fixed_directions
There may be multiple solutions to shoving a window back onscreen.
Typically, the shortest distance used is the solution picked, but if
e.g. an application only moved its window in a single direction, it's
more desirable that the window is shoved back in that direction than in
a different one. fixed_directions facilitates that. Explained further
in the resize_gravity vs. fixed_directions section.
work_area_xinerama
This region is defined in the workspace and just cached here for
convenience. It is basically the area obtained by taking the current
xinerama, treating all partial struts as full struts, and then
subtracting all struts from the current xinerama region. Useful
e.g. for enforcing maximization constraints.
entire_xinerama
Just a cache of the rectangle corresponding to the entire current
xinerama, including struts. Useful e.g. for enforcing fullscreen
constraints.
usable_screen_region
The set of maximal/spanning rectangles for the entire screen; this
region doesn't overlap with any struts and helps to enforce
e.g. onscreen constraints.
usable_xinerama_region
The set of maximal/spanning rectangles for the current xinerama; this
region doesn't overlap with any struts on the xinerama and helps to
enforce e.g. the on-single-xinerama constraint.
---------------------------------------------------------------------------
Gory details of resize_gravity vs. fixed_directions
---------------------------------------------------------------------------
Note that although resize_gravity and fixed_directions look similar, they
are used for different purposes:
- resize_gravity is only for resize operations and is used for
constraints unrelated to keeping a window within a certain region
- fixed_directions is for both move and resize operations and is
specifically for keeping a window within a specified region.
Examples of where each are used:
- If a window is simultaneously moved and resized to the southeast corner
with SouthEastGravity, but it turns out that the window was sized to
something smaller than the minimum size hint, then the size_hints
constraint should resize the window using the resize_gravity to ensure
that the southeast corner doesn't move.
- If an application resizes itself so that it grows downward only (which
I note could be using any of three different gravities, most likely
NorthWest), and happens to put the southeast part of the window under a
partial strut, then the window needs to be forced back on screen.
(Yes, shoved onscreen and not clipped; see bug 136307). It may be the
case that moving the window to the left results in less movement of the
window than moving the window up, which, in the absence of fixed
directions would cause us to chose moving to the left. But since the
user knows that only the height of the window is changing, they would
find moving to the left weird (especially if this were a dialog that
had been centered on its parent). It'd be better to shove the window
upwards so we make sure to keep the left and right sides fixed in this
case. Note that moving the window upwards (or leftwards) is probably
totally against the gravity in this case; but that's okay because
gravity typically assumes there's more than enough onscreen space for
the resize and we only override the gravity when that assumption is
wrong.
For the paranoid, a fixed directions might give an impossible to fulfill
constraint (I don't think that's true currently in the code, but I haven't
thought it through in a while). If this ever becomes a problem, it should
be relatively simple to throw out the fixed directions when this happens
and rerun the constraint. Of course, it might be better to rethink things
to just avoid such a problem.
The nitty gritty of what gets fixed:
User move:
in x direction - y direction fixed
in y direction - x direction fixed
in both dirs. - neither direction fixed
User resize: (note that for clipping, only 1 side ever changed)
in x direction - y direction fixed (technically opposite x side fixed too)
in y direction - x direction fixed (technically opposite y side fixed too)
in both dirs. - neither direction fixed
App move:
in x direction - y direction fixed
in y direction - x direction fixed
in both dirs. - neither direction fixed
App resize
in x direction - y direction fixed
in y direction - x direction fixed
in 2 parallel directions (center side gravity) - other dir. fixed
in 2 orthogonal directions (corner gravity) - neither dir. fixed
in 3 or 4 directions (a center-like gravity) - neither dir. fixed
Move & resize
Treat like resize case though this will usually mean all four sides
change and result in neither direction being fixed
Note that in all cases, if neither direction moves it is likely do to a
change in struts and thus neither direction should be fixed despite the
lack of movement.

View File

@@ -0,0 +1,54 @@
How updates happen for struts, workareas, and screen/xinerama regions/edges:
One of three things causes meta_window_update_struts to be called
(a) initial window map (window.c:meta_window_new_with_attrs())
(b) update of _net_wm_strut* properties (window.c:process_property_notify())
(c) screen resizes (e.g. via xrandr; from screen.c:meta_screen_resize_func())
meta_window_update_struts (MetaWindow *window)
- Gets new list of struts from window properties
- Makes sure window doesn't single-handedly fill the screen
- records new struts if different and calls invalidate_work_areas()
invalidate_work_areas ()
- Calls meta_workspace_invalidate_work_area() for each workspace it's on
meta_workspace_invalidate_work_area()
- Cleans out all strut lists
- queues all windows for resizing
- Calls meta_screen_queue_workarea_recalc (workspace->screen);
meta_screen_queue_workarea_recalc()
- Adds set_work_area_idle_func() as an idle handler
set_work_area_idle_func()
- Calls set_work_area_hint()
set_work_area_hint()
- Calls meta_workspace_get_work_area_all_xineramas()
- Sets _NET_WORKAREA property
meta_workspace_get_work_area_all_xineramas()
- Calls ensure_work_areas_validated()
ensure_work_areas_validated()
- Loops over xineramas
- Loops over windows, then struts:
- Adds struts to list first time through xinerama loop
- Find the amount of the strut on the given xinerama for <dir>_strut
- Just max the amount of the strut with the all_<dir>_strut
- Makes sure there's a non-empty xinerama workarea
- Record the xinerama workarea
- Make sure there's a non-empty screen workarea
- Record the screen workarea
- Cache the spanning rects for the screen and xinerama regions
- Cache the screen and xinerama edges
Alternatively to all the above, if the idle function for the screen
has not yet fired, constraints.c:setup_constraint_info() can call
either workspace.c:meta_workspace_get_onscreen_region() or
workspace.c:meta_workspace_get_onxinerama_region() which in turn
call workspace.c:ensure_work_areas_validated().
Meaning of related functions that might be difficult to tell apart:
screen.c:meta_screen_get_current_xinerama ()
- Finds out which xinerama the mouse is on with an XQueryPointer
window.c:meta_window_get_work_area_current_xinerama()
window.c:meta_window_get_work_area_for_xinerama()
window.c:meta_window_get_work_area_all_xineramas ()
- All three are for finding the intersection of workareas across
multiple workspaces so that placement of windows can be
determined in such a way that they remain in the workarea for
all workspaces that they are on.

View File

@@ -1,3 +1,529 @@
2006-01-21 Ignacio Casal Quinteiro <nacho.resa@gmail.com>
* gl.po: Updated Galician Translation.
2006-01-20 Vincent van Adrighem <adrighem@gnome.org>
* nl.po: Translation updated by Tino Meinen.
2006-01-18 Funda Wang <fundawang@linux.net.cn>
* zh_CN.po: Updated Simplified Chinese translation.
2006-01-17 Ignacio Casal Quinteiro <nacho.resa@gmail.com>
* gl.po: Updated Galician Translation.
2006-01-16 Ilkka Tuohela <hile@iki.fi>
* fi.po: Updated Finnish translation.
2006-01-15 Francisco Javier F. Serrador <serrador@cvs.gnome.org>
* es.po: Updated Spanish translation.
2006-01-15 Takeshi AIHANA <takeshi.aihana@gmail.com>
* ja.po: Updated Japanese translation.
2006-01-11 Adam Weinberger <adamw@gnome.org>
* en_CA.po: Updated Canadian English translation.
2006-01-11 Theppitak Karoonboonyanan <thep@linux.thai.net>
* th.po: Updated Thai translation.
2006-01-11 Ankit Patel <ankit644@yahoo.com>
* gu.po: Updated Gujarati Translation.
2006-01-11 Clytie Siddall <clytie@riverland.net.au>
* vi.po: Updated Vietnamese translation.
2005-12-30 Clytie Siddall <clytie@riverland.net.au>
* vi.po: Updated Vietnamese translation.
2006-01-06 Kjartan Maraas <kmaraas@gnome.org>
* nb.po: Updated Norwegian bokmål translation.
* no.po: Same
2005-12-31 Ilkka Tuohela <hile@iki.fi>
* fi.po: Updated Finnish translation.
2005-12-25 Kang Jeong-Hee <Keizi@mail.co.kr>
* ko.po: Updated Korean translation.
2005-12-11 Miloslav Trmac <mitr@volny.cz>
* cs.po: Updated Czech translation.
2005-12-11 Ankit Patel <ankit644@yahoo.com>
* gu.po: Updated Gujarati Translation.
2005-12-03 Adam Weinberger <adamw@gnome.org>
* en_CA.po: Updated Canadian English translation.
2005-12-03 Kjartan Maraas <kmaraas@gnome.org>
* nb.po: Updated Norwegian bokmål translation.
* no.po: Same
2005-11-22 Marcel Telka <marcel@telka.sk>
* sk.po: Updated Slovak translation.
2005-11-22 Alexander Shopov <ash@contact.bg>
* bg.po: Updated Bulgarian translation by
Alexander Shopov <ash@contact.bg>
2005-11-22 Theppitak Karoonboonyanan <thep@linux.thai.net>
* th.po: Updated Thai translation.
2005-11-21 Francisco Javier F. Serrador <serrador@cvs.gnome.org>
* es.po: Updated Spanish translation.
2005-11-20 Francisco Javier F. Serrador <serrador@cvs.gnome.org>
* es.po: Updated Spanish translation.
2005-11-20 Ignacio Casal Quinteiro <nacho.resa@gmail.com>
* gl.po: Updated Galician Translation.
2005-11-20 Takeshi AIHANA <aihana@gnome.gr.jp>
* ja.po: Updated Japanese translation.
2005-11-17 Vincent van Adrighem <adrighem@gnome.org>
* nl.po: Translation updated by Wouter Bolsterlee.
2005-11-13 Theppitak Karoonboonyanan <thep@linux.thai.net>
* th.po: Updated Thai translation.
2005-11-03 Miloslav Trmac <mitr@volny.cz>
* cs.po: Updated Czech translation.
2005-10-28 Francisco Javier F. Serrador <serrador@cvs.gnome.org>
* es.po: Updated Spanish translation.
2005-10-28 Takeshi AIHANA <aihana@gnome.gr.jp>
* ja.po: Updated Japanese translation.
2005-10-27 Erdal Ronahi <erdal.ronahi@gmail.com>
* ku.po: Added Kurdish translation.
2005-10-17 Marcel Telka <marcel@telka.sk>
* sk.po: Updated Slovak translation.
2005-10-15 Vincent van Adrighem <adrighem@gnome.org>
* nl.po: Translation updated.
2005-10-14 Vincent van Adrighem <adrighem@gnome.org>
* nl.po: Translation updated.
2005-10-14 Kostas Papadimas <pkst@gnome.org>
* el.po: Updated Greek translation.
2005-10-10 Priit Laes <plaes@cvs.gnome.org>
* et.po: Translation updated by Ivar Smolin.
2005-10-04 Alexander Shopov <ash@contact.bg>
* bg.po: Updated Bulgarian translation by
Alexander Shopov <ash@contact.bg>
2005-10-04 Funda Wang <fundawang@linux.net.cn>
* zh_CN.po: Updated Simplified Chinese translation.
2005-10-04 Adam Weinberger <adamw@gnome.org>
* en_CA.po: Updated Canadian English translation.
2005-10-03 Runa Bhattacharjee <runa@bengalinux.org>
* bn.po: Updated Bengali Translation by Mahay Alam Khan <makl10n@yahoo.com>
2005-10-02 Christian Rose <menthos@menthos.com>
* sv.po: Reverted unauthorized changes made by
user 'kloczek'.
2005-09-26 Alessio Frusciante <algol@firenze.linux.it>
* it.po: Updated Italian translation by
Luca Ferretti <elle.uca@infinito.it>.
2005-09-24 Funda Wang <fundawang@linux.net.cn>
* zh_CN.po: Updated Simplified Chinese translation.
2005-09-21 Francisco Javier F. Serrador <serrador@cvs.gnome.org>
* es.po: Updated Spanish translation.
2005-09-20 Christian Rose <menthos@menthos.com>
* sv.po: Updated Swedish translation.
2005-09-16 Clytie Siddall <clytie@riverland.net.au>
* vi.po: Updated Vietnamese translation.
2005-09-08 Inaki Larranaga <dooteo@euskalgnu.org>
* eu.po: Updated Basque translation.
2005-09-07 Priit Laes <plaes@cvs.gnome.org>
* et.po: Translation updated by Ivar Smolin.
2005-09-04 Danilo Šegan <danilo@gnome.org>
* hy.po: Added Armenian translation by Norayr Chilingaryan
<asprayama@yahoo.com>.
2005-09-04 Ignacio Casal Quinteiro <nacho.resa@gmail.com>
* gl.po: Updated Galician Translation.
2005-09-03 Danilo Šegan <danilo@gnome.org>
* sr.po, sr@Latn.po: Updated.
2005-09-02 Leonid Kanter <leon@asplinux.ru>
* ru.po: Updated Russian translation
2005-09-01 Baris Cicek <baris@teamforce.name.tr>
* tr.po: Updated Turkish Translation
2005-08-31 Žygimantas Beručka <zygis@gnome.org>
* lt.po: Updated Lithuanian translation.
2005-08-30 Hendrik Richter <hendi@gnome-de.org>
* de.po: Updated German translation.
2005-08-30 Changwoo Ryu <cwryu@debian.org>
* ko.po: Updated Korean translation by Young-Ho Cha.
2005-08-29 Telsa Gwynne <hobbit@aloss.ukuu.org.uk>
* cy.po: Updated Welsh translation.
2005-08-28 Christophe Merlet <redfox@redfoxcenter.org>
* fr.po: Updated French translation.
2005-08-25 Vincent van Adrighem <adrighem@gnome.org>
* nl.po: Translation updated by Michiel Sikkes.
2005-08-20 Josep Puigdemont i Casamajó <josep.puigdemont@gmail.com>
* ca.po: Updated Catalan translation.
2005-08-19 Priit Laes <plaes@cvs.gnome.org>
* et.po: Translation updated by Ivar Smolin.
2005-08-17 Laurent Dhima <laurenti@alblinux.net>
* sq.po: Updated Albanian translation.
2005-08-15 Maxim Dziumanenko <mvd@mylinux.ua>
* uk.po: Updated Ukrainian translation.
2005-08-15 Gabor Kelemen <kelemeng@gnome.hu>
* hu.po: Hungarian translation updated.
2005-08-15 Mugurel Tudor <mugurelu@gnome.ro>
* ro.po: Updated Romanian translation
2005-08-14 Mohammad DAMT <mdamt@gnome.org>
* id.po: Updated Indonesian translation
2005-08-13 Kostas Papadimas <pkst@gnome.org>
* el.po: Updated Greek translation.
2005-08-11 Duarte Loreto <happyguy_pt@hotmail.com>
* pt.po: Updated Portuguese translation.
2005-08-10 Alexander Shopov <ash@contact.bg>
* bg.po: Updated Bulgarian translation by
Rostislav Raykov <zbrox@i-space.org>
2005-08-02 Chao-Hsiung Liao <j_h_liau@yahoo.com.tw>
* zh_TW.po: Updated Traditional Chinese translation.
2005-07-31 Yair Hershkovitz <yairhr@gmail.com>
* he.po: Updated Hebrew translation by Yuval Tanai.
2005-07-28 Artur Flinta <aflinta@cvs.gnome.org>
* pl.po: Updated Polish translation by GNOME PL Team.
2005-07-26 Raphael Higino <raphaelh@cvs.gnome.org>
* pt_BR.po: Converted to UTF-8.
2005-07-26 Raphael Higino <raphaelh@cvs.gnome.org>
* pt_BR.po: Updated Brazilian Portuguese translation.
2005-07-24 Ilkka Tuohela <hile@iki.fi>
* fi.po: Updated Finnish translation.
2005-07-24 Kjartan Maraas <kmaraas@gnome.org>
* nb.po: Updated Norwegian bokmål translation.
* no.po: Same
2005-07-23 Clytie Siddall <clytie@riverland.net.au>
* vi.po: Updated Vietnamese translation.
2005-07-23 Funda Wang <fundawang@linux.net.cn>
* zh_CN.po: Updated Simplified Chinese translation.
2005-07-21 Ankit Patel <ankit644@yahoo.com>
* gu.po: Updated Gujarati Translation.
2005-07-20 Marcel Telka <marcel@telka.sk>
* sk.po: Updated Slovak translation.
2005-07-18 Adam Weinberger <adamw@gnome.org>
* en_CA.po: Updated Canadian English translation.
2005-07-17 Christophe Merlet <redfox@redfoxcenter.org>
* fr.po: Updated French translation.
2005-07-17 Francisco Javier F. Serrador <serrador@cvs.gnome.org>
* es.po: Updated Spanish translation.
2005-07-17 Theppitak Karoonboonyanan <thep@linux.thai.net>
* th.po: Updated Thai translation.
2005-07-17 Nikos Charonitakis <charosn@her.forthenet.gr>
* el.po: Updated Greek translation.
2005-07-16 Takeshi AIHANA <aihana@gnome.gr.jp>
* ja.po: Updated Japanese translation.
2005-07-15 Ignacio Casal Quinteiro <nacho.resa@gmail.com>
* gl.po: Updated Galician Translation.
2005-07-14 Yair Hershkovitz <yairhr@gmail.com>
* he.po: Updated Hebrew translation.
2005-07-14 Miloslav Trmac <mitr@volny.cz>
* cs.po: Updated Czech translation.
2005-07-13 Marcel Telka <marcel@telka.sk>
* sk.po: Updated Slovak translation.
2005-07-12 Priit Laes <plaes@cvs.gnome.org>
* et.po: Translation updated by Ivar Smolin.
2005-07-08 Clytie Siddall <clytie@riverland.net.au>
* vi.po: Updated Vietnamese translation.
2004-07-06 Christian Rose <menthos@menthos.com>
* gl.po: Updated Galician translation by
Ignacio Casal Quinteiro <nacho.resa@gmail.com>.
2005-07-04 Hendrik Richter <hendi@gnome-de.org>
* de.po: Fixed German translation by
Jens Seidel <jensseidel@users.sf.net>.
2005-06-23 Ignacio Casal Quinteiro <nacho.resa@gmail.com>
* gl.po: Updated Galician translation.
2005-06-22 Abel Cheung <maddog@linuxhall.org>
* zh_TW.po: Fix language team reference.
2005-06-05 Theppitak Karoonboonyanan <thep@linux.thai.net>
* th.po: Updated Thai translation.
2005-06-01 Priit Laes <plaes@cvs.gnome.org>
* et.po: Translation updated.
2005-05-19 Nikos Charonitakis <charosn@her.forthnet.gr>
* el.po: Updated Greek translation.
2005-05-11 Kostas Papadimas <pkst@gnome.org>
* el.po: Updated Greek Translation.
2005-05-10 Adi Attar <aattar@cvs.gnome.org>
* xh.po: Updated Xhosa translation.
2005-04-28 Kostas Papadimas <pkst@gnome.org>
* el.po: Updated Greek translation
2005-04-25 Priit Laes <plaes@cvs.gnome.org>
* et.po: Translation updated by Ivar Smolin.
2005-04-17 Pauli Virtanen <pauli.virtanen@hut.fi>
* fi.po: Fix a small mistranslation.
2005-04-09 Christopher Orr <chris@protactin.co.uk>
* en_GB.po: Updated British English translation.
2005-04-06 Roozbeh Pournader <roozbeh@farsiweb.info>
* fa.po: Updated Persian translation by
Elnaz Sarbar <elnaz@farsiweb.info>.
2005-04-05 Pawan Chitrakar <pawan@nplinux.org>
* ne.po: Added Nepali Translation.
2005-04-03 Gabor Kelemen <kelemeng@gnome.hu>
* hu.po: Hungarian translation updated.
2005-03-31 Steve Murphy <murf@e-tools.com>
* rw.po: Added Kinyarwanda translation.
2005-03-29 Adi Attar <aattar@cvs.gnome.org>
* xh.po: Updated Xhosa translation.
2005-03-17 Adam Weinberger <adamw@gnome.org>
* en_CA.po: Updated Canadian English translation.
2005-03-12 Baris Cicek <baris@teamforce.name.tr>
* tr.po: Updated Turkish Translation
2005-03-10 Adi Attar <aattar@cvs.gnome.org>
* xh.po: Added Xhosa translation.
2005-03-07 Vincent van Adrighem <adrighem@gnome.org>
* nl.po: Translation updated by Reinout van Schouwen.
2005-03-07 Mugurel Tudor <mugurelu@go.ro>
* ro.po: Updated Romanian translation.
2005-03-04 Laszlo Dvornik <dvornik@gnome.hu>
* hu.po: Hungarian translation updated by Gabor Kelemen.
2005-03-03 Alexander Shopov <ash@contact.bg>
* bg.po: Updated Bulgarian translation by
Vladimir Petkov <vpetkov@i-space.org>
2005-03-03 Žygimantas Beručka <uid0@akl.lt>
* lt.po: Updated Lithuanian translation.
2005-03-02 Danilo Šegan <dsegan@gmx.net>
* sr.po, sr@Latn.po: Updated Serbian translation.
2005-03-02 Abel Cheung <maddog@linuxhall.org>
* zh_TW.po: Updated traditional Chinese translation from GNOME HK Team
2005-02-28 Vincent van Adrighem <adrighem@gnome.org>
* nl.po: Translation updated by Reinout van Schouwen.
2005-02-27 Alessio Frusciante <algol@firenze.linux.it>
* it.po: Updated Italian translation by
Luca Ferretti <elle.uca@infinito.it>.
2005-02-24 Artur Flinta <aflinta@cvs.gnome.org>
* pl.po: Updated Polish translation by GNOME PL Team.
2005-02-24 Ankit Patel <ankit644@yahoo.com>
* gu.po: Updated Gujarati Translation.
2005-02-23 Vincent van Adrighem <adrighem@gnome.org>
* nl.po: Translation updated by Michiel Sikkes.
2004-02-22 Roozbeh Pournader <roozbeh@farsiweb.info>
* fa.po: Updated Persian translation by
Elnaz Sarbar <elnaz@farsiweb.info>.
2005-02-22 Raphael Higino <raphaelh@cvs.gnome.org>
* pt_BR.po: Updated Brazilian Portuguese translation.
2005-02-21 Christophe Merlet <redfox@redfoxcenter.org>
* fr.po: Updated French translation.

1054
po/am.po

File diff suppressed because it is too large Load Diff

1063
po/ar.po

File diff suppressed because it is too large Load Diff

1063
po/az.po

File diff suppressed because it is too large Load Diff

1087
po/be.po

File diff suppressed because it is too large Load Diff

1939
po/bg.po

File diff suppressed because it is too large Load Diff

1912
po/bn.po

File diff suppressed because it is too large Load Diff

1063
po/bs.po

File diff suppressed because it is too large Load Diff

773
po/ca.po

File diff suppressed because it is too large Load Diff

1096
po/cs.po

File diff suppressed because it is too large Load Diff

1101
po/cy.po

File diff suppressed because it is too large Load Diff

1086
po/da.po

File diff suppressed because it is too large Load Diff

230
po/de.po
View File

@@ -2,15 +2,15 @@
# Copyright (C) 2002-2004 Free Software Foundation, Inc.
# Matthias Warkus <mawarkus@gnome.org>, 2002.
# Christian Neumair <chris@gnome-de.org>, 2002-2004.
#
# Hendrik Richter <hendi@gnome-de.org>, 2005.
#
msgid ""
msgstr ""
"Project-Id-Version: Metacity\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2005-02-05 20:59+0100\n"
"PO-Revision-Date: 2005-02-05 20:58+0100\n"
"Last-Translator: Frank Arnold <frank@scirocco-5v-turbo.de>\n"
"POT-Creation-Date: 2005-09-19 12:30+0200\n"
"PO-Revision-Date: 2005-08-30 16:56+0200\n"
"Last-Translator: Hendrik Richter <hendi@gnome-de.org>\n"
"Language-Team: German <gnome-de@gnome.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@@ -63,7 +63,7 @@ msgstr ""
msgid "Failed to get hostname: %s\n"
msgstr "Rechnername konnte nicht ermittelt werden: %s\n"
#: ../src/display.c:312
#: ../src/display.c:319
#, c-format
msgid "Failed to open X Window System display '%s'\n"
msgstr "X-Window-Systemanzeige »%s« konnte nicht geöffnet werden\n"
@@ -84,23 +84,23 @@ msgstr ""
msgid "Fatal IO error %d (%s) on display '%s'.\n"
msgstr "Schwerwiegender E/A-Fehler %d (%s) auf Anzeige »%s«.\n"
#: ../src/frames.c:1020
#: ../src/frames.c:1125
msgid "Close Window"
msgstr "Fenster schließen"
#: ../src/frames.c:1023
#: ../src/frames.c:1128
msgid "Window Menu"
msgstr "Fenstermenü"
#: ../src/frames.c:1026
#: ../src/frames.c:1131
msgid "Minimize Window"
msgstr "Fenster minimieren"
#: ../src/frames.c:1029
#: ../src/frames.c:1134
msgid "Maximize Window"
msgstr "Fenster maximieren"
#: ../src/frames.c:1032
#: ../src/frames.c:1137
msgid "Unmaximize Window"
msgstr "Fenster wiederherstellen"
@@ -113,32 +113,24 @@ msgstr ""
"Ein anderes Programm verwendet die Taste %s bereits mit den Umschaltern %x "
"als Tastenkombination\n"
#: ../src/keybindings.c:2559
#: ../src/keybindings.c:2620
#, c-format
msgid "Error launching metacity-dialog to print an error about a command: %s\n"
msgstr ""
"Beim Starten eines Metacity-Dialogs, der einen Fehler zu einem Befehl "
"anzeigen sollte, ist ein Fehler aufgetreten: %s\n"
#: ../src/keybindings.c:2664
#: ../src/keybindings.c:2725
#, c-format
msgid "No command %d has been defined.\n"
msgstr "Es wurde kein Befehl %d festgelegt.\n"
#: ../src/keybindings.c:3494
#: ../src/keybindings.c:3570
msgid "No terminal command has been defined.\n"
msgstr "Es wurde kein Terminal-Befehl festgelegt.\n"
#: ../src/main.c:69
msgid ""
"metacity [--sm-disable] [--sm-client-id=ID] [--sm-save-file=FILENAME] [--"
"display=DISPLAY] [--replace] [--version]\n"
msgstr ""
"metacity [--sm-disable] [--sm-client-id=KENNUNG] [--sm-save-file=DATEINAME] "
"[--display=ANZEIGE] [--replace] [--version]\n"
# CHECK
#: ../src/main.c:76
#: ../src/main.c:69
#, c-format
msgid ""
"metacity %s\n"
@@ -154,12 +146,36 @@ msgstr ""
"Es besteht KEINE Garantie auf MARKTREIFE oder EIGNUNG für einen BESTIMMTEN "
"ZWECK.\n"
#: ../src/main.c:443
#: ../src/main.c:257
msgid "Disable connection to session manager"
msgstr "Verbindung zur Sitzungsverwaltung deaktivieren"
#: ../src/main.c:263
msgid "Replace the running window manager with Metacity"
msgstr "Den aktuellen Fenstermanager durch Metacity ersetzen"
#: ../src/main.c:269
msgid "Specify session management ID"
msgstr "ID der Sitzungsverwaltung angeben"
#: ../src/main.c:274
msgid "X Display to use"
msgstr "Zu verwendene X-Anzeige"
#: ../src/main.c:280
msgid "Initialize session from savefile"
msgstr "Sitzung anhand gespeicherter Datei starten"
#: ../src/main.c:286
msgid "Print version"
msgstr "Version ausgeben"
#: ../src/main.c:440
#, c-format
msgid "Failed to scan themes directory: %s\n"
msgstr "Das Themenverzeichnis konnte nicht eingelesen werden: %s\n"
#: ../src/main.c:459
#: ../src/main.c:456
#, c-format
msgid ""
"Could not find a theme! Be sure %s exists and contains the usual themes."
@@ -167,7 +183,7 @@ msgstr ""
"Es konnte kein Thema gefunden werden! Stellen Sie sicher, dass %s existiert "
"und zumindest die mitgelieferten Themen enthält."
#: ../src/main.c:521
#: ../src/main.c:518
#, c-format
msgid "Failed to restart: %s\n"
msgstr "Neustart fehlgeschlagen: %s\n"
@@ -234,7 +250,7 @@ msgstr "Auf Arbeitsfläche darü_ber verschieben"
msgid "Move to Workspace _Down"
msgstr "Auf Arbeitsfläche dar_unter verschieben"
#: ../src/menu.c:162 ../src/prefs.c:1996
#: ../src/menu.c:162 ../src/prefs.c:2106
#, c-format
msgid "Workspace %d"
msgstr "Arbeitsfläche %d"
@@ -354,19 +370,19 @@ msgstr ""
"Wenn Sie das Beenden dieser Anwendung erzwingen gehen alle ungespeicherten "
"Änderungen verloren."
#: ../src/metacity-dialog.c:128
#: ../src/metacity-dialog.c:129
msgid "_Force Quit"
msgstr "_Beenden erzwingen"
#: ../src/metacity-dialog.c:225
#: ../src/metacity-dialog.c:226
msgid "Title"
msgstr "Titel"
#: ../src/metacity-dialog.c:237
#: ../src/metacity-dialog.c:238
msgid "Class"
msgstr "Klasse"
#: ../src/metacity-dialog.c:262
#: ../src/metacity-dialog.c:264
msgid ""
"These windows do not support \"save current setup\" and will have to be "
"restarted manually next time you log in."
@@ -374,7 +390,7 @@ msgstr ""
"Diese Fenster unterstützen das Speichern der aktuellen Einstellungen nicht "
"und müssen bei der nächsten Anmeldung manuell neu gestartet werden."
#: ../src/metacity-dialog.c:325
#: ../src/metacity-dialog.c:330
#, c-format
msgid ""
"There was an error running \"%s\":\n"
@@ -556,7 +572,7 @@ msgstr ""
"Anwendungen weitergereicht. Die Existenz dieser Einstellung ist etwas "
"fragwürdig, jedoch besser als all die spezifischen Details der anwendungs- "
"und fensterorientierten Modi einzeln vorzuhalten, so zum Beispiel ob Klicks "
"durchgereicht werden. Desweiteren ist der anwendungsorientierte Modus "
"durchgereicht werden. Des Weiteren ist der anwendungsorientierte Modus "
"momentan in weiten Teilen nicht implementiert."
#: ../src/metacity.schemas.in.h:21
@@ -862,8 +878,8 @@ msgid ""
"currently focused window's titlebar is flashed."
msgstr ""
"Legt fest, wie Metacity visuell verdeutlichen soll, dass die Systemglocke "
"ausgelöst wurde oder ein andrer »Piepser« seitens der Anwendung erfolgt ist. "
"Zulässige Werte: »fullscreen« (Schwarz/weiß-Blinken im Vollbild) sowie "
"ausgelöst wurde oder ein anderer »Piepser« seitens der Anwendung erfolgt "
"ist. Zulässige Werte: »fullscreen« (Schwarz/weiß-Blinken im Vollbild) sowie "
"»frame_flash« (Titelbar der betroffenen Anwendung blinkt). Ist die Anwendung "
"unbekannt, die die Glocke ausgelöst hat (bei »Systempiepsern« ist dies der "
"Normalfall), blinkt die Titelbar des momentan fokussierten Fensters."
@@ -1232,7 +1248,7 @@ msgid ""
"\". If you set the option to the special string \"disabled\", then there "
"will be no keybinding for this action."
msgstr ""
"Die zum Verbergen aller normalen Fenster und Fokusieren des Desktops "
"Die zum Verbergen aller normalen Fenster und Fokussieren des Desktops "
"verwendete Tastenkombination. Das Format ist »&lt;Control&gt;« (für Strg.) "
"oder »&lt;Shift&gt;&lt;Alt&gt;F1«. Der Interpreter ist recht liberal und "
"erlaubt Groß- und Kleinschreibung sowie Abkürzungen wie z.B. »&lt;Ctl&gt;« "
@@ -2013,17 +2029,17 @@ msgstr "Modus des Fensterfokus"
msgid "Window title font"
msgstr "Schrift für Fenstertitel"
#: ../src/prefs.c:501 ../src/prefs.c:517 ../src/prefs.c:533 ../src/prefs.c:549
#: ../src/prefs.c:565 ../src/prefs.c:585 ../src/prefs.c:601 ../src/prefs.c:617
#: ../src/prefs.c:633 ../src/prefs.c:649 ../src/prefs.c:665 ../src/prefs.c:681
#: ../src/prefs.c:697 ../src/prefs.c:714 ../src/prefs.c:730 ../src/prefs.c:746
#: ../src/prefs.c:762 ../src/prefs.c:778 ../src/prefs.c:793 ../src/prefs.c:808
#: ../src/prefs.c:823 ../src/prefs.c:839
#: ../src/prefs.c:528 ../src/prefs.c:544 ../src/prefs.c:560 ../src/prefs.c:576
#: ../src/prefs.c:592 ../src/prefs.c:612 ../src/prefs.c:628 ../src/prefs.c:644
#: ../src/prefs.c:660 ../src/prefs.c:676 ../src/prefs.c:692 ../src/prefs.c:708
#: ../src/prefs.c:724 ../src/prefs.c:741 ../src/prefs.c:757 ../src/prefs.c:773
#: ../src/prefs.c:789 ../src/prefs.c:805 ../src/prefs.c:820 ../src/prefs.c:835
#: ../src/prefs.c:850 ../src/prefs.c:866 ../src/prefs.c:882 ../src/prefs.c:898
#, c-format
msgid "GConf key \"%s\" is set to an invalid type\n"
msgstr "Typ des GConf-Schlüssels »%s« ungültig\n"
#: ../src/prefs.c:884
#: ../src/prefs.c:943
#, c-format
msgid ""
"\"%s\" found in configuration database is not a valid value for mouse button "
@@ -2032,19 +2048,19 @@ msgstr ""
"In der Konfigurationsdatenbank gefundenes »%s« ist kein zulässiger Wert für "
"den Maustastenumschalter\n"
#: ../src/prefs.c:908 ../src/prefs.c:1318
#: ../src/prefs.c:967 ../src/prefs.c:1428
#, c-format
msgid "GConf key '%s' is set to an invalid value\n"
msgstr "Wert des GConf-Schlüssels »%s« unzulässig\n"
#: ../src/prefs.c:1035
#: ../src/prefs.c:1145
#, c-format
msgid "Could not parse font description \"%s\" from GConf key %s\n"
msgstr ""
"Schriftbeschreibung »%s« aus GConf-Schlüssel %s konnte nicht verarbeitet "
"werden\n"
#: ../src/prefs.c:1220
#: ../src/prefs.c:1330
#, c-format
msgid ""
"%d stored in GConf key %s is not a reasonable number of workspaces, current "
@@ -2053,7 +2069,7 @@ msgstr ""
"%d, gespeichert in GConf-Schlüssel %s ist keine sinnvolle Anzahl der "
"Arbeitsflächen; das aktuelle Maximum ist %d\n"
#: ../src/prefs.c:1280
#: ../src/prefs.c:1390
msgid ""
"Workarounds for broken applications disabled. Some applications may not "
"behave properly.\n"
@@ -2061,18 +2077,18 @@ msgstr ""
"Provisorien (Workarounds) für defekte Anwendungen abgeschaltet. "
"Möglicherweise funktionieren manche Anwendungen nicht richtig.\n"
#: ../src/prefs.c:1345
#: ../src/prefs.c:1455
#, c-format
msgid "%d stored in GConf key %s is out of range 0 to %d\n"
msgstr ""
"%d, gespeichert in GConf-Schlüssel %s, liegt außerhalb des Bereichs 0-%d\n"
#: ../src/prefs.c:1479
#: ../src/prefs.c:1589
#, c-format
msgid "Error setting number of workspaces to %d: %s\n"
msgstr "Fehler beim Festlegen der Anzahl der Arbeitsflächen auf %d: %s\n"
#: ../src/prefs.c:1723
#: ../src/prefs.c:1833
#, c-format
msgid ""
"\"%s\" found in configuration database is not a valid value for keybinding "
@@ -2081,7 +2097,7 @@ msgstr ""
"In der Konfigurationsdatenbank gefundenes »%s« ist kein zulässiger Wert für "
"die Tastenkombination »%s«\n"
#: ../src/prefs.c:2077
#: ../src/prefs.c:2187
#, c-format
msgid "Error setting name for workspace %d to \"%s\": %s\n"
msgstr "Fehler beim Festlegen des Namens der Arbeitsflächen %d auf »%s«: %s\n"
@@ -2119,7 +2135,7 @@ msgstr ""
msgid "Screen %d on display \"%s\" already has a window manager\n"
msgstr "Bildschirm %d auf Anzeige »%s« hat bereits einen Fenstermanager\n"
#: ../src/screen.c:699
#: ../src/screen.c:716
#, c-format
msgid "Could not release screen %d on display \"%s\"\n"
msgstr "Bildschirm %d auf Anzeige »%s« konnte nicht freigegeben werden\n"
@@ -2257,16 +2273,12 @@ msgstr ""
"x-large oder xx-large sein)\n"
#: ../src/theme-parser.c:729 ../src/theme-parser.c:737
#: ../src/theme-parser.c:2936 ../src/theme-parser.c:3025
#: ../src/theme-parser.c:3032 ../src/theme-parser.c:3039
#, c-format
msgid "No \"%s\" attribute on element <%s>"
msgstr "Kein »%s«-Attribut in Element <%s>"
#: ../src/theme-parser.c:807 ../src/theme-parser.c:897
#: ../src/theme-parser.c:935 ../src/theme-parser.c:1012
#: ../src/theme-parser.c:1062 ../src/theme-parser.c:1070
#: ../src/theme-parser.c:1126 ../src/theme-parser.c:1134
#: ../src/theme-parser.c:2936 ../src/theme-parser.c:3025
#: ../src/theme-parser.c:3032 ../src/theme-parser.c:3039
#, c-format
msgid "No \"%s\" attribute on <%s> element"
msgstr "Kein »%s«-Attribut in Element <%s>"
@@ -2977,11 +2989,11 @@ msgstr "Das Seitenverhältnis %g für einen Knopf ergibt keinen Sinn"
msgid "Frame geometry does not specify size of buttons"
msgstr "Die Rahmengeometrie gibt die Abmessungen der Knöpfe nicht an"
#: ../src/theme.c:849
#: ../src/theme.c:843
msgid "Gradients should have at least two colors"
msgstr "Farbverläufe sollten mindestens zwei Farben enthalten"
#: ../src/theme.c:975
#: ../src/theme.c:969
#, c-format
msgid ""
"GTK color specification must have the state in brackets, e.g. gtk:fg[NORMAL] "
@@ -2990,7 +3002,7 @@ msgstr ""
"Bei GTK-Farbangaben muss der Zustand in eckigen Klammern stehen, z.B. gtk:fg"
"[NORMAL], wobei NORMAL der Zustand ist; »%s« konnte nicht verarbeitet werden."
#: ../src/theme.c:989
#: ../src/theme.c:983
#, c-format
msgid ""
"GTK color specification must have a close bracket after the state, e.g. gtk:"
@@ -3000,17 +3012,17 @@ msgstr ""
"enthalten, z.B. gtk:fg[NORMAL], wobei NORMAL der Zustand ist; »%s« konnte "
"nicht verarbeitet werden"
#: ../src/theme.c:1000
#: ../src/theme.c:994
#, c-format
msgid "Did not understand state \"%s\" in color specification"
msgstr "Zustand »%s« in der Farbangabe konnte nicht verarbeitet werden"
#: ../src/theme.c:1013
#: ../src/theme.c:1007
#, c-format
msgid "Did not understand color component \"%s\" in color specification"
msgstr "Farbkomponente »%s« in der Farbangabe konnte nicht verarbeitet werden"
#: ../src/theme.c:1043
#: ../src/theme.c:1037
#, c-format
msgid ""
"Blend format is \"blend/bg_color/fg_color/alpha\", \"%s\" does not fit the "
@@ -3019,18 +3031,18 @@ msgstr ""
"Das Blendformat ist »Blend/Hintergrundfarbe/Vordergrundfarbe/Alpha«; »%s« "
"passt nicht auf dieses Format"
#: ../src/theme.c:1054
#: ../src/theme.c:1048
#, c-format
msgid "Could not parse alpha value \"%s\" in blended color"
msgstr "Der Alphawert »%s« in einer Mischfarbe konnte nicht verarbeitet werden"
#: ../src/theme.c:1064
#: ../src/theme.c:1058
#, c-format
msgid "Alpha value \"%s\" in blended color is not between 0.0 and 1.0"
msgstr ""
"Der Alphawert »%s« in einer Mischfarbe liegt nicht zwischen 0.0 und 1.0"
#: ../src/theme.c:1111
#: ../src/theme.c:1105
#, c-format
msgid ""
"Shade format is \"shade/base_color/factor\", \"%s\" does not fit the format"
@@ -3038,28 +3050,28 @@ msgstr ""
"Das Mischformat ist »Mischen/Basisfarbe/Faktor«; »%s« passt nicht auf dieses "
"Format"
#: ../src/theme.c:1122
#: ../src/theme.c:1116
#, c-format
msgid "Could not parse shade factor \"%s\" in shaded color"
msgstr ""
"Der Mischfaktor »%s« in einer Mischfarbe konnte nicht verarbeitet werden"
#: ../src/theme.c:1132
#: ../src/theme.c:1126
#, c-format
msgid "Shade factor \"%s\" in shaded color is negative"
msgstr "Der Mischfaktor »%s« in einer Mischfarbe ist negativ"
#: ../src/theme.c:1161
#: ../src/theme.c:1155
#, c-format
msgid "Could not parse color \"%s\""
msgstr "Die Farbe »%s« konnte nicht verarbeitet werden"
#: ../src/theme.c:1423
#: ../src/theme.c:1417
#, c-format
msgid "Coordinate expression contains character '%s' which is not allowed"
msgstr "Der Koordinatenausdruck enthält das unerlaubte Zeichen »%s«"
#: ../src/theme.c:1450
#: ../src/theme.c:1444
#, c-format
msgid ""
"Coordinate expression contains floating point number '%s' which could not be "
@@ -3068,14 +3080,14 @@ msgstr ""
"Der Koordinatenausdruck enthält die Gleitkommazahl »%s«, die nicht "
"verarbeitet werden konnte"
#: ../src/theme.c:1464
#: ../src/theme.c:1458
#, c-format
msgid "Coordinate expression contains integer '%s' which could not be parsed"
msgstr ""
"Der Koordinatenausdruck enthält die Ganzzahl »%s«, die nicht verarbeitet "
"werden konnte"
#: ../src/theme.c:1531
#: ../src/theme.c:1525
#, c-format
msgid ""
"Coordinate expression contained unknown operator at the start of this text: "
@@ -3084,22 +3096,22 @@ msgstr ""
"Der Koordinatenausdruck enthält einen unbekannten Operator am Anfang dieses "
"Texts: »%s«"
#: ../src/theme.c:1588
#: ../src/theme.c:1582
msgid "Coordinate expression was empty or not understood"
msgstr "Der Koordinatenausdruck war leer oder unverständlich"
#: ../src/theme.c:1731 ../src/theme.c:1741 ../src/theme.c:1775
#: ../src/theme.c:1725 ../src/theme.c:1735 ../src/theme.c:1769
msgid "Coordinate expression results in division by zero"
msgstr "Der Koordinatenausdruck führt zu einer Division durch Null"
#: ../src/theme.c:1783
#: ../src/theme.c:1777
msgid ""
"Coordinate expression tries to use mod operator on a floating-point number"
msgstr ""
"Der Koordinatenausdruck versucht, den Modulo-Operator auf eine "
"Gleitkommazahl anzuwenden"
#: ../src/theme.c:1840
#: ../src/theme.c:1834
#, c-format
msgid ""
"Coordinate expression has an operator \"%s\" where an operand was expected"
@@ -3107,17 +3119,17 @@ msgstr ""
"Der Koordinatenausdruck enthält den Operator »%s«, wo ein Operand stehen "
"müsste"
#: ../src/theme.c:1849
#: ../src/theme.c:1843
msgid "Coordinate expression had an operand where an operator was expected"
msgstr ""
"Der Koordinatenausdruck enthält einen Operanden, wo ein Operator stehen "
"müsste"
#: ../src/theme.c:1857
#: ../src/theme.c:1851
msgid "Coordinate expression ended with an operator instead of an operand"
msgstr "Der Koordinatenausdruck endet mit einem Operator statt einem Operanden"
#: ../src/theme.c:1867
#: ../src/theme.c:1861
#, c-format
msgid ""
"Coordinate expression has operator \"%c\" following operator \"%c\" with no "
@@ -3126,7 +3138,7 @@ msgstr ""
"Der Koordinatenausdruck enthält die beiden Operatoren »%c« und »%c«, jedoch "
"keinen Operanden dazwischen"
#: ../src/theme.c:1986
#: ../src/theme.c:1980
msgid ""
"Coordinate expression parser overflowed its buffer, this is really a "
"Metacity bug, but are you sure you need a huge expression like that?"
@@ -3135,35 +3147,35 @@ msgstr ""
"Dies ist ein Fehler in Metacity; Sind Sie sicher, dass sie so einen riesigen "
"Ausdruck benötigen?"
#: ../src/theme.c:2015
#: ../src/theme.c:2009
msgid "Coordinate expression had a close parenthesis with no open parenthesis"
msgstr ""
"Der Koordinatenausdruck enthält eine schließende Klammer, jedoch keine "
"Öffnende"
#: ../src/theme.c:2078
#: ../src/theme.c:2072
#, c-format
msgid "Coordinate expression had unknown variable or constant \"%s\""
msgstr ""
"Der Koordinatenausdruck enthält die unbekannte Variable oder Konstante »%s«"
#: ../src/theme.c:2135
#: ../src/theme.c:2129
msgid "Coordinate expression had an open parenthesis with no close parenthesis"
msgstr ""
"Der Koordinatenausdruck enthält eine öffnende Klammer, jedoch keine "
"Schließende"
#: ../src/theme.c:2146
#: ../src/theme.c:2140
msgid "Coordinate expression doesn't seem to have any operators or operands"
msgstr ""
"Der Koordinatenausdruck scheint weder Operatoren noch Operanden zu enthalten"
#: ../src/theme.c:2390 ../src/theme.c:2412 ../src/theme.c:2433
#: ../src/theme.c:2384 ../src/theme.c:2406 ../src/theme.c:2427
#, c-format
msgid "Theme contained an expression \"%s\" that resulted in an error: %s\n"
msgstr "Thema enthält den Ausdruck »%s«, der zu folgendem Fehler führte: %s\n"
#: ../src/theme.c:3919
#: ../src/theme.c:3913
#, c-format
msgid ""
"<button function=\"%s\" state=\"%s\" draw_ops=\"whatever\"/> must be "
@@ -3172,25 +3184,25 @@ msgstr ""
"Für diesen Rahmenstil muss <button function=\"%s\" state=\"%s\" draw_ops="
"\"irgendwas\"/> angegeben werden"
#: ../src/theme.c:4369 ../src/theme.c:4401
#: ../src/theme.c:4363 ../src/theme.c:4395
#, c-format
msgid ""
"Missing <frame state=\"%s\" resize=\"%s\" focus=\"%s\" style=\"whatever\"/>"
msgstr ""
"<frame state=\"%s\" resize=\"%s\" focus=\"%s\" style=\"irgendwas\"/> fehlt"
#: ../src/theme.c:4452
#: ../src/theme.c:4446
#, c-format
msgid "Failed to load theme \"%s\": %s\n"
msgstr "Thema »%s« konnte nicht geladen werden: %s\n"
#: ../src/theme.c:4598 ../src/theme.c:4605 ../src/theme.c:4612
#: ../src/theme.c:4619 ../src/theme.c:4626
#: ../src/theme.c:4592 ../src/theme.c:4599 ../src/theme.c:4606
#: ../src/theme.c:4613 ../src/theme.c:4620
#, c-format
msgid "No <%s> set for theme \"%s\""
msgstr "Kein <%s> für Thema »%s« festgelegt"
#: ../src/theme.c:4636
#: ../src/theme.c:4630
#, c-format
msgid ""
"No frame style set for window type \"%s\" in theme \"%s\", add a <window "
@@ -3199,7 +3211,7 @@ msgstr ""
"Kein Rahmenstil für Fenstertyp »%s« in Thema »%s« angegeben; fügen Sie ein "
"Element <window type=\"%s\" style_set=\"irgendwas\"/> hinzu"
#: ../src/theme.c:4658
#: ../src/theme.c:4652
#, c-format
msgid ""
"<menu_icon function=\"%s\" state=\"%s\" draw_ops=\"whatever\"/> must be "
@@ -3208,7 +3220,7 @@ msgstr ""
"Für dieses Thema muss <menu_icon function=\"%s\" state=\"%s\" draw_ops="
"\"irgendwas\"/> angegeben werden"
#: ../src/theme.c:5047 ../src/theme.c:5109
#: ../src/theme.c:5041 ../src/theme.c:5103
#, c-format
msgid ""
"User-defined constants must begin with a capital letter; \"%s\" does not"
@@ -3216,7 +3228,7 @@ msgstr ""
"Benutzerdefinierte Konstanten müssen mit einem Großbuchstaben beginnen; »%s« "
"tut das nicht"
#: ../src/theme.c:5055 ../src/theme.c:5117
#: ../src/theme.c:5049 ../src/theme.c:5111
#, c-format
msgid "Constant \"%s\" has already been defined"
msgstr "Konstante »%s« wurde bereits definiert"
@@ -3258,7 +3270,7 @@ msgid "Application set a bogus _NET_WM_PID %ld\n"
msgstr "Application hat eine unsinnige _NET_WM_PID %ld angegeben\n"
#. first time through
#: ../src/window.c:4912
#: ../src/window.c:5205
#, c-format
msgid ""
"Window %s sets SM_CLIENT_ID on itself, instead of on the WM_CLIENT_LEADER "
@@ -3280,7 +3292,7 @@ msgstr ""
#. * MWM but not WM_NORMAL_HINTS are basically broken. We complain
#. * about these apps but make them work.
#.
#: ../src/window.c:5583
#: ../src/window.c:5876
#, c-format
msgid ""
"Window %s sets an MWM hint indicating it isn't resizable, but sets min size %"
@@ -3318,27 +3330,3 @@ msgid ""
msgstr ""
"Eigenschaft %s auf Fenster 0x%lx enthielt ungültiges UTF-8 für Objekt %d in "
"der Liste\n"
#~ msgid "Put on _All Workspaces"
#~ msgstr "Auf _alle Arbeitsflächen legen"
#~ msgid "Select how to give focus to windows"
#~ msgstr "Festlegen, wie der Fokus zwischen Fenstern durchgereicht wird"
#~ msgid "Window Focus"
#~ msgstr "Fensterfokus"
#~ msgid "Clic_k to give focus"
#~ msgstr "_Klicken, um den Fokus zu übergeben"
#~ msgid "Focus behavior:"
#~ msgstr "Fokusverhalten:"
#~ msgid "Window Focus Preferences"
#~ msgstr "Fensterfokus-Einstellungen"
#~ msgid "_Point to give focus"
#~ msgstr "_Zeigen, um den Fokus zu übergeben"
#~ msgid "_Raise window on focus"
#~ msgstr "Fenster beim Fokussieren _anheben"

1280
po/el.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

1512
po/es.po

File diff suppressed because it is too large Load Diff

1266
po/et.po

File diff suppressed because it is too large Load Diff

1106
po/eu.po

File diff suppressed because it is too large Load Diff

2374
po/fa.po

File diff suppressed because it is too large Load Diff

1091
po/fi.po

File diff suppressed because it is too large Load Diff

1035
po/fr.po

File diff suppressed because it is too large Load Diff

1048
po/ga.po

File diff suppressed because it is too large Load Diff

2603
po/gl.po

File diff suppressed because it is too large Load Diff

1558
po/gu.po

File diff suppressed because it is too large Load Diff

1151
po/he.po

File diff suppressed because it is too large Load Diff

1170
po/hi.po

File diff suppressed because it is too large Load Diff

1070
po/hr.po

File diff suppressed because it is too large Load Diff

2073
po/hu.po

File diff suppressed because it is too large Load Diff

2853
po/hy.po Normal file

File diff suppressed because it is too large Load Diff

1604
po/id.po

File diff suppressed because it is too large Load Diff

1062
po/is.po

File diff suppressed because it is too large Load Diff

1089
po/it.po

File diff suppressed because it is too large Load Diff

775
po/ja.po

File diff suppressed because it is too large Load Diff

629
po/ko.po

File diff suppressed because it is too large Load Diff

2668
po/ku.po Normal file

File diff suppressed because it is too large Load Diff

1095
po/lt.po

File diff suppressed because it is too large Load Diff

1088
po/lv.po

File diff suppressed because it is too large Load Diff

1427
po/mk.po

File diff suppressed because it is too large Load Diff

1057
po/ml.po

File diff suppressed because it is too large Load Diff

1070
po/mn.po

File diff suppressed because it is too large Load Diff

1069
po/ms.po

File diff suppressed because it is too large Load Diff

1123
po/nb.po

File diff suppressed because it is too large Load Diff

3133
po/ne.po Normal file

File diff suppressed because it is too large Load Diff

1182
po/nl.po

File diff suppressed because it is too large Load Diff

1063
po/nn.po

File diff suppressed because it is too large Load Diff

1123
po/no.po

File diff suppressed because it is too large Load Diff

1063
po/or.po

File diff suppressed because it is too large Load Diff

1787
po/pa.po

File diff suppressed because it is too large Load Diff

1110
po/pl.po

File diff suppressed because it is too large Load Diff

1063
po/pt.po

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

1993
po/ro.po

File diff suppressed because it is too large Load Diff

1125
po/ru.po

File diff suppressed because it is too large Load Diff

3240
po/rw.po Normal file

File diff suppressed because it is too large Load Diff

1068
po/sk.po

File diff suppressed because it is too large Load Diff

1093
po/sl.po

File diff suppressed because it is too large Load Diff

1127
po/sq.po

File diff suppressed because it is too large Load Diff

1094
po/sr.po

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

1054
po/sv.po

File diff suppressed because it is too large Load Diff

1063
po/ta.po

File diff suppressed because it is too large Load Diff

1190
po/th.po

File diff suppressed because it is too large Load Diff

1033
po/tk.po

File diff suppressed because it is too large Load Diff

1072
po/tr.po

File diff suppressed because it is too large Load Diff

1347
po/uk.po

File diff suppressed because it is too large Load Diff

2945
po/vi.po

File diff suppressed because it is too large Load Diff

1068
po/wa.po

File diff suppressed because it is too large Load Diff

3294
po/xh.po Normal file

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

@@ -60,3 +60,5 @@ moving/resizing (constraints): http://bugzilla.gnome.org/show_bug.cgi?id=155458
window placement: http://bugzilla.gnome.org/show_bug.cgi?id=155460
logout/system-monitor keys: http://bugzilla.gnome.org/show_bug.cgi?id=155462
modal dialogs: http://bugzilla.gnome.org/show_bug.cgi?id=164841
multi-head sans xinerama: http://bugzilla.gnome.org/show_bug.cgi?id=324772
xinerama: http://bugzilla.gnome.org/show_bug.cgi?id=324773

View File

@@ -5,6 +5,7 @@ Makefile
metacity
metacity-theme-viewer
metacity-dialog
testboxes
testgradient
inlinepixbufs.h
metacity.desktop

View File

@@ -13,6 +13,8 @@ metacity_SOURCES= \
async-getprop.h \
bell.h \
bell.c \
boxes.h \
boxes.c \
common.h \
compositor.c \
compositor.h \
@@ -25,6 +27,8 @@ metacity_SOURCES= \
display.h \
draw-workspace.c \
draw-workspace.h \
edge-resistance.c \
edge-resistance.h \
effects.c \
effects.h \
errors.c \
@@ -133,11 +137,13 @@ metacity_LDADD=@METACITY_LIBS@ $(EFENCE)
metacity_theme_viewer_LDADD= @METACITY_LIBS@ libmetacity-private.la
metacity_dialog_LDADD=@METACITY_LIBS@
testboxes_SOURCES=util.h util.c boxes.h boxes.c testboxes.c
testgradient_SOURCES=gradient.h gradient.c testgradient.c
testasyncgetprop_SOURCES=async-getprop.h async-getprop.c testasyncgetprop.c
noinst_PROGRAMS=testgradient testasyncgetprop
noinst_PROGRAMS=testboxes testgradient testasyncgetprop
testboxes_LDADD= @METACITY_LIBS@
testgradient_LDADD= @METACITY_LIBS@
testasyncgetprop_LDADD= @METACITY_LIBS@

View File

@@ -522,7 +522,6 @@ ag_task_create (Display *dpy,
{
AgGetPropertyTask *task;
xGetPropertyReq *req;
xError error;
AgPerDisplayData *dd;
/* Fire up our request */
@@ -543,8 +542,6 @@ ag_task_create (Display *dpy,
req->longOffset = offset;
req->longLength = length;
error.sequenceNumber = dpy->request;
/* Queue up our async task */
task = Xcalloc (1, sizeof (AgGetPropertyTask));
if (task == NULL)

View File

@@ -2,6 +2,7 @@
/*
* Copyright (C) 2002 Sun Microsystems Inc.
* Copyright (C) 2005, 2006 Elijah Newren
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
@@ -29,8 +30,8 @@ meta_bell_flash_screen (MetaDisplay *display,
MetaScreen *screen)
{
Window root = screen->xroot;
int width = screen->width;
int height = screen->height;
int width = screen->rect.width;
int height = screen->rect.height;
if (screen->flash_window == None)
{
@@ -77,7 +78,12 @@ meta_bell_flash_screen (MetaDisplay *display,
XFlush (display->xdisplay);
XSync (display->xdisplay, False);
XUnmapWindow (display->xdisplay, screen->flash_window);
XFreeGC (display->xdisplay, gc);
}
if (meta_prefs_get_focus_mode () != META_FOCUS_MODE_CLICK &&
!display->mouse_mode)
meta_display_increment_focus_sentinel (display);
XFlush (display->xdisplay);
}
@@ -246,5 +252,5 @@ void
meta_bell_notify_frame_destroy (MetaFrame *frame)
{
if (frame->is_flashing)
g_idle_remove_by_data (frame);
g_source_remove_by_funcs_user_data (&g_timeout_funcs, frame);
}

1812
src/boxes.c Normal file

File diff suppressed because it is too large Load Diff

263
src/boxes.h Normal file
View File

@@ -0,0 +1,263 @@
/* Simple box operations */
/*
* Copyright (C) 2005, 2006 Elijah Newren
*
* 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_BOXES_H
#define META_BOXES_H
#include <glib.h>
#include "common.h"
typedef struct _MetaRectangle MetaRectangle;
struct _MetaRectangle
{
int x;
int y;
int width;
int height;
};
#define BOX_LEFT(box) ((box).x) /* Leftmost pixel of rect */
#define BOX_RIGHT(box) ((box).x + (box).width) /* One pixel past right */
#define BOX_TOP(box) ((box).y) /* Topmost pixel of rect */
#define BOX_BOTTOM(box) ((box).y + (box).height) /* One pixel past bottom */
typedef enum
{
FIXED_DIRECTION_X = 1 << 0,
FIXED_DIRECTION_Y = 1 << 1,
} FixedDirections;
typedef enum
{
META_EDGE_WINDOW,
META_EDGE_XINERAMA,
META_EDGE_SCREEN
} MetaEdgeType;
typedef struct _MetaEdge MetaEdge;
struct _MetaEdge
{
MetaRectangle rect; /* width or height should be 1 */
MetaDirection side_type; /* should only have 1 of the 4 directions set */
MetaEdgeType edge_type;
};
/* Output functions -- note that the output buffer had better be big enough:
* rect_to_string: RECT_LENGTH
* region_to_string: (RECT_LENGTH+strlen(separator_string)) *
* g_list_length (region)
* edge_to_string: EDGE_LENGTH
* edge_list_to_...: (EDGE_LENGTH+strlen(separator_string)) *
* g_list_length (edge_list)
*/
#define RECT_LENGTH 27
#define EDGE_LENGTH 37
char* meta_rectangle_to_string (const MetaRectangle *rect,
char *output);
char* meta_rectangle_region_to_string (GList *region,
const char *separator_string,
char *output);
char* meta_rectangle_edge_to_string (const MetaEdge *edge,
char *output);
char* meta_rectangle_edge_list_to_string (
GList *edge_list,
const char *separator_string,
char *output);
/* Function to make initializing a rect with a single line of code easy */
MetaRectangle meta_rect (int x, int y, int width, int height);
/* Basic comparison functions */
int meta_rectangle_area (const MetaRectangle *rect);
gboolean meta_rectangle_intersect (const MetaRectangle *src1,
const MetaRectangle *src2,
MetaRectangle *dest);
gboolean meta_rectangle_equal (const MetaRectangle *src1,
const MetaRectangle *src2);
/* overlap is similar to intersect but doesn't provide location of
* intersection information.
*/
gboolean meta_rectangle_overlap (const MetaRectangle *rect1,
const MetaRectangle *rect2);
/* vert_overlap means ignore the horizontal location and ask if the
* vertical parts overlap. An alternate way to think of it is "Does there
* exist a way to shift either rect horizontally so that the two rects
* overlap?" horiz_overlap is similar.
*/
gboolean meta_rectangle_vert_overlap (const MetaRectangle *rect1,
const MetaRectangle *rect2);
gboolean meta_rectangle_horiz_overlap (const MetaRectangle *rect1,
const MetaRectangle *rect2);
/* could_fit_rect determines whether "outer_rect" is big enough to contain
* inner_rect. contains_rect checks whether it actually contains it.
*/
gboolean meta_rectangle_could_fit_rect (const MetaRectangle *outer_rect,
const MetaRectangle *inner_rect);
gboolean meta_rectangle_contains_rect (const MetaRectangle *outer_rect,
const MetaRectangle *inner_rect);
/* Resize old_rect to the given new_width and new_height, but store the
* result in rect. NOTE THAT THIS IS RESIZE ONLY SO IT CANNOT BE USED FOR
* A MOVERESIZE OPERATION (that simplies the routine a little bit as it
* means there's no difference between NorthWestGravity and StaticGravity.
* Also, I lied a little bit--technically, you could use it in a MoveResize
* operation if you muck with old_rect just right).
*/
void meta_rectangle_resize_with_gravity (const MetaRectangle *old_rect,
MetaRectangle *rect,
int gravity,
int new_width,
int new_height);
/* find a list of rectangles with the property that a window is contained
* in the given region if and only if it is contained in one of the
* rectangles in the list.
*
* In this case, the region is given by taking basic_rect, removing from
* it the intersections with all the rectangles in the all_struts list,
* then expanding all the rectangles in the resulting list by the given
* amounts on each side.
*
* See boxes.c for more details.
*/
GList* meta_rectangle_get_minimal_spanning_set_for_region (
const MetaRectangle *basic_rect,
const GSList *all_struts);
/* Expand all rectangles in region by the given amount on each side */
GList* meta_rectangle_expand_region (GList *region,
const int left_expand,
const int right_expand,
const int top_expand,
const int bottom_expand);
/* Same as for meta_rectangle_expand_region except that rectangles not at
* least min_x or min_y in size are not expanded in that direction
*/
GList* meta_rectangle_expand_region_conditionally (
GList *region,
const int left_expand,
const int right_expand,
const int top_expand,
const int bottom_expand,
const int min_x,
const int min_y);
/* Free the list created by
* meta_rectangle_get_minimal_spanning_set_for_region()
* or
* meta_rectangle_find_onscreen_edges ()
* or
* meta_rectangle_find_nonintersected_xinerama_edges()
*/
void meta_rectangle_free_list_and_elements (GList *filled_list);
/* could_fit_in_region determines whether one of the spanning_rects is
* big enough to contain rect. contained_in_region checks whether one
* actually contains it.
*/
gboolean meta_rectangle_could_fit_in_region (
const GList *spanning_rects,
const MetaRectangle *rect);
gboolean meta_rectangle_contained_in_region (
const GList *spanning_rects,
const MetaRectangle *rect);
/* Make the rectangle small enough to fit into one of the spanning_rects,
* but make it no smaller than min_size.
*/
void meta_rectangle_clamp_to_fit_into_region (
const GList *spanning_rects,
FixedDirections fixed_directions,
MetaRectangle *rect,
const MetaRectangle *min_size);
/* Clip the rectangle so that it fits into one of the spanning_rects, assuming
* it overlaps with at least one of them
*/
void meta_rectangle_clip_to_region (const GList *spanning_rects,
FixedDirections fixed_directions,
MetaRectangle *rect);
/* Shove the rectangle into one of the spanning_rects, assuming it fits in
* one of them.
*/
void meta_rectangle_shove_into_region(
const GList *spanning_rects,
FixedDirections fixed_directions,
MetaRectangle *rect);
/* Finds the point on the line connecting (x1,y1) to (x2,y2) which is closest
* to (px, py). Useful for finding an optimal rectangle size when given a
* range between two sizes that are all candidates.
*/
void meta_rectangle_find_linepoint_closest_to_point (double x1, double y1,
double x2, double y2,
double px, double py,
double *valx, double *valy);
/***************************************************************************/
/* */
/* Switching gears to code for edges instead of just rectangles */
/* */
/***************************************************************************/
/* Return whether an edge overlaps or is adjacent to the rectangle in the
* nonzero-width dimension of the edge.
*/
gboolean meta_rectangle_edge_aligns (const MetaRectangle *rect,
const MetaEdge *edge);
/* Compare two edges, so that sorting functions can put a list of edges in
* canonical order.
*/
gint meta_rectangle_edge_cmp (gconstpointer a, gconstpointer b);
/* Compare two edges, so that sorting functions can put a list of edges in
* order. This function doesn't separate left edges first, then right edges,
* etc., but rather compares only upon location.
*/
gint meta_rectangle_edge_cmp_ignore_type (gconstpointer a, gconstpointer b);
/* Removes an parts of edges in the given list that intersect any box in the
* given rectangle list. Returns the result.
*/
GList* meta_rectangle_remove_intersections_with_boxes_from_edges (
GList *edges,
const GSList *rectangles);
/* Finds all the edges of an onscreen region, returning a GList* of
* MetaEdgeRect's.
*/
GList* meta_rectangle_find_onscreen_edges (const MetaRectangle *basic_rect,
const GSList *all_struts);
/* Finds edges between adjacent xineramas which are not covered by the given
* struts.
*/
GList* meta_rectangle_find_nonintersected_xinerama_edges (
const GList *xinerama_rects,
const GSList *all_struts);
#endif /* META_BOXES_H */

View File

@@ -2,6 +2,7 @@
/*
* Copyright (C) 2001 Havoc Pennington
* Copyright (C) 2005 Elijah Newren
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
@@ -64,7 +65,8 @@ typedef enum
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
META_MENU_OP_MOVE_DOWN = 1 << 16,
META_MENU_OP_RECOVER = 1 << 17
} MetaMenuOp;
typedef struct _MetaWindowMenu MetaWindowMenu;
@@ -184,6 +186,22 @@ typedef enum
META_VIRTUAL_MOD5_MASK = 1 << 14
} MetaVirtualModifier;
/* Relative directions or sides seem to come up all over the place... */
/* FIXME: Replace
* place.[ch]:MetaWindowEdgePosition,
* screen.[ch]:MetaScreenDirection,
* workspace.[ch]:MetaMotionDirection,
* with the use of MetaDirection.
*/
typedef enum
{
META_DIRECTION_LEFT = 1 << 0,
META_DIRECTION_RIGHT = 1 << 1,
META_DIRECTION_TOP = 1 << 2,
META_DIRECTION_BOTTOM = 1 << 3,
META_DIRECTION_UP = 1 << 2, /* Alternate name for TOP */
META_DIRECTION_DOWN = 1 << 3 /* Alternate name for BOTTOM */
} MetaDirection;
/* Function a window button can have. Note, you can't add stuff here
* without extending the theme format to draw a new function and
@@ -226,7 +244,3 @@ struct _MetaButtonLayout
(ycoord) < ((rect).y + (rect).height))
#endif

File diff suppressed because it is too large Load Diff

View File

@@ -25,6 +25,8 @@
#include "util.h"
#include "display.h"
typedef void (* MetaMinimizeFinishedFunc) (gpointer data);
MetaCompositor* meta_compositor_new (MetaDisplay *display);
void meta_compositor_unref (MetaCompositor *compositor);
void meta_compositor_process_event (MetaCompositor *compositor,
@@ -35,22 +37,21 @@ void meta_compositor_add_window (MetaCompositor *compositor,
XWindowAttributes *attrs);
void meta_compositor_remove_window (MetaCompositor *compositor,
Window xwindow);
void meta_compositor_set_debug_updates (MetaCompositor *compositor,
gboolean debug_updates);
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);
void meta_compositor_minimize (MetaCompositor *compositor,
MetaWindow *window,
int x,
int y,
int width,
int height,
MetaMinimizeFinishedFunc finished_cb,
gpointer finished_data);
#endif /* META_COMPOSITOR_H */

File diff suppressed because it is too large Load Diff

View File

@@ -2,6 +2,7 @@
/*
* Copyright (C) 2002 Red Hat, Inc.
* Copyright (C) 2005 Elijah Newren
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
@@ -28,32 +29,18 @@
typedef enum
{
META_RESIZE_LEFT_OR_TOP,
META_RESIZE_CENTER,
META_RESIZE_RIGHT_OR_BOTTOM
} MetaResizeDirection;
META_IS_CONFIGURE_REQUEST = 1 << 0,
META_DO_GRAVITY_ADJUST = 1 << 1,
META_IS_USER_ACTION = 1 << 2,
META_IS_MOVE_ACTION = 1 << 3,
META_IS_RESIZE_ACTION = 1 << 4
} MetaMoveResizeFlags;
void meta_window_constrain (MetaWindow *window,
MetaFrameGeometry *fgeom,
MetaFrameGeometry *orig_fgeom,
MetaMoveResizeFlags flags,
int resize_gravity,
const MetaRectangle *orig,
int x_move_delta,
int y_move_delta,
MetaResizeDirection x_direction,
int x_delta,
MetaResizeDirection y_direction,
int y_delta,
MetaRectangle *new);
MetaResizeDirection meta_x_direction_from_gravity (int gravity);
MetaResizeDirection meta_y_direction_from_gravity (int gravity);
#endif /* META_CONSTRAINTS_H */

View File

@@ -3,6 +3,7 @@
/*
* Copyright (C) 2001 Havoc Pennington
* Copyright (C) 2003 Rob Adams
* Copyright (C) 2004-2006 Elijah Newren
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
@@ -47,6 +48,23 @@ meta_core_get_client_size (Display *xdisplay,
*height = window->rect.height;
}
gboolean
meta_core_titlebar_is_onscreen (Display *xdisplay,
Window frame_xwindow)
{
MetaDisplay *display;
MetaWindow *window;
display = meta_display_for_x_display (xdisplay);
window = meta_display_lookup_x_window (display, frame_xwindow);
if (window == NULL || window->frame == NULL)
meta_bug ("No such frame window 0x%lx!\n", frame_xwindow);
return meta_window_titlebar_is_onscreen (window);
}
Window
meta_core_get_client_xwindow (Display *xdisplay,
Window frame_xwindow)
@@ -251,7 +269,8 @@ meta_core_user_lower_and_unfocus (Display *xdisplay,
meta_window_lower (window);
if (meta_prefs_get_focus_mode () == META_FOCUS_MODE_CLICK)
if (meta_prefs_get_focus_mode () == META_FOCUS_MODE_CLICK &&
meta_prefs_get_raise_on_click ())
{
/* Move window to the back of the focusing workspace's MRU list.
* Do extra sanity checks to avoid possible race conditions.
@@ -370,7 +389,8 @@ meta_core_maximize (Display *xdisplay,
if (window == NULL || window->frame == NULL)
meta_bug ("No such frame window 0x%lx!\n", frame_xwindow);
meta_window_maximize (window);
meta_window_maximize (window,
META_MAXIMIZE_HORIZONTAL | META_MAXIMIZE_VERTICAL);
}
void
@@ -386,10 +406,12 @@ meta_core_toggle_maximize (Display *xdisplay,
if (window == NULL || window->frame == NULL)
meta_bug ("No such frame window 0x%lx!\n", frame_xwindow);
if (window->maximized)
meta_window_unmaximize (window);
if (META_WINDOW_MAXIMIZED (window))
meta_window_unmaximize (window,
META_MAXIMIZE_HORIZONTAL | META_MAXIMIZE_VERTICAL);
else
meta_window_maximize (window);
meta_window_maximize (window,
META_MAXIMIZE_HORIZONTAL | META_MAXIMIZE_VERTICAL);
}
void
@@ -405,7 +427,8 @@ meta_core_unmaximize (Display *xdisplay,
if (window == NULL || window->frame == NULL)
meta_bug ("No such frame window 0x%lx!\n", frame_xwindow);
meta_window_unmaximize (window);
meta_window_unmaximize (window,
META_MAXIMIZE_HORIZONTAL | META_MAXIMIZE_VERTICAL);
}
void
@@ -589,7 +612,8 @@ meta_core_show_window_menu (Display *xdisplay,
if (window == NULL || window->frame == NULL)
meta_bug ("No such frame window 0x%lx!\n", frame_xwindow);
meta_window_raise (window);
if (meta_prefs_get_raise_on_click ())
meta_window_raise (window);
meta_window_focus (window, timestamp);
meta_window_show_menu (window, root_x, root_y, button, timestamp);
@@ -690,6 +714,9 @@ meta_core_get_menu_accelerator (MetaMenuOp menu_op,
case META_MENU_OP_MOVE_DOWN:
name = META_KEYBINDING_MOVE_WORKSPACE_DOWN;
break;
case META_MENU_OP_RECOVER:
/* No keybinding for this one */
break;
}
if (name)
@@ -851,9 +878,9 @@ meta_core_get_screen_size (Display *xdisplay,
meta_bug ("No such frame window 0x%lx!\n", frame_on_screen);
if (width)
*width = window->screen->width;
*width = window->screen->rect.width;
if (height)
*height = window->screen->height;
*height = window->screen->rect.height;
}
void

View File

@@ -2,6 +2,7 @@
/*
* Copyright (C) 2001 Havoc Pennington
* Copyright (C) 2005 Elijah Newren
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
@@ -31,6 +32,9 @@ void meta_core_get_client_size (Display *xdisplay,
int *width,
int *height);
gboolean meta_core_titlebar_is_onscreen (Display *xdisplay,
Window frame_xwindow);
Window meta_core_get_client_xwindow (Display *xdisplay,
Window frame_xwindow);

View File

@@ -2,6 +2,7 @@
/*
* Copyright (C) 2001, 2002 Havoc Pennington
* Copyright (C) 2004 Elijah Newren
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
@@ -247,7 +248,7 @@ io_from_ping_dialog (GIOChannel *channel,
if (condition & G_IO_IN)
{
char *str;
int len;
unsigned int len;
GError *err;
/* Go ahead and block for all data from child */

View File

@@ -4,6 +4,7 @@
* Copyright (C) 2001 Havoc Pennington
* Copyright (C) 2002, 2003, 2004 Red Hat, Inc.
* Copyright (C) 2003, 2004 Rob Adams
* Copyright (C) 2004-2006 Elijah Newren
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
@@ -59,6 +60,9 @@
#ifdef HAVE_XKB
#include <X11/XKBlib.h>
#endif
#ifdef HAVE_XCURSOR
#include <X11/Xcursor/Xcursor.h>
#endif
#include <string.h>
#define USE_GDK_DISPLAY
@@ -118,20 +122,6 @@ static void prefs_changed_callback (MetaPreference pref,
static void sanity_check_timestamps (MetaDisplay *display,
Time known_good_timestamp);
static void
set_utf8_string_hint (MetaDisplay *display,
Window xwindow,
Atom atom,
const char *val)
{
meta_error_trap_push (display);
XChangeProperty (display->xdisplay,
xwindow, atom,
display->atom_utf8_string,
8, PropModeReplace, (guchar*) val, strlen (val));
meta_error_trap_pop (display, FALSE);
}
static void
ping_data_free (MetaPingData *ping_data)
{
@@ -299,7 +289,9 @@ meta_display_open (const char *name)
"_NET_MOVERESIZE_WINDOW",
"_NET_DESKTOP_GEOMETRY",
"_NET_DESKTOP_VIEWPORT",
"_METACITY_VERSION"
"_METACITY_VERSION",
"_NET_WM_VISIBLE_NAME",
"_NET_WM_VISIBLE_ICON_NAME"
};
Atom atoms[G_N_ELEMENTS(atom_names)];
@@ -344,6 +336,8 @@ meta_display_open (const char *name)
display->grab_old_window_stacking = NULL;
display->mouse_mode = TRUE; /* Only relevant for mouse or sloppy focus */
display->allow_terminal_deactivation = TRUE; /* Only relevant for when a
terminal has the focus */
#ifdef HAVE_XSYNC
display->grab_sync_request_alarm = None;
@@ -457,6 +451,8 @@ meta_display_open (const char *name)
display->atom_net_desktop_geometry = atoms[89];
display->atom_net_desktop_viewport = atoms[90];
display->atom_metacity_version = atoms[91];
display->atom_net_wm_visible_name = atoms[92];
display->atom_net_wm_visible_icon_name = atoms[93];
display->prop_hooks = NULL;
meta_display_init_window_prop_hooks (display);
@@ -467,7 +463,6 @@ meta_display_open (const char *name)
* created in screen_new
*/
display->leader_window = None;
display->no_focus_window = None;
display->xinerama_cache_invalidated = TRUE;
@@ -519,12 +514,16 @@ meta_display_open (const char *name)
display->grab_resize_timeout_id = 0;
display->grab_have_keyboard = FALSE;
display->last_bell_time = 0;
display->grab_op = META_GRAB_OP_NONE;
display->grab_wireframe_active = FALSE;
display->grab_window = NULL;
display->grab_screen = NULL;
display->grab_resize_popup = NULL;
display->grab_edge_resistance_data = NULL;
#ifdef HAVE_XSYNC
{
int major, minor;
@@ -609,31 +608,36 @@ meta_display_open (const char *name)
#else /* HAVE_RENDER */
meta_verbose ("Not compiled with Render support\n");
#endif /* !HAVE_RENDER */
#ifdef HAVE_XCURSOR
{
XcursorSetTheme (display->xdisplay, meta_prefs_get_cursor_theme ());
XcursorSetDefaultSize (display->xdisplay, meta_prefs_get_cursor_size ());
}
#else /* HAVE_XCURSOR */
meta_verbose ("Not compiled with Xcursor support\n");
#endif /* !HAVE_XCURSOR */
/* Create the leader window here. Set its properties and
* use the timestamp from one of the PropertyNotify events
* that will follow.
*/
{
XSetWindowAttributes attrs;
gulong data[1];
XEvent event;
attrs.event_mask = PropertyChangeMask;
attrs.override_redirect = True;
display->leader_window = meta_create_offscreen_window (display->xdisplay,
DefaultRootWindow (display->xdisplay));
set_utf8_string_hint (display,
display->leader_window,
display->atom_net_wm_name,
"Metacity");
meta_prop_set_utf8_string_hint (display,
display->leader_window,
display->atom_net_wm_name,
"Metacity");
set_utf8_string_hint (display,
display->leader_window,
display->atom_metacity_version,
VERSION);
meta_prop_set_utf8_string_hint (display,
display->leader_window,
display->atom_metacity_version,
VERSION);
data[0] = display->leader_window;
XChangeProperty (display->xdisplay,
@@ -685,7 +689,22 @@ meta_display_open (const char *name)
tmp = display->screens;
while (tmp != NULL)
{
meta_screen_manage_all_windows (tmp->data);
MetaScreen *screen = tmp->data;
/* The compositing manager opens its own connection to the X server
* and uses the XTest extension to ignore grabs. However, it also
* uses GL which opens yet another connection to the X server. With
* this ungrab/grab we would block indefinitely in XOpenDisplay().
*/
meta_display_ungrab (display);
meta_compositor_manage_screen (screen->display->compositor,
screen);
meta_display_grab (display);
meta_screen_manage_all_windows (screen);
tmp = tmp->next;
}
@@ -707,7 +726,10 @@ meta_display_open (const char *name)
* as it is the most recent timestamp.
*/
if (focus == None || focus == PointerRoot)
meta_display_focus_the_no_focus_window (display, timestamp);
/* Just focus the no_focus_window on the first screen */
meta_display_focus_the_no_focus_window (display,
display->screens->data,
timestamp);
else
{
MetaWindow * window;
@@ -715,7 +737,10 @@ meta_display_open (const char *name)
if (window)
meta_display_set_input_focus_window (display, window, FALSE, timestamp);
else
meta_display_focus_the_no_focus_window (display, timestamp);
/* Just focus the no_focus_window on the first screen */
meta_display_focus_the_no_focus_window (display,
display->screens->data,
timestamp);
}
meta_error_trap_pop (display, FALSE);
@@ -801,7 +826,7 @@ void
meta_display_close (MetaDisplay *display)
{
GSList *tmp;
if (display->error_traps > 0)
meta_bug ("Display closed with error traps pending\n");
@@ -1040,7 +1065,6 @@ grab_op_is_mouse (MetaGrabOp op)
case META_GRAB_OP_KEYBOARD_RESIZING_NW:
case META_GRAB_OP_KEYBOARD_MOVING:
return TRUE;
break;
default:
return FALSE;
@@ -1068,7 +1092,6 @@ grab_op_is_keyboard (MetaGrabOp op)
case META_GRAB_OP_KEYBOARD_ESCAPING_DOCK:
case META_GRAB_OP_KEYBOARD_WORKSPACE_SWITCHING:
return TRUE;
break;
default:
return FALSE;
@@ -1098,7 +1121,6 @@ meta_grab_op_is_resizing (MetaGrabOp op)
case META_GRAB_OP_KEYBOARD_RESIZING_SW:
case META_GRAB_OP_KEYBOARD_RESIZING_NW:
return TRUE;
break;
default:
return FALSE;
@@ -1113,7 +1135,6 @@ meta_grab_op_is_moving (MetaGrabOp op)
case META_GRAB_OP_MOVING:
case META_GRAB_OP_KEYBOARD_MOVING:
return TRUE;
break;
default:
return FALSE;
@@ -1240,6 +1261,7 @@ window_raise_with_delay_callback (void *data)
Window root, child;
unsigned int mask;
gboolean same_screen;
gboolean point_in_window;
meta_error_trap_push (window->display);
same_screen = XQueryPointer (window->display->xdisplay,
@@ -1248,8 +1270,10 @@ window_raise_with_delay_callback (void *data)
&root_x, &root_y, &x, &y, &mask);
meta_error_trap_pop (window->display, TRUE);
if ((window->frame && POINT_IN_RECT (root_x, root_y, window->frame->rect)) ||
(window->frame == NULL && POINT_IN_RECT (root_x, root_y, window->rect)))
point_in_window =
(window->frame && POINT_IN_RECT (root_x, root_y, window->frame->rect)) ||
(window->frame == NULL && POINT_IN_RECT (root_x, root_y, window->rect));
if (same_screen && point_in_window)
meta_window_raise (window);
else
meta_topic (META_DEBUG_FOCUS,
@@ -1333,6 +1357,13 @@ handle_net_moveresize_window (MetaDisplay* display,
if (window)
{
/* FIXME!!!! This function is _wrong_ except for the resize-only
* case. Even then, it sucks to special case the code instead of
* factoring out common functionality with the configure reqest
* handling, especially since the EWMH says this message should be
* treated identically to a configure request with the exception of
* having a special gravity specified.
*/
meta_window_get_gravity_position (window, &x, &y);
width = window->rect.width;
height = window->rect.height;
@@ -1355,20 +1386,20 @@ handle_net_moveresize_window (MetaDisplay* display,
{
if (gravity)
meta_window_resize_with_gravity (window,
TRUE,
FALSE,
width,
height,
gravity);
else
meta_window_resize (window,
TRUE,
FALSE,
width,
height);
}
else
{
meta_window_move_resize (window,
TRUE,
FALSE,
x,
y,
width,
@@ -1388,10 +1419,14 @@ handle_net_restack_window (MetaDisplay* display,
if (window)
{
/*
* The EWMH includes a sibling for the restack request, but we
* don't currently support these types of raises.
/* FIXME: The EWMH includes a sibling for the restack request, but we
* (stupidly) don't currently support these types of raises.
*
* Also, unconditionally following these is REALLY stupid--we should
* combine this code with the stuff in
* meta_window_configure_request() which is smart about whether to
* follow the request or do something else (though not smart enough
* and is also too stupid to handle the sibling stuff).
*/
switch (event->xclient.data.l[2])
{
@@ -1591,7 +1626,7 @@ event_callback (XEvent *event,
grab_op_is_keyboard (display->grab_op))
{
meta_topic (META_DEBUG_WINDOW_OPS,
"Ending grab op %d on window %s due to button press\n",
"Ending grab op %u on window %s due to button press\n",
display->grab_op,
(display->grab_window ?
display->grab_window->desc :
@@ -1635,15 +1670,11 @@ event_callback (XEvent *event,
*/
if (!frame_was_receiver)
{
/* Raise on clicking the client area always or only
* in click to focus mode? The debate rages.
* Feel free to change TRUE to FALSE or vice versa
*/
if (TRUE /* meta_prefs_get_focus_mode () == META_FOCUS_MODE_CLICK */)
if (meta_prefs_get_raise_on_click ())
meta_window_raise (window);
else
meta_topic (META_DEBUG_FOCUS,
"Not raising window on click due to mouse/sloppy focus mode\n");
"Not raising window on click due to don't-raise-on-click option\n");
/* Don't focus panels--they must explicitly request focus.
* See bug 160470
@@ -1651,10 +1682,15 @@ event_callback (XEvent *event,
if (window->type != META_WINDOW_DOCK)
{
meta_topic (META_DEBUG_FOCUS,
"Focusing %s due to unmodified button %d press (display.c)\n",
"Focusing %s due to unmodified button %u press (display.c)\n",
window->desc, event->xbutton.button);
meta_window_focus (window, event->xbutton.time);
}
else
/* However, do allow terminals to lose focus due to new
* window mappings after the user clicks on a panel.
*/
display->allow_terminal_deactivation = TRUE;
}
/* you can move on alt-click but not on
@@ -1667,40 +1703,55 @@ event_callback (XEvent *event,
{
if (window->has_resize_func)
{
gboolean north;
gboolean west;
gboolean north, south;
gboolean west, east;
int root_x, root_y;
MetaGrabOp op;
meta_window_get_position (window, &root_x, &root_y);
west = event->xbutton.x_root < (root_x + window->rect.width / 2);
north = event->xbutton.y_root < (root_y + window->rect.height / 2);
west = event->xbutton.x_root < (root_x + 1 * window->rect.width / 3);
east = event->xbutton.x_root > (root_x + 2 * window->rect.width / 3);
north = event->xbutton.y_root < (root_y + 1 * window->rect.height / 3);
south = event->xbutton.y_root > (root_y + 2 * window->rect.height / 3);
if (west && north)
if (north && west)
op = META_GRAB_OP_RESIZING_NW;
else if (west)
op = META_GRAB_OP_RESIZING_SW;
else if (north)
else if (north && east)
op = META_GRAB_OP_RESIZING_NE;
else
else if (south && west)
op = META_GRAB_OP_RESIZING_SW;
else if (south && east)
op = META_GRAB_OP_RESIZING_SE;
else if (north)
op = META_GRAB_OP_RESIZING_N;
else if (west)
op = META_GRAB_OP_RESIZING_W;
else if (east)
op = META_GRAB_OP_RESIZING_E;
else if (south)
op = META_GRAB_OP_RESIZING_S;
else /* Middle region is no-op to avoid user triggering wrong action */
op = META_GRAB_OP_NONE;
meta_display_begin_grab_op (display,
window->screen,
window,
op,
TRUE,
event->xbutton.serial,
event->xbutton.button,
0,
event->xbutton.time,
event->xbutton.x_root,
event->xbutton.y_root);
if (op != META_GRAB_OP_NONE)
meta_display_begin_grab_op (display,
window->screen,
window,
op,
TRUE,
event->xbutton.serial,
event->xbutton.button,
0,
event->xbutton.time,
event->xbutton.x_root,
event->xbutton.y_root);
}
}
else if (event->xbutton.button == 3)
{
if (meta_prefs_get_raise_on_click ())
meta_window_raise (window);
meta_window_show_menu (window,
event->xbutton.x_root,
event->xbutton.y_root,
@@ -1830,9 +1881,10 @@ event_callback (XEvent *event,
{
case META_FOCUS_MODE_MOUSE:
if ((window->frame == NULL || frame_was_receiver) &&
event->xcrossing.mode != NotifyGrab &&
event->xcrossing.mode != NotifyUngrab &&
event->xcrossing.detail != NotifyInferior)
event->xcrossing.mode != NotifyGrab &&
event->xcrossing.mode != NotifyUngrab &&
event->xcrossing.detail != NotifyInferior &&
meta_display_focus_sentinel_clear (display))
{
if (window == display->expected_focus_window)
{
@@ -1840,6 +1892,7 @@ event_callback (XEvent *event,
"Unsetting focus from %s due to LeaveNotify\n",
window->desc);
meta_display_focus_the_no_focus_window (display,
window->screen,
event->xcrossing.time);
}
if (window->type != META_WINDOW_DOCK &&
@@ -1871,7 +1924,8 @@ event_callback (XEvent *event,
{
meta_window_notify_focus (window, event);
}
else if (event->xany.window == display->no_focus_window)
else if (meta_display_xwindow_is_a_no_focus_window (display,
event->xany.window))
{
meta_topic (META_DEBUG_FOCUS,
"Focus %s event received on no_focus_window 0x%lx "
@@ -2143,7 +2197,6 @@ event_callback (XEvent *event,
* closing the display... so return right away.
*/
return FALSE;
break;
case SelectionRequest:
process_selection_request (display, event);
break;
@@ -2315,7 +2368,12 @@ event_callback (XEvent *event,
switch (xkb_ev->xkb_type)
{
case XkbBellNotify:
meta_bell_notify (display, xkb_ev);
if (XSERVER_TIME_IS_BEFORE(display->last_bell_time,
xkb_ev->time - 1000))
{
display->last_bell_time = xkb_ev->time;
meta_bell_notify (display, xkb_ev);
}
break;
}
}
@@ -2642,7 +2700,7 @@ meta_spew_event (MetaDisplay *display,
break;
case ButtonPress:
name = "ButtonPress";
extra = g_strdup_printf ("button %d state 0x%x x %d y %d root 0x%lx same_screen %d",
extra = g_strdup_printf ("button %u state 0x%x x %d y %d root 0x%lx same_screen %d",
event->xbutton.button,
event->xbutton.state,
event->xbutton.x,
@@ -2652,7 +2710,7 @@ meta_spew_event (MetaDisplay *display,
break;
case ButtonRelease:
name = "ButtonRelease";
extra = g_strdup_printf ("button %d state 0x%x x %d y %d root 0x%lx same_screen %d",
extra = g_strdup_printf ("button %u state 0x%x x %d y %d root 0x%lx same_screen %d",
event->xbutton.button,
event->xbutton.state,
event->xbutton.x,
@@ -2894,7 +2952,7 @@ meta_spew_event (MetaDisplay *display,
extra =
g_strdup_printf ("kind: %s "
"x: %d y: %d w: %d h: %d "
"x: %d y: %d w: %u h: %u "
"shaped: %d",
sev->kind == ShapeBounding ?
"ShapeBounding" :
@@ -2961,6 +3019,24 @@ meta_display_unregister_x_window (MetaDisplay *display,
remove_pending_pings_for_window (display, xwindow);
}
gboolean
meta_display_xwindow_is_a_no_focus_window (MetaDisplay *display,
Window xwindow)
{
gboolean is_a_no_focus_window = FALSE;
GSList *temp = display->screens;
while (temp != NULL) {
MetaScreen *screen = temp->data;
if (screen->no_focus_window == xwindow) {
is_a_no_focus_window = TRUE;
break;
}
temp = temp->next;
}
return is_a_no_focus_window;
}
Cursor
meta_display_create_x_cursor (MetaDisplay *display,
MetaCursor cursor)
@@ -3160,18 +3236,31 @@ meta_display_begin_grab_op (MetaDisplay *display,
Window grab_xwindow;
meta_topic (META_DEBUG_WINDOW_OPS,
"Doing grab op %d on window %s button %d pointer already grabbed: %d pointer pos %d,%d\n",
"Doing grab op %u on window %s button %d pointer already grabbed: %d pointer pos %d,%d\n",
op, window ? window->desc : "none", button, pointer_already_grabbed,
root_x, root_y);
if (display->grab_op != META_GRAB_OP_NONE)
{
meta_warning ("Attempt to perform window operation %d on window %s when operation %d on %s already in effect\n",
meta_warning ("Attempt to perform window operation %u on window %s when operation %u on %s already in effect\n",
op, window ? window->desc : "none", display->grab_op,
display->grab_window ? display->grab_window->desc : "none");
return FALSE;
}
if (window &&
(meta_grab_op_is_moving (op) || meta_grab_op_is_resizing (op)))
{
if (meta_prefs_get_raise_on_click ())
meta_window_raise (window);
else
{
display->grab_initial_x = root_x;
display->grab_initial_y = root_y;
display->grab_threshold_movement_reached = FALSE;
}
}
/* We'll ignore any events < this serial. */
if (pointer_already_grabbed)
display->grab_start_serial = event_serial;
@@ -3240,6 +3329,7 @@ meta_display_begin_grab_op (MetaDisplay *display,
display->grab_old_window_stacking = NULL;
#ifdef HAVE_XSYNC
display->grab_sync_request_alarm = None;
display->grab_last_user_action_was_snap = FALSE;
#endif
display->grab_was_cancelled = FALSE;
@@ -3264,23 +3354,8 @@ meta_display_begin_grab_op (MetaDisplay *display,
if (display->grab_wireframe_active)
{
MetaRectangle xor_rect;
display->grab_wireframe_rect = window->rect;
if (window->frame)
{
display->grab_wireframe_rect.x += window->frame->rect.x;
display->grab_wireframe_rect.y += window->frame->rect.y;
}
meta_window_calc_showing (display->grab_window);
meta_window_get_xor_rect (window, &display->grab_wireframe_rect,
&xor_rect);
meta_effects_begin_wireframe (display->grab_window->screen,
&xor_rect);
display->grab_wireframe_last_xor_rect = xor_rect;
meta_window_begin_wireframe (window);
}
#ifdef HAVE_XSYNC
@@ -3340,12 +3415,24 @@ meta_display_begin_grab_op (MetaDisplay *display,
}
meta_topic (META_DEBUG_WINDOW_OPS,
"Grab op %d on window %s successful\n",
"Grab op %u on window %s successful\n",
display->grab_op, window ? window->desc : "(null)");
g_assert (display->grab_window != NULL || display->grab_screen != NULL);
g_assert (display->grab_op != META_GRAB_OP_NONE);
/* If this is a move or resize, cache the window edges for
* resistance/snapping
*/
if (meta_grab_op_is_resizing (display->grab_op) ||
meta_grab_op_is_moving (display->grab_op))
{
meta_topic (META_DEBUG_WINDOW_OPS,
"Computing edges to resist-movement or snap-to for %s.\n",
window->desc);
meta_display_compute_resistance_and_snapping_edges (display);
}
/* Save the old stacking */
if (GRAB_OP_IS_WINDOW_SWITCH (display->grab_op))
{
@@ -3360,15 +3447,25 @@ meta_display_begin_grab_op (MetaDisplay *display,
switch (op)
{
case META_GRAB_OP_KEYBOARD_TABBING_NORMAL:
meta_screen_ensure_tab_popup (screen,
META_TAB_LIST_NORMAL,
META_TAB_SHOW_ICON);
break;
case META_GRAB_OP_KEYBOARD_ESCAPING_NORMAL:
meta_screen_ensure_tab_popup (screen,
META_TAB_LIST_NORMAL);
META_TAB_LIST_NORMAL,
META_TAB_SHOW_INSTANTLY);
break;
case META_GRAB_OP_KEYBOARD_TABBING_DOCK:
meta_screen_ensure_tab_popup (screen,
META_TAB_LIST_DOCKS,
META_TAB_SHOW_ICON);
break;
case META_GRAB_OP_KEYBOARD_ESCAPING_DOCK:
meta_screen_ensure_tab_popup (screen,
META_TAB_LIST_DOCKS);
META_TAB_LIST_DOCKS,
META_TAB_SHOW_INSTANTLY);
break;
case META_GRAB_OP_KEYBOARD_WORKSPACE_SWITCHING:
@@ -3382,12 +3479,6 @@ meta_display_begin_grab_op (MetaDisplay *display,
if (display->grab_window)
{
meta_window_refresh_resize_popup (display->grab_window);
/* repaint window in case we draw it differently
* when grabbed
*/
meta_compositor_damage_window (display->compositor,
display->grab_window);
}
return TRUE;
@@ -3398,7 +3489,7 @@ meta_display_end_grab_op (MetaDisplay *display,
Time timestamp)
{
meta_topic (META_DEBUG_WINDOW_OPS,
"Ending grab op %d at time %lu\n", display->grab_op,
"Ending grab op %u at time %lu\n", display->grab_op,
(unsigned long) timestamp);
if (display->grab_op == META_GRAB_OP_NONE)
@@ -3407,6 +3498,21 @@ meta_display_end_grab_op (MetaDisplay *display,
if (display->grab_window != NULL)
display->grab_window->shaken_loose = FALSE;
if (display->grab_window != NULL &&
!meta_prefs_get_raise_on_click () &&
(meta_grab_op_is_moving (display->grab_op) ||
meta_grab_op_is_resizing (display->grab_op)))
{
/* Only raise the window in orthogonal raise
* ('do-not-raise-on-click') mode if the user didn't try to move
* or resize the given window by at least a threshold amount.
* For raise on click mode, the window was raised at the
* beginning of the grab_op.
*/
if (!display->grab_threshold_movement_reached)
meta_window_raise (display->grab_window);
}
if (GRAB_OP_IS_WINDOW_SWITCH (display->grab_op) ||
display->grab_op == META_GRAB_OP_KEYBOARD_WORKSPACE_SWITCHING)
{
@@ -3419,6 +3525,15 @@ meta_display_end_grab_op (MetaDisplay *display,
display->ungrab_should_not_cause_focus_window = display->grab_xwindow;
}
/* If this was a move or resize clear out the edge cache */
if (meta_grab_op_is_resizing (display->grab_op) ||
meta_grab_op_is_moving (display->grab_op))
{
meta_topic (META_DEBUG_WINDOW_OPS,
"Clearing out the edges for resistance/snapping");
meta_display_cleanup_edges (display);
}
if (display->grab_old_window_stacking != NULL)
{
meta_topic (META_DEBUG_WINDOW_OPS,
@@ -3431,15 +3546,22 @@ meta_display_end_grab_op (MetaDisplay *display,
if (display->grab_wireframe_active)
{
display->grab_wireframe_active = FALSE;
meta_effects_end_wireframe (display->grab_window->screen,
&display->grab_wireframe_last_xor_rect);
meta_window_end_wireframe (display->grab_window);
if (!display->grab_was_cancelled)
meta_window_move_resize (display->grab_window,
TRUE,
display->grab_wireframe_rect.x,
display->grab_wireframe_rect.y,
display->grab_wireframe_rect.width,
display->grab_wireframe_rect.height);
{
if (meta_grab_op_is_moving (display->grab_op))
meta_window_move (display->grab_window,
TRUE,
display->grab_wireframe_rect.x,
display->grab_wireframe_rect.y);
if (meta_grab_op_is_resizing (display->grab_op))
meta_window_resize_with_gravity (display->grab_window,
TRUE,
display->grab_wireframe_rect.width,
display->grab_wireframe_rect.height,
meta_resize_gravity_from_grab_op (display->grab_op));
}
meta_window_calc_showing (display->grab_window);
}
@@ -3469,13 +3591,6 @@ meta_display_end_grab_op (MetaDisplay *display,
display->grab_sync_request_alarm = None;
}
#endif /* HAVE_XSYNC */
/* repaint window in case the grab op drew it in a
* nonstandard way such as transparent or wireframe
*/
if (display->grab_window != NULL)
meta_compositor_damage_window (display->compositor,
display->grab_window);
display->grab_window = NULL;
display->grab_screen = NULL;
@@ -3495,6 +3610,21 @@ meta_display_end_grab_op (MetaDisplay *display,
}
}
void
meta_display_check_threshold_reached (MetaDisplay *display,
int x,
int y)
{
/* Don't bother doing the check again if we've already reached the threshold */
if (display->grab_threshold_movement_reached ||
meta_prefs_get_raise_on_click ())
return;
if (ABS (display->grab_initial_x - x) >= 8 ||
ABS (display->grab_initial_y - y) >= 8)
display->grab_threshold_movement_reached = TRUE;
}
static void
meta_change_button_grab (MetaDisplay *display,
Window xwindow,
@@ -3776,6 +3906,36 @@ meta_display_retheme_all (void)
}
}
void
meta_display_set_cursor_theme (const char *theme,
int size)
{
#ifdef HAVE_XCURSOR
GSList *tmp, *tmp2;
tmp = meta_displays_list ();
while (tmp != NULL)
{
MetaDisplay *display = tmp->data;
XcursorSetTheme (display->xdisplay, theme);
XcursorSetDefaultSize (display->xdisplay, size);
tmp2 = display->screens;
while (tmp2 != NULL)
{
MetaScreen *screen = tmp2->data;
meta_screen_update_cursor (screen);
tmp2 = tmp2->next;
}
tmp = tmp->next;
}
#endif
}
static gboolean is_syncing = FALSE;
gboolean
@@ -3929,7 +4089,7 @@ process_request_frame_extents (MetaDisplay *display,
meta_topic (META_DEBUG_GEOMETRY,
"Setting _NET_FRAME_EXTENTS on unmanaged window 0x%lx "
"to top = %ld, left = %ld, bottom = %ld, right = %ld\n",
"to top = %lu, left = %lu, bottom = %lu, right = %lu\n",
xwindow, data[0], data[1], data[2], data[3]);
meta_error_trap_push (display);
@@ -4151,6 +4311,7 @@ meta_display_get_tab_next (MetaDisplay *display,
{
gboolean skip;
GList *tab_list;
MetaWindow *ret;
tab_list = meta_display_get_tab_list(display,
type,
screen,
@@ -4164,27 +4325,30 @@ meta_display_get_tab_next (MetaDisplay *display,
g_assert (window->display == display);
if (backward)
return find_tab_backward (display, type, screen, workspace,
g_list_find (tab_list,
window),
TRUE);
else
return find_tab_forward (display, type, screen, workspace,
ret = find_tab_backward (display, type, screen, workspace,
g_list_find (tab_list,
window),
TRUE);
else
ret = find_tab_forward (display, type, screen, workspace,
g_list_find (tab_list,
window),
TRUE);
}
else
{
skip = display->focus_window != NULL &&
IN_TAB_CHAIN (display->focus_window, type);
if (backward)
ret = find_tab_backward (display, type, screen, workspace,
tab_list, skip);
else
ret = find_tab_forward (display, type, screen, workspace,
tab_list, skip);
}
skip = display->focus_window != NULL &&
IN_TAB_CHAIN (display->focus_window, type);
if (backward)
return find_tab_backward (display, type, screen, workspace,
tab_list, skip);
else
return find_tab_forward (display, type, screen, workspace,
tab_list, skip);
g_list_free (tab_list);
return ret;
}
MetaWindow*
@@ -4257,53 +4421,6 @@ meta_resize_gravity_from_grab_op (MetaGrabOp op)
return gravity;
}
gboolean
meta_rectangle_intersect (MetaRectangle *src1,
MetaRectangle *src2,
MetaRectangle *dest)
{
int dest_x, dest_y;
int dest_w, dest_h;
int return_val;
g_return_val_if_fail (src1 != NULL, FALSE);
g_return_val_if_fail (src2 != NULL, FALSE);
g_return_val_if_fail (dest != NULL, FALSE);
return_val = FALSE;
dest_x = MAX (src1->x, src2->x);
dest_y = MAX (src1->y, src2->y);
dest_w = MIN (src1->x + src1->width, src2->x + src2->width) - dest_x;
dest_h = MIN (src1->y + src1->height, src2->y + src2->height) - dest_y;
if (dest_w > 0 && dest_h > 0)
{
dest->x = dest_x;
dest->y = dest_y;
dest->width = dest_w;
dest->height = dest_h;
return_val = TRUE;
}
else
{
dest->width = 0;
dest->height = 0;
}
return return_val;
}
gboolean
meta_rectangle_equal (const MetaRectangle *src1,
const MetaRectangle *src2)
{
return ((src1->x == src2->x) &&
(src1->y == src2->y) &&
(src1->width == src2->width) &&
(src1->height == src2->height));
}
static MetaScreen*
find_screen_for_selection (MetaDisplay *display,
Window owner,
@@ -4735,9 +4852,6 @@ timestamp_too_old (MetaDisplay *display,
* timestamp_too_old_or_in_future).
*/
MetaWindow *focus_window;
focus_window = display->focus_window;
if (*timestamp == CurrentTime)
{
meta_warning ("Got a request to focus %s with a timestamp of 0. This "
@@ -4801,13 +4915,14 @@ meta_display_set_input_focus_window (MetaDisplay *display,
void
meta_display_focus_the_no_focus_window (MetaDisplay *display,
MetaScreen *screen,
Time timestamp)
{
if (timestamp_too_old (display, NULL, &timestamp))
return;
XSetInputFocus (display->xdisplay,
display->no_focus_window,
screen->no_focus_window,
RevertToPointerRoot,
timestamp);
display->expected_focus_window = NULL;

View File

@@ -4,6 +4,7 @@
* Copyright (C) 2001 Havoc Pennington
* Copyright (C) 2002 Red Hat, Inc.
* Copyright (C) 2003 Rob Adams
* Copyright (C) 2004-2006 Elijah Newren
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
@@ -32,6 +33,7 @@
#include <X11/Xlib.h>
#include "eventqueue.h"
#include "common.h"
#include "boxes.h"
#ifdef HAVE_STARTUP_NOTIFICATION
#include <libsn/sn.h>
@@ -43,17 +45,6 @@
#define meta_XFree(p) do { if ((p)) XFree ((p)); } while (0)
/* this doesn't really belong here, oh well. */
typedef struct _MetaRectangle MetaRectangle;
struct _MetaRectangle
{
int x;
int y;
int width;
int height;
};
typedef struct MetaCompositor MetaCompositor;
typedef struct _MetaDisplay MetaDisplay;
typedef struct _MetaFrame MetaFrame;
@@ -67,6 +58,8 @@ typedef struct _MetaWorkspace MetaWorkspace;
typedef struct _MetaWindowPropHooks MetaWindowPropHooks;
typedef struct _MetaGroupPropHooks MetaGroupPropHooks;
typedef struct MetaEdgeResistanceData MetaEdgeResistanceData;
typedef void (* MetaWindowPingFunc) (MetaDisplay *display,
Window xwindow,
Time timestamp,
@@ -183,6 +176,8 @@ struct _MetaDisplay
Atom atom_net_desktop_geometry;
Atom atom_net_desktop_viewport;
Atom atom_metacity_version;
Atom atom_net_wm_visible_name;
Atom atom_net_wm_visible_icon_name;
/* This is the actual window from focus events,
* not the one we last set
@@ -209,6 +204,14 @@ struct _MetaDisplay
*/
guint mouse_mode : 1;
/* Helper var for strict focus for terminals; only relevant if the focus
* window is a terminal. Typically, we don't allow new windows to take
* focus away from a terminal, but if the user explicitly did something
* that should allow a different window to gain focus (e.g. global
* keybinding or clicking on a dock), then we will allow the transfer.
*/
guint allow_terminal_deactivation : 1;
guint static_gravity_works : 1;
/*< private-ish >*/
@@ -221,11 +224,6 @@ struct _MetaDisplay
XErrorEvent *error);
int server_grab_count;
/* This window holds the focus when we don't want to focus
* any actual clients
*/
Window no_focus_window;
/* for double click */
Time last_button_time;
Window last_button_xwindow;
@@ -271,10 +269,15 @@ struct _MetaDisplay
MetaRectangle grab_wireframe_rect;
MetaRectangle grab_wireframe_last_xor_rect;
MetaRectangle grab_initial_window_pos;
int grab_initial_x, grab_initial_y; /* These are only relevant for */
gboolean grab_threshold_movement_reached; /* raise_on_click == FALSE. */
MetaResizePopup *grab_resize_popup;
GTimeVal grab_last_moveresize_time;
Time grab_motion_notify_time;
int grab_wireframe_last_display_width;
int grab_wireframe_last_display_height;
GList* grab_old_window_stacking;
MetaEdgeResistanceData *grab_edge_resistance_data;
/* we use property updates as sentinels for certain window focus events
* to avoid some race conditions on EnterNotify events
@@ -283,6 +286,7 @@ struct _MetaDisplay
#ifdef HAVE_XKB
int xkb_base_event_type;
Time last_bell_time;
#endif
#ifdef HAVE_XSYNC
/* alarm monitoring client's _NET_WM_SYNC_REQUEST_COUNTER */
@@ -345,6 +349,7 @@ struct _MetaDisplay
int render_error_base;
#endif
#ifdef HAVE_XSYNC
unsigned int grab_last_user_action_was_snap;
unsigned int have_xsync : 1;
#define META_DISPLAY_HAS_XSYNC(display) ((display)->have_xsync)
#else
@@ -377,13 +382,13 @@ struct _MetaDisplay
* the result.
*/
#define XSERVER_TIME_IS_BEFORE_ASSUMING_REAL_TIMESTAMPS(time1, time2) \
( (( time1 < time2 ) && ( time2 - time1 < ((guint32)-1)/2 )) || \
(( time1 > time2 ) && ( time1 - time2 > ((guint32)-1)/2 )) \
( (( (time1) < (time2) ) && ( (time2) - (time1) < ((guint32)-1)/2 )) || \
(( (time1) > (time2) ) && ( (time1) - (time2) > ((guint32)-1)/2 )) \
)
#define XSERVER_TIME_IS_BEFORE(time1, time2) \
( time1 == 0 || \
( (time1) == 0 || \
(XSERVER_TIME_IS_BEFORE_ASSUMING_REAL_TIMESTAMPS(time1, time2) && \
time2 != 0) \
(time2) != 0) \
)
gboolean meta_display_open (const char *name);
@@ -414,6 +419,9 @@ void meta_display_register_x_window (MetaDisplay *display,
MetaWindow *window);
void meta_display_unregister_x_window (MetaDisplay *display,
Window xwindow);
/* Return whether the xwindow is a no focus window for any of the screens */
gboolean meta_display_xwindow_is_a_no_focus_window (MetaDisplay *display,
Window xwindow);
GSList* meta_display_list_windows (MetaDisplay *display);
@@ -444,6 +452,9 @@ gboolean meta_display_begin_grab_op (MetaDisplay *display,
void meta_display_end_grab_op (MetaDisplay *display,
Time timestamp);
void meta_display_check_threshold_reached (MetaDisplay *display,
int x,
int y);
void meta_display_grab_window_buttons (MetaDisplay *display,
Window xwindow);
void meta_display_ungrab_window_buttons (MetaDisplay *display,
@@ -454,6 +465,10 @@ void meta_display_grab_focus_window_button (MetaDisplay *display,
void meta_display_ungrab_focus_window_button (MetaDisplay *display,
MetaWindow *window);
/* Next two functions are defined in edge-resistance.c */
void meta_display_compute_resistance_and_snapping_edges (MetaDisplay *display);
void meta_display_cleanup_edges (MetaDisplay *display);
/* make a request to ensure the event serial has changed */
void meta_display_increment_event_serial (MetaDisplay *display);
@@ -469,6 +484,9 @@ const char* meta_event_detail_to_string (int d);
void meta_display_queue_retheme_all_windows (MetaDisplay *display);
void meta_display_retheme_all (void);
void meta_display_set_cursor_theme (const char *theme,
int size);
void meta_display_ping_window (MetaDisplay *display,
MetaWindow *window,
Time timestamp,
@@ -482,10 +500,14 @@ typedef enum
{
META_TAB_LIST_NORMAL,
META_TAB_LIST_DOCKS
} MetaTabList;
typedef enum
{
META_TAB_SHOW_ICON, /* Alt-Tab mode */
META_TAB_SHOW_INSTANTLY /* Alt-Esc mode */
} MetaTabShowType;
GList* meta_display_get_tab_list (MetaDisplay *display,
MetaTabList type,
MetaScreen *screen,
@@ -508,12 +530,6 @@ int meta_resize_gravity_from_grab_op (MetaGrabOp op);
gboolean meta_grab_op_is_moving (MetaGrabOp op);
gboolean meta_grab_op_is_resizing (MetaGrabOp op);
gboolean meta_rectangle_intersect (MetaRectangle *src1,
MetaRectangle *src2,
MetaRectangle *dest);
gboolean meta_rectangle_equal (const MetaRectangle *src1,
const MetaRectangle *src2);
void meta_display_devirtualize_modifiers (MetaDisplay *display,
MetaVirtualModifier modifiers,
unsigned int *mask);
@@ -541,6 +557,7 @@ void meta_display_set_input_focus_window (MetaDisplay *display,
* same as meta_display_set_input_focus_window
*/
void meta_display_focus_the_no_focus_window (MetaDisplay *display,
MetaScreen *screen,
Time timestamp);
void meta_display_queue_autoraise_callback (MetaDisplay *display,

1217
src/edge-resistance.c Normal file

File diff suppressed because it is too large Load Diff

46
src/edge-resistance.h Normal file
View File

@@ -0,0 +1,46 @@
/* Edge resistance for move/resize operations */
/*
* Copyright (C) 2005 Elijah Newren
*
* 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_EDGE_RESISTANCE_H
#define META_EDGE_RESISTANCE_H
#include "window.h"
void meta_window_edge_resistance_for_move (MetaWindow *window,
int old_x,
int old_y,
int *new_x,
int *new_y,
GSourceFunc timeout_func,
gboolean snap,
gboolean is_keyboard_op);
void meta_window_edge_resistance_for_resize (MetaWindow *window,
int old_width,
int old_height,
int *new_width,
int *new_height,
int gravity,
GSourceFunc timeout_func,
gboolean snap,
gboolean is_keyboard_op);
#endif /* META_EDGE_RESISTANCE_H */

View File

@@ -28,6 +28,8 @@
#include <X11/extensions/shape.h>
#endif
#include <string.h>
typedef enum
{
META_ANIMATION_DRAW_ROOT,
@@ -429,56 +431,138 @@ meta_effects_draw_box_animation (MetaScreen *screen,
void
meta_effects_begin_wireframe (MetaScreen *screen,
const MetaRectangle *rect)
const MetaRectangle *rect,
int width,
int height)
{
/* 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);
meta_effects_update_wireframe (screen,
NULL, -1, -1,
rect, width, height);
}
static void
draw_xor_rect (MetaScreen *screen,
const MetaRectangle *rect)
const MetaRectangle *rect,
int width,
int height)
{
/* 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];
MetaRectangle shrunk_rect;
int i;
#define LINE_WIDTH META_WIREFRAME_XOR_LINE_WIDTH
/* We don't want the wireframe going outside the window area.
* It makes it harder for the user to position windows and it exposes other
* annoying bugs.
*/
shrunk_rect = *rect;
shrunk_rect.x += LINE_WIDTH / 2 + LINE_WIDTH % 2;
shrunk_rect.y += LINE_WIDTH / 2 + LINE_WIDTH % 2;
shrunk_rect.width -= LINE_WIDTH + 2 * (LINE_WIDTH % 2);
shrunk_rect.height -= LINE_WIDTH + 2 * (LINE_WIDTH % 2);
XDrawRectangle (screen->display->xdisplay,
screen->xroot,
screen->root_xor_gc,
rect->x, rect->y,
rect->width, rect->height);
shrunk_rect.x, shrunk_rect.y,
shrunk_rect.width, shrunk_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))
if (shrunk_rect.width < (LINE_WIDTH * 4) ||
shrunk_rect.height < (LINE_WIDTH * 4))
return;
if ((width >= 0) && (height >= 0))
{
XGCValues gc_values = { 0 };
if (XGetGCValues (screen->display->xdisplay,
screen->root_xor_gc,
GCFont, &gc_values))
{
char *text;
int text_length;
XFontStruct *font_struct;
int text_width, text_height;
int box_x, box_y;
int box_width, box_height;
font_struct = XQueryFont (screen->display->xdisplay,
gc_values.font);
if (font_struct != NULL)
{
text = g_strdup_printf ("%d x %d", width, height);
text_length = strlen (text);
text_width = text_length * font_struct->max_bounds.width;
text_height = font_struct->max_bounds.descent +
font_struct->max_bounds.ascent;
box_width = text_width + 2 * LINE_WIDTH;
box_height = text_height + 2 * LINE_WIDTH;
box_x = shrunk_rect.x + (shrunk_rect.width - box_width) / 2;
box_y = shrunk_rect.y + (shrunk_rect.height - box_height) / 2;
if ((box_width < shrunk_rect.width) &&
(box_height < shrunk_rect.height))
{
XFillRectangle (screen->display->xdisplay,
screen->xroot,
screen->root_xor_gc,
box_x, box_y,
box_width, box_height);
XDrawString (screen->display->xdisplay,
screen->xroot,
screen->root_xor_gc,
box_x + LINE_WIDTH,
box_y + LINE_WIDTH + font_struct->max_bounds.ascent,
text, text_length);
}
g_free (text);
XFreeFontInfo (NULL, font_struct, 1);
if ((box_width + LINE_WIDTH) >= (shrunk_rect.width / 3))
return;
if ((box_height + LINE_WIDTH) >= (shrunk_rect.height / 3))
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].x1 = shrunk_rect.x + shrunk_rect.width / 3;
segments[0].y1 = shrunk_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[0].y2 = shrunk_rect.y + shrunk_rect.height - LINE_WIDTH / 2;
segments[1] = segments[0];
segments[1].x1 = rect->x + (rect->width / 3) * 2;
segments[1].x1 = shrunk_rect.x + (shrunk_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].x1 = shrunk_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].y1 = shrunk_rect.y + shrunk_rect.height / 3;
segments[2].y2 = segments[2].y1;
segments[3] = segments[2];
@@ -487,7 +571,7 @@ draw_xor_rect (MetaScreen *screen,
segments[4] = segments[3];
segments[4].x1 = segments[3].x2 + LINE_WIDTH;
segments[4].x2 = rect->x + rect->width - LINE_WIDTH / 2;
segments[4].x2 = shrunk_rect.x + shrunk_rect.width - LINE_WIDTH / 2;
/* Second horizontal line is just like the first, but
* shifted down
@@ -496,7 +580,7 @@ draw_xor_rect (MetaScreen *screen,
while (i < 8)
{
segments[i] = segments[i - 3];
segments[i].y1 = rect->y + (rect->height / 3) * 2;
segments[i].y1 = shrunk_rect.y + (shrunk_rect.height / 3) * 2;
segments[i].y2 = segments[i].y1;
++i;
}
@@ -511,22 +595,30 @@ draw_xor_rect (MetaScreen *screen,
void
meta_effects_update_wireframe (MetaScreen *screen,
const MetaRectangle *old_rect,
const MetaRectangle *new_rect)
int old_width,
int old_height,
const MetaRectangle *new_rect,
int new_width,
int new_height)
{
if (old_rect)
draw_xor_rect (screen, old_rect);
draw_xor_rect (screen, old_rect, old_width, old_height);
if (new_rect)
draw_xor_rect (screen, new_rect);
draw_xor_rect (screen, new_rect, new_width, new_height);
XFlush (screen->display->xdisplay);
}
void
meta_effects_end_wireframe (MetaScreen *screen,
const MetaRectangle *old_rect)
const MetaRectangle *old_rect,
int old_width,
int old_height)
{
meta_effects_update_wireframe (screen, old_rect, NULL);
meta_effects_update_wireframe (screen,
old_rect, old_width, old_height,
NULL, -1, -1);
meta_display_ungrab (screen->display);
meta_ui_pop_delay_exposes (screen->ui);

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