Compare commits
32 Commits
METACITY_2
...
METACITY_2
Author | SHA1 | Date | |
---|---|---|---|
![]() |
f0322ee76c | ||
![]() |
5913b8c5ab | ||
![]() |
52df880f32 | ||
![]() |
f6270596de | ||
![]() |
a4d1c6fd61 | ||
![]() |
0f8add8b37 | ||
![]() |
8c5b6c875a | ||
![]() |
ae52d731be | ||
![]() |
d884f9ce8a | ||
![]() |
ee54debd6a | ||
![]() |
24cfed8cf0 | ||
![]() |
008a811e10 | ||
![]() |
de65967b62 | ||
![]() |
35532d14cb | ||
![]() |
9516694385 | ||
![]() |
9eb56f151c | ||
![]() |
e3ff2316fe | ||
![]() |
ab0ba52f89 | ||
![]() |
339948fcf2 | ||
![]() |
ebd0c7e9a6 | ||
![]() |
d530c3e405 | ||
![]() |
be86740b3d | ||
![]() |
d4771cd9cf | ||
![]() |
a59f14adbc | ||
![]() |
703f58cdf7 | ||
![]() |
5e9f20e94c | ||
![]() |
a710235e86 | ||
![]() |
53cba6ed37 | ||
![]() |
7e821f37fd | ||
![]() |
830baad257 | ||
![]() |
6a9242b192 | ||
![]() |
013c8b82db |
301
ChangeLog
301
ChangeLog
@@ -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
|
||||
|
7
HACKING
7
HACKING
@@ -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
54
NEWS
@@ -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
|
||||
==
|
||||
|
||||
|
@@ -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)
|
||||
|
15
po/ChangeLog
15
po/ChangeLog
@@ -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
189
po/fi.po
@@ -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)."
|
||||
|
251
po/mk.po
251
po/mk.po
@@ -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
256
po/nb.po
@@ -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
256
po/no.po
@@ -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 %"
|
||||
|
@@ -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
|
||||
|
@@ -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);
|
||||
}
|
||||
|
146
src/boxes.c
146
src/boxes.c
@@ -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);
|
||||
|
26
src/boxes.h
26
src/boxes.h
@@ -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.
|
||||
*/
|
||||
|
@@ -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,
|
||||
|
@@ -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;
|
||||
}
|
||||
|
@@ -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);
|
||||
|
@@ -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 */
|
||||
|
123
src/display.c
123
src/display.c
@@ -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, ×tamp))
|
||||
return;
|
||||
|
||||
XSetInputFocus (display->xdisplay,
|
||||
display->no_focus_window,
|
||||
screen->no_focus_window,
|
||||
RevertToPointerRoot,
|
||||
timestamp);
|
||||
display->expected_focus_window = NULL;
|
||||
|
@@ -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,
|
||||
|
@@ -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:
|
||||
|
@@ -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);
|
||||
|
@@ -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;
|
||||
|
13
src/main.c
13
src/main.c
@@ -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);
|
||||
|
@@ -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>
|
||||
|
49
src/prefs.c
49
src/prefs.c
@@ -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";
|
||||
|
||||
|
@@ -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);
|
||||
|
29
src/screen.c
29
src/screen.c
@@ -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;
|
||||
|
11
src/screen.h
11
src/screen.h
@@ -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,
|
||||
|
@@ -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)
|
||||
|
@@ -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++)
|
||||
{
|
||||
|
253
src/window.c
253
src/window.c
@@ -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);
|
||||
|
||||
|
16
src/window.h
16
src/window.h
@@ -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);
|
||||
|
@@ -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);
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user