Compare commits

...

32 Commits

Author SHA1 Message Date
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
35 changed files with 2722 additions and 2099 deletions

301
ChangeLog
View File

@@ -1,3 +1,304 @@
2006-01-10 Elijah Newren <newren@gmail.com>
* NEWS: 2.13.13 release
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 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 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-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-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-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-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-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-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-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-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-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-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-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-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-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 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 Elijah Newren <newren@gmail.com>
* configure.in: post-release version bump to 2.13.13
2006-01-02 Elijah Newren <newren@gmail.com>
* NEWS: 2.13.8 release
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-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-13 Kang Jeong-Hee <Keizi@mail.co.kr>
* src/compositor.c: replace old call to width and height
of MetaScreen struct with rect.width and rect.height.
Now compile ok.
* src/delete.c: make an int variable into unsigned int.
Now compile warning has gone.
2005-12-12 Elijah Newren <newren@gmail.com>
* configure.in: post-release version bump to 2.13.8
2005-12-12 Elijah Newren <newren@gmail.com>
* NEWS: 2.13.5 release

View File

@@ -184,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

54
NEWS
View File

@@ -1,3 +1,57 @@
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
==

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.13.5],
AC_INIT([metacity], [2.13.13],
[http://bugzilla.gnome.org/enter_bug.cgi?product=metacity])
AC_CONFIG_SRCDIR(src/display.c)

View File

@@ -1,10 +1,23 @@
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.
* gu.po: Updated Gujarati Translation.
2005-12-03 Adam Weinberger <adamw@gnome.org>

189
po/fi.po
View File

@@ -9,8 +9,8 @@ msgid ""
msgstr ""
"Project-Id-Version: metacity\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2005-09-19 12:30+0200\n"
"PO-Revision-Date: 2005-07-24 21:12+0300\n"
"POT-Creation-Date: 2005-12-30 15:53+0200\n"
"PO-Revision-Date: 2005-12-30 15:59+0200\n"
"Last-Translator: Ilkka Tuohela <hile@iki.fi>\n"
"Language-Team: Finnish <gnome-fi-laatu@lists.sourceforge.net>\n"
"MIME-Version: 1.0\n"
@@ -22,33 +22,33 @@ msgstr ""
msgid "Usage: %s\n"
msgstr "Käyttö: %s\n"
#: ../src/tools/metacity-message.c:176 ../src/util.c:128
#: ../src/tools/metacity-message.c:176 ../src/util.c:130
msgid "Metacity was compiled without support for verbose mode\n"
msgstr "Metacity on käännetty ilman tukea monisanaisille ilmoituksille\n"
#: ../src/delete.c:63 ../src/delete.c:90 ../src/metacity-dialog.c:70
#: ../src/delete.c:64 ../src/delete.c:91 ../src/metacity-dialog.c:71
#: ../src/theme-parser.c:467
#, c-format
msgid "Could not parse \"%s\" as an integer"
msgstr "\"%s\" ei jäsentynyt kokonaisluvuksi"
#: ../src/delete.c:70 ../src/delete.c:97 ../src/metacity-dialog.c:77
#: ../src/delete.c:71 ../src/delete.c:98 ../src/metacity-dialog.c:78
#: ../src/theme-parser.c:476 ../src/theme-parser.c:530
#, c-format
msgid "Did not understand trailing characters \"%s\" in string \"%s\""
msgstr "Perässä olevat merkit \"%s\" merkkijonossa \"%s\" eivät ole järkeviä"
#: ../src/delete.c:128
#: ../src/delete.c:129
#, c-format
msgid "Failed to parse message \"%s\" from dialog process\n"
msgstr "Valintaikkunaprosessilta tullut viesti \"%s\" ei jäsenny\n"
#: ../src/delete.c:263
#: ../src/delete.c:264
#, c-format
msgid "Error reading from dialog display process: %s\n"
msgstr "Virhe valintaikkunan näyttämisprosessilta lukemisessa: %s\n"
#: ../src/delete.c:344
#: ../src/delete.c:345
#, c-format
msgid ""
"Error launching metacity-dialog to ask about killing an application: %s\n"
@@ -56,12 +56,12 @@ msgstr ""
"Virhe metacity-dialogin käynnistämisessä sovelluksen tappamisesta kysymistä "
"varten: %s\n"
#: ../src/delete.c:452
#: ../src/delete.c:453
#, c-format
msgid "Failed to get hostname: %s\n"
msgstr "Isäntänimen haku epäonnistui: %s\n"
#: ../src/display.c:319
#: ../src/display.c:308
#, c-format
msgid "Failed to open X Window System display '%s'\n"
msgstr "X-ikkunointijärjestelmän näytön \"%s\" avaaminen epäonnistui\n"
@@ -82,27 +82,27 @@ msgstr ""
msgid "Fatal IO error %d (%s) on display '%s'.\n"
msgstr "Vakava IO-virhe %d (%s) näytöllä \"%s\".\n"
#: ../src/frames.c:1125
#: ../src/frames.c:1123
msgid "Close Window"
msgstr "Sulje ikkuna"
#: ../src/frames.c:1128
#: ../src/frames.c:1126
msgid "Window Menu"
msgstr "Ikkunavalikko"
#: ../src/frames.c:1131
#: ../src/frames.c:1129
msgid "Minimize Window"
msgstr "Pienennä ikkuna"
#: ../src/frames.c:1134
#: ../src/frames.c:1132
msgid "Maximize Window"
msgstr "Suurenna ikkuna"
#: ../src/frames.c:1137
#: ../src/frames.c:1135
msgid "Unmaximize Window"
msgstr "Palauta ikkuna"
#: ../src/keybindings.c:994
#: ../src/keybindings.c:996
#, c-format
msgid ""
"Some other program is already using the key %s with modifiers %x as a "
@@ -110,19 +110,19 @@ msgid ""
msgstr ""
"Jokin muu ohjelma käyttää jo näppäintä %s muunnoksin %x pikanäppäimenään\n"
#: ../src/keybindings.c:2620
#: ../src/keybindings.c:2498
#, c-format
msgid "Error launching metacity-dialog to print an error about a command: %s\n"
msgstr ""
"Virhe metacity-dialogin käynnistämisessä komennon virheen tulostamista "
"varten: %s\n"
#: ../src/keybindings.c:2725
#: ../src/keybindings.c:2603
#, c-format
msgid "No command %d has been defined.\n"
msgstr "Mitään komentoa %d ei ole määritelty.\n"
#: ../src/keybindings.c:3570
#: ../src/keybindings.c:3465
msgid "No terminal command has been defined.\n"
msgstr "Mitään päätteen komentoa ei ole määritelty.\n"
@@ -183,83 +183,87 @@ msgstr ""
msgid "Failed to restart: %s\n"
msgstr "Uudelleenkäynnistys epäonnistui: %s\n"
#: ../src/menu.c:54
#: ../src/menu.c:55
msgid "Mi_nimize"
msgstr "_Pienennä"
#: ../src/menu.c:55
#: ../src/menu.c:56
msgid "Ma_ximize"
msgstr "_Suurenna"
#: ../src/menu.c:56
#: ../src/menu.c:57
msgid "Unma_ximize"
msgstr "_Palauta"
#: ../src/menu.c:57
#: ../src/menu.c:58
msgid "Roll _Up"
msgstr "_Rullaa ylös"
#: ../src/menu.c:58
#: ../src/menu.c:59
msgid "_Unroll"
msgstr "_Rullaa alas"
#: ../src/menu.c:59 ../src/menu.c:60
#: ../src/menu.c:60 ../src/menu.c:61
msgid "On _Top"
msgstr "_Päällimmäisenä"
#: ../src/menu.c:61
#: ../src/menu.c:62
msgid "_Move"
msgstr "S_iirrä"
#: ../src/menu.c:62
#: ../src/menu.c:63
msgid "_Resize"
msgstr "_Muuta kokoa"
#. separator
#: ../src/menu.c:64
msgid "Move Titlebar On_screen"
msgstr "Siirrä otsikkopalkkia _näytöllä"
#. separator
#: ../src/menu.c:66
msgid "_Close"
msgstr "_Sulje"
#. separator
#: ../src/menu.c:66
#: ../src/menu.c:68
msgid "_Always on Visible Workspace"
msgstr "Näytä _aina tässä työtilassa"
#: ../src/menu.c:67
#: ../src/menu.c:69
msgid "_Only on This Workspace"
msgstr "Näytä vain _tässä työtilassa"
#: ../src/menu.c:68
#: ../src/menu.c:70
msgid "Move to Workspace _Left"
msgstr "Siirrä _vasempaan työtilaan"
#: ../src/menu.c:69
#: ../src/menu.c:71
msgid "Move to Workspace R_ight"
msgstr "Siirrä _oikeaan työtilaan"
#: ../src/menu.c:70
#: ../src/menu.c:72
msgid "Move to Workspace _Up"
msgstr "Siirry _ylläolevaan työtilaan"
#: ../src/menu.c:71
#: ../src/menu.c:73
msgid "Move to Workspace _Down"
msgstr "Siirrä _alla olevaan työtilaan"
#: ../src/menu.c:162 ../src/prefs.c:2106
#: ../src/menu.c:164 ../src/prefs.c:2112
#, c-format
msgid "Workspace %d"
msgstr "Työtila %d"
#: ../src/menu.c:171
#: ../src/menu.c:173
msgid "Workspace 1_0"
msgstr "Työtila 1_0"
#: ../src/menu.c:173
#: ../src/menu.c:175
#, c-format
msgid "Workspace %s%d"
msgstr "Työtila %s%d"
#: ../src/menu.c:368
#: ../src/menu.c:370
msgid "Move to Another _Workspace"
msgstr "Siirrä toiseen t_yötilaan"
@@ -353,31 +357,31 @@ msgstr "Mod4"
msgid "Mod5"
msgstr "Mod5"
#: ../src/metacity-dialog.c:110
#: ../src/metacity-dialog.c:111
#, c-format
msgid "The window \"%s\" is not responding."
msgstr "Ikkuna \"%s\" ei vastaa."
#: ../src/metacity-dialog.c:118
#: ../src/metacity-dialog.c:119
msgid ""
"Forcing this application to quit will cause you to lose any unsaved changes."
msgstr ""
"Tämän sovelluksen sulkeminen väkisin saa tallentamattomat muutokset "
"katoamaan."
#: ../src/metacity-dialog.c:129
#: ../src/metacity-dialog.c:130
msgid "_Force Quit"
msgstr "Sulje _väkisin"
#: ../src/metacity-dialog.c:226
#: ../src/metacity-dialog.c:227
msgid "Title"
msgstr "Otsikko"
#: ../src/metacity-dialog.c:238
#: ../src/metacity-dialog.c:239
msgid "Class"
msgstr "Luokka"
#: ../src/metacity-dialog.c:264
#: ../src/metacity-dialog.c:265
msgid ""
"These windows do not support \"save current setup\" and will have to be "
"restarted manually next time you log in."
@@ -385,7 +389,7 @@ msgstr ""
"Nämä ikkunat eivät ymmärrä \"tallenna nykyinen tila\"-komentoa, ja ne täytyy "
"käynnistää käsin uudelleen kun kirjaudut seuraavan kerran sisään."
#: ../src/metacity-dialog.c:330
#: ../src/metacity-dialog.c:331
#, c-format
msgid ""
"There was an error running \"%s\":\n"
@@ -505,11 +509,25 @@ msgstr "Piilota kaikki ikkunat ja kohdista työpöytä"
msgid ""
"If true, and the focus mode is either \"sloppy\" or \"mouse\" then the "
"focused window will be automatically raised after a delay (the delay is "
"specified by the auto_raise_delay key)."
"specified by the auto_raise_delay key). This preference is poorly named, but "
"kept for backwards compatibility. To try to be more clear (at least to the "
"technically inclined), its meaning is \"automatically raise the window "
"following a timeout which is triggered by non-grabbed mouse entry in sloppy "
"or mouse focus modes\". It is unrelated to clicking behavior (i.e. this is "
"not related to raise-on-click/orthogonal-raise). It is unrelated to entering "
"a window during drag and drop (because that results in the application "
"grabbing the mouse)"
msgstr ""
"Jos tosi, ja kohdistustapa on joko \"sloppy\" tai \"mouse\", niin "
"kohdistettu ikkuna nousee itsestään viiveen jälkeen (viive määritelty "
"avaimessa auto_raise_delay)."
"Jos arvo on \"true\" ja kohdistustapa on joko \"sloppy\" tai \"mouse\", "
"nostetaan kohdistettu ikkuna päällimmäiseksi viiveen jälkeen "
"automaattisesti. Viive määritellään avaimessa \"auto_raise_delay\". Tämä "
"asetus on huonosti nimetty, mutta nimi pidetään yhteensopivuuden takia "
"samana. Täsmällisemmin selitettynä tämän selitys on \"nosta ikkuna "
"automaattisesti päällimmäiseksi aikaviiveellä, joka lasketaan hetkestä "
"kun hiiri siirtyy ikkunan päälle tilan ollessa \"sloppy\" tai \"mouse\"."
"Tämä asetus ei liity ikkunan napsautuksen toimintatapaan, eikä se liity "
"ikkunaan siirtymiseen siirron ja raahauksen aikana, koska se aiheuttaa "
"kohdeikkunan tarttuvan hiireen joka tapauksessa."
#: ../src/metacity.schemas.in.h:18
msgid ""
@@ -1985,12 +2003,12 @@ msgstr ""
msgid "%d stored in GConf key %s is out of range 0 to %d\n"
msgstr "%d, joka on GConf-avaimessa %s, ei ole välillä 0 - %d\n"
#: ../src/prefs.c:1589
#: ../src/prefs.c:1595
#, c-format
msgid "Error setting number of workspaces to %d: %s\n"
msgstr "Virhe työtilojen määrän asettamisessa arvoon %d: %s\n"
#: ../src/prefs.c:1833
#: ../src/prefs.c:1839
#, c-format
msgid ""
"\"%s\" found in configuration database is not a valid value for keybinding "
@@ -1999,7 +2017,7 @@ msgstr ""
"\"%s\", joka on asetustietokannassa, ei ole kelvollinen näppäinsidonnan \"%s"
"\" arvo\n"
#: ../src/prefs.c:2187
#: ../src/prefs.c:2193
#, c-format
msgid "Error setting name for workspace %d to \"%s\": %s\n"
msgstr "Virhe työtilan %d nimen asettamisessa nimeksi \"%s\": %s\n"
@@ -2009,12 +2027,12 @@ msgstr "Virhe työtilan %d nimen asettamisessa nimeksi \"%s\": %s\n"
msgid "%d x %d"
msgstr "%d × %d"
#: ../src/screen.c:408
#: ../src/screen.c:403
#, c-format
msgid "Screen %d on display '%s' is invalid\n"
msgstr "Näytön \"%2$s\" ruutu %1$d ei ole kelvollinen\n"
#: ../src/screen.c:424
#: ../src/screen.c:419
#, c-format
msgid ""
"Screen %d on display \"%s\" already has a window manager; try using the --"
@@ -2023,7 +2041,7 @@ msgstr ""
"Näytön \"%2$s\" ruudulla %1$d on jo ikkunointiohjelma: kokeile valitsinta --"
"replace, jos haluat korvata nykyisen ikkunointiohjelman.\n"
#: ../src/screen.c:448
#: ../src/screen.c:443
#, c-format
msgid ""
"Could not acquire window manager selection on screen %d display \"%s\"\n"
@@ -2031,81 +2049,81 @@ msgstr ""
"Näytön \"%2$s\" ruudun %1$d ikkunointiohjelman valinnan hankkiminen "
"epäonnistui\n"
#: ../src/screen.c:506
#: ../src/screen.c:501
#, c-format
msgid "Screen %d on display \"%s\" already has a window manager\n"
msgstr "Näytön \"%2$s\" ruudulla %1$d on jo ikkunointiohjelma\n"
#: ../src/screen.c:716
#: ../src/screen.c:710
#, c-format
msgid "Could not release screen %d on display \"%s\"\n"
msgstr "Näytön \"%2$s\" ruudun %1$d vapauttaminen ei onnistunut\n"
#: ../src/session.c:884 ../src/session.c:891
#: ../src/session.c:844 ../src/session.c:851
#, c-format
msgid "Could not create directory '%s': %s\n"
msgstr "Kansion \"%s\" luominen ei onnistunut: %s\n"
#: ../src/session.c:901
#: ../src/session.c:861
#, c-format
msgid "Could not open session file '%s' for writing: %s\n"
msgstr ""
"Istuntotiedoston \"%s\" avaaminen kirjoittamista varten ei onnistunut: %s\n"
#: ../src/session.c:1053
#: ../src/session.c:1013
#, c-format
msgid "Error writing session file '%s': %s\n"
msgstr "Virhe istuntotiedoston \"%s\" kirjoittamisessa: %s\n"
#: ../src/session.c:1058
#: ../src/session.c:1018
#, c-format
msgid "Error closing session file '%s': %s\n"
msgstr "Virhe istuntotiedoston \"%s\" sulkemisessa: %s\n"
#: ../src/session.c:1133
#: ../src/session.c:1093
#, c-format
msgid "Failed to read saved session file %s: %s\n"
msgstr "Tallennetun istuntotiedoston \"%s\" luku epäonnistui: %s\n"
#: ../src/session.c:1168
#: ../src/session.c:1128
#, c-format
msgid "Failed to parse saved session file: %s\n"
msgstr "Tallennetun istuntotiedoston jäsennys epäonnistui: %s\n"
#: ../src/session.c:1217
#: ../src/session.c:1177
msgid "<metacity_session> attribute seen but we already have the session ID"
msgstr "<metacity_session>-määre havaittu, mutta istunnon ID on jo selvinnyt"
#: ../src/session.c:1230
#: ../src/session.c:1190
#, c-format
msgid "Unknown attribute %s on <metacity_session> element"
msgstr "<metacity_session>-elementin määre %s on tuntematon"
#: ../src/session.c:1247
#: ../src/session.c:1207
msgid "nested <window> tag"
msgstr "sisäkkäiset <window>-laput"
#: ../src/session.c:1305 ../src/session.c:1337
#: ../src/session.c:1265 ../src/session.c:1297
#, c-format
msgid "Unknown attribute %s on <window> element"
msgstr "Tuntematon <window>-elementin määre %s"
#: ../src/session.c:1409
#: ../src/session.c:1369
#, c-format
msgid "Unknown attribute %s on <maximized> element"
msgstr "Tuntematon <maximized>-elementin määre %s"
#: ../src/session.c:1469
#: ../src/session.c:1429
#, c-format
msgid "Unknown attribute %s on <geometry> element"
msgstr "Tuntematon <geometry>-elementin määre %s"
#: ../src/session.c:1489
#: ../src/session.c:1449
#, c-format
msgid "Unknown element %s"
msgstr "Tuntematon elementti %s"
#: ../src/session.c:1961
#: ../src/session.c:1921
#, c-format
msgid ""
"Error launching metacity-dialog to warn about apps that don't support "
@@ -3114,44 +3132,44 @@ msgstr ""
msgid "Constant \"%s\" has already been defined"
msgstr "Vakio \"%s\" on jo määritelty"
#: ../src/util.c:93
#: ../src/util.c:95
#, c-format
msgid "Failed to open debug log: %s\n"
msgstr "Vianetsintälokin avaaminen epäonnistui: %s\n"
#: ../src/util.c:103
#: ../src/util.c:105
#, c-format
msgid "Failed to fdopen() log file %s: %s\n"
msgstr "Lokitiedoston \"%s\" fdopen() epäonnistui: %s\n"
#: ../src/util.c:109
#: ../src/util.c:111
#, c-format
msgid "Opened log file %s\n"
msgstr "Lokitiedosto %s avattu\n"
#: ../src/util.c:203
#: ../src/util.c:219
msgid "Window manager: "
msgstr "Ikkunointiohjelma:"
#: ../src/util.c:349
#: ../src/util.c:365
msgid "Bug in window manager: "
msgstr "Vika ikkunointiohjelmassa."
#: ../src/util.c:378
#: ../src/util.c:394
msgid "Window manager warning: "
msgstr "Ikkunointiohjelman varoitus:"
#: ../src/util.c:402
#: ../src/util.c:418
msgid "Window manager error: "
msgstr "Ikkunointiohjelmavirhe:"
#: ../src/window-props.c:162
#: ../src/window-props.c:165
#, c-format
msgid "Application set a bogus _NET_WM_PID %ld\n"
msgstr "Sovellus asetti virheellisen _NET_WM_PID:n %ld\n"
#. first time through
#: ../src/window.c:5205
#: ../src/window.c:5238
#, c-format
msgid ""
"Window %s sets SM_CLIENT_ID on itself, instead of on the WM_CLIENT_LEADER "
@@ -3167,7 +3185,7 @@ msgstr ""
#. * MWM but not WM_NORMAL_HINTS are basically broken. We complain
#. * about these apps but make them work.
#.
#: ../src/window.c:5876
#: ../src/window.c:5878
#, c-format
msgid ""
"Window %s sets an MWM hint indicating it isn't resizable, but sets min size %"
@@ -3204,3 +3222,12 @@ msgid ""
msgstr ""
"Ikkunan 0x%2$lx ominaisuus %1$s sisälsi virheellistä UTF-8:aa luettelon "
"kohdassa %3$d\n"
#~ msgid ""
#~ "If true, and the focus mode is either \"sloppy\" or \"mouse\" then the "
#~ "focused window will be automatically raised after a delay (the delay is "
#~ "specified by the auto_raise_delay key)."
#~ msgstr ""
#~ "Jos tosi, ja kohdistustapa on joko \"sloppy\" tai \"mouse\", niin "
#~ "kohdistettu ikkuna nousee itsestään viiveen jälkeen (viive määritelty "
#~ "avaimessa auto_raise_delay)."

428
po/ko.po

File diff suppressed because it is too large Load Diff

251
po/mk.po
View File

@@ -15,61 +15,60 @@ msgid ""
msgstr ""
"Project-Id-Version: mk\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2005-09-19 12:30+0200\n"
"PO-Revision-Date: 2005-07-20 23:36+0200\n"
"Last-Translator: Арангел Ангов <ufo@linux.net.mk>\n"
"POT-Creation-Date: 2005-12-18 23:06+0100\n"
"PO-Revision-Date: 2005-12-19 00:12+0100\n"
"Last-Translator: Arangel Angov <ufo@linux.net.mk>\n"
"Language-Team: Macedonian <ossm-members@hedona.on.net.mk>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural= n==1 || n%10==1 ? 0 : 1\n"
"X-Generator: KBabel 1.10\n"
"X-Generator: KBabel 1.10.2\n"
#: ../src/tools/metacity-message.c:150
#, c-format
msgid "Usage: %s\n"
msgstr "Употреба: %s\n"
#: ../src/tools/metacity-message.c:176 ../src/util.c:128
#: ../src/tools/metacity-message.c:176 ../src/util.c:130
msgid "Metacity was compiled without support for verbose mode\n"
msgstr "Metacity беше компајлиран без поддршка за verbose режимот\n"
#: ../src/delete.c:63 ../src/delete.c:90 ../src/metacity-dialog.c:70
#: ../src/delete.c:64 ../src/delete.c:91 ../src/metacity-dialog.c:71
#: ../src/theme-parser.c:467
#, c-format
msgid "Could not parse \"%s\" as an integer"
msgstr "Не можам да го парсирам \"%s\" како целосен број"
#: ../src/delete.c:70 ../src/delete.c:97 ../src/metacity-dialog.c:77
#: ../src/delete.c:71 ../src/delete.c:98 ../src/metacity-dialog.c:78
#: ../src/theme-parser.c:476 ../src/theme-parser.c:530
#, c-format
msgid "Did not understand trailing characters \"%s\" in string \"%s\""
msgstr "Не ги разбирам трејлинг карактерите \"%s\" во стрингот \"%s\""
#: ../src/delete.c:128
#: ../src/delete.c:129
#, c-format
msgid "Failed to parse message \"%s\" from dialog process\n"
msgstr "Не успеав да ја парсирам пораката \"%s\" од дијалогот за процесот\n"
#: ../src/delete.c:263
#: ../src/delete.c:264
#, c-format
msgid "Error reading from dialog display process: %s\n"
msgstr "Грешка во читањето од процесот на дијалогот: %s\n"
#: ../src/delete.c:344
#: ../src/delete.c:345
#, c-format
msgid ""
"Error launching metacity-dialog to ask about killing an application: %s\n"
msgid "Error launching metacity-dialog to ask about killing an application: %s\n"
msgstr ""
"Грешка при отворањето на metacity-дијалог да се праша за затварање на "
"апликација: %s\n"
#: ../src/delete.c:452
#: ../src/delete.c:453
#, c-format
msgid "Failed to get hostname: %s\n"
msgstr "Не успеав да добијам име на хост: %s\n"
#: ../src/display.c:319
#: ../src/display.c:308
#, c-format
msgid "Failed to open X Window System display '%s'\n"
msgstr "Не успеав да го отворам приказот за X системот за прозорци '%s'\n"
@@ -90,27 +89,27 @@ msgstr ""
msgid "Fatal IO error %d (%s) on display '%s'.\n"
msgstr "Фатална IO грешка %d (%s) на приказ '%s'.\n"
#: ../src/frames.c:1125
#: ../src/frames.c:1123
msgid "Close Window"
msgstr "Затвори прозорец"
#: ../src/frames.c:1128
#: ../src/frames.c:1126
msgid "Window Menu"
msgstr "Мени во прозорец"
#: ../src/frames.c:1131
#: ../src/frames.c:1129
msgid "Minimize Window"
msgstr "Спушти прозорец"
#: ../src/frames.c:1134
#: ../src/frames.c:1132
msgid "Maximize Window"
msgstr "Зголеми прозорец"
#: ../src/frames.c:1137
#: ../src/frames.c:1135
msgid "Unmaximize Window"
msgstr "Намали прозорец"
#: ../src/keybindings.c:994
#: ../src/keybindings.c:996
#, c-format
msgid ""
"Some other program is already using the key %s with modifiers %x as a "
@@ -119,18 +118,17 @@ msgstr ""
"Некоја друга програма веќе го користи тоа копче %s со изменувачи %x како "
"биндинг\n"
#: ../src/keybindings.c:2620
#: ../src/keybindings.c:2494
#, c-format
msgid "Error launching metacity-dialog to print an error about a command: %s\n"
msgstr ""
"Грешка при отворањето на metacity-дијалог да печати грешка за команда: %s\n"
msgstr "Грешка при отворањето на metacity-дијалог да печати грешка за команда: %s\n"
#: ../src/keybindings.c:2725
#: ../src/keybindings.c:2599
#, c-format
msgid "No command %d has been defined.\n"
msgstr "Ниедна команда %d не е дефинирана.\n"
#: ../src/keybindings.c:3570
#: ../src/keybindings.c:3461
msgid "No terminal command has been defined.\n"
msgstr "Ниедна команда %d не е дефинирана.\n"
@@ -179,8 +177,7 @@ msgstr "Не успеав да го скенирам директориумот
#: ../src/main.c:456
#, c-format
msgid ""
"Could not find a theme! Be sure %s exists and contains the usual themes."
msgid "Could not find a theme! Be sure %s exists and contains the usual themes."
msgstr ""
"Не можам да ја пронајдам темата! Осигурајте се дека %s постои и содржи "
"вообичаени теми."
@@ -190,83 +187,87 @@ msgstr ""
msgid "Failed to restart: %s\n"
msgstr "Не успеав да рестартирам: %s\n"
#: ../src/menu.c:54
#: ../src/menu.c:55
msgid "Mi_nimize"
msgstr "Ми_нимизирај"
#: ../src/menu.c:55
#: ../src/menu.c:56
msgid "Ma_ximize"
msgstr "Масимизирај"
#: ../src/menu.c:56
#: ../src/menu.c:57
msgid "Unma_ximize"
msgstr "Нама_ли"
#: ../src/menu.c:57
#: ../src/menu.c:58
msgid "Roll _Up"
msgstr "Завиткај"
#: ../src/menu.c:58
#: ../src/menu.c:59
msgid "_Unroll"
msgstr "Одвиткај"
#: ../src/menu.c:59 ../src/menu.c:60
#: ../src/menu.c:60 ../src/menu.c:61
msgid "On _Top"
msgstr "Горе"
#: ../src/menu.c:61
#: ../src/menu.c:62
msgid "_Move"
msgstr "_Помести"
#: ../src/menu.c:62
#: ../src/menu.c:63
msgid "_Resize"
msgstr "Промени големина"
#. separator
#: ../src/menu.c:64
msgid "Move Titlebar On_screen"
msgstr "Премести ја лентата со алатки на _екранот"
#. separator
#: ../src/menu.c:66
msgid "_Close"
msgstr "Затвори"
#. separator
#: ../src/menu.c:66
#: ../src/menu.c:68
msgid "_Always on Visible Workspace"
msgstr "Само на овој работен простор"
#: ../src/menu.c:67
#: ../src/menu.c:69
msgid "_Only on This Workspace"
msgstr "Само на овој работен простор"
#: ../src/menu.c:68
#: ../src/menu.c:70
msgid "Move to Workspace _Left"
msgstr "Премести на _левиот работен простор"
#: ../src/menu.c:69
#: ../src/menu.c:71
msgid "Move to Workspace R_ight"
msgstr "Премести на _десниот работен простор"
#: ../src/menu.c:70
#: ../src/menu.c:72
msgid "Move to Workspace _Up"
msgstr "Премести на _горниот работен простор"
#: ../src/menu.c:71
#: ../src/menu.c:73
msgid "Move to Workspace _Down"
msgstr "Премести на _долниот работен простор"
#: ../src/menu.c:162 ../src/prefs.c:2106
#: ../src/menu.c:164 ../src/prefs.c:2112
#, c-format
msgid "Workspace %d"
msgstr "Работно место %d"
#: ../src/menu.c:171
#: ../src/menu.c:173
msgid "Workspace 1_0"
msgstr "Работно место 1_0"
#: ../src/menu.c:173
#: ../src/menu.c:175
#, c-format
msgid "Workspace %s%d"
msgstr "Работно место %s%d"
#: ../src/menu.c:368
#: ../src/menu.c:370
msgid "Move to Another _Workspace"
msgstr "Премести на друг _работен простор"
@@ -360,31 +361,30 @@ msgstr "Режим4"
msgid "Mod5"
msgstr "Режим5"
#: ../src/metacity-dialog.c:110
#: ../src/metacity-dialog.c:111
#, c-format
msgid "The window \"%s\" is not responding."
msgstr "Прозорецот \"%s\" не одговара."
#: ../src/metacity-dialog.c:118
msgid ""
"Forcing this application to quit will cause you to lose any unsaved changes."
#: ../src/metacity-dialog.c:119
msgid "Forcing this application to quit will cause you to lose any unsaved changes."
msgstr ""
"Принудување оваа апликација да излезe ќе направи да ги изгубите "
"незачуванитедокументи."
#: ../src/metacity-dialog.c:129
#: ../src/metacity-dialog.c:130
msgid "_Force Quit"
msgstr "Принуди излез"
#: ../src/metacity-dialog.c:226
#: ../src/metacity-dialog.c:227
msgid "Title"
msgstr "Наслов"
#: ../src/metacity-dialog.c:238
#: ../src/metacity-dialog.c:239
msgid "Class"
msgstr "Класа"
#: ../src/metacity-dialog.c:264
#: ../src/metacity-dialog.c:265
msgid ""
"These windows do not support \"save current setup\" and will have to be "
"restarted manually next time you log in."
@@ -392,7 +392,7 @@ msgstr ""
"Овие прозорци не поддржуваат \"сними моментални измени\" и ќе мора да бидат "
"рестартирани рачно наредниот пат кога ќе се најавите."
#: ../src/metacity-dialog.c:330
#: ../src/metacity-dialog.c:331
#, c-format
msgid ""
"There was an error running \"%s\":\n"
@@ -512,11 +512,22 @@ msgstr "Сокриј ги сите прозорци и фокусирај го
msgid ""
"If true, and the focus mode is either \"sloppy\" or \"mouse\" then the "
"focused window will be automatically raised after a delay (the delay is "
"specified by the auto_raise_delay key)."
"specified by the auto_raise_delay key). This preference is poorly named, but "
"kept for backwards compatibility. To try to be more clear (at least to the "
"technically inclined), its meaning is \"automatically raise the window "
"following a timeout which is triggered by non-grabbed mouse entry in sloppy "
"or mouse focus modes\". It is unrelated to clicking behavior (i.e. this is "
"not related to raise-on-click/orthogonal-raise). It is unrelated to entering "
"a window during drag and drop (because that results in the application "
"grabbing the mouse)"
msgstr ""
"Ако е точно, и фокус режимот е или \"слопи\"или\"глувче\" тогаш фокусираниот "
"прозорец ќе биде автоматски кренат после одложување (одложувањето е "
"специфицирано од авторени_одложи копчето)."
"Ако е точно и режимот за фокусирање е \"sloppy\" или \"mouse\" тогаш "
"фокусираниот прозорец ќе биде автоматски подигнат по застојот (застојот "
"се одредува преку клучот auto_raise_delay). Оваа преференца носи несоодветно "
"име но е задржана поради компатибилност со постари верзии. Да Ви биде појасно "
"нејзиното значење е \"автоматско подигнување на прозорецот по истекот на времето\". "
"Не е поврзано со однесувањето на кликнувањето. Не е поврзано со влегување во "
"прозорец додека трае подигнување и спуштање"
#: ../src/metacity.schemas.in.h:18
msgid ""
@@ -1991,12 +2002,12 @@ msgstr ""
msgid "%d stored in GConf key %s is out of range 0 to %d\n"
msgstr "%d ставено во GConf копче %s е надвор од дострел 0 до %d\n"
#: ../src/prefs.c:1589
#: ../src/prefs.c:1595
#, c-format
msgid "Error setting number of workspaces to %d: %s\n"
msgstr "Грешка при поставката на број на работни простори %d: %s\n"
#: ../src/prefs.c:1833
#: ../src/prefs.c:1839
#, c-format
msgid ""
"\"%s\" found in configuration database is not a valid value for keybinding "
@@ -2005,23 +2016,22 @@ msgstr ""
"\"%s\" пронајдено при конфигурирањето на базата не е валидна вредност за "
"keybinding \"%s\"\n"
#: ../src/prefs.c:2187
#: ../src/prefs.c:2193
#, c-format
msgid "Error setting name for workspace %d to \"%s\": %s\n"
msgstr ""
"Грешка при поставката на имиња на работните простори %d до \"%s\": %s\n"
msgstr "Грешка при поставката на имиња на работните простори %d до \"%s\": %s\n"
#: ../src/resizepopup.c:126
#, c-format
msgid "%d x %d"
msgstr "%d x %d"
#: ../src/screen.c:408
#: ../src/screen.c:403
#, c-format
msgid "Screen %d on display '%s' is invalid\n"
msgstr "Екран %d на приказ '%s' е невалиден\n"
#: ../src/screen.c:424
#: ../src/screen.c:419
#, c-format
msgid ""
"Screen %d on display \"%s\" already has a window manager; try using the --"
@@ -2030,88 +2040,85 @@ msgstr ""
"Екран %d на приказ \"%s\" веќе има менџер на прозорци; пробај со --преклопи "
"опција да го преклопиш моменталниот менаџер на прозорци.\n"
#: ../src/screen.c:448
#: ../src/screen.c:443
#, c-format
msgid ""
"Could not acquire window manager selection on screen %d display \"%s\"\n"
msgstr ""
"Не можам да обезбедам менаџер на прозорци на екранот %d прикажи \"%s\"\n"
msgid "Could not acquire window manager selection on screen %d display \"%s\"\n"
msgstr "Не можам да обезбедам менаџер на прозорци на екранот %d прикажи \"%s\"\n"
#: ../src/screen.c:506
#: ../src/screen.c:501
#, c-format
msgid "Screen %d on display \"%s\" already has a window manager\n"
msgstr "Екран %d на приказ \"%s\" веќе има менаџер на прозорец\n"
#: ../src/screen.c:716
#: ../src/screen.c:712
#, c-format
msgid "Could not release screen %d on display \"%s\"\n"
msgstr "Не можам да отпуштам екран %d на приказ \"%s\"\n"
#: ../src/session.c:884 ../src/session.c:891
#: ../src/session.c:844 ../src/session.c:851
#, c-format
msgid "Could not create directory '%s': %s\n"
msgstr "Не можам да креирам директориум '%s': %s\n"
#: ../src/session.c:901
#: ../src/session.c:861
#, c-format
msgid "Could not open session file '%s' for writing: %s\n"
msgstr "Не можам да отворам сесија на датотеката '%s' за пишување: %s\n"
#: ../src/session.c:1053
#: ../src/session.c:1013
#, c-format
msgid "Error writing session file '%s': %s\n"
msgstr "Грешка при пишувањето на датотека од сесијата '%s': %s\n"
#: ../src/session.c:1058
#: ../src/session.c:1018
#, c-format
msgid "Error closing session file '%s': %s\n"
msgstr "Грешка при затворање на датотека од сесијата '%s': %s\n"
#: ../src/session.c:1133
#: ../src/session.c:1093
#, c-format
msgid "Failed to read saved session file %s: %s\n"
msgstr "Не успеав да ја прочитам снимената датотека од сесијата %s: %s\n"
#: ../src/session.c:1168
#: ../src/session.c:1128
#, c-format
msgid "Failed to parse saved session file: %s\n"
msgstr "Не успеав да ја парсирам снимената датотека од сесијата: %s\n"
#: ../src/session.c:1217
#: ../src/session.c:1177
msgid "<metacity_session> attribute seen but we already have the session ID"
msgstr ""
"<metacity_session> атрибутот е виден но веќе го имаме ID-от на сесијата"
msgstr "<metacity_session> атрибутот е виден но веќе го имаме ID-от на сесијата"
#: ../src/session.c:1230
#: ../src/session.c:1190
#, c-format
msgid "Unknown attribute %s on <metacity_session> element"
msgstr "Непознат атрибут %s на <metacity_session> елемент"
#: ../src/session.c:1247
#: ../src/session.c:1207
msgid "nested <window> tag"
msgstr "вгнездена <window> ознака"
#: ../src/session.c:1305 ../src/session.c:1337
#: ../src/session.c:1265 ../src/session.c:1297
#, c-format
msgid "Unknown attribute %s on <window> element"
msgstr "Непознат атрибут %s на <window> елемент."
#: ../src/session.c:1409
#: ../src/session.c:1369
#, c-format
msgid "Unknown attribute %s on <maximized> element"
msgstr "Непознат атрибут %s на <maximized> елемент"
#: ../src/session.c:1469
#: ../src/session.c:1429
#, c-format
msgid "Unknown attribute %s on <geometry> element"
msgstr "Непознат атрибут %s на <geometry> елемент"
#: ../src/session.c:1489
#: ../src/session.c:1449
#, c-format
msgid "Unknown element %s"
msgstr "Непознат елемент %s"
#: ../src/session.c:1961
#: ../src/session.c:1921
#, c-format
msgid ""
"Error launching metacity-dialog to warn about apps that don't support "
@@ -2268,8 +2275,7 @@ msgstr "Нема вредност атрибутот на елементот <%s
#: ../src/theme-parser.c:1320 ../src/theme-parser.c:1334
#: ../src/theme-parser.c:1393
msgid ""
"Cannot specify both button_width/button_height and aspect ratio for buttons"
msgid "Cannot specify both button_width/button_height and aspect ratio for buttons"
msgstr ""
"Не можам да одредам истовремено ширина на копче/висина на копче и степен на "
"зголемување за копчињата"
@@ -2542,8 +2548,7 @@ msgstr ""
#: ../src/theme-parser.c:3464
#, c-format
msgid "Style has already been specified for state %s resize %s focus %s"
msgstr ""
"Стилот веќе беше специфициран за состојба %s промени големина %s фокус %s"
msgstr "Стилот веќе беше специфициран за состојба %s промени големина %s фокус %s"
#: ../src/theme-parser.c:3475 ../src/theme-parser.c:3486
#: ../src/theme-parser.c:3497
@@ -2578,15 +2583,12 @@ msgstr ""
#: ../src/theme-parser.c:3659
#, c-format
msgid "Outermost element in theme must be <metacity_theme> not <%s>"
msgstr ""
"Најнадворешните елементи во темата мора да бидат <metacity_theme> не <%s>"
msgstr "Најнадворешните елементи во темата мора да бидат <metacity_theme> не <%s>"
#: ../src/theme-parser.c:3679
#, c-format
msgid ""
"Element <%s> is not allowed inside a name/author/date/description element"
msgstr ""
"Елемент <%s> не е дозволено внатрешно име/автор/датум/опис на елементот"
msgid "Element <%s> is not allowed inside a name/author/date/description element"
msgstr "Елемент <%s> не е дозволено внатрешно име/автор/датум/опис на елементот"
#: ../src/theme-parser.c:3684
#, c-format
@@ -2595,8 +2597,7 @@ msgstr "Елемент <%s> не е дозволен во <constant> елеме
#: ../src/theme-parser.c:3696
#, c-format
msgid ""
"Element <%s> is not allowed inside a distance/border/aspect_ratio element"
msgid "Element <%s> is not allowed inside a distance/border/aspect_ratio element"
msgstr "Елемент <%s> не е дозволен во дистанца/граница/однос на аспект елемент"
#: ../src/theme-parser.c:3718
@@ -2943,10 +2944,8 @@ msgstr "Alpha вредност \"%s\" во блендираните бои не
#: ../src/theme.c:1105
#, c-format
msgid ""
"Shade format is \"shade/base_color/factor\", \"%s\" does not fit the format"
msgstr ""
"Засенет формат е \"shade/base_color/factor\", \"%s\" не го собира форматот"
msgid "Shade format is \"shade/base_color/factor\", \"%s\" does not fit the format"
msgstr "Засенет формат е \"shade/base_color/factor\", \"%s\" не го собира форматот"
#: ../src/theme.c:1116
#, c-format
@@ -2980,8 +2979,7 @@ msgstr ""
#: ../src/theme.c:1458
#, c-format
msgid "Coordinate expression contains integer '%s' which could not be parsed"
msgstr ""
"Координираниот израз содржи цели броеви '%s' кои не може да бидат разложени"
msgstr "Координираниот израз содржи цели броеви '%s' кои не може да бидат разложени"
#: ../src/theme.c:1525
#, c-format
@@ -3001,18 +2999,15 @@ msgid "Coordinate expression results in division by zero"
msgstr "Координираниот израз даде резултати поделени со нула"
#: ../src/theme.c:1777
msgid ""
"Coordinate expression tries to use mod operator on a floating-point number"
msgid "Coordinate expression tries to use mod operator on a floating-point number"
msgstr ""
"Координираниот израз пробува да користи оператор на режим на лебдечките "
"поинт броеви"
#: ../src/theme.c:1834
#, c-format
msgid ""
"Coordinate expression has an operator \"%s\" where an operand was expected"
msgstr ""
"Координираниот израз има оператор \"%s\" каде што беше очекуван операнд"
msgid "Coordinate expression has an operator \"%s\" where an operand was expected"
msgstr "Координираниот израз има оператор \"%s\" каде што беше очекуван операнд"
#: ../src/theme.c:1843
msgid "Coordinate expression had an operand where an operator was expected"
@@ -3072,8 +3067,7 @@ msgstr ""
#: ../src/theme.c:4363 ../src/theme.c:4395
#, c-format
msgid ""
"Missing <frame state=\"%s\" resize=\"%s\" focus=\"%s\" style=\"whatever\"/>"
msgid "Missing <frame state=\"%s\" resize=\"%s\" focus=\"%s\" style=\"whatever\"/>"
msgstr ""
"Недостасува <frame state=\"%s\" resize=\"%s\" focus=\"%s\" style=\"whatever"
"\"/>"
@@ -3109,8 +3103,7 @@ msgstr ""
#: ../src/theme.c:5041 ../src/theme.c:5103
#, c-format
msgid ""
"User-defined constants must begin with a capital letter; \"%s\" does not"
msgid "User-defined constants must begin with a capital letter; \"%s\" does not"
msgstr ""
"Корисничко дефинирана константа мора да започнува со прва голема буква, \"%s"
"\" не"
@@ -3120,44 +3113,44 @@ msgstr ""
msgid "Constant \"%s\" has already been defined"
msgstr "Константата \"%s\" веќе беше дефинирана"
#: ../src/util.c:93
#: ../src/util.c:95
#, c-format
msgid "Failed to open debug log: %s\n"
msgstr "Не успеав да го отворам дневникот на дебагирање: %s\n"
#: ../src/util.c:103
#: ../src/util.c:105
#, c-format
msgid "Failed to fdopen() log file %s: %s\n"
msgstr "Не успеав да fdopen() дневник датотеката %s: %s\n"
#: ../src/util.c:109
#: ../src/util.c:111
#, c-format
msgid "Opened log file %s\n"
msgstr "Отворив дневник датотека %s\n"
#: ../src/util.c:203
#: ../src/util.c:219
msgid "Window manager: "
msgstr "Менаџер на прозорци"
#: ../src/util.c:349
#: ../src/util.c:365
msgid "Bug in window manager: "
msgstr "Бубачка во менаџерот на прозорци"
#: ../src/util.c:378
#: ../src/util.c:394
msgid "Window manager warning: "
msgstr "Предупредување од менаџерот на прозорци:"
#: ../src/util.c:402
#: ../src/util.c:418
msgid "Window manager error: "
msgstr "Грешка од менаџерот на прозорци:"
#: ../src/window-props.c:162
#: ../src/window-props.c:165
#, c-format
msgid "Application set a bogus _NET_WM_PID %ld\n"
msgstr "Апликацијата намести лажно _NET_WM_PID %ld\n"
#. first time through
#: ../src/window.c:5205
#: ../src/window.c:5238
#, c-format
msgid ""
"Window %s sets SM_CLIENT_ID on itself, instead of on the WM_CLIENT_LEADER "
@@ -3173,7 +3166,7 @@ msgstr ""
#. * MWM but not WM_NORMAL_HINTS are basically broken. We complain
#. * about these apps but make them work.
#.
#: ../src/window.c:5876
#: ../src/window.c:5878
#, c-format
msgid ""
"Window %s sets an MWM hint indicating it isn't resizable, but sets min size %"
@@ -3204,8 +3197,8 @@ msgstr "Својство %s на прозорец 0x%lx содржи невал
#: ../src/xprops.c:482
#, c-format
msgid ""
"Property %s on window 0x%lx contained invalid UTF-8 for item %d in the list\n"
msgid "Property %s on window 0x%lx contained invalid UTF-8 for item %d in the list\n"
msgstr ""
"Својствата %s на прозорецот 0x%lx содржи невалиден UTF-8 за предмет %d во "
"листата\n"

256
po/nb.po
View File

@@ -6,8 +6,8 @@ msgid ""
msgstr ""
"Project-Id-Version: metacity 2.13.x\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2005-12-03 11:43+0100\n"
"PO-Revision-Date: 2005-12-03 11:47+0100\n"
"POT-Creation-Date: 2006-01-06 18:57+0100\n"
"PO-Revision-Date: 2006-01-06 18:57+0100\n"
"Last-Translator: Kjartan Maraas <kmaraas@gnome.org>\n"
"Language-Team: Norwegian (bokmål) <i18n-no@lister.ping.uio.no>\n"
"MIME-Version: 1.0\n"
@@ -79,23 +79,23 @@ msgstr ""
msgid "Fatal IO error %d (%s) on display '%s'.\n"
msgstr "Fatal IU-feil %d (%s) på skjerm «%s».\n"
#: ../src/frames.c:1097
#: ../src/frames.c:1123
msgid "Close Window"
msgstr "Lukk vindu"
#: ../src/frames.c:1100
#: ../src/frames.c:1126
msgid "Window Menu"
msgstr "Vindumeny"
#: ../src/frames.c:1103
#: ../src/frames.c:1129
msgid "Minimize Window"
msgstr "Minimer vindu"
#: ../src/frames.c:1106
#: ../src/frames.c:1132
msgid "Maximize Window"
msgstr "Maksimer vindu"
#: ../src/frames.c:1109
#: ../src/frames.c:1135
msgid "Unmaximize Window"
msgstr "Gjenopprett vindu"
@@ -108,19 +108,19 @@ msgstr ""
"Et annet program bruker allerede nøkkelen %s med modifikatorer %x som "
"binding\n"
#: ../src/keybindings.c:2494
#: ../src/keybindings.c:2498
#, c-format
msgid "Error launching metacity-dialog to print an error about a command: %s\n"
msgstr ""
"Feil under oppstart av metacity-dialog for å skrive ut en feil om en "
"kommando: %s\n"
#: ../src/keybindings.c:2599
#: ../src/keybindings.c:2603
#, c-format
msgid "No command %d has been defined.\n"
msgstr "Ingen kommando %d er definert\n"
#: ../src/keybindings.c:3461
#: ../src/keybindings.c:3465
msgid "No terminal command has been defined.\n"
msgstr "Ingen terminalkommando er definert\n"
@@ -246,7 +246,7 @@ msgstr "Flytt til arbeidsområdet _over"
msgid "Move to Workspace _Down"
msgstr "Flytt til arbeidsområdet ne_denfor"
#: ../src/menu.c:164 ../src/prefs.c:2106
#: ../src/menu.c:164 ../src/prefs.c:2112
#, c-format
msgid "Workspace %d"
msgstr "Arbeidsområde %d"
@@ -269,7 +269,7 @@ msgstr "Flytt til et annet ar_beidsområde"
#. * translated on keyboards used for your language, don't translate
#. * this.
#.
#: ../src/metaaccellabel.c:103
#: ../src/metaaccellabel.c:105
msgid "Shift"
msgstr "Shift"
@@ -278,7 +278,7 @@ msgstr "Shift"
#. * translated on keyboards used for your language, don't translate
#. * this.
#.
#: ../src/metaaccellabel.c:109
#: ../src/metaaccellabel.c:111
msgid "Ctrl"
msgstr "Ctrl"
@@ -287,7 +287,7 @@ msgstr "Ctrl"
#. * translated on keyboards used for your language, don't translate
#. * this.
#.
#: ../src/metaaccellabel.c:115
#: ../src/metaaccellabel.c:117
msgid "Alt"
msgstr "Alt"
@@ -296,7 +296,7 @@ msgstr "Alt"
#. * translated on keyboards used for your language, don't translate
#. * this.
#.
#: ../src/metaaccellabel.c:121
#: ../src/metaaccellabel.c:123
msgid "Meta"
msgstr "Meta"
@@ -305,7 +305,7 @@ msgstr "Meta"
#. * translated on keyboards used for your language, don't translate
#. * this.
#.
#: ../src/metaaccellabel.c:127
#: ../src/metaaccellabel.c:129
msgid "Super"
msgstr "Super"
@@ -314,7 +314,7 @@ msgstr "Super"
#. * translated on keyboards used for your language, don't translate
#. * this.
#.
#: ../src/metaaccellabel.c:133
#: ../src/metaaccellabel.c:135
msgid "Hyper"
msgstr "Hyper"
@@ -323,7 +323,7 @@ msgstr "Hyper"
#. * translated on keyboards used for your language, don't translate
#. * this.
#.
#: ../src/metaaccellabel.c:139
#: ../src/metaaccellabel.c:141
msgid "Mod2"
msgstr "Mod2"
@@ -332,7 +332,7 @@ msgstr "Mod2"
#. * translated on keyboards used for your language, don't translate
#. * this.
#.
#: ../src/metaaccellabel.c:145
#: ../src/metaaccellabel.c:147
msgid "Mod3"
msgstr "Mod3"
@@ -341,7 +341,7 @@ msgstr "Mod3"
#. * translated on keyboards used for your language, don't translate
#. * this.
#.
#: ../src/metaaccellabel.c:151
#: ../src/metaaccellabel.c:153
msgid "Mod4"
msgstr "Mod4"
@@ -350,7 +350,7 @@ msgstr "Mod4"
#. * translated on keyboards used for your language, don't translate
#. * this.
#.
#: ../src/metaaccellabel.c:157
#: ../src/metaaccellabel.c:159
msgid "Mod5"
msgstr "Mod5"
@@ -512,7 +512,11 @@ msgid ""
"not related to raise-on-click/orthogonal-raise). It is unrelated to entering "
"a window during drag and drop (because that results in the application "
"grabbing the mouse)"
msgstr "Hvis satt til «true» og hvis fokusmodus er enten «sloppy» eller «mouse» vil fokusert vindu heves automatisk etter en tid (tidsavbruddet spesifiseres med nøkkelen auto_raise_delay). Dette brukervalget kunne hatt et bedre navn, men beholdes for bakoverkompatibilitet."
msgstr ""
"Hvis satt til «true» og hvis fokusmodus er enten «sloppy» eller «mouse» vil "
"fokusert vindu heves automatisk etter en tid (tidsavbruddet spesifiseres med "
"nøkkelen auto_raise_delay). Dette brukervalget kunne hatt et bedre navn, men "
"beholdes for bakoverkompatibilitet."
#: ../src/metacity.schemas.in.h:18
msgid ""
@@ -2019,12 +2023,12 @@ msgstr ""
msgid "%d stored in GConf key %s is out of range 0 to %d\n"
msgstr "%d lagret i GConf-nøkkel %s er utenfor området 0 til %d\n"
#: ../src/prefs.c:1589
#: ../src/prefs.c:1595
#, c-format
msgid "Error setting number of workspaces to %d: %s\n"
msgstr "Feil under spesifisering av antall arbeidsområder til %d: %s\n"
#: ../src/prefs.c:1833
#: ../src/prefs.c:1839
#, c-format
msgid ""
"\"%s\" found in configuration database is not a valid value for keybinding "
@@ -2033,7 +2037,7 @@ msgstr ""
"«%s» funnet i konfigurasjonsdatabasen er ikke en gyldig verdi for "
"tastaturbinding «%s»\n"
#: ../src/prefs.c:2187
#: ../src/prefs.c:2193
#, c-format
msgid "Error setting name for workspace %d to \"%s\": %s\n"
msgstr "Feil under setting av navn på arbeidsområde %d til «%s»: %s\n"
@@ -2069,75 +2073,75 @@ msgstr ""
msgid "Screen %d on display \"%s\" already has a window manager\n"
msgstr "Skjerm %d på display «%s» har allerede en vinduhåndterer\n"
#: ../src/screen.c:712
#: ../src/screen.c:710
#, c-format
msgid "Could not release screen %d on display \"%s\"\n"
msgstr "Kunne ikke slippe skjerm %d på display «%s»\n"
#: ../src/session.c:835 ../src/session.c:842
#: ../src/session.c:844 ../src/session.c:851
#, c-format
msgid "Could not create directory '%s': %s\n"
msgstr "Kunne ikke opprette katalog «%s»: %s\n"
#: ../src/session.c:852
#: ../src/session.c:861
#, c-format
msgid "Could not open session file '%s' for writing: %s\n"
msgstr "Kunne ikke åpne sesjonsfil «%s» for skriving: %s\n"
#: ../src/session.c:1004
#: ../src/session.c:1013
#, c-format
msgid "Error writing session file '%s': %s\n"
msgstr "Feil under skriving av sesjonsfil «%s»: %s\n"
#: ../src/session.c:1009
#: ../src/session.c:1018
#, c-format
msgid "Error closing session file '%s': %s\n"
msgstr "Feil under lukking av sesjonsfil «%s»: %s\n"
#: ../src/session.c:1084
#: ../src/session.c:1093
#, c-format
msgid "Failed to read saved session file %s: %s\n"
msgstr "Feil under lesing av lagret sesjonsfil %s: %s\n"
#: ../src/session.c:1119
#: ../src/session.c:1128
#, c-format
msgid "Failed to parse saved session file: %s\n"
msgstr "Feil under tolking av lagret sesjonsfil: %s\n"
#: ../src/session.c:1168
#: ../src/session.c:1177
msgid "<metacity_session> attribute seen but we already have the session ID"
msgstr "<metacity_session>-attributt sett men vi har allerede sesjons-ID"
#: ../src/session.c:1181
#: ../src/session.c:1190
#, c-format
msgid "Unknown attribute %s on <metacity_session> element"
msgstr "Ukjent attributt %s på <metacity_session>-element"
#: ../src/session.c:1198
#: ../src/session.c:1207
msgid "nested <window> tag"
msgstr "<window> tag med flere nivåer"
#: ../src/session.c:1256 ../src/session.c:1288
#: ../src/session.c:1265 ../src/session.c:1297
#, c-format
msgid "Unknown attribute %s on <window> element"
msgstr "Ukjent attributt %s på <window>-element"
#: ../src/session.c:1360
#: ../src/session.c:1369
#, c-format
msgid "Unknown attribute %s on <maximized> element"
msgstr "Ukjent attributt %s på <maximized>-element"
#: ../src/session.c:1420
#: ../src/session.c:1429
#, c-format
msgid "Unknown attribute %s on <geometry> element"
msgstr "Ukjent attributt %s på <geometry>-element"
#: ../src/session.c:1440
#: ../src/session.c:1449
#, c-format
msgid "Unknown element %s"
msgstr "Ukjent element %s"
#: ../src/session.c:1906
#: ../src/session.c:1921
#, c-format
msgid ""
"Error launching metacity-dialog to warn about apps that don't support "
@@ -2684,92 +2688,92 @@ msgstr "Feil under lesing av tema fra fil %s: %s\n"
msgid "Theme file %s did not contain a root <metacity_theme> element"
msgstr "Temafil %s inneholdt ikke et rotelement <metacity_theme>"
#: ../src/theme-viewer.c:72
#: ../src/theme-viewer.c:70
msgid "/_Windows"
msgstr "/_Vinduer"
#: ../src/theme-viewer.c:73
#: ../src/theme-viewer.c:71
msgid "/Windows/tearoff"
msgstr "/Vinduer/avriving"
#: ../src/theme-viewer.c:74
#: ../src/theme-viewer.c:72
msgid "/Windows/_Dialog"
msgstr "/Vinduer/_Dialog"
#: ../src/theme-viewer.c:75
#: ../src/theme-viewer.c:73
msgid "/Windows/_Modal dialog"
msgstr "/Vinduer/_Modal dialog"
#: ../src/theme-viewer.c:76
#: ../src/theme-viewer.c:74
msgid "/Windows/_Utility"
msgstr "/Vinduer/_Verktøy"
#: ../src/theme-viewer.c:77
#: ../src/theme-viewer.c:75
msgid "/Windows/_Splashscreen"
msgstr "/Vinduer/Opp_startskjerm"
#: ../src/theme-viewer.c:78
#: ../src/theme-viewer.c:76
msgid "/Windows/_Top dock"
msgstr "/Vinduer/_Toppdokk"
#: ../src/theme-viewer.c:79
#: ../src/theme-viewer.c:77
msgid "/Windows/_Bottom dock"
msgstr "/Vinduer/_Bunndokk"
#: ../src/theme-viewer.c:80
#: ../src/theme-viewer.c:78
msgid "/Windows/_Left dock"
msgstr "/Vinduer/_Venstre dokk"
#: ../src/theme-viewer.c:81
#: ../src/theme-viewer.c:79
msgid "/Windows/_Right dock"
msgstr "/Vinduer/Høy_re dokk"
#: ../src/theme-viewer.c:82
#: ../src/theme-viewer.c:80
msgid "/Windows/_All docks"
msgstr "/Vinduer/_Alle dokker"
#: ../src/theme-viewer.c:83
#: ../src/theme-viewer.c:81
msgid "/Windows/Des_ktop"
msgstr "/Vinduer/S_krivebord"
#: ../src/theme-viewer.c:133
#: ../src/theme-viewer.c:131
msgid "Open another one of these windows"
msgstr "Åpne et til av disse vinduene"
#: ../src/theme-viewer.c:140
#: ../src/theme-viewer.c:138
msgid "This is a demo button with an 'open' icon"
msgstr "Dette er en demoknapp med et «åpne»-ikon"
#: ../src/theme-viewer.c:147
#: ../src/theme-viewer.c:145
msgid "This is a demo button with a 'quit' icon"
msgstr "Dette er en demoknapp med et «avslutt»-ikon"
#: ../src/theme-viewer.c:244
#: ../src/theme-viewer.c:241
msgid "This is a sample message in a sample dialog"
msgstr "Dette er en eksempelbeskjed i en eksempeldialog"
#: ../src/theme-viewer.c:327
#: ../src/theme-viewer.c:324
#, c-format
msgid "Fake menu item %d\n"
msgstr "Falsk menyoppføring %d\n"
#: ../src/theme-viewer.c:361
#: ../src/theme-viewer.c:358
msgid "Border-only window"
msgstr "Vindu uten innhold"
#: ../src/theme-viewer.c:363
#: ../src/theme-viewer.c:360
msgid "Bar"
msgstr "Linje"
#: ../src/theme-viewer.c:380
#: ../src/theme-viewer.c:377
msgid "Normal Application Window"
msgstr "Normalt programvindu"
#: ../src/theme-viewer.c:384
#: ../src/theme-viewer.c:382
msgid "Dialog Box"
msgstr "Dialogboks"
#: ../src/theme-viewer.c:388
#: ../src/theme-viewer.c:387
msgid "Modal Dialog Box"
msgstr "Modal dialogboks"
@@ -2777,63 +2781,63 @@ msgstr "Modal dialogboks"
msgid "Utility Palette"
msgstr "Verktøypalett"
#: ../src/theme-viewer.c:396
#: ../src/theme-viewer.c:397
msgid "Torn-off Menu"
msgstr "Avrevet meny"
#: ../src/theme-viewer.c:400
#: ../src/theme-viewer.c:402
msgid "Border"
msgstr "Kant"
#: ../src/theme-viewer.c:728
#: ../src/theme-viewer.c:731
#, c-format
msgid "Button layout test %d"
msgstr "Test av knappeplassering %d"
#: ../src/theme-viewer.c:757
#: ../src/theme-viewer.c:760
#, c-format
msgid "%g milliseconds to draw one window frame"
msgstr "%g millisekunder for å tegne en vindusramme"
#: ../src/theme-viewer.c:800
#: ../src/theme-viewer.c:803
msgid "Usage: metacity-theme-viewer [THEMENAME]\n"
msgstr "Bruk: metacity-theme-viewer [TEMANAVN]\n"
#: ../src/theme-viewer.c:807
#: ../src/theme-viewer.c:810
#, c-format
msgid "Error loading theme: %s\n"
msgstr "Feil under lasting av tema: %s\n"
#: ../src/theme-viewer.c:813
#: ../src/theme-viewer.c:816
#, c-format
msgid "Loaded theme \"%s\" in %g seconds\n"
msgstr "Lastet tema «%s» på %g sekunder\n"
#: ../src/theme-viewer.c:836
#: ../src/theme-viewer.c:839
msgid "Normal Title Font"
msgstr "Normal tittelskrift"
#: ../src/theme-viewer.c:842
#: ../src/theme-viewer.c:845
msgid "Small Title Font"
msgstr "Liten tittelskrift"
#: ../src/theme-viewer.c:848
#: ../src/theme-viewer.c:851
msgid "Large Title Font"
msgstr "Stor tittelskrift"
#: ../src/theme-viewer.c:853
#: ../src/theme-viewer.c:856
msgid "Button Layouts"
msgstr "Knappeplasseringer"
#: ../src/theme-viewer.c:858
#: ../src/theme-viewer.c:861
msgid "Benchmark"
msgstr "Ytelsestest"
#: ../src/theme-viewer.c:905
#: ../src/theme-viewer.c:908
msgid "Window Title Goes Here"
msgstr "Vindutittel skal her"
#: ../src/theme-viewer.c:1009
#: ../src/theme-viewer.c:1012
#, c-format
msgid ""
"Drew %d frames in %g client-side seconds (%g milliseconds per frame) and %g "
@@ -2844,39 +2848,39 @@ msgstr ""
"%g sekunder på klokken inklusive ressurser på X-tjener (%g millisekunder per "
"ramme)\n"
#: ../src/theme-viewer.c:1224
#: ../src/theme-viewer.c:1227
msgid "position expression test returned TRUE but set error"
msgstr "test av posisjonsuttrykk returnerte TRUE, men satte en feilkode"
#: ../src/theme-viewer.c:1226
#: ../src/theme-viewer.c:1229
msgid "position expression test returned FALSE but didn't set error"
msgstr "test av posisjonsuttrykk returnerte FALSE, men satte ikke en feilkode"
#: ../src/theme-viewer.c:1230
#: ../src/theme-viewer.c:1233
msgid "Error was expected but none given"
msgstr "Feil var ventet men ingen ble gitt"
#: ../src/theme-viewer.c:1232
#: ../src/theme-viewer.c:1235
#, c-format
msgid "Error %d was expected but %d given"
msgstr "Feil %d var ventet men %d ble gitt"
#: ../src/theme-viewer.c:1238
#: ../src/theme-viewer.c:1241
#, c-format
msgid "Error not expected but one was returned: %s"
msgstr "Feil ikke ventet men en ble returnert: %s"
#: ../src/theme-viewer.c:1242
#: ../src/theme-viewer.c:1245
#, c-format
msgid "x value was %d, %d was expected"
msgstr "x-verdi var %d, %d var ventet"
#: ../src/theme-viewer.c:1245
#: ../src/theme-viewer.c:1248
#, c-format
msgid "y value was %d, %d was expected"
msgstr "y-verdi var %d, %d var ventet"
#: ../src/theme-viewer.c:1308
#: ../src/theme-viewer.c:1310
#, c-format
msgid "%d coordinate expressions parsed in %g seconds (%g seconds average)\n"
msgstr "%d koordinatuttrykk lest på %g sekunder (%g sekunder i snitt)\n"
@@ -2916,11 +2920,11 @@ msgstr "Aspektrate %g for knapp er ikke fornuftig"
msgid "Frame geometry does not specify size of buttons"
msgstr "Rammegeometrien spesifiserer ikke størrelse på knapper"
#: ../src/theme.c:842
#: ../src/theme.c:843
msgid "Gradients should have at least two colors"
msgstr "Gradienter må ha minst to farger"
#: ../src/theme.c:968
#: ../src/theme.c:969
#, c-format
msgid ""
"GTK color specification must have the state in brackets, e.g. gtk:fg[NORMAL] "
@@ -2929,7 +2933,7 @@ msgstr ""
"GTK-fargespesifikasjon må ha tilstand i klammer, f.eks. gtk:fg[NORMAL], hvor "
"NORMAL er tilstanden; kunne ikke lese «%s»"
#: ../src/theme.c:982
#: ../src/theme.c:983
#, c-format
msgid ""
"GTK color specification must have a close bracket after the state, e.g. gtk:"
@@ -2938,17 +2942,17 @@ msgstr ""
"GTK-fargespesifikasjon må ha en avsluttende klamme etter tilstanden, f.eks. "
"gtk:fg[NORMAL], hvor NORMAL er tilstanden; kunne ikke lese «%s»"
#: ../src/theme.c:993
#: ../src/theme.c:994
#, c-format
msgid "Did not understand state \"%s\" in color specification"
msgstr "Forsto ikke tilstand «%s» i fargespesifikasjonen"
#: ../src/theme.c:1006
#: ../src/theme.c:1007
#, c-format
msgid "Did not understand color component \"%s\" in color specification"
msgstr "Forsto ikke fargekomponent «%s» i fargespesifikasjonen"
#: ../src/theme.c:1036
#: ../src/theme.c:1037
#, c-format
msgid ""
"Blend format is \"blend/bg_color/fg_color/alpha\", \"%s\" does not fit the "
@@ -2957,56 +2961,56 @@ msgstr ""
"Blandingsformat er «blend/bg_color/fg_color/alpha», «%s» passer ikke i "
"formatet"
#: ../src/theme.c:1047
#: ../src/theme.c:1048
#, c-format
msgid "Could not parse alpha value \"%s\" in blended color"
msgstr "Kunne ikke lese alpha-verdi «%s» i blandet farge"
#: ../src/theme.c:1057
#: ../src/theme.c:1058
#, c-format
msgid "Alpha value \"%s\" in blended color is not between 0.0 and 1.0"
msgstr "Alpha-verdi «%s» i blandet farge er ikke mellom 0.0 og 1.0"
#: ../src/theme.c:1104
#: ../src/theme.c:1105
#, c-format
msgid ""
"Shade format is \"shade/base_color/factor\", \"%s\" does not fit the format"
msgstr ""
"Skyggeformatet er «shade/base_color/factor», «%s» passer ikke i formatet"
#: ../src/theme.c:1115
#: ../src/theme.c:1116
#, c-format
msgid "Could not parse shade factor \"%s\" in shaded color"
msgstr "Kunne ikke lese skyggefaktor «%s» i skyggelagt farge"
#: ../src/theme.c:1125
#: ../src/theme.c:1126
#, c-format
msgid "Shade factor \"%s\" in shaded color is negative"
msgstr "Skyggefaktor «%s» i skyggelagt farge er negativ"
#: ../src/theme.c:1154
#: ../src/theme.c:1155
#, c-format
msgid "Could not parse color \"%s\""
msgstr "Kunne ikke lese farge «%s»"
#: ../src/theme.c:1416
#: ../src/theme.c:1417
#, c-format
msgid "Coordinate expression contains character '%s' which is not allowed"
msgstr "Koordinatuttrykk inneholder tegn «%s» som ikke er tillatt"
#: ../src/theme.c:1443
#: ../src/theme.c:1444
#, c-format
msgid ""
"Coordinate expression contains floating point number '%s' which could not be "
"parsed"
msgstr "Koordinatuttrykk inneholder flyttall «%s» som ikke kunne tolkes"
#: ../src/theme.c:1457
#: ../src/theme.c:1458
#, c-format
msgid "Coordinate expression contains integer '%s' which could not be parsed"
msgstr "Koordinatuttrykk inneholder heltall «%s» som ikke kunne tolkes"
#: ../src/theme.c:1524
#: ../src/theme.c:1525
#, c-format
msgid ""
"Coordinate expression contained unknown operator at the start of this text: "
@@ -3015,34 +3019,34 @@ msgstr ""
"Koordinatuttrykket inneholdt en ukjent operator ved begynnelsen av denne "
"teksten: «%s»"
#: ../src/theme.c:1581
#: ../src/theme.c:1582
msgid "Coordinate expression was empty or not understood"
msgstr "Koordinatuttrykket var tomt eller ble ikke forstått"
#: ../src/theme.c:1724 ../src/theme.c:1734 ../src/theme.c:1768
#: ../src/theme.c:1725 ../src/theme.c:1735 ../src/theme.c:1769
msgid "Coordinate expression results in division by zero"
msgstr "Koordinatuttrykket resulterer i divisjon med null"
#: ../src/theme.c:1776
#: ../src/theme.c:1777
msgid ""
"Coordinate expression tries to use mod operator on a floating-point number"
msgstr "Koordinatuttrykket prøver å bruke mod-operator på et flyttall"
#: ../src/theme.c:1832
#: ../src/theme.c:1834
#, c-format
msgid ""
"Coordinate expression has an operator \"%s\" where an operand was expected"
msgstr "Koordinatuttrykket har en operator «%s» hvor en operand var ventet"
#: ../src/theme.c:1841
#: ../src/theme.c:1843
msgid "Coordinate expression had an operand where an operator was expected"
msgstr "Koordinatuttrykket hadde en operand hvor en operator var ventet"
#: ../src/theme.c:1849
#: ../src/theme.c:1851
msgid "Coordinate expression ended with an operator instead of an operand"
msgstr "Koordinatuttrykket sluttet med en operator i stedet for en operand"
#: ../src/theme.c:1859
#: ../src/theme.c:1861
#, c-format
msgid ""
"Coordinate expression has operator \"%c\" following operator \"%c\" with no "
@@ -3051,7 +3055,7 @@ msgstr ""
"Koordinatuttrykket har en operator «%c» etter en operator «%c» og ingen "
"operand mellom dem."
#: ../src/theme.c:1978
#: ../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?"
@@ -3059,30 +3063,30 @@ msgstr ""
"Koordinatuttrykkets tolkeprosess overfløt bufferen sin. Dette er virkelig en "
"Metacity feil, men er du sikker på at du trenger så store uttrykk?"
#: ../src/theme.c:2007
#: ../src/theme.c:2009
msgid "Coordinate expression had a close parenthesis with no open parenthesis"
msgstr "Koordinatuttrykket hadde en parantes slutt uten parantes start"
#: ../src/theme.c:2069
#: ../src/theme.c:2072
#, c-format
msgid "Coordinate expression had unknown variable or constant \"%s\""
msgstr "Koordinatuttrykket haddeen ukjent variabel eller konstant «%s»"
#: ../src/theme.c:2126
#: ../src/theme.c:2129
msgid "Coordinate expression had an open parenthesis with no close parenthesis"
msgstr "Koordinatuttrykket hadde en åpen parantes uten en avsluttende parantes"
#: ../src/theme.c:2137
#: ../src/theme.c:2140
msgid "Coordinate expression doesn't seem to have any operators or operands"
msgstr ""
"Koordinatuttrykket ser ikke ut til å ha noen operatorer eller operander"
#: ../src/theme.c:2381 ../src/theme.c:2403 ../src/theme.c:2424
#: ../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 "Tema inneholdt et uttrykk «%s» som resulterte i en feil: %s\n"
#: ../src/theme.c:3910
#: ../src/theme.c:3913
#, c-format
msgid ""
"<button function=\"%s\" state=\"%s\" draw_ops=\"whatever\"/> must be "
@@ -3091,25 +3095,25 @@ msgstr ""
"<button function=«%s» state=«%s» draw_ops=«ett-eller-annet»/> må "
"spesifiseres for denne rammestilen"
#: ../src/theme.c:4360 ../src/theme.c:4392
#: ../src/theme.c:4363 ../src/theme.c:4395
#, c-format
msgid ""
"Missing <frame state=\"%s\" resize=\"%s\" focus=\"%s\" style=\"whatever\"/>"
msgstr ""
"Mangler <frame state=«%s» resize=«%s» focus=«%s» stil=«ett-eller-annet»/>"
#: ../src/theme.c:4443
#: ../src/theme.c:4446
#, c-format
msgid "Failed to load theme \"%s\": %s\n"
msgstr "Klarte ikke å laste tema «%s»: %s\n"
#: ../src/theme.c:4589 ../src/theme.c:4596 ../src/theme.c:4603
#: ../src/theme.c:4610 ../src/theme.c:4617
#: ../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 "<%s> er ikke satt for tema «%s»"
#: ../src/theme.c:4627
#: ../src/theme.c:4630
#, c-format
msgid ""
"No frame style set for window type \"%s\" in theme \"%s\", add a <window "
@@ -3118,7 +3122,7 @@ msgstr ""
"Ingen rammestil satt for vindutype «%s» i tema «%s», legg til et <window "
"type=«%s» style_set=«ett-eller-annet»/>-element"
#: ../src/theme.c:4649
#: ../src/theme.c:4652
#, c-format
msgid ""
"<menu_icon function=\"%s\" state=\"%s\" draw_ops=\"whatever\"/> must be "
@@ -3127,14 +3131,14 @@ msgstr ""
"<menu_icon function=«%s» state=«%s» draw_ops=«ett-eller-annet»/> må være "
"spesifisert for dette temaet"
#: ../src/theme.c:5038 ../src/theme.c:5100
#: ../src/theme.c:5041 ../src/theme.c:5103
#, c-format
msgid ""
"User-defined constants must begin with a capital letter; \"%s\" does not"
msgstr ""
"Brukerdefinerte konstanter må begynne med stor bokstav; «%s» gjør ikke det"
#: ../src/theme.c:5046 ../src/theme.c:5108
#: ../src/theme.c:5049 ../src/theme.c:5111
#, c-format
msgid "Constant \"%s\" has already been defined"
msgstr "Konstant «%s» er allerede definert"
@@ -3172,11 +3176,11 @@ msgstr "Feil i vindushåndterer: "
#: ../src/window-props.c:165
#, c-format
msgid "Application set a bogus _NET_WM_PID %lu\n"
msgstr "Applikasjonen satte en feil _NET_WM_PID %lu\n"
msgid "Application set a bogus _NET_WM_PID %ld\n"
msgstr "Programmet satte en feil _NET_WM_PID %ld\n"
#. first time through
#: ../src/window.c:5223
#: ../src/window.c:5239
#, c-format
msgid ""
"Window %s sets SM_CLIENT_ID on itself, instead of on the WM_CLIENT_LEADER "
@@ -3192,7 +3196,7 @@ msgstr ""
#. * MWM but not WM_NORMAL_HINTS are basically broken. We complain
#. * about these apps but make them work.
#.
#: ../src/window.c:5853
#: ../src/window.c:5879
#, c-format
msgid ""
"Window %s sets an MWM hint indicating it isn't resizable, but sets min size %"

256
po/no.po
View File

@@ -6,8 +6,8 @@ msgid ""
msgstr ""
"Project-Id-Version: metacity 2.13.x\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2005-12-03 11:43+0100\n"
"PO-Revision-Date: 2005-12-03 11:47+0100\n"
"POT-Creation-Date: 2006-01-06 18:57+0100\n"
"PO-Revision-Date: 2006-01-06 18:57+0100\n"
"Last-Translator: Kjartan Maraas <kmaraas@gnome.org>\n"
"Language-Team: Norwegian (bokmål) <i18n-no@lister.ping.uio.no>\n"
"MIME-Version: 1.0\n"
@@ -79,23 +79,23 @@ msgstr ""
msgid "Fatal IO error %d (%s) on display '%s'.\n"
msgstr "Fatal IU-feil %d (%s) på skjerm «%s».\n"
#: ../src/frames.c:1097
#: ../src/frames.c:1123
msgid "Close Window"
msgstr "Lukk vindu"
#: ../src/frames.c:1100
#: ../src/frames.c:1126
msgid "Window Menu"
msgstr "Vindumeny"
#: ../src/frames.c:1103
#: ../src/frames.c:1129
msgid "Minimize Window"
msgstr "Minimer vindu"
#: ../src/frames.c:1106
#: ../src/frames.c:1132
msgid "Maximize Window"
msgstr "Maksimer vindu"
#: ../src/frames.c:1109
#: ../src/frames.c:1135
msgid "Unmaximize Window"
msgstr "Gjenopprett vindu"
@@ -108,19 +108,19 @@ msgstr ""
"Et annet program bruker allerede nøkkelen %s med modifikatorer %x som "
"binding\n"
#: ../src/keybindings.c:2494
#: ../src/keybindings.c:2498
#, c-format
msgid "Error launching metacity-dialog to print an error about a command: %s\n"
msgstr ""
"Feil under oppstart av metacity-dialog for å skrive ut en feil om en "
"kommando: %s\n"
#: ../src/keybindings.c:2599
#: ../src/keybindings.c:2603
#, c-format
msgid "No command %d has been defined.\n"
msgstr "Ingen kommando %d er definert\n"
#: ../src/keybindings.c:3461
#: ../src/keybindings.c:3465
msgid "No terminal command has been defined.\n"
msgstr "Ingen terminalkommando er definert\n"
@@ -246,7 +246,7 @@ msgstr "Flytt til arbeidsområdet _over"
msgid "Move to Workspace _Down"
msgstr "Flytt til arbeidsområdet ne_denfor"
#: ../src/menu.c:164 ../src/prefs.c:2106
#: ../src/menu.c:164 ../src/prefs.c:2112
#, c-format
msgid "Workspace %d"
msgstr "Arbeidsområde %d"
@@ -269,7 +269,7 @@ msgstr "Flytt til et annet ar_beidsområde"
#. * translated on keyboards used for your language, don't translate
#. * this.
#.
#: ../src/metaaccellabel.c:103
#: ../src/metaaccellabel.c:105
msgid "Shift"
msgstr "Shift"
@@ -278,7 +278,7 @@ msgstr "Shift"
#. * translated on keyboards used for your language, don't translate
#. * this.
#.
#: ../src/metaaccellabel.c:109
#: ../src/metaaccellabel.c:111
msgid "Ctrl"
msgstr "Ctrl"
@@ -287,7 +287,7 @@ msgstr "Ctrl"
#. * translated on keyboards used for your language, don't translate
#. * this.
#.
#: ../src/metaaccellabel.c:115
#: ../src/metaaccellabel.c:117
msgid "Alt"
msgstr "Alt"
@@ -296,7 +296,7 @@ msgstr "Alt"
#. * translated on keyboards used for your language, don't translate
#. * this.
#.
#: ../src/metaaccellabel.c:121
#: ../src/metaaccellabel.c:123
msgid "Meta"
msgstr "Meta"
@@ -305,7 +305,7 @@ msgstr "Meta"
#. * translated on keyboards used for your language, don't translate
#. * this.
#.
#: ../src/metaaccellabel.c:127
#: ../src/metaaccellabel.c:129
msgid "Super"
msgstr "Super"
@@ -314,7 +314,7 @@ msgstr "Super"
#. * translated on keyboards used for your language, don't translate
#. * this.
#.
#: ../src/metaaccellabel.c:133
#: ../src/metaaccellabel.c:135
msgid "Hyper"
msgstr "Hyper"
@@ -323,7 +323,7 @@ msgstr "Hyper"
#. * translated on keyboards used for your language, don't translate
#. * this.
#.
#: ../src/metaaccellabel.c:139
#: ../src/metaaccellabel.c:141
msgid "Mod2"
msgstr "Mod2"
@@ -332,7 +332,7 @@ msgstr "Mod2"
#. * translated on keyboards used for your language, don't translate
#. * this.
#.
#: ../src/metaaccellabel.c:145
#: ../src/metaaccellabel.c:147
msgid "Mod3"
msgstr "Mod3"
@@ -341,7 +341,7 @@ msgstr "Mod3"
#. * translated on keyboards used for your language, don't translate
#. * this.
#.
#: ../src/metaaccellabel.c:151
#: ../src/metaaccellabel.c:153
msgid "Mod4"
msgstr "Mod4"
@@ -350,7 +350,7 @@ msgstr "Mod4"
#. * translated on keyboards used for your language, don't translate
#. * this.
#.
#: ../src/metaaccellabel.c:157
#: ../src/metaaccellabel.c:159
msgid "Mod5"
msgstr "Mod5"
@@ -512,7 +512,11 @@ msgid ""
"not related to raise-on-click/orthogonal-raise). It is unrelated to entering "
"a window during drag and drop (because that results in the application "
"grabbing the mouse)"
msgstr "Hvis satt til «true» og hvis fokusmodus er enten «sloppy» eller «mouse» vil fokusert vindu heves automatisk etter en tid (tidsavbruddet spesifiseres med nøkkelen auto_raise_delay). Dette brukervalget kunne hatt et bedre navn, men beholdes for bakoverkompatibilitet."
msgstr ""
"Hvis satt til «true» og hvis fokusmodus er enten «sloppy» eller «mouse» vil "
"fokusert vindu heves automatisk etter en tid (tidsavbruddet spesifiseres med "
"nøkkelen auto_raise_delay). Dette brukervalget kunne hatt et bedre navn, men "
"beholdes for bakoverkompatibilitet."
#: ../src/metacity.schemas.in.h:18
msgid ""
@@ -2019,12 +2023,12 @@ msgstr ""
msgid "%d stored in GConf key %s is out of range 0 to %d\n"
msgstr "%d lagret i GConf-nøkkel %s er utenfor området 0 til %d\n"
#: ../src/prefs.c:1589
#: ../src/prefs.c:1595
#, c-format
msgid "Error setting number of workspaces to %d: %s\n"
msgstr "Feil under spesifisering av antall arbeidsområder til %d: %s\n"
#: ../src/prefs.c:1833
#: ../src/prefs.c:1839
#, c-format
msgid ""
"\"%s\" found in configuration database is not a valid value for keybinding "
@@ -2033,7 +2037,7 @@ msgstr ""
"«%s» funnet i konfigurasjonsdatabasen er ikke en gyldig verdi for "
"tastaturbinding «%s»\n"
#: ../src/prefs.c:2187
#: ../src/prefs.c:2193
#, c-format
msgid "Error setting name for workspace %d to \"%s\": %s\n"
msgstr "Feil under setting av navn på arbeidsområde %d til «%s»: %s\n"
@@ -2069,75 +2073,75 @@ msgstr ""
msgid "Screen %d on display \"%s\" already has a window manager\n"
msgstr "Skjerm %d på display «%s» har allerede en vinduhåndterer\n"
#: ../src/screen.c:712
#: ../src/screen.c:710
#, c-format
msgid "Could not release screen %d on display \"%s\"\n"
msgstr "Kunne ikke slippe skjerm %d på display «%s»\n"
#: ../src/session.c:835 ../src/session.c:842
#: ../src/session.c:844 ../src/session.c:851
#, c-format
msgid "Could not create directory '%s': %s\n"
msgstr "Kunne ikke opprette katalog «%s»: %s\n"
#: ../src/session.c:852
#: ../src/session.c:861
#, c-format
msgid "Could not open session file '%s' for writing: %s\n"
msgstr "Kunne ikke åpne sesjonsfil «%s» for skriving: %s\n"
#: ../src/session.c:1004
#: ../src/session.c:1013
#, c-format
msgid "Error writing session file '%s': %s\n"
msgstr "Feil under skriving av sesjonsfil «%s»: %s\n"
#: ../src/session.c:1009
#: ../src/session.c:1018
#, c-format
msgid "Error closing session file '%s': %s\n"
msgstr "Feil under lukking av sesjonsfil «%s»: %s\n"
#: ../src/session.c:1084
#: ../src/session.c:1093
#, c-format
msgid "Failed to read saved session file %s: %s\n"
msgstr "Feil under lesing av lagret sesjonsfil %s: %s\n"
#: ../src/session.c:1119
#: ../src/session.c:1128
#, c-format
msgid "Failed to parse saved session file: %s\n"
msgstr "Feil under tolking av lagret sesjonsfil: %s\n"
#: ../src/session.c:1168
#: ../src/session.c:1177
msgid "<metacity_session> attribute seen but we already have the session ID"
msgstr "<metacity_session>-attributt sett men vi har allerede sesjons-ID"
#: ../src/session.c:1181
#: ../src/session.c:1190
#, c-format
msgid "Unknown attribute %s on <metacity_session> element"
msgstr "Ukjent attributt %s på <metacity_session>-element"
#: ../src/session.c:1198
#: ../src/session.c:1207
msgid "nested <window> tag"
msgstr "<window> tag med flere nivåer"
#: ../src/session.c:1256 ../src/session.c:1288
#: ../src/session.c:1265 ../src/session.c:1297
#, c-format
msgid "Unknown attribute %s on <window> element"
msgstr "Ukjent attributt %s på <window>-element"
#: ../src/session.c:1360
#: ../src/session.c:1369
#, c-format
msgid "Unknown attribute %s on <maximized> element"
msgstr "Ukjent attributt %s på <maximized>-element"
#: ../src/session.c:1420
#: ../src/session.c:1429
#, c-format
msgid "Unknown attribute %s on <geometry> element"
msgstr "Ukjent attributt %s på <geometry>-element"
#: ../src/session.c:1440
#: ../src/session.c:1449
#, c-format
msgid "Unknown element %s"
msgstr "Ukjent element %s"
#: ../src/session.c:1906
#: ../src/session.c:1921
#, c-format
msgid ""
"Error launching metacity-dialog to warn about apps that don't support "
@@ -2684,92 +2688,92 @@ msgstr "Feil under lesing av tema fra fil %s: %s\n"
msgid "Theme file %s did not contain a root <metacity_theme> element"
msgstr "Temafil %s inneholdt ikke et rotelement <metacity_theme>"
#: ../src/theme-viewer.c:72
#: ../src/theme-viewer.c:70
msgid "/_Windows"
msgstr "/_Vinduer"
#: ../src/theme-viewer.c:73
#: ../src/theme-viewer.c:71
msgid "/Windows/tearoff"
msgstr "/Vinduer/avriving"
#: ../src/theme-viewer.c:74
#: ../src/theme-viewer.c:72
msgid "/Windows/_Dialog"
msgstr "/Vinduer/_Dialog"
#: ../src/theme-viewer.c:75
#: ../src/theme-viewer.c:73
msgid "/Windows/_Modal dialog"
msgstr "/Vinduer/_Modal dialog"
#: ../src/theme-viewer.c:76
#: ../src/theme-viewer.c:74
msgid "/Windows/_Utility"
msgstr "/Vinduer/_Verktøy"
#: ../src/theme-viewer.c:77
#: ../src/theme-viewer.c:75
msgid "/Windows/_Splashscreen"
msgstr "/Vinduer/Opp_startskjerm"
#: ../src/theme-viewer.c:78
#: ../src/theme-viewer.c:76
msgid "/Windows/_Top dock"
msgstr "/Vinduer/_Toppdokk"
#: ../src/theme-viewer.c:79
#: ../src/theme-viewer.c:77
msgid "/Windows/_Bottom dock"
msgstr "/Vinduer/_Bunndokk"
#: ../src/theme-viewer.c:80
#: ../src/theme-viewer.c:78
msgid "/Windows/_Left dock"
msgstr "/Vinduer/_Venstre dokk"
#: ../src/theme-viewer.c:81
#: ../src/theme-viewer.c:79
msgid "/Windows/_Right dock"
msgstr "/Vinduer/Høy_re dokk"
#: ../src/theme-viewer.c:82
#: ../src/theme-viewer.c:80
msgid "/Windows/_All docks"
msgstr "/Vinduer/_Alle dokker"
#: ../src/theme-viewer.c:83
#: ../src/theme-viewer.c:81
msgid "/Windows/Des_ktop"
msgstr "/Vinduer/S_krivebord"
#: ../src/theme-viewer.c:133
#: ../src/theme-viewer.c:131
msgid "Open another one of these windows"
msgstr "Åpne et til av disse vinduene"
#: ../src/theme-viewer.c:140
#: ../src/theme-viewer.c:138
msgid "This is a demo button with an 'open' icon"
msgstr "Dette er en demoknapp med et «åpne»-ikon"
#: ../src/theme-viewer.c:147
#: ../src/theme-viewer.c:145
msgid "This is a demo button with a 'quit' icon"
msgstr "Dette er en demoknapp med et «avslutt»-ikon"
#: ../src/theme-viewer.c:244
#: ../src/theme-viewer.c:241
msgid "This is a sample message in a sample dialog"
msgstr "Dette er en eksempelbeskjed i en eksempeldialog"
#: ../src/theme-viewer.c:327
#: ../src/theme-viewer.c:324
#, c-format
msgid "Fake menu item %d\n"
msgstr "Falsk menyoppføring %d\n"
#: ../src/theme-viewer.c:361
#: ../src/theme-viewer.c:358
msgid "Border-only window"
msgstr "Vindu uten innhold"
#: ../src/theme-viewer.c:363
#: ../src/theme-viewer.c:360
msgid "Bar"
msgstr "Linje"
#: ../src/theme-viewer.c:380
#: ../src/theme-viewer.c:377
msgid "Normal Application Window"
msgstr "Normalt programvindu"
#: ../src/theme-viewer.c:384
#: ../src/theme-viewer.c:382
msgid "Dialog Box"
msgstr "Dialogboks"
#: ../src/theme-viewer.c:388
#: ../src/theme-viewer.c:387
msgid "Modal Dialog Box"
msgstr "Modal dialogboks"
@@ -2777,63 +2781,63 @@ msgstr "Modal dialogboks"
msgid "Utility Palette"
msgstr "Verktøypalett"
#: ../src/theme-viewer.c:396
#: ../src/theme-viewer.c:397
msgid "Torn-off Menu"
msgstr "Avrevet meny"
#: ../src/theme-viewer.c:400
#: ../src/theme-viewer.c:402
msgid "Border"
msgstr "Kant"
#: ../src/theme-viewer.c:728
#: ../src/theme-viewer.c:731
#, c-format
msgid "Button layout test %d"
msgstr "Test av knappeplassering %d"
#: ../src/theme-viewer.c:757
#: ../src/theme-viewer.c:760
#, c-format
msgid "%g milliseconds to draw one window frame"
msgstr "%g millisekunder for å tegne en vindusramme"
#: ../src/theme-viewer.c:800
#: ../src/theme-viewer.c:803
msgid "Usage: metacity-theme-viewer [THEMENAME]\n"
msgstr "Bruk: metacity-theme-viewer [TEMANAVN]\n"
#: ../src/theme-viewer.c:807
#: ../src/theme-viewer.c:810
#, c-format
msgid "Error loading theme: %s\n"
msgstr "Feil under lasting av tema: %s\n"
#: ../src/theme-viewer.c:813
#: ../src/theme-viewer.c:816
#, c-format
msgid "Loaded theme \"%s\" in %g seconds\n"
msgstr "Lastet tema «%s» på %g sekunder\n"
#: ../src/theme-viewer.c:836
#: ../src/theme-viewer.c:839
msgid "Normal Title Font"
msgstr "Normal tittelskrift"
#: ../src/theme-viewer.c:842
#: ../src/theme-viewer.c:845
msgid "Small Title Font"
msgstr "Liten tittelskrift"
#: ../src/theme-viewer.c:848
#: ../src/theme-viewer.c:851
msgid "Large Title Font"
msgstr "Stor tittelskrift"
#: ../src/theme-viewer.c:853
#: ../src/theme-viewer.c:856
msgid "Button Layouts"
msgstr "Knappeplasseringer"
#: ../src/theme-viewer.c:858
#: ../src/theme-viewer.c:861
msgid "Benchmark"
msgstr "Ytelsestest"
#: ../src/theme-viewer.c:905
#: ../src/theme-viewer.c:908
msgid "Window Title Goes Here"
msgstr "Vindutittel skal her"
#: ../src/theme-viewer.c:1009
#: ../src/theme-viewer.c:1012
#, c-format
msgid ""
"Drew %d frames in %g client-side seconds (%g milliseconds per frame) and %g "
@@ -2844,39 +2848,39 @@ msgstr ""
"%g sekunder på klokken inklusive ressurser på X-tjener (%g millisekunder per "
"ramme)\n"
#: ../src/theme-viewer.c:1224
#: ../src/theme-viewer.c:1227
msgid "position expression test returned TRUE but set error"
msgstr "test av posisjonsuttrykk returnerte TRUE, men satte en feilkode"
#: ../src/theme-viewer.c:1226
#: ../src/theme-viewer.c:1229
msgid "position expression test returned FALSE but didn't set error"
msgstr "test av posisjonsuttrykk returnerte FALSE, men satte ikke en feilkode"
#: ../src/theme-viewer.c:1230
#: ../src/theme-viewer.c:1233
msgid "Error was expected but none given"
msgstr "Feil var ventet men ingen ble gitt"
#: ../src/theme-viewer.c:1232
#: ../src/theme-viewer.c:1235
#, c-format
msgid "Error %d was expected but %d given"
msgstr "Feil %d var ventet men %d ble gitt"
#: ../src/theme-viewer.c:1238
#: ../src/theme-viewer.c:1241
#, c-format
msgid "Error not expected but one was returned: %s"
msgstr "Feil ikke ventet men en ble returnert: %s"
#: ../src/theme-viewer.c:1242
#: ../src/theme-viewer.c:1245
#, c-format
msgid "x value was %d, %d was expected"
msgstr "x-verdi var %d, %d var ventet"
#: ../src/theme-viewer.c:1245
#: ../src/theme-viewer.c:1248
#, c-format
msgid "y value was %d, %d was expected"
msgstr "y-verdi var %d, %d var ventet"
#: ../src/theme-viewer.c:1308
#: ../src/theme-viewer.c:1310
#, c-format
msgid "%d coordinate expressions parsed in %g seconds (%g seconds average)\n"
msgstr "%d koordinatuttrykk lest på %g sekunder (%g sekunder i snitt)\n"
@@ -2916,11 +2920,11 @@ msgstr "Aspektrate %g for knapp er ikke fornuftig"
msgid "Frame geometry does not specify size of buttons"
msgstr "Rammegeometrien spesifiserer ikke størrelse på knapper"
#: ../src/theme.c:842
#: ../src/theme.c:843
msgid "Gradients should have at least two colors"
msgstr "Gradienter må ha minst to farger"
#: ../src/theme.c:968
#: ../src/theme.c:969
#, c-format
msgid ""
"GTK color specification must have the state in brackets, e.g. gtk:fg[NORMAL] "
@@ -2929,7 +2933,7 @@ msgstr ""
"GTK-fargespesifikasjon må ha tilstand i klammer, f.eks. gtk:fg[NORMAL], hvor "
"NORMAL er tilstanden; kunne ikke lese «%s»"
#: ../src/theme.c:982
#: ../src/theme.c:983
#, c-format
msgid ""
"GTK color specification must have a close bracket after the state, e.g. gtk:"
@@ -2938,17 +2942,17 @@ msgstr ""
"GTK-fargespesifikasjon må ha en avsluttende klamme etter tilstanden, f.eks. "
"gtk:fg[NORMAL], hvor NORMAL er tilstanden; kunne ikke lese «%s»"
#: ../src/theme.c:993
#: ../src/theme.c:994
#, c-format
msgid "Did not understand state \"%s\" in color specification"
msgstr "Forsto ikke tilstand «%s» i fargespesifikasjonen"
#: ../src/theme.c:1006
#: ../src/theme.c:1007
#, c-format
msgid "Did not understand color component \"%s\" in color specification"
msgstr "Forsto ikke fargekomponent «%s» i fargespesifikasjonen"
#: ../src/theme.c:1036
#: ../src/theme.c:1037
#, c-format
msgid ""
"Blend format is \"blend/bg_color/fg_color/alpha\", \"%s\" does not fit the "
@@ -2957,56 +2961,56 @@ msgstr ""
"Blandingsformat er «blend/bg_color/fg_color/alpha», «%s» passer ikke i "
"formatet"
#: ../src/theme.c:1047
#: ../src/theme.c:1048
#, c-format
msgid "Could not parse alpha value \"%s\" in blended color"
msgstr "Kunne ikke lese alpha-verdi «%s» i blandet farge"
#: ../src/theme.c:1057
#: ../src/theme.c:1058
#, c-format
msgid "Alpha value \"%s\" in blended color is not between 0.0 and 1.0"
msgstr "Alpha-verdi «%s» i blandet farge er ikke mellom 0.0 og 1.0"
#: ../src/theme.c:1104
#: ../src/theme.c:1105
#, c-format
msgid ""
"Shade format is \"shade/base_color/factor\", \"%s\" does not fit the format"
msgstr ""
"Skyggeformatet er «shade/base_color/factor», «%s» passer ikke i formatet"
#: ../src/theme.c:1115
#: ../src/theme.c:1116
#, c-format
msgid "Could not parse shade factor \"%s\" in shaded color"
msgstr "Kunne ikke lese skyggefaktor «%s» i skyggelagt farge"
#: ../src/theme.c:1125
#: ../src/theme.c:1126
#, c-format
msgid "Shade factor \"%s\" in shaded color is negative"
msgstr "Skyggefaktor «%s» i skyggelagt farge er negativ"
#: ../src/theme.c:1154
#: ../src/theme.c:1155
#, c-format
msgid "Could not parse color \"%s\""
msgstr "Kunne ikke lese farge «%s»"
#: ../src/theme.c:1416
#: ../src/theme.c:1417
#, c-format
msgid "Coordinate expression contains character '%s' which is not allowed"
msgstr "Koordinatuttrykk inneholder tegn «%s» som ikke er tillatt"
#: ../src/theme.c:1443
#: ../src/theme.c:1444
#, c-format
msgid ""
"Coordinate expression contains floating point number '%s' which could not be "
"parsed"
msgstr "Koordinatuttrykk inneholder flyttall «%s» som ikke kunne tolkes"
#: ../src/theme.c:1457
#: ../src/theme.c:1458
#, c-format
msgid "Coordinate expression contains integer '%s' which could not be parsed"
msgstr "Koordinatuttrykk inneholder heltall «%s» som ikke kunne tolkes"
#: ../src/theme.c:1524
#: ../src/theme.c:1525
#, c-format
msgid ""
"Coordinate expression contained unknown operator at the start of this text: "
@@ -3015,34 +3019,34 @@ msgstr ""
"Koordinatuttrykket inneholdt en ukjent operator ved begynnelsen av denne "
"teksten: «%s»"
#: ../src/theme.c:1581
#: ../src/theme.c:1582
msgid "Coordinate expression was empty or not understood"
msgstr "Koordinatuttrykket var tomt eller ble ikke forstått"
#: ../src/theme.c:1724 ../src/theme.c:1734 ../src/theme.c:1768
#: ../src/theme.c:1725 ../src/theme.c:1735 ../src/theme.c:1769
msgid "Coordinate expression results in division by zero"
msgstr "Koordinatuttrykket resulterer i divisjon med null"
#: ../src/theme.c:1776
#: ../src/theme.c:1777
msgid ""
"Coordinate expression tries to use mod operator on a floating-point number"
msgstr "Koordinatuttrykket prøver å bruke mod-operator på et flyttall"
#: ../src/theme.c:1832
#: ../src/theme.c:1834
#, c-format
msgid ""
"Coordinate expression has an operator \"%s\" where an operand was expected"
msgstr "Koordinatuttrykket har en operator «%s» hvor en operand var ventet"
#: ../src/theme.c:1841
#: ../src/theme.c:1843
msgid "Coordinate expression had an operand where an operator was expected"
msgstr "Koordinatuttrykket hadde en operand hvor en operator var ventet"
#: ../src/theme.c:1849
#: ../src/theme.c:1851
msgid "Coordinate expression ended with an operator instead of an operand"
msgstr "Koordinatuttrykket sluttet med en operator i stedet for en operand"
#: ../src/theme.c:1859
#: ../src/theme.c:1861
#, c-format
msgid ""
"Coordinate expression has operator \"%c\" following operator \"%c\" with no "
@@ -3051,7 +3055,7 @@ msgstr ""
"Koordinatuttrykket har en operator «%c» etter en operator «%c» og ingen "
"operand mellom dem."
#: ../src/theme.c:1978
#: ../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?"
@@ -3059,30 +3063,30 @@ msgstr ""
"Koordinatuttrykkets tolkeprosess overfløt bufferen sin. Dette er virkelig en "
"Metacity feil, men er du sikker på at du trenger så store uttrykk?"
#: ../src/theme.c:2007
#: ../src/theme.c:2009
msgid "Coordinate expression had a close parenthesis with no open parenthesis"
msgstr "Koordinatuttrykket hadde en parantes slutt uten parantes start"
#: ../src/theme.c:2069
#: ../src/theme.c:2072
#, c-format
msgid "Coordinate expression had unknown variable or constant \"%s\""
msgstr "Koordinatuttrykket haddeen ukjent variabel eller konstant «%s»"
#: ../src/theme.c:2126
#: ../src/theme.c:2129
msgid "Coordinate expression had an open parenthesis with no close parenthesis"
msgstr "Koordinatuttrykket hadde en åpen parantes uten en avsluttende parantes"
#: ../src/theme.c:2137
#: ../src/theme.c:2140
msgid "Coordinate expression doesn't seem to have any operators or operands"
msgstr ""
"Koordinatuttrykket ser ikke ut til å ha noen operatorer eller operander"
#: ../src/theme.c:2381 ../src/theme.c:2403 ../src/theme.c:2424
#: ../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 "Tema inneholdt et uttrykk «%s» som resulterte i en feil: %s\n"
#: ../src/theme.c:3910
#: ../src/theme.c:3913
#, c-format
msgid ""
"<button function=\"%s\" state=\"%s\" draw_ops=\"whatever\"/> must be "
@@ -3091,25 +3095,25 @@ msgstr ""
"<button function=«%s» state=«%s» draw_ops=«ett-eller-annet»/> må "
"spesifiseres for denne rammestilen"
#: ../src/theme.c:4360 ../src/theme.c:4392
#: ../src/theme.c:4363 ../src/theme.c:4395
#, c-format
msgid ""
"Missing <frame state=\"%s\" resize=\"%s\" focus=\"%s\" style=\"whatever\"/>"
msgstr ""
"Mangler <frame state=«%s» resize=«%s» focus=«%s» stil=«ett-eller-annet»/>"
#: ../src/theme.c:4443
#: ../src/theme.c:4446
#, c-format
msgid "Failed to load theme \"%s\": %s\n"
msgstr "Klarte ikke å laste tema «%s»: %s\n"
#: ../src/theme.c:4589 ../src/theme.c:4596 ../src/theme.c:4603
#: ../src/theme.c:4610 ../src/theme.c:4617
#: ../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 "<%s> er ikke satt for tema «%s»"
#: ../src/theme.c:4627
#: ../src/theme.c:4630
#, c-format
msgid ""
"No frame style set for window type \"%s\" in theme \"%s\", add a <window "
@@ -3118,7 +3122,7 @@ msgstr ""
"Ingen rammestil satt for vindutype «%s» i tema «%s», legg til et <window "
"type=«%s» style_set=«ett-eller-annet»/>-element"
#: ../src/theme.c:4649
#: ../src/theme.c:4652
#, c-format
msgid ""
"<menu_icon function=\"%s\" state=\"%s\" draw_ops=\"whatever\"/> must be "
@@ -3127,14 +3131,14 @@ msgstr ""
"<menu_icon function=«%s» state=«%s» draw_ops=«ett-eller-annet»/> må være "
"spesifisert for dette temaet"
#: ../src/theme.c:5038 ../src/theme.c:5100
#: ../src/theme.c:5041 ../src/theme.c:5103
#, c-format
msgid ""
"User-defined constants must begin with a capital letter; \"%s\" does not"
msgstr ""
"Brukerdefinerte konstanter må begynne med stor bokstav; «%s» gjør ikke det"
#: ../src/theme.c:5046 ../src/theme.c:5108
#: ../src/theme.c:5049 ../src/theme.c:5111
#, c-format
msgid "Constant \"%s\" has already been defined"
msgstr "Konstant «%s» er allerede definert"
@@ -3172,11 +3176,11 @@ msgstr "Feil i vindushåndterer: "
#: ../src/window-props.c:165
#, c-format
msgid "Application set a bogus _NET_WM_PID %lu\n"
msgstr "Applikasjonen satte en feil _NET_WM_PID %lu\n"
msgid "Application set a bogus _NET_WM_PID %ld\n"
msgstr "Programmet satte en feil _NET_WM_PID %ld\n"
#. first time through
#: ../src/window.c:5223
#: ../src/window.c:5239
#, c-format
msgid ""
"Window %s sets SM_CLIENT_ID on itself, instead of on the WM_CLIENT_LEADER "
@@ -3192,7 +3196,7 @@ msgstr ""
#. * MWM but not WM_NORMAL_HINTS are basically broken. We complain
#. * about these apps but make them work.
#.
#: ../src/window.c:5853
#: ../src/window.c:5879
#, c-format
msgid ""
"Window %s sets an MWM hint indicating it isn't resizable, but sets min size %"

1914
po/vi.po

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

@@ -2,7 +2,7 @@
/*
* Copyright (C) 2002 Sun Microsystems Inc.
* Copyright (C) 2005 Elijah Newren
* 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
@@ -252,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);
}

View File

@@ -1,7 +1,7 @@
/* Simple box operations */
/*
* Copyright (C) 2005 Elijah Newren
* Copyright (C) 2005, 2006 Elijah Newren
* [meta_rectangle_intersect() is copyright the GTK+ Team according to Havoc,
* see gdkrectangle.c. As far as Havoc knows, he probably wrote
* meta_rectangle_equal(), and I'm guessing it's (C) Red Hat. So...]
@@ -55,11 +55,12 @@ meta_rectangle_region_to_string (GList *region,
*/
char rect_string[RECT_LENGTH];
GList *tmp = region;
char *cur = output;
if (region == NULL)
snprintf (output, 10, "(EMPTY)");
char *cur = output;
GList *tmp = region;
while (tmp)
{
MetaRectangle *rect = tmp->data;
@@ -107,11 +108,12 @@ meta_rectangle_edge_list_to_string (GList *edge_list,
*/
char rect_string[EDGE_LENGTH];
char *cur = output;
GList *tmp = edge_list;
if (edge_list == NULL)
snprintf (output, 10, "(EMPTY)");
char *cur = output;
GList *tmp = edge_list;
while (tmp)
{
MetaEdge *edge = tmp->data;
@@ -620,15 +622,38 @@ meta_rectangle_expand_region (GList *region,
const int top_expand,
const int bottom_expand)
{
/* Now it's time to do the directional expansion */
return meta_rectangle_expand_region_conditionally (region,
left_expand,
right_expand,
top_expand,
bottom_expand,
0,
0);
}
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)
{
GList *tmp_list = region;
while (tmp_list)
{
MetaRectangle *rect = (MetaRectangle*) tmp_list->data;
rect->x -= left_expand;
rect->width += (left_expand + right_expand);
rect->y -= top_expand;
rect->height += (top_expand + bottom_expand);
if (rect->width >= min_x)
{
rect->x -= left_expand;
rect->width += (left_expand + right_expand);
}
if (rect->height >= min_y)
{
rect->y -= top_expand;
rect->height += (top_expand + bottom_expand);
}
tmp_list = tmp_list->next;
}
@@ -1010,6 +1035,30 @@ meta_rectangle_find_linepoint_closest_to_point (double x1,
/* */
/***************************************************************************/
gboolean
meta_rectangle_edge_aligns (const MetaRectangle *rect, const MetaEdge *edge)
{
/* The reason for the usage of <= below instead of < is because we are
* interested in in-the-way-or-adject'ness. So, a left (i.e. vertical
* edge) occupying y positions 0-9 (which has a y of 0 and a height of
* 10) and a rectangle with top at y=10 would be considered to "align" by
* this function.
*/
switch (edge->side_type)
{
case META_DIRECTION_LEFT:
case META_DIRECTION_RIGHT:
return BOX_TOP (*rect) <= BOX_BOTTOM (edge->rect) &&
BOX_TOP (edge->rect) <= BOX_BOTTOM (*rect);
case META_DIRECTION_TOP:
case META_DIRECTION_BOTTOM:
return BOX_LEFT (*rect) <= BOX_RIGHT (edge->rect) &&
BOX_LEFT (edge->rect) <= BOX_RIGHT (*rect);
}
g_assert_not_reached ();
}
static GList*
get_rect_minus_overlap (const GList *rect_in_list,
MetaRectangle *overlap)
@@ -1065,8 +1114,7 @@ replace_rect_with_list (GList *old_element,
if (!new_list)
{
/* If there is no new list, just remove the old_element */
ret = old_element->next;
g_list_remove_link (old_element, old_element);
ret = g_list_remove_link (old_element, old_element);
}
else
{
@@ -1173,6 +1221,50 @@ get_disjoint_strut_list_in_region (const GSList *old_struts,
return struts;
}
gint
meta_rectangle_edge_cmp_ignore_type (gconstpointer a, gconstpointer b)
{
const MetaEdge *a_edge_rect = (gconstpointer) a;
const MetaEdge *b_edge_rect = (gconstpointer) b;
/* Edges must be both vertical or both horizontal, or it doesn't make
* sense to compare them.
*/
g_assert ((a_edge_rect->rect.width == 0 && b_edge_rect->rect.width == 0) ||
(a_edge_rect->rect.height == 0 && b_edge_rect->rect.height == 0));
int a_compare, b_compare;
a_compare = b_compare = 0; /* gcc-3.4.2 sucks at figuring initialized'ness */
if (a_edge_rect->side_type == META_DIRECTION_LEFT ||
a_edge_rect->side_type == META_DIRECTION_RIGHT)
{
a_compare = a_edge_rect->rect.x;
b_compare = b_edge_rect->rect.x;
if (a_compare == b_compare)
{
a_compare = a_edge_rect->rect.y;
b_compare = b_edge_rect->rect.y;
}
}
else if (a_edge_rect->side_type == META_DIRECTION_TOP ||
a_edge_rect->side_type == META_DIRECTION_BOTTOM)
{
a_compare = a_edge_rect->rect.y;
b_compare = b_edge_rect->rect.y;
if (a_compare == b_compare)
{
a_compare = a_edge_rect->rect.x;
b_compare = b_edge_rect->rect.x;
}
}
else
g_assert ("Some idiot wanted to sort sides of different types.\n");
return a_compare - b_compare; /* positive value denotes a > b ... */
}
/* To make things easily testable, provide a nice way of sorting edges */
gint
meta_rectangle_edge_cmp (gconstpointer a, gconstpointer b)
@@ -1186,32 +1278,7 @@ meta_rectangle_edge_cmp (gconstpointer a, gconstpointer b)
b_compare = b_edge_rect->side_type;
if (a_compare == b_compare)
{
if (a_edge_rect->side_type == META_DIRECTION_LEFT ||
a_edge_rect->side_type == META_DIRECTION_RIGHT)
{
a_compare = a_edge_rect->rect.x;
b_compare = b_edge_rect->rect.x;
if (a_compare == b_compare)
{
a_compare = a_edge_rect->rect.y;
b_compare = b_edge_rect->rect.y;
}
}
else if (a_edge_rect->side_type == META_DIRECTION_TOP ||
a_edge_rect->side_type == META_DIRECTION_BOTTOM)
{
a_compare = a_edge_rect->rect.y;
b_compare = b_edge_rect->rect.y;
if (a_compare == b_compare)
{
a_compare = a_edge_rect->rect.x;
b_compare = b_edge_rect->rect.x;
}
}
else
g_assert ("Some idiot wanted to sort sides of different types.\n");
}
return meta_rectangle_edge_cmp_ignore_type (a, b);
return a_compare - b_compare; /* positive value denotes a > b ... */
}
@@ -1453,11 +1520,12 @@ fix_up_edges (MetaRectangle *strut, MetaEdge *edge,
/* If this is the edge that overlaps, then we need to split it */
if (edges_overlap (cur, &overlap))
{
GList *delete_me = tmp;
/* Split this edge into some new ones */
*strut_edges = split_edge (*strut_edges, cur, &overlap);
/* Delete the old one */
GList *delete_me = tmp;
tmp = tmp->next;
g_free (cur);
*strut_edges = g_list_delete_link (*strut_edges, delete_me);

View File

@@ -1,7 +1,7 @@
/* Simple box operations */
/*
* Copyright (C) 2005 Elijah Newren
* 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
@@ -146,11 +146,23 @@ 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()
@@ -211,11 +223,23 @@ void meta_rectangle_find_linepoint_closest_to_point (double x1, double y1,
/* */
/***************************************************************************/
/* 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.
*/

View File

@@ -336,8 +336,8 @@ paint_screen (MetaCompositor *compositor,
r.x = 0;
r.y = 0;
r.width = screen->width;
r.height = screen->height;
r.width = screen->rect.width;
r.height = screen->rect.height;
region = XFixesCreateRegion (xdisplay, &r, 1);
}
@@ -351,8 +351,8 @@ paint_screen (MetaCompositor *compositor,
}
buffer_pixmap = XCreatePixmap (xdisplay, screen->xroot,
screen->width,
screen->height,
screen->rect.width,
screen->rect.height,
DefaultDepth (xdisplay,
screen->number));
@@ -360,7 +360,7 @@ paint_screen (MetaCompositor *compositor,
XSetForeground (xdisplay, gc, WhitePixel (xdisplay, screen->number));
XFixesSetGCClipRegion (xdisplay, gc, 0, 0, region);
XFillRectangle (xdisplay, buffer_pixmap, gc, 0, 0,
screen->width, screen->height);
screen->rect.width, screen->rect.height);
format = XRenderFindVisualFormat (xdisplay,
DefaultVisual (xdisplay,
@@ -473,7 +473,7 @@ paint_screen (MetaCompositor *compositor,
XRenderComposite (xdisplay, PictOpSrc, buffer_picture, None,
screen->root_picture,
0, 0, 0, 0, 0, 0,
screen->width, screen->height);
screen->rect.width, screen->rect.height);
XFixesDestroyRegion (xdisplay, region);
XFreePixmap (xdisplay, buffer_pixmap);
@@ -782,8 +782,8 @@ process_expose (MetaCompositor *compositor,
r.x = 0;
r.y = 0;
r.width = screen->width;
r.height = screen->height;
r.width = screen->rect.width;
r.height = screen->rect.height;
region = XFixesCreateRegion (compositor->display->xdisplay, &r, 1);
merge_and_destroy_damage_region (compositor, screen, region);
@@ -1288,8 +1288,8 @@ meta_compositor_manage_screen (MetaCompositor *compositor,
/* Damage the whole screen */
r.x = 0;
r.y = 0;
r.width = screen->width;
r.height = screen->height;
r.width = screen->rect.width;
r.height = screen->rect.height;
merge_and_destroy_damage_region (compositor,
screen,

View File

@@ -3,7 +3,7 @@
/*
* Copyright (C) 2002, 2003 Red Hat, Inc.
* Copyright (C) 2003, 2004 Rob Adams
* Copyright (C) 2005 Elijah Newren
* 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
@@ -261,6 +261,8 @@ meta_window_constrain (MetaWindow *window,
MetaRectangle *new)
{
ConstraintInfo info;
ConstraintPriority priority = PRIORITY_MINIMUM;
gboolean satisfied = FALSE;
/* WARNING: orig and new specify positions and sizes of the inner window,
* not the outer. This is a common gotcha since half the constraints
@@ -282,8 +284,6 @@ meta_window_constrain (MetaWindow *window,
new);
place_window_if_needed (window, &info);
ConstraintPriority priority = PRIORITY_MINIMUM;
gboolean satisfied = FALSE;
while (!satisfied && priority <= PRIORITY_MAXIMUM) {
gboolean check_only = TRUE;
@@ -325,6 +325,9 @@ setup_constraint_info (ConstraintInfo *info,
const MetaRectangle *orig,
MetaRectangle *new)
{
const MetaXineramaScreenInfo *xinerama_info;
MetaWorkspace *cur_workspace;
info->orig = *orig;
info->current = *new;
@@ -364,11 +367,11 @@ setup_constraint_info (ConstraintInfo *info,
meta_window_get_work_area_current_xinerama (window, &info->work_area_xinerama);
const MetaXineramaScreenInfo *xinerama_info =
xinerama_info =
meta_screen_get_xinerama_for_window (window->screen, window);
info->entire_xinerama = xinerama_info->rect;
MetaWorkspace *cur_workspace = window->screen->active_workspace;
cur_workspace = window->screen->active_workspace;
info->usable_screen_region =
meta_workspace_get_onscreen_region (cur_workspace);
info->usable_xinerama_region =
@@ -427,6 +430,8 @@ place_window_if_needed(MetaWindow *window,
!window->fullscreen)
{
MetaRectangle placed_rect = info->orig;
MetaWorkspace *cur_workspace;
const MetaXineramaScreenInfo *xinerama_info;
meta_window_place (window, info->fgeom, info->orig.x, info->orig.y,
&placed_rect.x, &placed_rect.y);
@@ -435,13 +440,13 @@ place_window_if_needed(MetaWindow *window,
/* placing the window may have changed the xinerama. Find the
* new xinerama and update the ConstraintInfo
*/
const MetaXineramaScreenInfo *xinerama_info =
xinerama_info =
meta_screen_get_xinerama_for_rect (window->screen, &placed_rect);
info->entire_xinerama = xinerama_info->rect;
meta_window_get_work_area_for_xinerama (window,
xinerama_info->number,
&info->work_area_xinerama);
MetaWorkspace *cur_workspace = window->screen->active_workspace;
cur_workspace = window->screen->active_workspace;
info->usable_xinerama_region =
meta_workspace_get_onxinerama_region (cur_workspace,
xinerama_info->number);
@@ -620,6 +625,11 @@ constrain_maximization (MetaWindow *window,
ConstraintPriority priority,
gboolean check_only)
{
MetaRectangle min_size, max_size, work_area;
gboolean hminbad, vminbad, hmaxbad, vmaxbad;
gboolean horiz_equal, vert_equal;
gboolean constraint_already_satisfied;
if (priority > PRIORITY_MAXIMIZATION)
return TRUE;
@@ -627,12 +637,10 @@ constrain_maximization (MetaWindow *window,
if (!window->maximized_horizontally && !window->maximized_vertically)
return TRUE;
MetaRectangle min_size, max_size;
MetaRectangle work_area = info->work_area_xinerama;
work_area = info->work_area_xinerama;
unextend_by_frame (&work_area, info->fgeom);
get_size_limits (window, info->fgeom, FALSE, &min_size, &max_size);
gboolean hminbad, vminbad, hmaxbad, vmaxbad;
hminbad = work_area.width < min_size.width && window->maximized_horizontally;
vminbad = work_area.height < min_size.height && window->maximized_vertically;
hmaxbad = work_area.width > max_size.width && window->maximized_horizontally;
@@ -641,12 +649,11 @@ constrain_maximization (MetaWindow *window,
return TRUE;
/* Determine whether constraint is already satisfied; exit if it is */
gboolean horiz_equal, vert_equal;
horiz_equal = work_area.x == info->current.x &&
work_area.width == info->current.width;
vert_equal = work_area.y == info->current.y &&
work_area.height == info->current.height;
gboolean constraint_already_satisfied =
constraint_already_satisfied =
(horiz_equal || !window->maximized_horizontally) &&
(vert_equal || !window->maximized_vertically);
if (check_only || constraint_already_satisfied)
@@ -672,22 +679,24 @@ constrain_fullscreen (MetaWindow *window,
ConstraintPriority priority,
gboolean check_only)
{
MetaRectangle min_size, max_size, xinerama;
gboolean too_big, too_small, constraint_already_satisfied;
if (priority > PRIORITY_FULLSCREEN)
return TRUE;
/* Determine whether constraint applies; exit if it doesn't */
if (!window->fullscreen)
return TRUE;
MetaRectangle min_size, max_size;
MetaRectangle xinerama = info->entire_xinerama;
xinerama = info->entire_xinerama;
get_size_limits (window, info->fgeom, FALSE, &min_size, &max_size);
gboolean too_big = !meta_rectangle_could_fit_rect (&xinerama, &min_size);
gboolean too_small = !meta_rectangle_could_fit_rect (&max_size, &xinerama);
too_big = !meta_rectangle_could_fit_rect (&xinerama, &min_size);
too_small = !meta_rectangle_could_fit_rect (&max_size, &xinerama);
if (too_big || too_small)
return TRUE;
/* Determine whether constraint is already satisfied; exit if it is */
gboolean constraint_already_satisfied =
constraint_already_satisfied =
meta_rectangle_equal (&info->current, &xinerama);
if (check_only || constraint_already_satisfied)
return constraint_already_satisfied;
@@ -703,6 +712,9 @@ constrain_size_increments (MetaWindow *window,
ConstraintPriority priority,
gboolean check_only)
{
int bh, hi, bw, wi, extra_height, extra_width;
gboolean constraint_already_satisfied;
if (priority > PRIORITY_SIZE_HINTS_INCREMENTS)
return TRUE;
@@ -712,7 +724,6 @@ constrain_size_increments (MetaWindow *window,
return TRUE;
/* Determine whether constraint is already satisfied; exit if it is */
int bh, hi, bw, wi, extra_height, extra_width;
bh = window->size_hints.base_height;
hi = window->size_hints.height_inc;
bw = window->size_hints.base_width;
@@ -723,7 +734,7 @@ constrain_size_increments (MetaWindow *window,
extra_width *= 0;
if (window->maximized_vertically)
extra_height *= 0;
gboolean constraint_already_satisfied =
constraint_already_satisfied =
(extra_height == 0 && extra_width == 0);
if (check_only || constraint_already_satisfied)
@@ -745,6 +756,10 @@ constrain_size_limits (MetaWindow *window,
ConstraintPriority priority,
gboolean check_only)
{
MetaRectangle min_size, max_size;
gboolean too_big, too_small, constraint_already_satisfied;
int new_width, new_height;
if (priority > PRIORITY_SIZE_HINTS_LIMITS)
return TRUE;
@@ -757,18 +772,14 @@ constrain_size_limits (MetaWindow *window,
return TRUE;
/* Determine whether constraint is already satisfied; exit if it is */
MetaRectangle min_size, max_size;
get_size_limits (window, info->fgeom, FALSE, &min_size, &max_size);
gboolean too_big =
!meta_rectangle_could_fit_rect (&info->current, &min_size);
gboolean too_small =
!meta_rectangle_could_fit_rect (&max_size, &info->current);
gboolean constraint_already_satisfied = !too_big && !too_small;
too_big = !meta_rectangle_could_fit_rect (&info->current, &min_size);
too_small = !meta_rectangle_could_fit_rect (&max_size, &info->current);
constraint_already_satisfied = !too_big && !too_small;
if (check_only || constraint_already_satisfied)
return constraint_already_satisfied;
/*** Enforce constraint ***/
int new_width, new_height;
new_width = CLAMP (info->current.width, min_size.width, max_size.width);
new_height = CLAMP (info->current.height, min_size.height, max_size.height);
meta_rectangle_resize_with_gravity (&info->orig,
@@ -785,16 +796,21 @@ constrain_aspect_ratio (MetaWindow *window,
ConstraintPriority priority,
gboolean check_only)
{
double minr, maxr;
gboolean constraints_are_inconsistent, constraint_already_satisfied;
int fudge, new_width, new_height;
double best_width, best_height;
double alt_width, alt_height;
if (priority > PRIORITY_ASPECT_RATIO)
return TRUE;
/* Determine whether constraint applies; exit if it doesn't. */
double minr, maxr;
minr = window->size_hints.min_aspect.x /
(double)window->size_hints.min_aspect.y;
maxr = window->size_hints.max_aspect.x /
(double)window->size_hints.max_aspect.y;
gboolean constraints_are_inconsistent = minr > maxr;
constraints_are_inconsistent = minr > maxr;
if (constraints_are_inconsistent ||
META_WINDOW_MAXIMIZED (window) || window->fullscreen ||
info->action_type == ACTION_MOVE)
@@ -816,7 +832,6 @@ constrain_aspect_ratio (MetaWindow *window,
* being a resize increment (FIXME: I should handle real resize
* increments better here...)
*/
int fudge;
switch (info->resize_gravity)
{
case WestGravity:
@@ -836,16 +851,13 @@ constrain_aspect_ratio (MetaWindow *window,
fudge = 1;
break;
}
gboolean constraint_already_satisfied =
constraint_already_satisfied =
info->current.width - (info->current.height * minr ) > -minr*fudge &&
info->current.width - (info->current.height * maxr ) < maxr*fudge;
if (check_only || constraint_already_satisfied)
return constraint_already_satisfied;
/*** Enforce constraint ***/
int new_width, new_height;
double best_width, best_height;
double alt_width, alt_height;
new_width = info->current.width;
new_height = info->current.height;
@@ -910,7 +922,8 @@ do_screen_and_xinerama_relative_constraints (
ConstraintInfo *info,
gboolean check_only)
{
gboolean exit_early = FALSE;
gboolean exit_early = FALSE, constraint_satisfied;
MetaRectangle how_far_it_can_be_smushed, min_size, max_size;
/* First, log some debugging information */
char spanning_region[1 + 28 * g_list_length (region_spanning_rectangles)];
@@ -921,7 +934,6 @@ do_screen_and_xinerama_relative_constraints (
spanning_region));
/* Determine whether constraint applies; exit if it doesn't */
MetaRectangle how_far_it_can_be_smushed, min_size, max_size;
how_far_it_can_be_smushed = info->current;
get_size_limits (window, info->fgeom, TRUE, &min_size, &max_size);
extend_by_frame (&info->current, info->fgeom);
@@ -939,7 +951,7 @@ do_screen_and_xinerama_relative_constraints (
exit_early = TRUE;
/* Determine whether constraint is already satisfied; exit if it is */
gboolean constraint_satisfied =
constraint_satisfied =
meta_rectangle_contained_in_region (region_spanning_rectangles,
&info->current);
if (exit_early || constraint_satisfied || check_only)
@@ -995,14 +1007,10 @@ constrain_to_single_xinerama (MetaWindow *window,
return TRUE;
/* Have a helper function handle the constraint for us */
gboolean retval =
do_screen_and_xinerama_relative_constraints (window,
return do_screen_and_xinerama_relative_constraints (window,
info->usable_xinerama_region,
info,
check_only);
/* Free up the data we allocated */
return retval;
}
static gboolean
@@ -1025,13 +1033,10 @@ constrain_fully_onscreen (MetaWindow *window,
return TRUE;
/* Have a helper function handle the constraint for us */
gboolean retval =
do_screen_and_xinerama_relative_constraints (window,
return do_screen_and_xinerama_relative_constraints (window,
info->usable_screen_region,
info,
check_only);
return retval;
}
static gboolean
@@ -1040,6 +1045,11 @@ constrain_partially_onscreen (MetaWindow *window,
ConstraintPriority priority,
gboolean check_only)
{
gboolean retval;
int top_amount, bottom_amount;
int horiz_amount_offscreen, vert_amount_offscreen;
int horiz_amount_onscreen, vert_amount_onscreen;
if (priority > PRIORITY_PARTIALLY_VISIBLE_ON_WORKAREA)
return TRUE;
@@ -1058,40 +1068,46 @@ constrain_partially_onscreen (MetaWindow *window,
* Then, the amount that is allowed off is just the window size minus
* this amount.
*/
int top_amount, bottom_amount;
int horiz_amount = info->current.width / 4;
int vert_amount = info->current.height / 4;
horiz_amount = CLAMP (horiz_amount, 10, 75);
vert_amount = CLAMP (vert_amount, 10, 75);
horiz_amount = info->current.width - horiz_amount;
vert_amount = info->current.height - vert_amount;
top_amount = vert_amount;
horiz_amount_onscreen = info->current.width / 4;
vert_amount_onscreen = info->current.height / 4;
horiz_amount_onscreen = CLAMP (horiz_amount_onscreen, 10, 75);
vert_amount_onscreen = CLAMP (vert_amount_onscreen, 10, 75);
horiz_amount_offscreen = info->current.width - horiz_amount_onscreen;
vert_amount_offscreen = info->current.height - vert_amount_onscreen;
top_amount = vert_amount_offscreen;
/* Allow the titlebar to touch the bottom panel; If there is no titlebar,
* require vert_amount to remain on the screen.
*/
if (window->frame)
bottom_amount = info->current.height + info->fgeom->bottom_height;
{
bottom_amount = info->current.height + info->fgeom->bottom_height;
vert_amount_onscreen = info->fgeom->top_height;
}
else
bottom_amount = vert_amount;
bottom_amount = vert_amount_offscreen;
/* Extend the region, have a helper function handle the constraint,
* then return the region to its original size.
*/
meta_rectangle_expand_region (info->usable_screen_region,
horiz_amount,
horiz_amount,
top_amount,
bottom_amount);
gboolean retval =
meta_rectangle_expand_region_conditionally (info->usable_screen_region,
horiz_amount_offscreen,
horiz_amount_offscreen,
top_amount,
bottom_amount,
horiz_amount_onscreen,
vert_amount_onscreen);
retval =
do_screen_and_xinerama_relative_constraints (window,
info->usable_screen_region,
info,
check_only);
meta_rectangle_expand_region (info->usable_screen_region,
-horiz_amount,
-horiz_amount,
-top_amount,
-bottom_amount);
meta_rectangle_expand_region_conditionally (info->usable_screen_region,
-horiz_amount_offscreen,
-horiz_amount_offscreen,
-top_amount,
-bottom_amount,
horiz_amount_onscreen,
vert_amount_onscreen);
return retval;
}

View File

@@ -3,7 +3,7 @@
/*
* Copyright (C) 2001 Havoc Pennington
* Copyright (C) 2003 Rob Adams
* Copyright (C) 2004, 2005 Elijah Newren
* 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
@@ -269,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.
@@ -611,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);

View File

@@ -248,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,7 +4,7 @@
* Copyright (C) 2001 Havoc Pennington
* Copyright (C) 2002, 2003, 2004 Red Hat, Inc.
* Copyright (C) 2003, 2004 Rob Adams
* Copyright (C) 2004, 2005 Elijah Newren
* 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
@@ -461,7 +461,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;
@@ -712,7 +711,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;
@@ -720,7 +722,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);
@@ -1651,15 +1656,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
@@ -1730,6 +1731,8 @@ event_callback (XEvent *event,
}
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,
@@ -1870,6 +1873,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 &&
@@ -1901,7 +1905,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 "
@@ -2991,6 +2996,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)
@@ -3202,6 +3225,19 @@ meta_display_begin_grab_op (MetaDisplay *display,
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;
@@ -3388,15 +3424,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:
@@ -3435,6 +3481,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)
{
@@ -3471,12 +3532,19 @@ meta_display_end_grab_op (MetaDisplay *display,
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);
}
@@ -3532,6 +3600,20 @@ 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)
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,
@@ -4821,13 +4903,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,7 +4,7 @@
* Copyright (C) 2001 Havoc Pennington
* Copyright (C) 2002 Red Hat, Inc.
* Copyright (C) 2003 Rob Adams
* Copyright (C) 2004, 2005 Elijah Newren
* 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
@@ -216,11 +216,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;
@@ -266,6 +261,8 @@ struct _MetaDisplay
MetaRectangle grab_wireframe_rect;
MetaRectangle grab_wireframe_last_xor_rect;
MetaRectangle grab_initial_window_pos;
int grab_initial_x, grab_initial_y;
gboolean grab_threshold_movement_reached;
MetaResizePopup *grab_resize_popup;
GTimeVal grab_last_moveresize_time;
Time grab_motion_notify_time;
@@ -413,6 +410,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);
@@ -443,6 +443,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,
@@ -490,6 +493,12 @@ typedef enum
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,
@@ -539,6 +548,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,

View File

@@ -1,7 +1,7 @@
/* Edge resistance for move/resize operations */
/*
* Copyright (C) 2005 Elijah Newren
* 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
@@ -187,6 +187,7 @@ find_nearest_position (const GArray *edges,
int compare;
MetaEdge *edge;
int best, best_dist, i;
gboolean edges_align;
/* Initialize mid, edge, & compare in the off change that the array only
* has one element.
@@ -223,9 +224,7 @@ find_nearest_position (const GArray *edges,
/* Start the search at mid */
edge = g_array_index (edges, MetaEdge*, mid);
compare = horizontal ? edge->rect.x : edge->rect.y;
gboolean edges_align = horizontal ?
meta_rectangle_vert_overlap (&edge->rect, new_rect) :
meta_rectangle_horiz_overlap (&edge->rect, new_rect);
edges_align = meta_rectangle_edge_aligns (new_rect, edge);
if (edges_align &&
(!only_forward || !points_on_same_side (position, compare, old_position)))
{
@@ -243,7 +242,7 @@ find_nearest_position (const GArray *edges,
edge = g_array_index (edges, MetaEdge*, i);
compare = horizontal ? edge->rect.x : edge->rect.y;
gboolean edges_align = horizontal ?
edges_align = horizontal ?
meta_rectangle_vert_overlap (&edge->rect, new_rect) :
meta_rectangle_horiz_overlap (&edge->rect, new_rect);
@@ -267,7 +266,7 @@ find_nearest_position (const GArray *edges,
edge = g_array_index (edges, MetaEdge*, i);
compare = horizontal ? edge->rect.x : edge->rect.y;
gboolean edges_align = horizontal ?
edges_align = horizontal ?
meta_rectangle_vert_overlap (&edge->rect, new_rect) :
meta_rectangle_horiz_overlap (&edge->rect, new_rect);
@@ -321,6 +320,7 @@ static int
apply_edge_resistance (MetaWindow *window,
int old_pos,
int new_pos,
const MetaRectangle *old_rect,
const MetaRectangle *new_rect,
GArray *edges,
ResistanceDataForAnEdge *resistance_data,
@@ -329,26 +329,18 @@ apply_edge_resistance (MetaWindow *window,
gboolean keyboard_op)
{
int i, begin, end;
gboolean okay_to_clear_keyboard_buildup = FALSE;
int keyboard_buildup_edge = G_MAXINT;
gboolean increasing = new_pos > old_pos;
int increment = increasing ? 1 : -1;
const int PIXEL_DISTANCE_THRESHOLD_TOWARDS_WINDOW = 16;
const int PIXEL_DISTANCE_THRESHOLD_AWAYFROM_WINDOW = 8;
const int PIXEL_DISTANCE_THRESHOLD_AWAYFROM_WINDOW = 0;
const int PIXEL_DISTANCE_THRESHOLD_TOWARDS_XINERAMA = 32;
const int PIXEL_DISTANCE_THRESHOLD_AWAYFROM_XINERAMA = 8;
const int PIXEL_DISTANCE_THRESHOLD_AWAYFROM_XINERAMA = 0;
const int PIXEL_DISTANCE_THRESHOLD_TOWARDS_SCREEN = 32;
const int PIXEL_DISTANCE_THRESHOLD_AWAYFROM_SCREEN = 8;
const int PIXEL_DISTANCE_THRESHOLD_AWAYFROM_SCREEN = 0;
const int TIMEOUT_RESISTANCE_LENGTH_MS_WINDOW = 0;
const int TIMEOUT_RESISTANCE_LENGTH_MS_XINERAMA = 100;
const int TIMEOUT_RESISTANCE_LENGTH_MS_SCREEN = 750;
const int KEYBOARD_BUILDUP_THRESHOLD_TOWARDS_WINDOW = 16;
const int KEYBOARD_BUILDUP_THRESHOLD_AWAYFROM_WINDOW = 16;
const int KEYBOARD_BUILDUP_THRESHOLD_TOWARDS_XINERAMA = 24;
const int KEYBOARD_BUILDUP_THRESHOLD_AWAYFROM_XINERAMA = 16;
const int KEYBOARD_BUILDUP_THRESHOLD_TOWARDS_SCREEN = 32;
const int KEYBOARD_BUILDUP_THRESHOLD_AWAYFROM_SCREEN = 16;
const int TIMEOUT_RESISTANCE_LENGTH_MS_XINERAMA = 0;
const int TIMEOUT_RESISTANCE_LENGTH_MS_SCREEN = 0;
/* Quit if no movement was specified */
if (old_pos == new_pos)
@@ -383,9 +375,8 @@ apply_edge_resistance (MetaWindow *window,
int compare = xdir ? edge->rect.x : edge->rect.y;
/* Find out if this edge is relevant */
edges_align = xdir ?
meta_rectangle_vert_overlap (&edge->rect, new_rect) :
meta_rectangle_horiz_overlap (&edge->rect, new_rect);
edges_align = meta_rectangle_edge_aligns (new_rect, edge) ||
meta_rectangle_edge_aligns (old_rect, edge);
/* Nothing to do unless the edges align */
if (!edges_align)
@@ -398,74 +389,14 @@ apply_edge_resistance (MetaWindow *window,
/* Rest is easier to read if we split on keyboard vs. mouse op */
if (keyboard_op)
{
/* KEYBOARD ENERGY BUILDUP RESISTANCE: If the user has is moving
* fast enough or has already built up enough "energy", then let
* the user past the edge, otherwise stop at this edge. If the
* user was previously stopped at this edge, add movement amount
* to the built up energy.
*/
/* First, determine the amount of the resistance */
int resistance = 0;
switch (edge->edge_type)
{
case META_EDGE_WINDOW:
if (movement_towards_edge (edge->side_type, increment))
resistance = KEYBOARD_BUILDUP_THRESHOLD_TOWARDS_WINDOW;
else
resistance = KEYBOARD_BUILDUP_THRESHOLD_AWAYFROM_WINDOW;
break;
case META_EDGE_XINERAMA:
if (movement_towards_edge (edge->side_type, increment))
resistance = KEYBOARD_BUILDUP_THRESHOLD_TOWARDS_XINERAMA;
else
resistance = KEYBOARD_BUILDUP_THRESHOLD_AWAYFROM_XINERAMA;
break;
case META_EDGE_SCREEN:
if (movement_towards_edge (edge->side_type, increment))
resistance = KEYBOARD_BUILDUP_THRESHOLD_TOWARDS_SCREEN;
else
resistance = KEYBOARD_BUILDUP_THRESHOLD_AWAYFROM_SCREEN;
break;
}
/* Clear any previous buildup if we've run into an edge at a
* different location than what we were building up on before.
* See below for more details where these get set.
*/
if (okay_to_clear_keyboard_buildup &&
compare != keyboard_buildup_edge)
{
okay_to_clear_keyboard_buildup = FALSE;
resistance_data->keyboard_buildup = 0;
}
/* Determine the threshold */
int threshold = resistance - resistance_data->keyboard_buildup;
/* See if threshold hasn't been met yet or not */
if (ABS (compare - new_pos) < threshold)
{
if (resistance_data->keyboard_buildup != 0)
resistance_data->keyboard_buildup += ABS (new_pos - compare);
else
resistance_data->keyboard_buildup = 1; /* 0 causes stuckage */
return compare;
}
else
{
/* It may be the case that there are two windows with edges
* at the same location. If so, the buildup ought to count
* towards both edges. So we just not that it's okay to
* clear the buildup once we find an edge at a different
* location.
*/
okay_to_clear_keyboard_buildup = TRUE;
keyboard_buildup_edge = compare;
}
if ((old_pos < compare && compare < new_pos) ||
(old_pos > compare && compare > new_pos))
return compare;
}
else /* mouse op */
{
int threshold;
/* INFINITE RESISTANCE for screen edges under certain cases; If
* the edge is relevant and we're moving towards it and it's a
* screen edge and infinite resistance has been requested for
@@ -492,12 +423,10 @@ apply_edge_resistance (MetaWindow *window,
timeout_length_ms = TIMEOUT_RESISTANCE_LENGTH_MS_WINDOW;
break;
case META_EDGE_XINERAMA:
if (window->require_on_single_xinerama)
timeout_length_ms = TIMEOUT_RESISTANCE_LENGTH_MS_XINERAMA;
timeout_length_ms = TIMEOUT_RESISTANCE_LENGTH_MS_XINERAMA;
break;
case META_EDGE_SCREEN:
if (window->require_fully_onscreen)
timeout_length_ms = TIMEOUT_RESISTANCE_LENGTH_MS_SCREEN;
timeout_length_ms = TIMEOUT_RESISTANCE_LENGTH_MS_SCREEN;
break;
}
@@ -529,7 +458,7 @@ apply_edge_resistance (MetaWindow *window,
*/
/* First, determine the threshold */
int threshold = 0;
threshold = 0;
switch (edge->edge_type)
{
case META_EDGE_WINDOW:
@@ -560,12 +489,6 @@ apply_edge_resistance (MetaWindow *window,
i += increment;
}
/* If we didn't run into any new edges in keyboard buildup but had moved
* far enough to get past the last one, clear the buildup
*/
if (okay_to_clear_keyboard_buildup && new_pos != keyboard_buildup_edge)
resistance_data->keyboard_buildup = 0;
return new_pos;
}
@@ -573,50 +496,21 @@ static int
apply_edge_snapping (int old_pos,
int new_pos,
const MetaRectangle *new_rect,
GArray *edges1,
GArray *edges2,
GArray *edges,
gboolean xdir,
gboolean keyboard_op)
{
int pos1, pos2;
int best;
int snap_to;
if (old_pos == new_pos)
return new_pos;
/* We look at two sets of edges (e.g. left and right) individually
* finding the nearest position among each set of edges and then later
* finding the better of these two bests.
*/
pos1 = find_nearest_position (edges1,
new_pos,
old_pos,
new_rect,
xdir,
keyboard_op);
pos2 = find_nearest_position (edges2,
new_pos,
old_pos,
new_rect,
xdir,
keyboard_op);
/* For keyboard snapping, ignore either pos1 or pos2 if they aren't in the
* right direction.
*/
if (keyboard_op)
{
if (!points_on_same_side (old_pos, pos1, new_pos))
return pos2;
if (!points_on_same_side (old_pos, pos2, new_pos))
return pos1;
}
/* Find the better of pos1 and pos2 and return it */
if (ABS (pos1 - new_pos) < ABS (pos2 - new_pos))
best = pos1;
else
best = pos2;
snap_to = find_nearest_position (edges,
new_pos,
old_pos,
new_rect,
xdir,
keyboard_op);
/* If mouse snap-moving, the user could easily accidentally move just a
* couple pixels in a direction they didn't mean to move; so ignore snap
@@ -624,12 +518,12 @@ apply_edge_snapping (int old_pos,
* anyway.
*/
if (!keyboard_op &&
ABS (best - old_pos) >= 8 &&
ABS (snap_to - old_pos) >= 8 &&
ABS (new_pos - old_pos) < 8)
return old_pos;
else
/* Otherwise, return the best of the snapping positions found */
return best;
/* Otherwise, return the snapping position found */
return snap_to;
}
/* This function takes the position (including any frame) of the window and
@@ -668,14 +562,12 @@ apply_edge_resistance_to_each_side (MetaDisplay *display,
BOX_LEFT (*new_outer),
new_outer,
edge_data->left_edges,
edge_data->right_edges,
TRUE,
keyboard_op);
new_right = apply_edge_snapping (BOX_RIGHT (*old_outer),
BOX_RIGHT (*new_outer),
new_outer,
edge_data->left_edges,
edge_data->right_edges,
TRUE,
keyboard_op);
@@ -684,14 +576,12 @@ apply_edge_resistance_to_each_side (MetaDisplay *display,
BOX_TOP (*new_outer),
new_outer,
edge_data->top_edges,
edge_data->bottom_edges,
FALSE,
keyboard_op);
new_bottom = apply_edge_snapping (BOX_BOTTOM (*old_outer),
BOX_BOTTOM (*new_outer),
new_outer,
edge_data->top_edges,
edge_data->bottom_edges,
FALSE,
keyboard_op);
@@ -702,6 +592,7 @@ apply_edge_resistance_to_each_side (MetaDisplay *display,
new_left = apply_edge_resistance (window,
BOX_LEFT (*old_outer),
BOX_LEFT (*new_outer),
old_outer,
new_outer,
edge_data->left_edges,
&edge_data->left_data,
@@ -711,6 +602,7 @@ apply_edge_resistance_to_each_side (MetaDisplay *display,
new_right = apply_edge_resistance (window,
BOX_RIGHT (*old_outer),
BOX_RIGHT (*new_outer),
old_outer,
new_outer,
edge_data->right_edges,
&edge_data->right_data,
@@ -720,6 +612,7 @@ apply_edge_resistance_to_each_side (MetaDisplay *display,
new_top = apply_edge_resistance (window,
BOX_TOP (*old_outer),
BOX_TOP (*new_outer),
old_outer,
new_outer,
edge_data->top_edges,
&edge_data->top_data,
@@ -729,6 +622,7 @@ apply_edge_resistance_to_each_side (MetaDisplay *display,
new_bottom = apply_edge_resistance (window,
BOX_BOTTOM (*old_outer),
BOX_BOTTOM (*new_outer),
old_outer,
new_outer,
edge_data->bottom_edges,
&edge_data->bottom_data,
@@ -750,27 +644,33 @@ apply_edge_resistance_to_each_side (MetaDisplay *display,
void
meta_display_cleanup_edges (MetaDisplay *display)
{
MetaEdgeResistanceData *edge_data = display->grab_edge_resistance_data;
g_assert (edge_data != NULL);
guint i,j;
MetaEdgeResistanceData *edge_data = display->grab_edge_resistance_data;
g_assert (edge_data != NULL);
/* We first need to clean out any window edges */
for (i = 0; i < 4; i++)
{
GArray *tmp = NULL;
MetaDirection dir;
switch (i)
{
case 0:
tmp = edge_data->left_edges;
dir = META_DIRECTION_LEFT;
break;
case 1:
tmp = edge_data->right_edges;
dir = META_DIRECTION_RIGHT;
break;
case 2:
tmp = edge_data->top_edges;
dir = META_DIRECTION_TOP;
break;
case 3:
tmp = edge_data->bottom_edges;
dir = META_DIRECTION_BOTTOM;
break;
default:
g_assert_not_reached ();
@@ -779,7 +679,8 @@ meta_display_cleanup_edges (MetaDisplay *display)
for (j = 0; j < tmp->len; j++)
{
MetaEdge *edge = g_array_index (tmp, MetaEdge*, j);
if (edge->edge_type == META_EDGE_WINDOW)
if (edge->edge_type == META_EDGE_WINDOW &&
edge->side_type == dir)
g_free (edge);
}
}
@@ -814,7 +715,7 @@ stupid_sort_requiring_extra_pointer_dereference (gconstpointer a,
{
const MetaEdge * const *a_edge = a;
const MetaEdge * const *b_edge = b;
return meta_rectangle_edge_cmp (*a_edge, *b_edge);
return meta_rectangle_edge_cmp_ignore_type (*a_edge, *b_edge);
}
static void
@@ -883,24 +784,23 @@ cache_edges (MetaDisplay *display,
edge_data->left_edges = g_array_sized_new (FALSE,
FALSE,
sizeof(MetaEdge*),
num_left);
num_left + num_right);
edge_data->right_edges = g_array_sized_new (FALSE,
FALSE,
sizeof(MetaEdge*),
num_right);
num_left + num_right);
edge_data->top_edges = g_array_sized_new (FALSE,
FALSE,
sizeof(MetaEdge*),
num_top);
num_top + num_bottom);
edge_data->bottom_edges = g_array_sized_new (FALSE,
FALSE,
sizeof(MetaEdge*),
num_bottom);
num_top + num_bottom);
/*
* 3rd: Add the edges to the arrays
*/
num_left = num_right = num_top = num_bottom = 0;
for (i = 0; i < 3; i++)
{
tmp = NULL;
@@ -925,15 +825,13 @@ cache_edges (MetaDisplay *display,
switch (edge->side_type)
{
case META_DIRECTION_LEFT:
g_array_append_val (edge_data->left_edges, edge);
break;
case META_DIRECTION_RIGHT:
g_array_append_val (edge_data->left_edges, edge);
g_array_append_val (edge_data->right_edges, edge);
break;
case META_DIRECTION_TOP:
g_array_append_val (edge_data->top_edges, edge);
break;
case META_DIRECTION_BOTTOM:
g_array_append_val (edge_data->top_edges, edge);
g_array_append_val (edge_data->bottom_edges, edge);
break;
default:

View File

@@ -3,7 +3,7 @@
/*
* Copyright (C) 2001 Havoc Pennington
* Copyright (C) 2003 Red Hat, Inc.
* Copyright (C) 2005 Elijah Newren
* 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
@@ -1261,13 +1261,11 @@ meta_frames_button_press_event (GtkWidget *widget,
control = get_control (frames, frame, event->x, event->y);
/* raise/focus on click, even if click was on client area */
/* focus on click, even if click was on client area */
if (event->button == 1 &&
!(control == META_FRAME_CONTROL_MINIMIZE ||
control == META_FRAME_CONTROL_DELETE))
{
meta_core_user_raise (gdk_display,
frame->xwindow);
meta_topic (META_DEBUG_FOCUS,
"Focusing window with frame 0x%lx due to button 1 press\n",
frame->xwindow);

View File

@@ -4,7 +4,7 @@
* Copyright (C) 2001 Havoc Pennington
* Copyright (C) 2002 Red Hat Inc.
* Copyright (C) 2003 Rob Adams
* Copyright (C) 2004, 2005 Elijah Newren
* 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
@@ -1451,11 +1451,15 @@ primary_modifier_still_pressed (MetaDisplay *display,
int x, y, root_x, root_y;
Window root, child;
guint mask;
MetaScreen *random_screen;
Window random_xwindow;
primary_modifier = get_primary_modifier (display, entire_binding_mask);
random_screen = display->screens->data;
random_xwindow = random_screen->no_focus_window;
XQueryPointer (display->xdisplay,
display->no_focus_window, /* some random window */
random_xwindow, /* some random window */
&root, &child,
&root_x, &root_y,
&x, &y,
@@ -2805,6 +2809,13 @@ handle_panel_keybinding (MetaDisplay *display,
break;
case META_KEYBINDING_ACTION_PANEL_RUN_DIALOG:
action_atom = display->atom_gnome_panel_action_run_dialog;
/* We want the dialog to take focus from a terminal since this
* should be considered an explicit focus transfer.
*/
if (__window_is_terminal (display->focus_window))
meta_display_focus_the_no_focus_window (display,
screen,
event->xkey.time);
break;
default:
return;

View File

@@ -2,6 +2,7 @@
/*
* Copyright (C) 2001 Havoc Pennington
* Copyright (C) 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
@@ -330,8 +331,6 @@ main (int argc, char **argv)
sigset_t empty_mask;
MetaArguments meta_args;
g_set_prgname (argv[0]);
if (setlocale (LC_ALL, "") == NULL)
meta_warning ("Locale not understood by C library, internationalization will not work\n");
@@ -462,6 +461,16 @@ main (int argc, char **argv)
*/
if (!meta_args.disable_sm)
meta_session_init (meta_args.client_id, meta_args.save_file);
/* Free memory possibly allocated by the argument parsing which are
* no longer needed.
*/
if (meta_args.save_file)
g_free (meta_args.save_file);
if (meta_args.display_name)
g_free (meta_args.display_name);
if (meta_args.client_id)
g_free (meta_args.client_id);
if (!meta_display_open (NULL))
meta_exit (META_EXIT_ERROR);

View File

@@ -61,6 +61,30 @@
</locale>
</schema>
<schema>
<key>/schemas/apps/metacity/general/raise_on_click</key>
<applyto>/apps/metacity/general/raise_on_click</applyto>
<owner>metacity</owner>
<type>bool</type>
<default>true</default>
<locale name="C">
<short>Whether raising should be a side-effect of other user
interactions</short>
<long>
Many actions (e.g. clicking in the client area, moving or
resizing the window) normally raise the window as a side-effect.
Set this option to false to decouple raising from other user
interactions. When false, windows can still be raised by an
alt-left-click anywhere on the window or a normal click on the
window decorations (assuming such clicks aren't used to start a
move or resize operation). Special messages, such as activation
requests from pagers, may also raise windows when this option is
false. This option is currently disabled in click-to-focus
mode.
</long>
</locale>
</schema>
<schema>
<key>/schemas/apps/metacity/general/action_double_click_titlebar</key>
<applyto>/apps/metacity/general/action_double_click_titlebar</applyto>

View File

@@ -2,6 +2,7 @@
/*
* Copyright (C) 2001 Havoc Pennington, Copyright (C) 2002 Red Hat Inc.
* Copyright (C) 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
@@ -41,6 +42,7 @@
*/
#define KEY_MOUSE_BUTTON_MODS "/apps/metacity/general/mouse_button_modifier"
#define KEY_FOCUS_MODE "/apps/metacity/general/focus_mode"
#define KEY_RAISE_ON_CLICK "/apps/metacity/general/raise_on_click"
#define KEY_ACTION_DOUBLE_CLICK_TITLEBAR "/apps/metacity/general/action_double_click_titlebar"
#define KEY_AUTO_RAISE "/apps/metacity/general/auto_raise"
#define KEY_AUTO_RAISE_DELAY "/apps/metacity/general/auto_raise_delay"
@@ -80,6 +82,7 @@ static gboolean use_system_font = TRUE;
static PangoFontDescription *titlebar_font = NULL;
static MetaVirtualModifier mouse_button_mods = Mod1Mask;
static MetaFocusMode focus_mode = META_FOCUS_MODE_CLICK;
static gboolean raise_on_click = TRUE;
static char* current_theme = NULL;
static int num_workspaces = 4;
static MetaActionDoubleClickTitlebar action_double_click_titlebar =
@@ -123,6 +126,7 @@ static gboolean update_use_system_font (gboolean value);
static gboolean update_titlebar_font (const char *value);
static gboolean update_mouse_button_mods (const char *value);
static gboolean update_focus_mode (const char *value);
static gboolean update_raise_on_click (gboolean value);
static gboolean update_theme (const char *value);
static gboolean update_visual_bell (gboolean v1, gboolean v2);
static gboolean update_visual_bell_type (const char *value);
@@ -346,6 +350,11 @@ meta_prefs_init (void)
update_focus_mode (str_val);
g_free (str_val);
bool_val = gconf_client_get_bool (default_client, KEY_RAISE_ON_CLICK,
&err);
cleanup_error (&err);
update_raise_on_click (bool_val);
str_val = gconf_client_get_string (default_client,
KEY_ACTION_DOUBLE_CLICK_TITLEBAR,
&err);
@@ -551,6 +560,22 @@ change_notify (GConfClient *client,
if (update_focus_mode (str))
queue_changed (META_PREF_FOCUS_MODE);
}
else if (strcmp (key, KEY_RAISE_ON_CLICK) == 0)
{
gboolean b;
if (value && value->type != GCONF_VALUE_BOOL)
{
meta_warning (_("GConf key \"%s\" is set to an invalid type\n"),
KEY_RAISE_ON_CLICK);
goto out;
}
b = value ? gconf_value_get_bool (value) : TRUE;
if (update_raise_on_click (b))
queue_changed (META_PREF_RAISE_ON_CLICK);
}
else if (strcmp (key, KEY_THEME) == 0)
{
const char *str;
@@ -972,6 +997,18 @@ update_focus_mode (const char *value)
}
#endif /* HAVE_GCONF */
#ifdef HAVE_GCONF
static gboolean
update_raise_on_click (gboolean value)
{
gboolean old = raise_on_click;
raise_on_click = value;
return old != value;
}
#endif /* HAVE_GCONF */
#ifdef HAVE_GCONF
static gboolean
update_theme (const char *value)
@@ -1018,6 +1055,15 @@ meta_prefs_get_focus_mode (void)
return focus_mode;
}
gboolean
meta_prefs_get_raise_on_click (void)
{
/* Force raise_on_click on for click-to-focus, as requested by Havoc
* in #326156.
*/
return raise_on_click || focus_mode == META_FOCUS_MODE_CLICK;
}
const char*
meta_prefs_get_theme (void)
{
@@ -1496,6 +1542,9 @@ meta_preference_to_string (MetaPreference pref)
case META_PREF_FOCUS_MODE:
return "FOCUS_MODE";
case META_PREF_RAISE_ON_CLICK:
return "RAISE_ON_CLICK";
case META_PREF_THEME:
return "THEME";

View File

@@ -2,6 +2,7 @@
/*
* Copyright (C) 2001 Havoc Pennington
* Copyright (C) 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
@@ -30,6 +31,7 @@ typedef enum
{
META_PREF_MOUSE_BUTTON_MODS,
META_PREF_FOCUS_MODE,
META_PREF_RAISE_ON_CLICK,
META_PREF_ACTION_DOUBLE_CLICK_TITLEBAR,
META_PREF_AUTO_RAISE,
META_PREF_AUTO_RAISE_DELAY,
@@ -66,6 +68,7 @@ const char* meta_preference_to_string (MetaPreference pref);
MetaVirtualModifier meta_prefs_get_mouse_button_mods (void);
MetaFocusMode meta_prefs_get_focus_mode (void);
gboolean meta_prefs_get_raise_on_click (void);
const char* meta_prefs_get_theme (void);
/* returns NULL if GTK default should be used */
const PangoFontDescription* meta_prefs_get_titlebar_font (void);

View File

@@ -6,7 +6,7 @@
* Some ICCCM manager selection code derived from fvwm2,
* Copyright (C) 2001 Dominik Vogt, Matthias Clasen, and fvwm2 team
* Copyright (C) 2003 Rob Adams
* Copyright (C) 2004, 2005 Elijah Newren
* 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
@@ -577,16 +577,14 @@ meta_screen_new (MetaDisplay *display,
reload_xinerama_infos (screen);
meta_screen_set_cursor (screen, META_CURSOR_DEFAULT);
if (display->no_focus_window == None)
{
display->no_focus_window = meta_create_offscreen_window (display->xdisplay,
screen->xroot);
XSelectInput (display->xdisplay, display->no_focus_window,
FocusChangeMask | KeyPressMask | KeyReleaseMask);
XMapWindow (display->xdisplay, display->no_focus_window);
}
/* Handle creating a no_focus_window for this screen */
screen->no_focus_window = meta_create_offscreen_window (display->xdisplay,
screen->xroot);
XSelectInput (display->xdisplay, screen->no_focus_window,
FocusChangeMask | KeyPressMask | KeyReleaseMask);
XMapWindow (display->xdisplay, screen->no_focus_window);
/* Done with no_focus_window stuff */
set_wm_icon_size_hint (screen);
@@ -1164,8 +1162,9 @@ meta_screen_update_cursor (MetaScreen *screen)
}
void
meta_screen_ensure_tab_popup (MetaScreen *screen,
MetaTabList type)
meta_screen_ensure_tab_popup (MetaScreen *screen,
MetaTabList list_type,
MetaTabShowType show_type)
{
MetaTabEntry *entries;
GList *tab_list;
@@ -1177,7 +1176,7 @@ meta_screen_ensure_tab_popup (MetaScreen *screen,
return;
tab_list = meta_display_get_tab_list (screen->display,
type,
list_type,
screen,
screen->active_workspace);
@@ -1204,7 +1203,9 @@ meta_screen_ensure_tab_popup (MetaScreen *screen,
entries[i].hidden = !meta_window_showing_on_its_workspace (window);
entries[i].demands_attention = window->wm_state_demands_attention;
if (!window->minimized || !meta_window_get_icon_geometry (window, &r))
if (show_type == META_TAB_SHOW_INSTANTLY ||
!window->minimized ||
!meta_window_get_icon_geometry (window, &r))
meta_window_get_outer_rect (window, &r);
entries[i].rect = r;

View File

@@ -3,7 +3,7 @@
/*
* Copyright (C) 2001 Havoc Pennington
* Copyright (C) 2003 Rob Adams
* Copyright (C) 2004, 2005 Elijah Newren
* 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
@@ -72,6 +72,11 @@ struct _MetaScreen
MetaWorkspace *active_workspace;
/* This window holds the focus when we don't want to focus
* any actual clients
*/
Window no_focus_window;
GList *workspaces;
MetaStack *stack;
@@ -141,8 +146,8 @@ void meta_screen_set_cursor (MetaScreen *scree
void meta_screen_update_cursor (MetaScreen *screen);
void meta_screen_ensure_tab_popup (MetaScreen *screen,
MetaTabList type);
MetaTabList list_type,
MetaTabShowType show_type);
void meta_screen_ensure_workspace_popup (MetaScreen *screen);
MetaWindow* meta_screen_get_mouse_window (MetaScreen *screen,

View File

@@ -208,11 +208,11 @@ meta_ui_tab_popup_new (const MetaTabEntry *entries,
gchar *tmp;
if (entries[i].hidden)
{
tmp = g_strdup_printf ("[%s]", entries[i].title);
tmp = g_markup_printf_escaped ("[%s]", entries[i].title);
}
else
{
tmp = g_strdup (entries[i].title);
tmp = g_markup_printf_escaped ("%s", entries[i].title);
}
if (entries[i].demands_attention)

View File

@@ -706,11 +706,11 @@ test_clamping_to_region ()
MetaRectangle rect;
MetaRectangle min_size;
FixedDirections fixed_directions;
int i;
min_size.height = min_size.width = 1;
fixed_directions = 0;
int i;
region = get_screen_region (3);
for (i = 0; i < NUM_RANDOM_RUNS; i++)
{
@@ -817,11 +817,9 @@ test_clipping_to_region ()
{
GList* region;
MetaRectangle rect, temp;
FixedDirections fixed_directions;
fixed_directions = 0;
FixedDirections fixed_directions = 0;
int i;
region = get_screen_region (3);
for (i = 0; i < NUM_RANDOM_RUNS; i++)
{
@@ -881,11 +879,9 @@ test_shoving_into_region ()
{
GList* region;
MetaRectangle rect, temp;
FixedDirections fixed_directions;
fixed_directions = 0;
FixedDirections fixed_directions = 0;
int i;
region = get_screen_region (3);
for (i = 0; i < NUM_RANDOM_RUNS; i++)
{

View File

@@ -4,7 +4,7 @@
* Copyright (C) 2001 Havoc Pennington, Anders Carlsson
* Copyright (C) 2002, 2003 Red Hat, Inc.
* Copyright (C) 2003 Rob Adams
* Copyright (C) 2004, 2005 Elijah Newren
* 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
@@ -231,6 +231,7 @@ meta_window_new_with_attrs (MetaDisplay *display,
MetaWorkspace *space;
gulong existing_wm_state;
gulong event_mask;
MetaMoveResizeFlags flags;
#define N_INITIAL_PROPS 13
Atom initial_props[N_INITIAL_PROPS];
int i;
@@ -241,7 +242,7 @@ meta_window_new_with_attrs (MetaDisplay *display,
meta_verbose ("Attempting to manage 0x%lx\n", xwindow);
if (xwindow == display->no_focus_window)
if (meta_display_xwindow_is_a_no_focus_window (display, xwindow))
{
meta_verbose ("Not managing no_focus_window 0x%lx\n",
xwindow);
@@ -698,7 +699,7 @@ meta_window_new_with_attrs (MetaDisplay *display,
* passing TRUE for is_configure_request, ICCCM says
* initial map is handled same as configure request
*/
MetaMoveResizeFlags flags =
flags =
META_IS_CONFIGURE_REQUEST | META_IS_MOVE_ACTION | META_IS_RESIZE_ACTION;
meta_window_move_resize_internal (window,
flags,
@@ -862,6 +863,7 @@ meta_window_apply_session_info (MetaWindow *window,
if (info->geometry_set)
{
int x, y, w, h;
MetaMoveResizeFlags flags;
window->placed = TRUE; /* don't do placement algorithms later */
@@ -880,8 +882,7 @@ meta_window_apply_session_info (MetaWindow *window,
"Restoring pos %d,%d size %d x %d for %s\n",
x, y, w, h, window->desc);
MetaMoveResizeFlags flags =
META_DO_GRAVITY_ADJUST | META_IS_MOVE_ACTION | META_IS_RESIZE_ACTION;
flags = META_DO_GRAVITY_ADJUST | META_IS_MOVE_ACTION | META_IS_RESIZE_ACTION;
meta_window_move_resize_internal (window,
flags,
window->size_hints.win_gravity,
@@ -1674,6 +1675,45 @@ intervening_user_event_occurred (MetaWindow *window)
}
}
/* This function is an ugly hack. It's experimental in nature and ought to be
* replaced by a real hint from the app to the WM if we decide the experimental
* behavior is worthwhile. The basic idea is to get more feedback about how
* usage scenarios of "strict" focus users and what they expect. See #326159.
*/
gboolean
__window_is_terminal (MetaWindow *window)
{
if (window == NULL)
return FALSE;
/* gnome-terminal -- if you couldn't guess */
if (strcmp (window->res_name, "gnome-terminal") == 0)
return TRUE;
/* xterm, rxvt, aterm */
else if (strcmp (window->res_name, "XTerm") == 0)
return TRUE;
/* konsole, KDE's terminal program */
else if (strcmp (window->res_name, "Konsole") == 0)
return TRUE;
/* rxvt-unicode */
else if (strcmp (window->res_name, "URxvt") == 0)
return TRUE;
/* eterm */
else if (strcmp (window->res_name, "Eterm") == 0)
return TRUE;
/* KTerm -- some terminal not KDE based; so not like Konsole */
else if (strcmp (window->res_name, "KTerm") == 0)
return TRUE;
/* Multi-gnome-terminal */
else if (strcmp (window->res_name, "Multi-gnome-terminal") == 0)
return TRUE;
/* mlterm ("multi lingual terminal emulator on X") */
else if (strcmp (window->res_name, "mlterm") == 0)
return TRUE;
return FALSE;
}
/* This function determines what state the window should have assuming that it
* and the focus_window have no relation
*/
@@ -1698,6 +1738,25 @@ window_state_on_map (MetaWindow *window,
return;
}
/* Terminal usage is different; users typically intend to launch
* many apps in quick succession or to just view things in the new
* window while still interacting with the terminal. Therefore,
* apps launched from the terminal should not take focus. This
* isn't quite the same as not allowing focus to transfer from
* terminals due to new window map, but the latter is a much easier
* approximation to enforce so we do that.
*/
if (*takes_focus &&
__window_is_terminal (window->display->focus_window) &&
!meta_window_is_ancestor_of_transient (window->display->focus_window,
window))
{
meta_topic (META_DEBUG_FOCUS,
"focus_window is terminal; not focusing new window.\n");
*takes_focus = FALSE;
*places_on_top = FALSE;
}
switch (window->type)
{
case META_WINDOW_UTILITY:
@@ -1723,6 +1782,15 @@ window_state_on_map (MetaWindow *window,
}
}
static gboolean
windows_overlap (const MetaWindow *w1, const MetaWindow *w2)
{
MetaRectangle w1rect, w2rect;
meta_window_get_outer_rect (w1, &w1rect);
meta_window_get_outer_rect (w2, &w2rect);
return meta_rectangle_overlap (&w1rect, &w2rect);
}
void
meta_window_show (MetaWindow *window)
{
@@ -1730,14 +1798,18 @@ meta_window_show (MetaWindow *window)
gboolean did_show;
gboolean takes_focus_on_map;
gboolean place_on_top_on_map;
gboolean needs_stacking_adjustment;
MetaWindow *focus_window;
meta_topic (META_DEBUG_WINDOW_STATE,
"Showing window %s, shaded: %d iconic: %d placed: %d\n",
window->desc, window->shaded, window->iconic, window->placed);
focus_window = window->display->focus_window; /* May be NULL! */
did_show = FALSE;
did_placement = FALSE;
window_state_on_map (window, &takes_focus_on_map, &place_on_top_on_map);
needs_stacking_adjustment = FALSE;
meta_topic (META_DEBUG_WINDOW_STATE,
"Window %s %s focus on map, and %s place on top on map.\n",
@@ -1746,12 +1818,11 @@ meta_window_show (MetaWindow *window)
place_on_top_on_map ? "does" : "does not");
if ( !takes_focus_on_map &&
window->display->focus_window != NULL &&
focus_window != NULL &&
!place_on_top_on_map &&
window->showing_for_first_time )
{
if (meta_window_is_ancestor_of_transient (window->display->focus_window,
window))
if (meta_window_is_ancestor_of_transient (focus_window, window))
{
/* This happens for error dialogs or alerts; these need to remain on
* top, but it would be confusing to have its ancestor remain
@@ -1761,14 +1832,13 @@ meta_window_show (MetaWindow *window)
"The focus window %s is an ancestor of the newly mapped "
"window %s which isn't being focused. Unfocusing the "
"ancestor.\n",
window->display->focus_window->desc, window->desc);
focus_window->desc, window->desc);
meta_display_focus_the_no_focus_window (window->display, meta_display_get_current_time_roundtrip (window->display));
meta_display_focus_the_no_focus_window (window->display, window->screen, meta_display_get_current_time_roundtrip (window->display));
}
else
{
meta_window_stack_just_below (window, window->display->focus_window);
ensure_mru_position_after (window, window->display->focus_window);
needs_stacking_adjustment = TRUE;
if (!window->placed)
window->denied_focus_and_not_transient = TRUE;
}
@@ -1868,11 +1938,43 @@ meta_window_show (MetaWindow *window)
}
else
{
/* Only set the demands attention hint if the window doesn't
* take focus on map and it isn't placed on top on map.
/* This window isn't getting focus on map. We may need to do some
* special handing with it in regards to
* - the stacking of the window
* - the MRU position of the window
* - the demands attention setting of the window
*/
if (!place_on_top_on_map)
window->wm_state_demands_attention = TRUE;
if (!place_on_top_on_map && needs_stacking_adjustment)
{
g_assert (focus_window != NULL);
gboolean overlap = windows_overlap (window, focus_window);
/* We want alt tab to go to the denied-focus window */
ensure_mru_position_after (window, focus_window);
/* We don't want the denied-focus window to obscure the focus
* window, and if we're in both click-to-focus mode and
* raise-on-click mode then we want to maintain the invariant
* that MRU order == stacking order. The need for this if
* comes from the fact that in sloppy/mouse focus the focus
* window may not overlap other windows and also can be
* considered "below" them; this combination means that
* placing the denied-focus window "below" the focus window
* in the stack when it doesn't overlap it confusingly places
* that new window below a lot of other windows.
*/
if (overlap ||
(meta_prefs_get_focus_mode () == META_FOCUS_MODE_CLICK &&
meta_prefs_get_raise_on_click ()))
meta_window_stack_just_below (window, focus_window);
/* If the window will be obscured by the focus window, then the
* user might not notice the window appearing so set the
* demands attention hint.
*/
if (overlap)
window->wm_state_demands_attention = TRUE;
}
/* Prevent EnterNotify events in sloppy/mouse focus from
* erroneously focusing the window that had been denied
@@ -2312,19 +2414,28 @@ unminimize_window_and_all_transient_parents (MetaWindow *window)
meta_window_foreach_ancestor (window, unminimize_func, NULL);
}
void
meta_window_activate (MetaWindow *window,
guint32 timestamp)
static void
window_activate (MetaWindow *window,
guint32 timestamp,
MetaClientType source_indication)
{
gboolean can_ignore_outdated_timestamps;
meta_topic (META_DEBUG_FOCUS,
"_NET_ACTIVE_WINDOW message sent for %s at time %lu.\n",
window->desc, (unsigned long)timestamp);
"_NET_ACTIVE_WINDOW message sent for %s at time %lu "
"by client type %u.\n",
window->desc, (unsigned long)timestamp, source_indication);
/* Older EWMH spec didn't specify a timestamp, so it can be 0 and we
* have to treat that as a new request.
/* Older EWMH spec didn't specify a timestamp; we decide to honor these only
* if the app specifies that it is a pager.
*
* Update: Unconditionally honor 0 timestamps for now; we'll fight
* that battle later. Just remove the "FALSE &&" in order to only
* honor 0 timestamps for pagers.
*/
can_ignore_outdated_timestamps =
(timestamp != 0 || (FALSE && source_indication != META_CLIENT_TYPE_PAGER));
if (XSERVER_TIME_IS_BEFORE (timestamp, window->display->last_user_time) &&
timestamp != 0)
can_ignore_outdated_timestamps)
{
meta_topic (META_DEBUG_FOCUS,
"last_user_time (%lu) is more recent; ignoring "
@@ -2334,9 +2445,13 @@ meta_window_activate (MetaWindow *window,
set_net_wm_state (window);
return;
}
if (timestamp == 0)
/* For those stupid pagers, get a valid timestamp and show a warning */
if (timestamp == 0) {
meta_warning ("meta_window_activate called by a pager with a 0 timestamp; "
"the pager needs to be fixed.\n");
timestamp = meta_display_get_current_time_roundtrip (window->display);
}
meta_window_set_user_time (window, timestamp);
@@ -2353,14 +2468,32 @@ meta_window_activate (MetaWindow *window,
meta_window_unshade (window);
unminimize_window_and_all_transient_parents (window);
meta_window_raise (window);
if (meta_prefs_get_raise_on_click () ||
source_indication == META_CLIENT_TYPE_PAGER)
meta_window_raise (window);
meta_topic (META_DEBUG_FOCUS,
"Focusing window %s due to activation\n",
window->desc);
meta_window_focus (window, timestamp);
}
/* This function exists since most of the functionality in window_activate
* is useful for Metacity, but Metacity shouldn't need to specify a client
* type for itself. ;-)
*/
void
meta_window_activate (MetaWindow *window,
guint32 timestamp)
{
/* We're not really a pager, but the behavior we want is the same as if
* we were such. If we change the pager behavior later, we could revisit
* this and just add extra flags to window_activate.
*/
window_activate (window, timestamp, META_CLIENT_TYPE_PAGER);
}
/* Manually fix all the weirdness explained in the big comment at the
* beginning of meta_window_move_resize_internal() giving positions
* expected by meta_window_constrain (i.e. positions & sizes of the
@@ -2989,11 +3122,11 @@ meta_window_resize (MetaWindow *window,
int h)
{
int x, y;
MetaMoveResizeFlags flags;
meta_window_get_position (window, &x, &y);
MetaMoveResizeFlags flags =
(user_op ? META_IS_USER_ACTION : 0) | META_IS_RESIZE_ACTION;
flags = (user_op ? META_IS_USER_ACTION : 0) | META_IS_RESIZE_ACTION;
meta_window_move_resize_internal (window,
flags,
NorthWestGravity,
@@ -3042,11 +3175,11 @@ meta_window_resize_with_gravity (MetaWindow *window,
int gravity)
{
int x, y;
MetaMoveResizeFlags flags;
meta_window_get_position (window, &x, &y);
MetaMoveResizeFlags flags =
(user_op ? META_IS_USER_ACTION : 0) | META_IS_RESIZE_ACTION;
flags = (user_op ? META_IS_USER_ACTION : 0) | META_IS_RESIZE_ACTION;
meta_window_move_resize_internal (window,
flags,
gravity,
@@ -3316,8 +3449,8 @@ meta_window_get_geometry (MetaWindow *window,
}
void
meta_window_get_outer_rect (MetaWindow *window,
MetaRectangle *rect)
meta_window_get_outer_rect (const MetaWindow *window,
MetaRectangle *rect)
{
if (window->frame)
*rect = window->frame->rect;
@@ -3916,6 +4049,7 @@ meta_window_configure_request (MetaWindow *window,
gboolean only_resize;
gboolean allow_position_change;
gboolean in_grab_op;
MetaMoveResizeFlags flags;
/* We ignore configure requests while the user is moving/resizing
* the window, since these represent the app sucking and fighting
@@ -4055,8 +4189,7 @@ meta_window_configure_request (MetaWindow *window,
* have a different setup for meta_window_move_resize_internal()...
*/
MetaMoveResizeFlags flags =
META_IS_CONFIGURE_REQUEST;
flags = META_IS_CONFIGURE_REQUEST;
if (event->xconfigurerequest.value_mask & (CWX | CWY))
flags |= META_IS_MOVE_ACTION;
if (event->xconfigurerequest.value_mask & (CWWidth | CWHeight))
@@ -4089,7 +4222,8 @@ meta_window_configure_request (MetaWindow *window,
{
MetaWindow *active_window;
active_window = window->display->expected_focus_window;
if (meta_prefs_get_disable_workarounds ())
if (meta_prefs_get_disable_workarounds () ||
!meta_prefs_get_raise_on_click ())
{
meta_topic (META_DEBUG_STACK,
"%s sent an xconfigure stacking request; this is "
@@ -4506,25 +4640,23 @@ meta_window_client_message (MetaWindow *window,
else if (event->xclient.message_type ==
display->atom_net_active_window)
{
MetaClientType source_indication;
guint32 timestamp;
meta_verbose ("_NET_ACTIVE_WINDOW request for window '%s', activating\n",
window->desc);
if (event->xclient.data.l[0] != 0)
{
/* Client supports newer _NET_ACTIVE_WINDOW with a
* convenient timestamp
*/
meta_window_activate (window,
event->xclient.data.l[1]);
}
else
{
/* Client using older EWMH _NET_ACTIVE_WINDOW without a
* timestamp
*/
meta_window_activate (window, meta_display_get_current_time (window->display));
}
source_indication = event->xclient.data.l[0];
timestamp = event->xclient.data.l[1];
if (source_indication > META_CLIENT_TYPE_MAX_RECOGNIZED)
source_indication = META_CLIENT_TYPE_UNKNOWN;
if (timestamp == 0)
/* Client using older EWMH _NET_ACTIVE_WINDOW without a timestamp */
timestamp = meta_display_get_current_time (window->display);
window_activate (window, timestamp, source_indication);
return TRUE;
}
@@ -6893,11 +7025,8 @@ update_resize (MetaWindow *window,
}
/* Store the latest resize time, if we actually resized. */
if (window->rect.width != old.width &&
window->rect.height != old.height)
{
g_get_current_time (&window->display->grab_last_moveresize_time);
}
if (window->rect.width != old.width || window->rect.height != old.height)
g_get_current_time (&window->display->grab_last_moveresize_time);
}
typedef struct
@@ -7033,6 +7162,9 @@ meta_window_handle_mouse_grab_op_event (MetaWindow *window,
switch (event->type)
{
case ButtonRelease:
meta_display_check_threshold_reached (window->display,
event->xbutton.x_root,
event->xbutton.y_root);
/* If the user was snap moving then ignore the button release
* because they may have let go of shift before releasing the
* mouse button and they almost certainly do not want a
@@ -7061,6 +7193,9 @@ meta_window_handle_mouse_grab_op_event (MetaWindow *window,
break;
case MotionNotify:
meta_display_check_threshold_reached (window->display,
event->xmotion.x_root,
event->xmotion.y_root);
if (meta_grab_op_is_moving (window->display->grab_op))
{
if (event->xmotion.root == window->screen->xroot)
@@ -7557,8 +7692,6 @@ meta_window_begin_grab_op (MetaWindow *window,
grab_start_serial = XNextRequest (window->display->xdisplay);
meta_window_raise (window);
warp_grab_pointer (window,
op, &x, &y);

View File

@@ -4,7 +4,7 @@
* Copyright (C) 2001 Havoc Pennington
* Copyright (C) 2002 Red Hat, Inc.
* Copyright (C) 2003, 2004 Rob Adams
* Copyright (C) 2004, 2005 Elijah Newren
* 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
@@ -58,6 +58,13 @@ typedef enum
META_MAXIMIZE_VERTICAL = 1 << 1
} MetaMaximizeFlags;
typedef enum {
META_CLIENT_TYPE_UNKNOWN = 0,
META_CLIENT_TYPE_APPLICATION = 1,
META_CLIENT_TYPE_PAGER = 2,
META_CLIENT_TYPE_MAX_RECOGNIZED = 2
} MetaClientType;
struct _MetaStruts
{
/* struts */
@@ -419,6 +426,9 @@ gboolean meta_window_showing_on_its_workspace (MetaWindow *window);
/* Return whether the window should be currently mapped */
gboolean meta_window_should_be_showing (MetaWindow *window);
/* See warning in window.c about this function */
gboolean __window_is_terminal (MetaWindow *window);
/* This recalcs the window/frame size, and recalcs the frame
* size/contents as well.
*/
@@ -449,8 +459,8 @@ void meta_window_get_geometry (MetaWindow *window,
int *y,
int *width,
int *height);
void meta_window_get_outer_rect (MetaWindow *window,
MetaRectangle *rect);
void meta_window_get_outer_rect (const MetaWindow *window,
MetaRectangle *rect);
void meta_window_get_xor_rect (MetaWindow *window,
const MetaRectangle *grab_wireframe_rect,
MetaRectangle *xor_rect);

View File

@@ -925,6 +925,7 @@ meta_workspace_focus_default_window (MetaWorkspace *workspace,
"Setting focus to no_focus_window, since no valid "
"window to focus found.\n");
meta_display_focus_the_no_focus_window (workspace->screen->display,
workspace->screen,
timestamp);
}
}
@@ -1014,6 +1015,7 @@ focus_ancestor_or_mru_window (MetaWorkspace *workspace,
{
meta_topic (META_DEBUG_FOCUS, "No MRU window to focus found; focusing no_focus_window.\n");
meta_display_focus_the_no_focus_window (workspace->screen->display,
workspace->screen,
timestamp);
}
}