Compare commits
141 Commits
METACITY_2
...
METACITY_2
Author | SHA1 | Date | |
---|---|---|---|
![]() |
d341b8ea5e | ||
![]() |
795d2caf8b | ||
![]() |
f6036b9860 | ||
![]() |
82cefd12ad | ||
![]() |
7ab715fa71 | ||
![]() |
163e236cd0 | ||
![]() |
0107da404c | ||
![]() |
c94c482283 | ||
![]() |
09501c9fab | ||
![]() |
941e4bf967 | ||
![]() |
60d710a71f | ||
![]() |
5dbe941495 | ||
![]() |
e9388f4345 | ||
![]() |
a8c5c002fb | ||
![]() |
327e3cb6b5 | ||
![]() |
0bdfa0f494 | ||
![]() |
c500de4e38 | ||
![]() |
b55dbe10bb | ||
![]() |
01c0a95136 | ||
![]() |
8fea7a4128 | ||
![]() |
4f93a1a273 | ||
![]() |
c5c68fcbe8 | ||
![]() |
0c7be52675 | ||
![]() |
fff75cd9ae | ||
![]() |
76735c18a1 | ||
![]() |
1f435cc1fc | ||
![]() |
a5d2bdea55 | ||
![]() |
565a04793e | ||
![]() |
f167d55625 | ||
![]() |
3405f3d8c8 | ||
![]() |
f141692ca2 | ||
![]() |
fe292078fe | ||
![]() |
224040cd1a | ||
![]() |
4026ea7b42 | ||
![]() |
53b9e49ca4 | ||
![]() |
8547d1e8ed | ||
![]() |
b095ecc195 | ||
![]() |
3bbf402684 | ||
![]() |
f8ff76efdd | ||
![]() |
3673472cd7 | ||
![]() |
b455ac62d2 | ||
![]() |
4916fedc28 | ||
![]() |
81eeb9c0d5 | ||
![]() |
2d895ce875 | ||
![]() |
eacd442787 | ||
![]() |
b8a9ed1d3a | ||
![]() |
117f0e5663 | ||
![]() |
f13a8e6ab9 | ||
![]() |
fa1195b7f1 | ||
![]() |
3d9f2868fc | ||
![]() |
17bf5ea13a | ||
![]() |
8d3432b8b7 | ||
![]() |
3fcbbfbbd2 | ||
![]() |
2caa49bca8 | ||
![]() |
a8912c4fb9 | ||
![]() |
7f8ad91af6 | ||
![]() |
53a7cbe6af | ||
![]() |
b9c6ba8536 | ||
![]() |
4e653cc49f | ||
![]() |
c17d58237e | ||
![]() |
48261330de | ||
![]() |
300be6e03b | ||
![]() |
0c83442709 | ||
![]() |
d372cf598a | ||
![]() |
5fa7c76ba0 | ||
![]() |
77644a32d7 | ||
![]() |
fb588c6075 | ||
![]() |
6a586e8929 | ||
![]() |
58ef1592a5 | ||
![]() |
9730f15411 | ||
![]() |
f3e64f181d | ||
![]() |
0130c0d5b6 | ||
![]() |
1e325bcbdf | ||
![]() |
941a9a9a7f | ||
![]() |
38b4f08b2b | ||
![]() |
fe1ea6ac34 | ||
![]() |
932fb56ea9 | ||
![]() |
18dfce2873 | ||
![]() |
915192ca9f | ||
![]() |
f2b400b82c | ||
![]() |
e629364582 | ||
![]() |
3299427097 | ||
![]() |
7d239b0d45 | ||
![]() |
9836007f5e | ||
![]() |
87cceaf992 | ||
![]() |
f77dba7ac2 | ||
![]() |
d19de0c1ee | ||
![]() |
142b64fff9 | ||
![]() |
a9b20427a5 | ||
![]() |
0e02cf9b07 | ||
![]() |
5f4c3f817b | ||
![]() |
80e838aed5 | ||
![]() |
b4c369931d | ||
![]() |
1b00ca6158 | ||
![]() |
4b8a05b803 | ||
![]() |
fe816afa1d | ||
![]() |
b93a94506b | ||
![]() |
d1ef896c73 | ||
![]() |
ed5c34d335 | ||
![]() |
429a8ccd15 | ||
![]() |
a8c3d1614f | ||
![]() |
ac10c309ea | ||
![]() |
e021e06178 | ||
![]() |
8c6f3853b0 | ||
![]() |
e7196621bc | ||
![]() |
f8a5ef7c9f | ||
![]() |
85631aec0f | ||
![]() |
401b716cf5 | ||
![]() |
3d4adc8be9 | ||
![]() |
210206b699 | ||
![]() |
c0c05d51ea | ||
![]() |
9d9576612b | ||
![]() |
abdb3fd8b9 | ||
![]() |
b3f766c618 | ||
![]() |
41e93f71be | ||
![]() |
79076b2997 | ||
![]() |
3684bd2da4 | ||
![]() |
d0e22bf63d | ||
![]() |
8450d97341 | ||
![]() |
3043d2a2be | ||
![]() |
3ca31c7b04 | ||
![]() |
8802ac2fe9 | ||
![]() |
61c7487172 | ||
![]() |
3782c482ef | ||
![]() |
8c487ddbb2 | ||
![]() |
07939f235f | ||
![]() |
abfccf5002 | ||
![]() |
df83c15583 | ||
![]() |
83010879f1 | ||
![]() |
c35fd86b3b | ||
![]() |
932fd0dcff | ||
![]() |
2a53302ab9 | ||
![]() |
44a4c1c9fb | ||
![]() |
04956ecf18 | ||
![]() |
2d41d65cf2 | ||
![]() |
7e41ffdda5 | ||
![]() |
54c15a2583 | ||
![]() |
8aae0a7723 | ||
![]() |
f23d8a3774 | ||
![]() |
aad6f37f8a | ||
![]() |
404a61b571 |
592
ChangeLog
592
ChangeLog
@@ -1,3 +1,595 @@
|
||||
2008-06-16 Thomas Thurman <tthurman@gnome.org>
|
||||
|
||||
* NEWS: 2.23.34 release.
|
||||
|
||||
2008-06-16 Thomas Thurman <tthurman@gnome.org>
|
||||
|
||||
* NEWS: 2.23.34 release.
|
||||
|
||||
2008-06-13 Thomas Thurman <tthurman@gnome.org>
|
||||
|
||||
* src/core/window-props.c: Some commenting.
|
||||
|
||||
* src/core/prefs.c: Added unified handling of integer preferences.
|
||||
Re-ordered fields in existing preferences so that changing to
|
||||
a union-based system will be easier in the future.
|
||||
|
||||
2008-06-10 Thomas Thurman <tthurman@gnome.org>
|
||||
|
||||
* test/tokentest/tokentest.c (draw_string_to_spec): doubles are
|
||||
%f or %g, not %d
|
||||
* test/tokentest/tokentest.ini: re-created fair copy accordingly
|
||||
|
||||
2008-06-10 Thomas Thurman <tthurman@gnome.org>
|
||||
|
||||
* test/tokentest: A preliminary attempt at a test for the
|
||||
theme expression tokeniser.
|
||||
|
||||
2008-06-05 Thomas Thurman <tthurman@gnome.org>
|
||||
|
||||
* src/compositor/compositor-xrender.c (paint_root, destroy_win,
|
||||
create_root_buffer, paint_windows, repair_screen, window_has_shadow,
|
||||
xrender_set_active_window, paint_dock_shadows, unmap_win, restack_win,
|
||||
make_shadow, resize_win, process_property_notify, free_win,
|
||||
process_configure_notify, process_circulate_notify, add_damage):
|
||||
defensive programming; check meta_screen_get_compositor_data()
|
||||
throughout in case it returns NULL. In particular, when this
|
||||
happened in a certain situation in xrender_set_active_window
|
||||
this caused a segfault; refs #530702 (and LP#178953 has more data)
|
||||
but this doesn't close them.
|
||||
|
||||
2008-06-02 Thomas Thurman <tthurman@gnome.org>
|
||||
|
||||
* NEWS: 2.23.34 release.
|
||||
|
||||
2008-06-02 Thomas Thurman <tthurman@gnome.org>
|
||||
|
||||
* src/core/display.c: make sure compositor things don't get
|
||||
compiled when we're not using the compositor.
|
||||
|
||||
2008-06-02 Thomas Thurman <tthurman@gnome.org>
|
||||
|
||||
* test/metacity-test: new test script, imported from
|
||||
branch.
|
||||
|
||||
2008-05-30 Thomas Thurman <tthurman@gnome.org>
|
||||
|
||||
* src/core/window-props.h: fix comments (number)
|
||||
|
||||
2008-05-30 Thomas Thurman <tthurman@gnome.org>
|
||||
|
||||
* src/core/window-props.h: commenting
|
||||
|
||||
2008-05-28 Thomas Thurman <tthurman@gnome.org>
|
||||
|
||||
* src/core/prefs.c (handle_preference_update_string,
|
||||
meta_prefs_remove_listener, queue_changed): Make disabling
|
||||
gconf work again. Closes #530870.
|
||||
|
||||
2008-05-26 Thomas Thurman <tthurman@gnome.org>
|
||||
|
||||
* configure.in: Post-release bump to 2.23.34.
|
||||
|
||||
2008-05-26 Thomas Thurman <tthurman@gnome.org>
|
||||
|
||||
* NEWS: 2.23.21 release.
|
||||
|
||||
2008-05-26 Thomas Thurman <tthurman@gnome.org>
|
||||
|
||||
* src/Makefile.am: added in two files needed for Iain's
|
||||
changes earlier to work in a release tarball
|
||||
|
||||
2008-05-24 Iain Holmes <iain@gnome.org>
|
||||
|
||||
* src/compositor/compositor-xrender.c: Add Dropdown menu atoms so we
|
||||
can add shadows to them. Fixes #517442
|
||||
Handle tooltips as well. Fixes #517524
|
||||
|
||||
2008-05-24 Iain Holmes <iain@gnome.org>
|
||||
|
||||
* src/compositor/compositor.c: Check the compositor isn't NULL before
|
||||
dereferencing it. Fixes #534569
|
||||
(meta_compositor_get_window_pixmap): Actually return a value
|
||||
|
||||
2008-05-19 Iain Holmes <iain@gnome.org>
|
||||
|
||||
* src/core/window.c: Applied patch from Ed Catmur to fix #528787
|
||||
|
||||
2008-05-19 Iain Holmes <iain@gnome.org>
|
||||
|
||||
* src/include/frame.h
|
||||
* src/include/display.h
|
||||
* src/include/xprops.h
|
||||
* src/include/compositor.h
|
||||
* src/include/types.h
|
||||
* src/include/window.h
|
||||
* src/include/errors.h
|
||||
* src/include/screen.h: New basic public API for compositor.
|
||||
|
||||
* src/compositor/*: Separate the compositor out into its own separate
|
||||
directory and set it up for backends. Initial XRender backend.
|
||||
|
||||
* src/core/compositor.[ch]: Remove
|
||||
|
||||
* src/core/frame.h
|
||||
* src/core/screen.h
|
||||
* src/core/display.h
|
||||
* src/core/window.h: Rename to -private.h so as not to clash with the
|
||||
new files in include
|
||||
|
||||
* src/core/delete.c
|
||||
* src/core/workspace.h
|
||||
* src/core/stack.[ch]
|
||||
* src/core/keybindings.[ch]
|
||||
* src/core/errors.c
|
||||
* src/core/effects.[ch]
|
||||
* src/core/core.c
|
||||
* src/core/group.h
|
||||
* src/core/edge-resistance.[ch]
|
||||
* src/core/window-props.[ch]
|
||||
* src/core/constraints.h
|
||||
* src/core/bell.[ch]
|
||||
* src/core/iconcache.h
|
||||
* src/core/session.[ch]
|
||||
* src/core/main.c
|
||||
* src/core/place.h
|
||||
* src/core/xprops.c
|
||||
* src/ui/tabpopup.c: Use the new -private headers
|
||||
|
||||
* src/core/display.c
|
||||
* src/core/frame.c
|
||||
* src/core/window.c
|
||||
* src/core/screen.c: Add the API functions required by the compositor
|
||||
|
||||
* src/Makefile.am: Relocate the new files
|
||||
|
||||
2008-05-13 Robert Escriva <me@robescriva.com>
|
||||
|
||||
* src/ui/theme.h (struct): remove color_set flag
|
||||
* src/ui/theme.c (meta_color_spec_render,
|
||||
meta_color_spec_new_from_string): remove check of color_set flag
|
||||
before rendering (we always do it now). Closes #511826.
|
||||
|
||||
2008-05-12 Thomas Thurman <tthurman@gnome.org>
|
||||
|
||||
* tools/xlib.py: Basic Python-based Xlib client for testing
|
||||
and building upon.
|
||||
|
||||
2008-05-09 Elijah Newren <newren gmail com>
|
||||
|
||||
* src/ui/color.[ch]:
|
||||
Remove these two unused files
|
||||
|
||||
2008-05-04 Thomas Thurman <tthurman@gnome.org>
|
||||
|
||||
Added curly brackets in two places to keep -pedantic happy.
|
||||
|
||||
* src/core/window-props.c (meta_display_init_window_prop_hooks)
|
||||
* src/core/group-props.c (meta_display_init_group_prop_hooks)
|
||||
|
||||
2008-05-03 Matt Krai <mkraai@beckman.com>
|
||||
|
||||
* src/core/delete.c (io_from_ping_dialog): fix type of "len" variable
|
||||
(refs #526049)
|
||||
2008-05-02 Thomas Thurman <tthurman@gnome.org>
|
||||
|
||||
All information should live in exactly one place. This means
|
||||
that the list of atoms should not be replicated anywhere.
|
||||
Therefore, we include it via x-macros. Closes #530843.
|
||||
|
||||
* src/core/atomnames.h: added list of atom names
|
||||
* src/Makefile.am: added reference to new file
|
||||
* src/core/display.h
|
||||
* src/core/display.c (twice)
|
||||
* src/core/screen.c: #included atomnames.h instead of having
|
||||
an enormous list of atoms
|
||||
* src/core/group-props.c
|
||||
* src/core/window.c
|
||||
* src/core/compositor.c
|
||||
* src/core/window-props.c
|
||||
* src/core/delete.c
|
||||
* src/core/workspace.c
|
||||
* src/core/stack.c
|
||||
* src/core/keybindings.c
|
||||
* src/core/iconcache.c
|
||||
* src/core/group.c
|
||||
* src/core/xprops.c: changed to new, simpler identifiers
|
||||
for atoms
|
||||
|
||||
2008-04-29 Chris Wang <chris.wang@sun.com>
|
||||
|
||||
* src/core/window.c (meta_window_new): XGetWindowAttributes
|
||||
can return an error value, and if it does its other results
|
||||
are invalid! (#530485)
|
||||
|
||||
2008-04-29 Thomas Thurman <tthurman@gnome.org>
|
||||
|
||||
* src/ui/fixedtip.[ch]: documentation
|
||||
|
||||
2008-04-27 Thomas Thurman <tthurman@gnome.org>
|
||||
|
||||
* configure.in: Post-release bump to 2.23.21.
|
||||
|
||||
2008-04-27 Thomas Thurman <tthurman@gnome.org>
|
||||
|
||||
* NEWS: 2.23.13 release.
|
||||
|
||||
2008-04-27 Erwann Chenede <erwann.chenede@sun.com>
|
||||
|
||||
* src/core/place.c (meta_window_place): re-enable cascade
|
||||
code which was wrongly removed a year ago. Closes #529925.
|
||||
|
||||
2008-04-22 Carlos Garnacho <carlos@imendio.com>
|
||||
|
||||
* src/core/compositor.c (process_property_notify,
|
||||
find_window_in_display): Propagate opacity to frame window.
|
||||
|
||||
2008-04-22 Thomas Thurman <tthurman@gnome.org>
|
||||
|
||||
* configure.in: Post-release bump to 2.23.13.
|
||||
|
||||
2008-04-22 Thomas Thurman <tthurman@gnome.org>
|
||||
|
||||
* NEWS: 2.23.8 release.
|
||||
|
||||
2008-04-22 Thomas Thurman <tthurman@gnome.org>
|
||||
|
||||
* configure.in: Post-release bump to 2.21.8.
|
||||
(Which was seriously belated. Sorry, folks.)
|
||||
|
||||
2008-04-22 Thomas Thurman <tthurman@gnome.org>
|
||||
|
||||
* src/core/effects.c: a few comments
|
||||
|
||||
2008-04-10 Lucas Rocha <lucasr@gnome.org>
|
||||
|
||||
* src/Makefile.am: no need to create a symlink to .desktop file in
|
||||
default-session directory anymore as gnome-session will find
|
||||
metacity's .desktop in its original place.
|
||||
|
||||
2008-04-07 iain <iain@gnome.org>
|
||||
|
||||
* src/core/compositor.c (hide_overlay_window): Hide the overlay window
|
||||
(meta_compositor_unmanage_screen): Release the compositor overlay.
|
||||
(#526770)
|
||||
|
||||
2008-04-07 Jens Granseuer <jensgr@gmx.net>
|
||||
|
||||
* src/core/session.c: (save_state),
|
||||
(warn_about_lame_clients_and_finish_interact):
|
||||
reorder declarations so we don't break C89 compilers.
|
||||
|
||||
2008-04-06 Thomas Thurman <tthurman@gnome.org>
|
||||
|
||||
* NEWS: 2.23.5 release.
|
||||
|
||||
2008-04-03 Thomas Thurman <tthurman@gnome.org>
|
||||
|
||||
* src/core/prefs.c (handle_preference_update_bool): preferences
|
||||
which have a null target don't get updated! (#526016)
|
||||
|
||||
2008-03-29 Lucas Rocha <lucasr.at.mundo@gmail.com>
|
||||
|
||||
* src/metacity.desktop.in, src/Makefile.am: make Metacity
|
||||
install its desktop files in the default session directory
|
||||
as required by the new gnome-session. (Closes #525051.)
|
||||
|
||||
2008-03-29 Thomas Thurman <tthurman@gnome.org>
|
||||
|
||||
* src/ui/preview-widget.c (meta_preview_get_clip_region):
|
||||
prevent null dereference if the theme was invalid, which
|
||||
caused crashes in gnome-appearance-properties. No GNOME
|
||||
bug number, but I believe this is a fix for Launchpad bug
|
||||
#199402 and its many duplicates.
|
||||
|
||||
2008-03-28 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* src/core/window.c (meta_window_new_with_attrs): Don't
|
||||
immediately unminimize an initially iconic window (#491090)
|
||||
|
||||
2008-03-27 Thomas Thurman <tthurman@gnome.org>
|
||||
|
||||
* src/core/session.c (regenerate_save_file, save_state, load_state):
|
||||
files are saved in ~/.config/metacity/sessions and checked for there
|
||||
and in ~/.metacity/sessions. Fixes #518596.
|
||||
|
||||
2008-03-27 Thomas Thurman <tthurman@gnome.org>
|
||||
|
||||
* src/core/display.c (meta_display_close): fix regression
|
||||
where Metacity sometimes wouldn't quit when replaced
|
||||
|
||||
2008-03-26 Thomas Thurman <tthurman@gnome.org>
|
||||
|
||||
* src/core/display.c (event_callback): meta_display_screen_for_root
|
||||
is quite capable of returning NULL.
|
||||
|
||||
2008-03-25 Thomas Thurman <tthurman@gnome.org>
|
||||
|
||||
* src/core/display.c (meta_display_queue_retheme_all_windows,
|
||||
meta_set_syncing, meta_display_set_cursor_theme, disable_compositor,
|
||||
meta_display_for_x_display, meta_display_open, meta_display_close,
|
||||
meta_display_ungrab): MetaDisplay becomes a singleton. The static
|
||||
variable which holds this singleton is renamed "the_display" so as
|
||||
not to mask the this parameter in the methods.
|
||||
|
||||
* src/core/main.c (main):
|
||||
* src/core/session.c (warn_about_lame_clients_and_finish_inte,
|
||||
save_state, io_from_warning_dialog):
|
||||
* src/core/core.c (meta_core_increment_event_serial):
|
||||
* src/core/delete.c (release_window_with_fd, search_and_destroy_window):
|
||||
sympathy changes for this, and consequent simplification.
|
||||
Closes #499301.
|
||||
|
||||
2008-03-21 Thomas Thurman <tthurman@gnome.org>
|
||||
|
||||
* configure.in: Post-release bump to 2.23.5.
|
||||
|
||||
2008-03-21 Thomas Thurman <tthurman@gnome.org>
|
||||
|
||||
* NEWS: 2.23.3 release.
|
||||
|
||||
2008-03-21 Thomas Thurman <tthurman@gnome.org>
|
||||
|
||||
* src/ui/menu.c (activate_cb, get_workspace_name_with_accel): Workspaces
|
||||
whose name is the standard name plus a non-empty string are handled
|
||||
correctly in menus. Closes #453678.
|
||||
|
||||
2008-03-19 Iain Holmes <iain@gnome.org>
|
||||
|
||||
* src/core/compositor.c (meta_compositor_set_active_window): Handle
|
||||
compositor being disabled and don't crash.
|
||||
|
||||
2008-03-19 Iain Holmes <iain@gnome.org>
|
||||
|
||||
* src/core/compositor.c (meta_compositor_set_active_window): Add a
|
||||
screen argument.
|
||||
(process_property_notify): Damage the whole screen when the background
|
||||
changes. Fixes 522599
|
||||
(add_repair): Use the idle instead of the timeout. Fixes 522166
|
||||
(unmap_win): If the window is also focus window NULLify it.
|
||||
|
||||
* src/core/window.c (meta_window_notify_focus): Notify when a window
|
||||
has lost focus, pass in screen as well.
|
||||
|
||||
2008-03-18 Iain Holmes <iain@gnome.org>
|
||||
|
||||
* src/core/compositor.c (window_has_shadow): Allow shaped windows
|
||||
_with frames_ to have shadows.
|
||||
(meta_compositor_set_active_window): Watch for the focus of windows
|
||||
and change the size of the drop shadows.
|
||||
(generate_shadows): Create differently sized shadows.
|
||||
(meta_compositor_get_window_pixmap): Get the xwindow correctly.
|
||||
|
||||
* src/core/window.c (meta_window_notify_focus): Set the active window
|
||||
in the compositor.
|
||||
|
||||
2008-03-18 Marco Pesenti Gritti <mpgritti@gmail.com>
|
||||
|
||||
* src/core/window.c (window_would_be_covered): newly created windows
|
||||
can't be considered to be above themselves; fixes bug #519188.
|
||||
|
||||
2008-03-11 Matthew Wilson <msw@gimp.org>
|
||||
|
||||
* src/core/keybindings.c (meta_display_process_key_event, process_event,
|
||||
find_handler, process_mouse_move_resize_grab): allow moving workspace
|
||||
while moving window with modifier
|
||||
* src/core/workspace.c (meta_workspace_activate_with_focus): remove the
|
||||
correct window on jumping workspace while moving
|
||||
|
||||
2008-03-10 Josh Lee <jleedev@gmail.com>
|
||||
|
||||
* src/core/compositor.c (window_has_shadow): Don't shadow
|
||||
shaped windows.
|
||||
|
||||
2008-03-07 Thomas Thurman <tthurman@gnome.org>
|
||||
|
||||
* configure.in: Post-release bump to 2.23.3.
|
||||
|
||||
2008-03-07 Thomas Thurman <tthurman@gnome.org>
|
||||
|
||||
* NEWS: 2.23.2 release.
|
||||
|
||||
2008-03-07 Thomas Thurman <tthurman@gnome.org>
|
||||
|
||||
* src/core/prefs.c (mouse_button_mods_handler): remove
|
||||
debug statements (*blush*)
|
||||
|
||||
2008-03-06 Thomas Thurman <tthurman@gnome.org>
|
||||
|
||||
* configure.in: Post-release bump to 2.23.2.
|
||||
|
||||
2008-03-06 Thomas Thurman <tthurman@gnome.org>
|
||||
|
||||
* NEWS: 2.23.1 release.
|
||||
|
||||
2008-03-06 Thomas Thurman <tthurman@gnome.org>
|
||||
|
||||
* tools/release-wrangler.py: basic md5 printing (not used yet);
|
||||
also print release announcements to stdout (eventually will
|
||||
need to be emailed to release list and blogged)
|
||||
|
||||
2008-03-06 Thomas Thurman <tthurman@gnome.org>
|
||||
|
||||
Part three of the great prefs refactor, this time
|
||||
dealing with string preferences. (This was the most
|
||||
complicated part, and has been especially tested and
|
||||
valground before committing. As ever, though, let us
|
||||
know if you find a problem.)
|
||||
|
||||
* src/core/prefs.c (MetaStringPreference): new struct.
|
||||
* src/core/prefs.c (update_*): replaced with *_handler
|
||||
* src/core/prefs.c (meta_prefs_init): uses new string prefs
|
||||
init; uses array of gconf dirs to monitor rather than
|
||||
repeating code.
|
||||
* src/core/prefs.c (handle_preference_init_enum): tidying
|
||||
* src/core/prefs.c (change_notify): uses new string prefs
|
||||
|
||||
2008-03-04 Thomas Thurman <tthurman@gnome.org>
|
||||
|
||||
* MAINTAINERS: added some spacing to see whether it
|
||||
helps Pulse
|
||||
|
||||
2008-03-03 Cosimo Cecchi <anarki@lilik.it>
|
||||
|
||||
Add ability to vertically and horizontally maximise
|
||||
using the mouse, by clicking the titlebar in various
|
||||
ways. A very similar patch was received from Jason Ribero.
|
||||
Thanks also go to Tony Houghton and Carlo Wood, who
|
||||
both submitted patches which solved this differently.
|
||||
Closes #358674.
|
||||
|
||||
* src/include/common.h (MetaActionTitlebar): new values
|
||||
for the new actions
|
||||
* src/core/core.c (meta_core_maximize_{vertic|horizont}ally):
|
||||
new functions.
|
||||
* src/ui/frames.c (meta_frame_titlebar_event): handle the
|
||||
new action values
|
||||
* src/core/window.h: new macros (for regularity, not really
|
||||
necessary)
|
||||
* src/core/prefs.c (symtab_titlebar_action): new string
|
||||
representations of the action values
|
||||
* src/metacity.schemas.in: documentation
|
||||
|
||||
2008-02-29 Andrea Del Signore <sejerpz@tin.it>
|
||||
|
||||
Add support for "spacer" as a button type which adds some
|
||||
empty space. Closes #509165.
|
||||
|
||||
* src/ui/theme.c (meta_frame_layout_calc_geometry),
|
||||
src/include/common.h (MetaButtonLayout),
|
||||
src/core/prefs.c (update_button_layout, button_layout_equal),
|
||||
src/metacity.schemas.in: add spacer support
|
||||
|
||||
2008-02-28 Thomas Thurman <tthurman@gnome.org>
|
||||
|
||||
* src/core/compositor.h: removed unnecessary #include which
|
||||
should have been in Jim's patch (not sure how it slipped
|
||||
through the tests!)
|
||||
|
||||
2008-02-27 Jim Huang <jserv.tw@gmail.com>
|
||||
|
||||
* src/core/spring-model.[ch]: deleted as no longer used
|
||||
* src/Makefile.am: modified accordingly
|
||||
|
||||
2008-02-27 Thomas Thurman <tthurman@gnome.org>
|
||||
|
||||
Lots of tiny fixes to make sure we compile with
|
||||
"gcc -ansi -Werror".
|
||||
|
||||
2008-02-26 Jens Granseuer <jensgr@gmx.net>
|
||||
|
||||
* src/core/constraints.c (constrain_aspect_ratio,
|
||||
constrain_size_limits, constrain_size_increments):
|
||||
reorder declarations so we don't break C89 compilers.
|
||||
Closes #518917.
|
||||
|
||||
2008-02-26 Thomas Thurman <tthurman@gnome.org>
|
||||
|
||||
* configure.in: Post-release bump to 2.23.1.
|
||||
|
||||
2008-02-26 Thomas Thurman <tthurman@gnome.org>
|
||||
|
||||
* NEWS: 2.23.0 release.
|
||||
|
||||
2008-02-26 Thomas Thurman <tthurman@gnome.org>
|
||||
|
||||
* tools/release-wrangler.py: ANY post-release bump is now the
|
||||
most recent, not just the one that matches the current version.
|
||||
Otherwise, you can't use these tools straight after a branch.
|
||||
The changeset before this one was mislabelled because of this.
|
||||
It has now been excised from the changelog.
|
||||
|
||||
2008-02-25 Thomas Wood <thos@gnome.org>
|
||||
|
||||
* src/ui/preview-widget.[ch] (meta_preview_get_clip_region):
|
||||
allow users of the preview widget to get a mask for windows
|
||||
in the correct shape for the current theme.
|
||||
|
||||
2008-02-23 Thomas Thurman <tthurman@gnome.org>
|
||||
|
||||
Refactor handling of boolean preferences.
|
||||
|
||||
* src/core/prefs.c (handle_preference_init_bool,
|
||||
handle_preference_update_bool): new functions.
|
||||
* src/core/prefs.c (meta_prefs_init, change_notify):
|
||||
use the new functions.
|
||||
* src/core/prefs.c (update_*): several of these removed whose
|
||||
only purpose was to receive boolean preferences.
|
||||
* src/core/prefs.c (cleanup_error, get_bool): moved down to make
|
||||
the flow of ideas more obvious.
|
||||
* src/core/prefs.c (maybe_give_disable_workarounds_warning): new
|
||||
function containing duplicated code from elsewhere.
|
||||
* src/core/prefs.c (init_button_layout): only compiled when
|
||||
HAVE_GCONF is not defined. Removed a compiler warning.
|
||||
|
||||
2008-02-23 Thomas Thurman <tthurman@gnome.org>
|
||||
|
||||
* tools/commit-wrangler.py: Print URL of changeset on success.
|
||||
|
||||
2008-02-23 Thomas Thurman <tthurman@gnome.org>
|
||||
|
||||
Refactored handling of enumerated preferences.
|
||||
|
||||
* src/core/prefs.c (handle_preference_init_enum,
|
||||
handle_preference_update_enum): new functions.
|
||||
(meta_prefs_init, change_notify): use regularised
|
||||
forms and remove old copy-and-pasted code.
|
||||
Also many small similar functions removed which
|
||||
only existed to deal with each kind of enum.
|
||||
Also some amount of correction of which parts were
|
||||
and weren't inside "#ifdef HAVE_GCONF" blocks.
|
||||
|
||||
|
||||
2008-02-21 Mikkel Kamstrup Erlandsen <mikkel.kamstrup@gmail.com>
|
||||
|
||||
* src/core/constraints.c: Respect requested position on
|
||||
_NET_MOVERESIZE_WINDOW. Closes #448183.
|
||||
|
||||
2008-02-18 Matthias Clasen <mclasen@redhat.com>
|
||||
|
||||
* src/core/window.h: Make skip-taskbar windows appear in the
|
||||
Ctrl-Alt-Tab list. Closes #106249.
|
||||
|
||||
2008-02-18 Thomas Thurman <tthurman@gnome.org>
|
||||
|
||||
* configure.in: if we have libSM and its headers,
|
||||
that means we did find it, not that we didn't.
|
||||
Closes #328210.
|
||||
|
||||
2008-02-18 Thomas Thurman <tthurman@gnome.org>
|
||||
|
||||
* src/core/window.c (warp_grab_pointer): When
|
||||
resizing a window with the keyboard, stay one
|
||||
pixels from the edges so that the cursor remains
|
||||
resting on a window edge even if we escape,
|
||||
whatever side it was on. Closes #436257.
|
||||
|
||||
2008-02-17 Thomas Thurman <tthurman@gnome.org>
|
||||
|
||||
* tools/commit-wrangler.py: added new script to manage commits
|
||||
|
||||
2008-02-17 Jim Huang <jserv.tw@gmail.com>
|
||||
|
||||
* src/core/prefs.c (update_binding): Allow compilation
|
||||
when gconf mode is disabled. Closes #515019.
|
||||
|
||||
2008-02-14 Jim Huang <jserv.tw@gmail.com>
|
||||
|
||||
* src/core/display.c, src/core/util.c: fixups to allow
|
||||
compilation in non-verbose mode. Closes #515152.
|
||||
|
||||
2008-02-12 Thomas Thurman <tthurman@gnome.org>
|
||||
|
||||
* configure.in: Correct help for verbose option name.
|
||||
|
||||
2008-02-12 Thomas Thurman <tthurman@gnome.org>
|
||||
|
||||
* configure.in: Post-branch bump to 2.23.0.
|
||||
|
||||
2008-02-12 Thomas Thurman <tthurman@gnome.org>
|
||||
|
||||
* configure.in: Post-release bump to 2.21.21.
|
||||
|
||||
2008-02-11 Thomas Thurman <tthurman@gnome.org>
|
||||
|
||||
* NEWS: 2.21.13 release.
|
||||
|
@@ -22,6 +22,7 @@ Userid: tthurman
|
||||
|
||||
Semi-active maintainers
|
||||
--------------------------------
|
||||
|
||||
Havoc Pennington
|
||||
Email: hp redhat com
|
||||
Userid: hp
|
||||
@@ -32,6 +33,7 @@ Userid: hp
|
||||
|
||||
Important historical figureheads
|
||||
--------------------------------
|
||||
|
||||
Rob Adams (readams readams net)
|
||||
- Was the main maintainer of metacity for a while; particular areas
|
||||
of focus included xinerama, placement, and an older version of the
|
||||
|
184
NEWS
184
NEWS
@@ -1,3 +1,187 @@
|
||||
|
||||
2.23.34
|
||||
=======
|
||||
|
||||
Thanks to Thomas Thurman for improvements in this version.
|
||||
|
||||
- Commenting and tidying (Thomas)
|
||||
- Fix possible compositor crash (Thomas) (#530702)
|
||||
|
||||
Translations
|
||||
Khaled Hosny (ar), Yavor Doganov (bg), Jorge González (es), Kjartan Maraas (nb),
|
||||
Yannig Marchegay (Kokoyaya) (oc), Theppitak Karoonboonyanan (th), Clytie
|
||||
Siddall (vi)
|
||||
|
||||
2.23.34
|
||||
=======
|
||||
|
||||
Thanks to Thomas Thurman for improvements in this version.
|
||||
|
||||
- Commenting and tidying (Thomas)
|
||||
- Fix possible compositor crash (Thomas) (#530702)
|
||||
|
||||
Translations
|
||||
Khaled Hosny (ar), Yavor Doganov (bg), Jorge González (es), Kjartan Maraas (nb),
|
||||
Yannig Marchegay (Kokoyaya) (oc), Theppitak Karoonboonyanan (th), Clytie
|
||||
Siddall (vi)
|
||||
|
||||
2.23.34
|
||||
=======
|
||||
|
||||
Thanks to Thomas Thurman for improvements in this version.
|
||||
|
||||
- Various commenting (Thomas)
|
||||
- Ensure you can turn off compositor with "configure" (Thomas)
|
||||
- Ensure you can turn off gconf with "configure" (Thomas) (#530870)
|
||||
|
||||
Translations
|
||||
Clytie Siddall (vi)
|
||||
|
||||
2.23.21
|
||||
=======
|
||||
|
||||
Thanks to Robert Escriva, Iain Holmes, Matt Krai, Thomas Thurman,
|
||||
and Chris Wang for improvements in this version.
|
||||
|
||||
- Add shadow ability for menus and tooltips (Iain) (#517442) (#517524)
|
||||
- Fix possible crashes in compositor (Iain) (#534569) (#528787)
|
||||
- Major reorganisation of compositor code (Iain)
|
||||
- Initial version of XRender backend for the compositor (Iain)
|
||||
- New basic public API for compositor (Iain)
|
||||
- Window decoration updates colour when GTK theme changes (Robert) (#511826)
|
||||
- Minor code cleanup for pedantic compilers (Thomas)
|
||||
- Further code cleanup for pedantic compilers (Matt) (#526049)
|
||||
- The atom list appears only once in the code (Thomas) (#530843)
|
||||
- Don't attempt to read attributes of invalid windows (Chris) (#530485)
|
||||
|
||||
Translations
|
||||
Khaled Hosny (ar), Gabor Kelemen (hu), Kjartan Maraas (nb), Tino Meinen (nl),
|
||||
Theppitak Karoonboonyanan (th)
|
||||
2.23.13
|
||||
=======
|
||||
|
||||
Thanks to Erwann Chenede and Carlos Garnacho for improvements
|
||||
in this version.
|
||||
|
||||
- Re-enable cascading (Erwann) (#529925)
|
||||
- Propagate opacity to frame windows (spec compliance!) (Carlos)
|
||||
|
||||
Translations
|
||||
- None this time!
|
||||
|
||||
2.23.8
|
||||
======
|
||||
|
||||
Thanks to Lucas Rocha, Iain Holmes, and Jens Granseuer for improvements
|
||||
in this version.
|
||||
|
||||
* No need to symlink to .desktop files (Lucas)
|
||||
* Fixes to compositor's dealings with overlay windows (Iain)
|
||||
* C89 fixes (Jens)
|
||||
|
||||
Translators:
|
||||
Khaled Hosny (ar), Amitakhya Phukan (as), Ihar Hrachyshka (be@latin),
|
||||
Petr Kovar (cs), Rhys Jones (cy), Kenneth Nielsen (da), Andre Klapper (de),
|
||||
Jorge González (es), Iñaki Larrañaga Murgoitio (eu), Ilkka Tuohela (fi),
|
||||
Claude Paroz (fr), Seán de Búrca (ga), Ignacio Casal Quinteiro (gl),
|
||||
Yuval Tanny (he), Gabor Kelemen (hu), Luca Ferretti (it), Takeshi AIHANA (ja),
|
||||
Shankar Prasad (kn), Changwoo Ryu (ko), Arangel Angov (mk), sandeep shedmake (mr),
|
||||
Kjartan Maraas (nb), Nabin Gautam (ne), Wouter Bolsterlee (nl),
|
||||
Eskild Hustvedt (nn), Yannig Marchegay (Kokoyaya) (oc), Tomasz Dominikowski (pl),
|
||||
Duarte Loreto (pt), Vasiliy Faronov (ru), Daniel Nylander (sv),
|
||||
Theppitak Karoonboonyanan (th), Baris Cicek (tr), Maxim Dziumanenko (uk),
|
||||
Clytie Siddall (vi), Woodman Tuen (zh_HK), Woodman Tuen (zh_TW)
|
||||
2.23.5
|
||||
======
|
||||
|
||||
Thanks to Lucas Rocha, Owen Taylor, and Thomas Thurman for improvements in this
|
||||
version.
|
||||
|
||||
- Updates of useless preferences don't crash (Thomas) (#526016)
|
||||
- Compliance with new gnome-session (Lucas) (#525051)
|
||||
- Preview widget doesn't crash on broken themes (Thomas) (Launchpad 199402)
|
||||
- Initially iconic windows don't unminimise (Owen) (#491090)
|
||||
- Move ~/.metacity to ~/.config/metacity (Thomas) (#518596)
|
||||
- Metacity doesn't stay around when replaced (Thomas)
|
||||
- Extra check for null return in a function (Thomas)
|
||||
- Displays are singletons, simplifying code (Thomas) (#499301)
|
||||
|
||||
Translations
|
||||
Jorge González (es), Eskild Hustvedt (nn), Baris Cicek (tr), Clytie Siddall (vi)
|
||||
|
||||
2.23.3
|
||||
======
|
||||
|
||||
Thanks to Marco Pesenti Gritti, Iain Holmes, Josh Lee, Thomas Thurman, and
|
||||
Matthew Wilson for improvements in this version.
|
||||
|
||||
- Workspaces whose name is the same as the standard name, plus some string,
|
||||
are not cut off. (Thomas) (#453678)
|
||||
- Improve compositor performance (Iain) (#522166)
|
||||
- Draw wallpaper correctly when we start up with compositor
|
||||
(Iain) (#522599)
|
||||
- Several other smaller compositor fixes (Iain)
|
||||
- Don't draw shadows on shaped windows unless they have frames
|
||||
(Iain) (#505333)
|
||||
- Newly-created keep-above windows get focus (Marco) (#519188)
|
||||
- Allow moving workspace when dragging with modifier key (Matthew)
|
||||
(#474195)
|
||||
|
||||
Translations
|
||||
Kenneth Nielsen (da), Gabor Kelemen (hu), Vasiliy Faronov (ru), Daniel
|
||||
Nylander (sv), Maxim Dziumanenko (uk), Woodman Tuen (zh_HK)
|
||||
|
||||
2.23.2
|
||||
======
|
||||
|
||||
Removed some debug statements introduced in 2.23.1. Brown paper bag release.
|
||||
|
||||
|
||||
2.23.1
|
||||
======
|
||||
|
||||
Thanks to Cosimo Cecchi, Jens Granseuer, Jim Huang, Andrea Del Signore, and
|
||||
Thomas Thurman for improvements in this version.
|
||||
|
||||
(Cosimo's patch was very similar to another received from Jason Ribero.)
|
||||
|
||||
- Allow horizontal and vertical maximisation using the mouse (Cosimo/Jason)
|
||||
(#358674)
|
||||
- Allow "spacer" as a value for buttons, for blank space (Andrea) (#509165)
|
||||
- Remove unused code (Jim)
|
||||
- refactor preferences handling (Thomas)
|
||||
- make sure we're valid C89 (Jens) (#518917)
|
||||
- some messing with tool scripts (Thomas)
|
||||
|
||||
Translations
|
||||
Jorge González (es), Claude Paroz (fr), Woodman Tuen (zh_HK), Woodman
|
||||
Tuen (zh_TW)
|
||||
|
||||
2.23.0
|
||||
======
|
||||
|
||||
Thanks to Matthias Clasen, Mikkel Kamstrup Erlandsen, Jim Huang, Thomas Thurman,
|
||||
and Thomas Wood for improvements in this version.
|
||||
|
||||
- the preview widget can draw shaped windows properly! (Thomas W, #460018)
|
||||
- refactored handling of boolean and enumerated gconf preferences;
|
||||
refactoring of string and integer preferences will follow shortly (Thomas T)
|
||||
- Applications asking to move and resize windows at the same time have
|
||||
both their requests granted (Mikkel) (#448183)
|
||||
- Windows marked "skip taskbar" don't appear in the ctrl-alt-tab list
|
||||
(Matthias) (#106249)
|
||||
- fix session management detection (Thomas T) (#328210)
|
||||
- when resizing with the keyboard, the cursor stays on a window edge if
|
||||
you escape, whichever direction you were going (Thomas T) (#436257)
|
||||
- fix major breakage when gconf was turned off in configure (Jim) (#515019)
|
||||
- fix major breakage when verbose was turned off in configure (Jim) (#515152)
|
||||
- fix name of verbose option in help (Thomas T)
|
||||
- various bits of messing around with release scripts (Thomas T)
|
||||
|
||||
Translations
|
||||
Ihar Hrachyshka (be@latin), Ilkka Tuohela (fi), Ignacio Casal Quinteiro (gl),
|
||||
Shankar Prasad (kn), Changwoo Ryu (ko), Nabin Gautam (ne), Wouter Bolsterlee (nl)
|
||||
|
||||
2.21.13
|
||||
=======
|
||||
|
||||
|
@@ -1,10 +1,10 @@
|
||||
AC_PREREQ(2.50)
|
||||
|
||||
m4_define([metacity_major_version], [2])
|
||||
m4_define([metacity_minor_version], [21])
|
||||
m4_define([metacity_minor_version], [23])
|
||||
# Fibonacci sequence for micro version numbering:
|
||||
# 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987
|
||||
m4_define([metacity_micro_version], [13])
|
||||
m4_define([metacity_micro_version], [34])
|
||||
|
||||
m4_define([metacity_version],
|
||||
[metacity_major_version.metacity_minor_version.metacity_micro_version])
|
||||
@@ -120,7 +120,7 @@ if test x$enable_gconf = xyes; then
|
||||
fi
|
||||
|
||||
AC_ARG_ENABLE(verbose-mode,
|
||||
AC_HELP_STRING([--disable-verbose],
|
||||
AC_HELP_STRING([--disable-verbose-mode],
|
||||
[disable metacity's ability to do verbose logging, for embedded/size-sensitive custom builds]),,
|
||||
enable_verbose_mode=yes)
|
||||
|
||||
@@ -426,7 +426,7 @@ case "$METACITY_LIBS" in
|
||||
*)
|
||||
AC_CHECK_LIB(SM, SmcSaveYourselfDone,
|
||||
[AC_CHECK_HEADERS(X11/SM/SMlib.h,
|
||||
METACITY_LIBS="-lSM -lICE $METACITY_LIBS" found_sm=no)],
|
||||
METACITY_LIBS="-lSM -lICE $METACITY_LIBS" found_sm=yes)],
|
||||
, $METACITY_LIBS)
|
||||
;;
|
||||
esac
|
||||
|
195
po/ChangeLog
195
po/ChangeLog
@@ -1,3 +1,174 @@
|
||||
2008-06-16 Alexander Shopov <ash@contact.bg>
|
||||
|
||||
* bg.po: Updated Bulgarian translation by
|
||||
Yavor Doganov <yavor@gnu.org>
|
||||
|
||||
2008-06-15 Jorge Gonzalez <jorgegonz@svn.gnome.org>
|
||||
|
||||
* es.po: Updated Spanish translation
|
||||
|
||||
2008-06-12 Theppitak Karoonboonyanan <thep@linux.thai.net>
|
||||
|
||||
* th.po: Updated Thai translation.
|
||||
|
||||
2008-06-11 Djihed Afifi <djihed@gmail.com>
|
||||
|
||||
* ar.po: Updated Arabic Translation by Khaled Hosny.
|
||||
|
||||
2008-06-11 Yannig Marchegay <yannig@marchegay.org>
|
||||
|
||||
* oc.po: Updated Occitan translation.
|
||||
|
||||
2008-06-08 Kjartan Maraas <kmaraas@gnome.org>
|
||||
|
||||
* nb.po: Updated Norwegian bokmål translation.
|
||||
|
||||
2008-06-01 Clytie Siddall <clytie@riverland.net.au>
|
||||
|
||||
* vi.po: Updated Vietnamese translation.
|
||||
|
||||
2008-05-22 Djihed Afifi <djihed@gmail.com>
|
||||
|
||||
* ar.po: Updated Arabic Translation by Khaled Hosny.
|
||||
|
||||
2008-05-20 Vincent van Adrighem <adrighem@gnome.org>
|
||||
|
||||
* nl.po: Translation updated by Tino Meinen.
|
||||
|
||||
2008-05-19 Djihed Afifi <djihed@gmail.com>
|
||||
|
||||
* ar.po: Updated Arabic Translation by Khaled Hosny.
|
||||
|
||||
2008-05-18 Theppitak Karoonboonyanan <thep@linux.thai.net>
|
||||
|
||||
* th.po: Updated Thai translation.
|
||||
|
||||
2008-05-14 Kjartan Maraas <kmaraas@gnome.org>
|
||||
|
||||
* nb.po: Updated Norwegian bokmål translation.
|
||||
|
||||
2008-05-13 Vincent van Adrighem <adrighem@gnome.org>
|
||||
|
||||
* nl.po: Translation updated by Tino Meinen.
|
||||
|
||||
2008-05-06 Kjartan Maraas <kmaraas@gnome.org>
|
||||
|
||||
* nb.po: Updated Norwegian bokmål translation.
|
||||
|
||||
2008-05-01 Gabor Kelemen <kelemeng@gnome.org>
|
||||
|
||||
* hu.po: Translation updated.
|
||||
|
||||
2008-04-20 Yair Hershkovitz <yairhr@gmail.com>
|
||||
|
||||
* he.po: Updated Hebrew translation.
|
||||
|
||||
2008-04-10 Yair Hershkovitz <yairhr@gmail.com>
|
||||
|
||||
* he.po: Updated Hebrew translation.
|
||||
|
||||
2008-04-04 Eskild Hustvedt <eskildh@gnome.org>
|
||||
|
||||
* nn.po: Updated Norwegian Nynorsk translation
|
||||
|
||||
2008-03-31 Baris Cicek <baris@teamforce.name.tr>
|
||||
|
||||
* tr.po: Updated Turkish translation
|
||||
|
||||
2008-03-30 Jorge Gonzalez <jorgegonz@svn.gnome.org>
|
||||
|
||||
* es.po: Updated Spanish translation
|
||||
|
||||
2008-03-23 Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
|
||||
|
||||
* vi.po: Update Vietnamese translation
|
||||
|
||||
2008-03-20 Abel Cheung <abelcheung@gmail.com>
|
||||
|
||||
* zh_HK.po, zh_TW.po: Typo fix for traditional Chinese translations.
|
||||
|
||||
2008-03-18 Gabor Kelemen <kelemeng@gnome.hu>
|
||||
|
||||
* hu.po: Translation updated
|
||||
|
||||
2008-03-09 Kenneth Nielsen <k.nielsen81@gmail.com>
|
||||
|
||||
* da.po: Updated Danish translation
|
||||
|
||||
2008-03-09 Gabor Kelemen <kelemeng@gnome.hu>
|
||||
|
||||
* hu.po: Translation updated
|
||||
|
||||
2008-03-09 Daniel Nylander <po@danielnylander.se>
|
||||
|
||||
* sv.po: Updated Swedish translation.
|
||||
|
||||
2008-03-09 Vasiliy Faronov <qvvx@yandex.ru>
|
||||
|
||||
* ru.po: Updated Russian translation.
|
||||
|
||||
2008-03-07 Maxim Dziumanenko <dziumanenko@gmail.com>
|
||||
|
||||
* uk.po: Updated Ukrainian translation.
|
||||
|
||||
2008-03-03 Jorge Gonzalez <jorgegonz@svn.gnome.org>
|
||||
|
||||
* es.po: Updated Spanish translation
|
||||
|
||||
2008-03-01 Chao-Hsiung Liao <j_h_liau@yahoo.com.tw>
|
||||
|
||||
* zh_HK.po: Updated Traditional Chinese translation(Hong Kong).
|
||||
* zh_TW.po: Updated Traditional Chinese translation(Taiwan).
|
||||
|
||||
2008-02-27 Stéphane Raimbault <stephane.raimbault@gmail.com>
|
||||
|
||||
* fr.po: Updated French translation (merged from gnome-2-22).
|
||||
|
||||
2008-02-25 Changwoo Ryu <cwryu@debian.org>
|
||||
|
||||
* ko.po: Updated Korean translation.
|
||||
|
||||
2008-02-24 Ilkka Tuohela <hile@iki.fi>
|
||||
|
||||
* fi.po: Updated Finnish translation (bug #518255).
|
||||
|
||||
2008-02-23 Ihar Hrachyshka <booxter@lacinka.org>
|
||||
|
||||
* be@latin.po: Updated Belarusian Latin translation.
|
||||
|
||||
2008-02-20 Ilkka Tuohela <hile@iki.fi>
|
||||
|
||||
* fi.po: Updated Finnish translation.
|
||||
|
||||
2008-02-18 Wouter Bolsterlee <wbolster@svn.gnome.org>
|
||||
|
||||
* nl.po: Updated Dutch translation by Wouter Bolsterlee.
|
||||
|
||||
2008-02-18 Ihar Hrachyshka <booxter@lacinka.org>
|
||||
|
||||
* be@latin.po: Updated Belarusian Latin translation.
|
||||
|
||||
2008-02-15 Runa Bhattacharjee <runabh@gmail.com>
|
||||
|
||||
* kn.po: Added Kannada Translations by Shankar Prasad
|
||||
* LINGUAS: Added Kannada (kn) to the List of Languages
|
||||
|
||||
2008-02-14 Ignacio Casal Quinteiro <nacho.resa@gmail.com>
|
||||
|
||||
* gl.po: Updated Galician Translation.
|
||||
|
||||
2008-02-14 Pawan Chitrakar <chautari@gmail.com>
|
||||
|
||||
* ne.po: Updated Nepali Translation.
|
||||
|
||||
2008-02-14 Ilkka Tuohela <hile@iki.fi>
|
||||
|
||||
* fi.po: Updated Finnish translation.
|
||||
|
||||
2008-02-13 Ilkka Tuohela <hile@iki.fi>
|
||||
|
||||
* fi.po: Updated Finnish translation.
|
||||
|
||||
2008-02-10 Duarte Loreto <happyguy_pt@hotmail.com>
|
||||
|
||||
* pt.po: Updated Portuguese translation.
|
||||
@@ -79,7 +250,7 @@
|
||||
|
||||
* be@latin.po: Updated Belarusian Latin translation.
|
||||
|
||||
2008-01-05 Clytie Siddall <clytie@riverland.net.au>
|
||||
2008-01-05 Clytie Siddall <clytie@riverland.net.au>
|
||||
|
||||
* vi.po: Updated Vietnamese translation.
|
||||
|
||||
@@ -110,7 +281,7 @@
|
||||
|
||||
2007-12-19 Jorge Gonzalez <jorgegonz@svn.gnome.org>
|
||||
|
||||
* es.po: Updated Spanish translation.
|
||||
* es.po: Updated Spanish translation.
|
||||
|
||||
2007-12-17 Daniel Nylander <po@danielnylander.se>
|
||||
|
||||
@@ -122,7 +293,7 @@
|
||||
|
||||
2007-12-10 Jorge Gonzalez <jorgegonz@svn.gnome.org>
|
||||
|
||||
* es.po: Updated Spanish translation, fixes bug #500562 and bug #500831
|
||||
* es.po: Updated Spanish translation, fixes bug #500562 and bug #500831
|
||||
|
||||
2007-12-10 Matej Urbančič <mateju@svn.gnome.org>
|
||||
|
||||
@@ -130,11 +301,11 @@
|
||||
|
||||
2007-12-10 Jorge Gonzalez <jorgegonz@svn.gnome.org>
|
||||
|
||||
* es.po: Updated Spanish translation, fixes bug #500831
|
||||
* es.po: Updated Spanish translation, fixes bug #500831
|
||||
|
||||
2007-12-09 Jorge Gonzalez <jorgegonz@svn.gnome.org>
|
||||
|
||||
* es.po: Updated Spanish translation, fixes bug #500562
|
||||
* es.po: Updated Spanish translation, fixes bug #500562
|
||||
|
||||
2007-12-08 Jakub Friedl <jfriedl@suse.cz>
|
||||
|
||||
@@ -282,7 +453,7 @@
|
||||
|
||||
2007-09-05 Jovan Naumovski <jovan@lugola.net>
|
||||
|
||||
* mk.po: Updated Macedonian translation.
|
||||
* mk.po: Updated Macedonian translation.
|
||||
|
||||
2007-09-03 Clytie Siddall <clytie@riverland.net.au>
|
||||
|
||||
@@ -294,11 +465,11 @@
|
||||
|
||||
2007-09-03 Jovan Naumovski <jovan@lugola.net>
|
||||
|
||||
* mk.po: Updated Macedonian translation.
|
||||
* mk.po: Updated Macedonian translation.
|
||||
|
||||
2007-09-01 Jovan Naumovski <jovan@lugola.net>
|
||||
|
||||
* mk.po: Updated Macedonian translation.
|
||||
* mk.po: Updated Macedonian translation.
|
||||
|
||||
2007-09-01 Stéphane Raimbault <stephane.raimbault@gmail.com>
|
||||
|
||||
@@ -433,7 +604,7 @@
|
||||
|
||||
2007-05-09 Jovan Naumovski <jovan@lugola.net>
|
||||
|
||||
* mk.po: Updated Macedonian translation.
|
||||
* mk.po: Updated Macedonian translation.
|
||||
|
||||
2007-05-2 Djihed Afifi <djihed@gmail.com>
|
||||
|
||||
@@ -1838,7 +2009,7 @@
|
||||
|
||||
2005-04-17 Pauli Virtanen <pauli.virtanen@hut.fi>
|
||||
|
||||
* fi.po: Fix a small mistranslation.
|
||||
* fi.po: Fix a small mistranslation.
|
||||
|
||||
2005-04-09 Christopher Orr <chris@protactin.co.uk>
|
||||
|
||||
@@ -2025,7 +2196,7 @@
|
||||
|
||||
2005-02-06 Pauli Virtanen <pauli.virtanen@hut.fi>
|
||||
|
||||
* fi.po: Updated Finnish translation.
|
||||
* fi.po: Updated Finnish translation.
|
||||
|
||||
2005-02-05 Frank Arnold <farnold@cvs.gnome.org>
|
||||
|
||||
@@ -2640,7 +2811,7 @@
|
||||
|
||||
2004-02-07 Robert Sedak <robert.sedak@sk.htnet.hr>
|
||||
|
||||
* hr.po: Updated Croatian translation.
|
||||
* hr.po: Updated Croatian translation.
|
||||
|
||||
2004-02-08 Changwoo Ryu <cwryu@debian.org>
|
||||
|
||||
|
@@ -38,6 +38,7 @@ is
|
||||
it
|
||||
ja
|
||||
ka
|
||||
kn
|
||||
ko
|
||||
ku
|
||||
lt
|
||||
|
332
po/ar.po
332
po/ar.po
@@ -11,7 +11,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: metacity.HEAD.ar\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2008-01-31 08:09+0000\n"
|
||||
"POT-Creation-Date: 2008-06-11 22:31+0100\n"
|
||||
"PO-Revision-Date: 2008-01-13 01:49+0200\n"
|
||||
"Last-Translator: Khaled Hosny <khaledhosny@eglug.org>\n"
|
||||
"Language-Team: Arabic <doc@arabeyes.org>\n"
|
||||
@@ -35,36 +35,36 @@ msgstr "إدارة النوافذ"
|
||||
msgid "Unknown window information request: %d"
|
||||
msgstr "طلب مجهول لمعلومات نافذة: %d"
|
||||
|
||||
#: ../src/core/delete.c:67 ../src/core/delete.c:94
|
||||
#: ../src/core/delete.c:70 ../src/core/delete.c:97
|
||||
#: ../src/ui/metacity-dialog.c:50 ../src/ui/theme-parser.c:481
|
||||
#, c-format
|
||||
msgid "Could not parse \"%s\" as an integer"
|
||||
msgstr "تعذّر تحليل \"%s\" كعدد صحيح"
|
||||
|
||||
#: ../src/core/delete.c:74 ../src/core/delete.c:101
|
||||
#: ../src/core/delete.c:77 ../src/core/delete.c:104
|
||||
#: ../src/ui/metacity-dialog.c:57 ../src/ui/theme-parser.c:490
|
||||
#: ../src/ui/theme-parser.c:545
|
||||
#, c-format
|
||||
msgid "Did not understand trailing characters \"%s\" in string \"%s\""
|
||||
msgstr "لم أفهم المحارف المتدلية \"%s\" في السلسلة \"%s\""
|
||||
|
||||
#: ../src/core/delete.c:132
|
||||
#: ../src/core/delete.c:135
|
||||
#, c-format
|
||||
msgid "Failed to parse message \"%s\" from dialog process\n"
|
||||
msgstr "فشل تحليل الرسالة \"%s\" من عملية الحوار\n"
|
||||
|
||||
#: ../src/core/delete.c:267
|
||||
#: ../src/core/delete.c:253
|
||||
#, c-format
|
||||
msgid "Error reading from dialog display process: %s\n"
|
||||
msgstr "خطأ أثناء القراءة من عملية عرض الحوار: %s\n"
|
||||
|
||||
#: ../src/core/delete.c:350
|
||||
#: ../src/core/delete.c:336
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Error launching metacity-dialog to ask about killing an application: %s\n"
|
||||
msgstr "خطأ في إطلاق حوار مِتسِتي للسؤال حول قتل تطبيق: %s\n"
|
||||
|
||||
#: ../src/core/delete.c:459
|
||||
#: ../src/core/delete.c:445
|
||||
#, c-format
|
||||
msgid "Failed to get hostname: %s\n"
|
||||
msgstr "فشل تلقي اسم المضيف: %s\n"
|
||||
@@ -74,12 +74,12 @@ msgstr "فشل تلقي اسم المضيف: %s\n"
|
||||
msgid "Missing %s extension required for compositing"
|
||||
msgstr "الامتداد %s مفقود، لكنه مطلوب للتمازج"
|
||||
|
||||
#: ../src/core/display.c:438
|
||||
#: ../src/core/display.c:334
|
||||
#, c-format
|
||||
msgid "Failed to open X Window System display '%s'\n"
|
||||
msgstr "فشل فتح عرض نظام نوافذ X '%s'\n"
|
||||
|
||||
#: ../src/core/errors.c:271
|
||||
#: ../src/core/errors.c:272
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Lost connection to the display '%s';\n"
|
||||
@@ -87,37 +87,37 @@ msgid ""
|
||||
"the window manager.\n"
|
||||
msgstr ""
|
||||
"فقدت الاتصال بالعرض '%s';\n"
|
||||
"من المحتمل ان خادم X اغلق أو انك\n"
|
||||
"من المحتمل ان خادوم X اغلق أو انك\n"
|
||||
"قتلت/دمرت مدير النوافذ.\n"
|
||||
|
||||
#: ../src/core/errors.c:278
|
||||
#: ../src/core/errors.c:279
|
||||
#, c-format
|
||||
msgid "Fatal IO error %d (%s) on display '%s'.\n"
|
||||
msgstr "خطأ IO فادح %d (%s) على الشاشة '%s'.\n"
|
||||
|
||||
#: ../src/core/keybindings.c:1087
|
||||
#: ../src/core/keybindings.c:1090
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Some other program is already using the key %s with modifiers %x as a "
|
||||
"binding\n"
|
||||
msgstr "يستعمل برنامج آخر المفتاح %s بالفعل مع المغيرين %x كرابط\n"
|
||||
|
||||
#: ../src/core/keybindings.c:2733
|
||||
#: ../src/core/keybindings.c:2729
|
||||
#, c-format
|
||||
msgid "Error launching metacity-dialog to print an error about a command: %s\n"
|
||||
msgstr "خطأ في إطلاق حوار مِتسِتي لطبع خطأ حول الأمر: %s\n"
|
||||
|
||||
#: ../src/core/keybindings.c:2838
|
||||
#: ../src/core/keybindings.c:2834
|
||||
#, c-format
|
||||
msgid "No command %d has been defined.\n"
|
||||
msgstr "لم يُعرّف أمر %d.\n"
|
||||
|
||||
#: ../src/core/keybindings.c:3866
|
||||
#: ../src/core/keybindings.c:3862
|
||||
#, c-format
|
||||
msgid "No terminal command has been defined.\n"
|
||||
msgstr "لم يُعرّف أمر طرفيّة.\n"
|
||||
|
||||
#: ../src/core/main.c:112
|
||||
#: ../src/core/main.c:115
|
||||
#, fuzzy, c-format
|
||||
msgid ""
|
||||
"metacity %s\n"
|
||||
@@ -131,83 +131,85 @@ msgstr ""
|
||||
"هذا برنامج حر، راجع المصدر لشروط النسخ. لا يوجد أي ضمان، و لا ضمان بيع و لا "
|
||||
"مناسبة لأي هدف.\n"
|
||||
|
||||
#: ../src/core/main.c:239
|
||||
#: ../src/core/main.c:242
|
||||
msgid "Disable connection to session manager"
|
||||
msgstr "عطّل الإتصال بمدير الجلسة"
|
||||
msgstr "عطّل الاتصال بمدير الجلسة"
|
||||
|
||||
#: ../src/core/main.c:245
|
||||
#: ../src/core/main.c:248
|
||||
msgid "Replace the running window manager with Metacity"
|
||||
msgstr "استبدل مدير النوافذ الذي يعمل بمِتسِتي"
|
||||
|
||||
#: ../src/core/main.c:251
|
||||
#: ../src/core/main.c:254
|
||||
msgid "Specify session management ID"
|
||||
msgstr "حدّد رقم هويّة إدارة الجلسة"
|
||||
|
||||
#: ../src/core/main.c:256
|
||||
#: ../src/core/main.c:259
|
||||
msgid "X Display to use"
|
||||
msgstr "معراض س الذي سيستعمل"
|
||||
|
||||
#: ../src/core/main.c:262
|
||||
#: ../src/core/main.c:265
|
||||
msgid "Initialize session from savefile"
|
||||
msgstr "ابدأ الجلسة من ملف محفوظ"
|
||||
|
||||
#: ../src/core/main.c:268
|
||||
#: ../src/core/main.c:271
|
||||
msgid "Print version"
|
||||
msgstr "اطبع الإصدارة"
|
||||
|
||||
#: ../src/core/main.c:274
|
||||
#: ../src/core/main.c:277
|
||||
msgid "Make X calls synchronous"
|
||||
msgstr "اجعل نداءات س متزامنة"
|
||||
|
||||
#: ../src/core/main.c:425
|
||||
#: ../src/core/main.c:428
|
||||
#, c-format
|
||||
msgid "Failed to scan themes directory: %s\n"
|
||||
msgstr "فشلت قراءة دليل السِمات : %s\n"
|
||||
|
||||
#: ../src/core/main.c:441
|
||||
#: ../src/core/main.c:444
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Could not find a theme! Be sure %s exists and contains the usual themes.\n"
|
||||
msgstr "تعذّر ايجاد سِمة! تأكد من وجود %s و احتواءه على السِمات معتادة.\n"
|
||||
|
||||
#: ../src/core/main.c:513
|
||||
#: ../src/core/main.c:500
|
||||
#, c-format
|
||||
msgid "Failed to restart: %s\n"
|
||||
msgstr "فشلت اعادة التشغيل: %s\n"
|
||||
|
||||
#: ../src/core/prefs.c:434
|
||||
#, c-format
|
||||
msgid "Type of %s was not integer"
|
||||
msgstr "نوع %s لم يكن عددا صحيحا"
|
||||
|
||||
#: ../src/core/prefs.c:572 ../src/core/prefs.c:600 ../src/core/prefs.c:616
|
||||
#: ../src/core/prefs.c:632 ../src/core/prefs.c:648 ../src/core/prefs.c:664
|
||||
#: ../src/core/prefs.c:680 ../src/core/prefs.c:696 ../src/core/prefs.c:716
|
||||
#: ../src/core/prefs.c:732 ../src/core/prefs.c:748 ../src/core/prefs.c:766
|
||||
#: ../src/core/prefs.c:782 ../src/core/prefs.c:801 ../src/core/prefs.c:817
|
||||
#: ../src/core/prefs.c:852 ../src/core/prefs.c:868 ../src/core/prefs.c:885
|
||||
#: ../src/core/prefs.c:901 ../src/core/prefs.c:917 ../src/core/prefs.c:933
|
||||
#: ../src/core/prefs.c:949 ../src/core/prefs.c:964 ../src/core/prefs.c:979
|
||||
#: ../src/core/prefs.c:994 ../src/core/prefs.c:1010 ../src/core/prefs.c:1026
|
||||
#: ../src/core/prefs.c:1042 ../src/core/prefs.c:1058
|
||||
#, c-format
|
||||
msgid "GConf key \"%s\" is set to an invalid type\n"
|
||||
msgstr "مفتاح GConf \"%s\" مضبوط لنوع غير صحيح\n"
|
||||
|
||||
#: ../src/core/prefs.c:1103
|
||||
#, c-format
|
||||
msgid ""
|
||||
"\"%s\" found in configuration database is not a valid value for mouse button "
|
||||
"modifier\n"
|
||||
msgstr ""
|
||||
"\"%s\" الموجود في قاعدة بايانات الإعدادات ليس قيمة سليمة لمغير أزرار الفأرة\n"
|
||||
|
||||
#: ../src/core/prefs.c:1127 ../src/core/prefs.c:1148 ../src/core/prefs.c:1705
|
||||
#.
|
||||
#. * We found it, but it was invalid. Complain.
|
||||
#. *
|
||||
#. * FIXME: This replicates the original behaviour, but in the future
|
||||
#. * we might consider reverting invalid keys to their original values.
|
||||
#. * (We know the old value, so we can look up a suitable string in
|
||||
#. * the symtab.)
|
||||
#.
|
||||
#: ../src/core/prefs.c:450 ../src/core/prefs.c:564
|
||||
#, c-format
|
||||
msgid "GConf key '%s' is set to an invalid value\n"
|
||||
msgstr "مفتاح GConf '%s' مضبوط لقيمة غير صحيحة\n"
|
||||
|
||||
#: ../src/core/prefs.c:1277
|
||||
#: ../src/core/prefs.c:537 ../src/core/prefs.c:611 ../src/core/prefs.c:659
|
||||
#: ../src/core/prefs.c:978 ../src/core/prefs.c:996 ../src/core/prefs.c:1012
|
||||
#: ../src/core/prefs.c:1031 ../src/core/prefs.c:1047 ../src/core/prefs.c:1064
|
||||
#: ../src/core/prefs.c:1081 ../src/core/prefs.c:1097 ../src/core/prefs.c:1113
|
||||
#, c-format
|
||||
msgid "GConf key \"%s\" is set to an invalid type\n"
|
||||
msgstr "مفتاح GConf \"%s\" مضبوط لنوع غير صحيح\n"
|
||||
|
||||
#: ../src/core/prefs.c:873
|
||||
#, c-format
|
||||
msgid "Type of %s was not integer"
|
||||
msgstr "نوع %s لم يكن عددا صحيحا"
|
||||
|
||||
#: ../src/core/prefs.c:1182
|
||||
msgid ""
|
||||
"Workarounds for broken applications disabled. Some applications may not "
|
||||
"behave properly.\n"
|
||||
msgstr ""
|
||||
"عطّلت الحلول الجزئيّة للتطبيقات المعطوبة . ربما لن تتصرف بعض التطبيقات "
|
||||
"بسلامة.\n"
|
||||
|
||||
#: ../src/core/prefs.c:1237
|
||||
#, c-format
|
||||
msgid ""
|
||||
"%d stored in GConf key %s is not a reasonable cursor_size; must be in the "
|
||||
@@ -216,12 +218,20 @@ msgstr ""
|
||||
"%d المحفوظ في مفتاح GConf %s ليس عددا معقولا لمساحات العمل، يجب أن يكون بين "
|
||||
"1 و 128\n"
|
||||
|
||||
#: ../src/core/prefs.c:1357
|
||||
#: ../src/core/prefs.c:1263
|
||||
#, c-format
|
||||
msgid "Could not parse font description \"%s\" from GConf key %s\n"
|
||||
msgstr "لا يمكن تحليل وصف الخط \"%s\" من مفتاح GConf %s\n"
|
||||
|
||||
#: ../src/core/prefs.c:1599
|
||||
#: ../src/core/prefs.c:1323
|
||||
#, c-format
|
||||
msgid ""
|
||||
"\"%s\" found in configuration database is not a valid value for mouse button "
|
||||
"modifier\n"
|
||||
msgstr ""
|
||||
"\"%s\" الموجود في قاعدة بايانات الإعدادات ليس قيمة سليمة لمغير أزرار الفأرة\n"
|
||||
|
||||
#: ../src/core/prefs.c:1602
|
||||
#, c-format
|
||||
msgid ""
|
||||
"%d stored in GConf key %s is not a reasonable number of workspaces, current "
|
||||
@@ -230,30 +240,22 @@ msgstr ""
|
||||
"%d المحفوظ في مفتاح GConf %s ليس عدد معقول لمساحات العمل، الحدالأقصى الحالي "
|
||||
"هو %d\n"
|
||||
|
||||
#: ../src/core/prefs.c:1659
|
||||
msgid ""
|
||||
"Workarounds for broken applications disabled. Some applications may not "
|
||||
"behave properly.\n"
|
||||
msgstr ""
|
||||
"عطّلت الحلول الجزئيّة للتطبيقات المعطوبة . ربما لن تتصرف بعض التطبيقات "
|
||||
"بسلامة.\n"
|
||||
|
||||
#: ../src/core/prefs.c:1732
|
||||
#: ../src/core/prefs.c:1646
|
||||
#, c-format
|
||||
msgid "%d stored in GConf key %s is out of range 0 to %d\n"
|
||||
msgstr "%d المحفوظ في مفتاح GConf %s خارج المدى من 0 إلى %d\n"
|
||||
|
||||
#: ../src/core/prefs.c:1881
|
||||
#: ../src/core/prefs.c:1777
|
||||
#, c-format
|
||||
msgid "Error setting number of workspaces to %d: %s\n"
|
||||
msgstr "خطأ عند تعيين عدد مساحات العمل لـ %d: %s\n"
|
||||
|
||||
#: ../src/core/prefs.c:2246 ../src/core/prefs.c:2780 ../src/ui/menu.c:199
|
||||
#: ../src/core/prefs.c:2142 ../src/core/prefs.c:2654
|
||||
#, c-format
|
||||
msgid "Workspace %d"
|
||||
msgstr "مساحة العمل %d"
|
||||
|
||||
#: ../src/core/prefs.c:2276 ../src/core/prefs.c:2446
|
||||
#: ../src/core/prefs.c:2172 ../src/core/prefs.c:2345
|
||||
#, c-format
|
||||
msgid ""
|
||||
"\"%s\" found in configuration database is not a valid value for keybinding "
|
||||
@@ -262,17 +264,17 @@ msgstr ""
|
||||
"\"%s\" الموجود في قاعدة بيانات الإعدادات ليس قيمة سليمة لارتباط المفتاح \"%s"
|
||||
"\"\n"
|
||||
|
||||
#: ../src/core/prefs.c:2861
|
||||
#: ../src/core/prefs.c:2735
|
||||
#, c-format
|
||||
msgid "Error setting name for workspace %d to \"%s\": %s\n"
|
||||
msgstr "خطأ عند تعيين اسم مساحة العمل %d لـ \"%s\": %s\n"
|
||||
|
||||
#: ../src/core/screen.c:410
|
||||
#: ../src/core/screen.c:350
|
||||
#, c-format
|
||||
msgid "Screen %d on display '%s' is invalid\n"
|
||||
msgstr "الشاشة %d على العرض '%s' غير صحيحة\n"
|
||||
|
||||
#: ../src/core/screen.c:426
|
||||
#: ../src/core/screen.c:366
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Screen %d on display \"%s\" already has a window manager; try using the --"
|
||||
@@ -281,28 +283,28 @@ msgstr ""
|
||||
"الشاشة %d على العرض \"%s\" لها مدير نوافذ بالفعل، حاول استعمال خيار التبديل "
|
||||
"--replace لتحُلّ محلّ مدير النوافذ الحالي.\n"
|
||||
|
||||
#: ../src/core/screen.c:453
|
||||
#: ../src/core/screen.c:393
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Could not acquire window manager selection on screen %d display \"%s\"\n"
|
||||
msgstr "لا يمكن الحصول على اختيار مدير النوافذ على الشاشة %d العرض \"%s\"\n"
|
||||
|
||||
#: ../src/core/screen.c:511
|
||||
#: ../src/core/screen.c:451
|
||||
#, c-format
|
||||
msgid "Screen %d on display \"%s\" already has a window manager\n"
|
||||
msgstr "الشاشة %d على العرض \"%s\" لها مدير نوافذ بالفعل\n"
|
||||
|
||||
#: ../src/core/screen.c:721
|
||||
#: ../src/core/screen.c:661
|
||||
#, c-format
|
||||
msgid "Could not release screen %d on display \"%s\"\n"
|
||||
msgstr "لا يمكن ترك الشاشة %d على العرض \"%s\"\n"
|
||||
|
||||
#: ../src/core/session.c:826 ../src/core/session.c:833
|
||||
#: ../src/core/session.c:837 ../src/core/session.c:844
|
||||
#, c-format
|
||||
msgid "Could not create directory '%s': %s\n"
|
||||
msgstr "لا يمكن انشاء الدليل '%s': %s\n"
|
||||
|
||||
#: ../src/core/session.c:843
|
||||
#: ../src/core/session.c:854
|
||||
#, c-format
|
||||
msgid "Could not open session file '%s' for writing: %s\n"
|
||||
msgstr "لا يمكن فتح ملف الجلسة '%s' لكتابة: %s\n"
|
||||
@@ -317,52 +319,53 @@ msgstr "خطأ عند كتابة ملف الجلسة '%s': %s\n"
|
||||
msgid "Error closing session file '%s': %s\n"
|
||||
msgstr "خطأ عند غلق ملف الجلسة '%s': %s\n"
|
||||
|
||||
#: ../src/core/session.c:1075
|
||||
#. oh, just give up
|
||||
#: ../src/core/session.c:1093
|
||||
#, c-format
|
||||
msgid "Failed to read saved session file %s: %s\n"
|
||||
msgstr "خطأ عند قراءة ملف الجلسة المحفوظ '%s': %s\n"
|
||||
|
||||
#: ../src/core/session.c:1110
|
||||
#: ../src/core/session.c:1132
|
||||
#, c-format
|
||||
msgid "Failed to parse saved session file: %s\n"
|
||||
msgstr "خطأ عند تحليل ملف الجلسة المحفوظ: %s\n"
|
||||
|
||||
#: ../src/core/session.c:1159
|
||||
#: ../src/core/session.c:1181
|
||||
#, c-format
|
||||
msgid "<metacity_session> attribute seen but we already have the session ID"
|
||||
msgstr "صفة <metacity_session> مرئية لكن لدينا هوية الجلسة بالفعل"
|
||||
|
||||
#: ../src/core/session.c:1172
|
||||
#: ../src/core/session.c:1194
|
||||
#, c-format
|
||||
msgid "Unknown attribute %s on <metacity_session> element"
|
||||
msgstr "صفة مجهولة %s على عنصر <metacity_session>"
|
||||
|
||||
#: ../src/core/session.c:1189
|
||||
#: ../src/core/session.c:1211
|
||||
#, c-format
|
||||
msgid "nested <window> tag"
|
||||
msgstr "وسْم <window> معشّش"
|
||||
|
||||
#: ../src/core/session.c:1247 ../src/core/session.c:1279
|
||||
#: ../src/core/session.c:1269 ../src/core/session.c:1301
|
||||
#, c-format
|
||||
msgid "Unknown attribute %s on <window> element"
|
||||
msgstr "صفة مجهولة %s على عنصر <window>"
|
||||
|
||||
#: ../src/core/session.c:1351
|
||||
#: ../src/core/session.c:1373
|
||||
#, c-format
|
||||
msgid "Unknown attribute %s on <maximized> element"
|
||||
msgstr "صفة مجهولة %s على عنصر <maximized>"
|
||||
|
||||
#: ../src/core/session.c:1411
|
||||
#: ../src/core/session.c:1433
|
||||
#, c-format
|
||||
msgid "Unknown attribute %s on <geometry> element"
|
||||
msgstr "صفة مجهولة %s على عنصر <geometry>"
|
||||
|
||||
#: ../src/core/session.c:1431
|
||||
#: ../src/core/session.c:1453
|
||||
#, c-format
|
||||
msgid "Unknown element %s"
|
||||
msgstr "عنصر مجهول %s"
|
||||
|
||||
#: ../src/core/session.c:1868
|
||||
#: ../src/core/session.c:1879
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Error launching metacity-dialog to warn about apps that don't support "
|
||||
@@ -370,59 +373,59 @@ msgid ""
|
||||
msgstr ""
|
||||
"خطأ عند إطلاق حوار مِتسِتي للتحذير من تطبيقات التي لا تدعم إدارة الجلسة: %s\n"
|
||||
|
||||
#: ../src/core/util.c:98
|
||||
#: ../src/core/util.c:101
|
||||
#, c-format
|
||||
msgid "Failed to open debug log: %s\n"
|
||||
msgstr "فشل فتح سِجِلّ التنقيح: %s\n"
|
||||
|
||||
#: ../src/core/util.c:108
|
||||
#: ../src/core/util.c:111
|
||||
#, c-format
|
||||
msgid "Failed to fdopen() log file %s: %s\n"
|
||||
msgstr "فشل fdopen() ملف الرسائل %s: %s\n"
|
||||
|
||||
#: ../src/core/util.c:114
|
||||
#: ../src/core/util.c:117
|
||||
#, c-format
|
||||
msgid "Opened log file %s\n"
|
||||
msgstr "فُتِح ملف السِّجِل %s\n"
|
||||
|
||||
#: ../src/core/util.c:133 ../src/tools/metacity-message.c:176
|
||||
#: ../src/core/util.c:136 ../src/tools/metacity-message.c:176
|
||||
#, c-format
|
||||
msgid "Metacity was compiled without support for verbose mode\n"
|
||||
msgstr "جُمِّع مِتسِتي دون دعم للنمط المطنب\n"
|
||||
|
||||
#: ../src/core/util.c:231
|
||||
#: ../src/core/util.c:236
|
||||
msgid "Window manager: "
|
||||
msgstr "مدير النوافذ: "
|
||||
|
||||
#: ../src/core/util.c:379
|
||||
#: ../src/core/util.c:388
|
||||
msgid "Bug in window manager: "
|
||||
msgstr "علّة في مدير النوافذ: "
|
||||
|
||||
#: ../src/core/util.c:408
|
||||
#: ../src/core/util.c:421
|
||||
msgid "Window manager warning: "
|
||||
msgstr "تحذير مدير النوافذ: "
|
||||
|
||||
#: ../src/core/util.c:432
|
||||
#: ../src/core/util.c:449
|
||||
msgid "Window manager error: "
|
||||
msgstr "خطأ مدير النوافذ: "
|
||||
|
||||
#: ../src/core/window-props.c:192
|
||||
#: ../src/core/window-props.c:195
|
||||
#, c-format
|
||||
msgid "Application set a bogus _NET_WM_PID %lu\n"
|
||||
msgstr "ضبط التطبيق رمز NET_WM_PID غير مفهوم %lu\n"
|
||||
|
||||
#: ../src/core/window-props.c:324
|
||||
#: ../src/core/window-props.c:327
|
||||
#, c-format
|
||||
msgid "%s (on %s)"
|
||||
msgstr "%s (على %s)"
|
||||
|
||||
#: ../src/core/window-props.c:1406
|
||||
#: ../src/core/window-props.c:1409
|
||||
#, c-format
|
||||
msgid "Invalid WM_TRANSIENT_FOR window 0x%lx specified for %s.\n"
|
||||
msgstr "نافذة WM_TRANSIENT_FOR 0x%lx غير صحيحة ل %s.\n"
|
||||
|
||||
#. first time through
|
||||
#: ../src/core/window.c:5650
|
||||
#: ../src/core/window.c:5674
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Window %s sets SM_CLIENT_ID on itself, instead of on the WM_CLIENT_LEADER "
|
||||
@@ -438,7 +441,7 @@ msgstr ""
|
||||
#. * MWM but not WM_NORMAL_HINTS are basically broken. We complain
|
||||
#. * about these apps but make them work.
|
||||
#.
|
||||
#: ../src/core/window.c:6215
|
||||
#: ../src/core/window.c:6239
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Window %s sets an MWM hint indicating it isn't resizable, but sets min size %"
|
||||
@@ -514,13 +517,15 @@ msgid "Arrangement of buttons on the titlebar"
|
||||
msgstr "تنظيم الأزرار على شريط العنوان"
|
||||
|
||||
#: ../src/metacity.schemas.in.h:8
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
"Arrangement of buttons on the titlebar. The value should be a string, such "
|
||||
"as \"menu:minimize,maximize,close\"; the colon separates the left corner of "
|
||||
"the window from the right corner, and the button names are comma-separated. "
|
||||
"Duplicate buttons are not allowed. Unknown button names are silently ignored "
|
||||
"so that buttons can be added in future metacity versions without breaking "
|
||||
"older versions."
|
||||
"as \"menu:minimize,maximize,spacer,close\"; the colon separates the left "
|
||||
"corner of the window from the right corner, and the button names are comma-"
|
||||
"separated. Duplicate buttons are not allowed. Unknown button names are "
|
||||
"silently ignored so that buttons can be added in future metacity versions "
|
||||
"without breaking older versions. A special spacer tag can be used to insert "
|
||||
"some space between two adjacent buttons."
|
||||
msgstr ""
|
||||
"تنظيم الأزرار على شريط العنوان. يجب أن تكون القيمة سلسلة،مثل\"menu:minimize,"
|
||||
"maximize,close\" ،الفاصل يفصل الجانب الأيسر للنافذة عن الجانب الأيمن، كما "
|
||||
@@ -619,7 +624,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"إذا ضبط لصحيح، فسيعطي مِتسِتي المستخدم ردودا أقل ، بإستخدام إطارات شبكية تتجنّب "
|
||||
"الرسوم المتحركة أو بطرق أخرى. هذا تخفيض هام لقابلية الإستخدام للعديد من "
|
||||
"المستخدمين، لكنه سيسمح يتطبيقات موروثة و خوادم الشاشات الطرفية أن تعمل عوض "
|
||||
"المستخدمين، لكنه سيسمح يتطبيقات موروثة و خواديم الشاشات الطرفية أن تعمل عوض "
|
||||
"أن تكون غير عمليّة."
|
||||
|
||||
#: ../src/metacity.schemas.in.h:25
|
||||
@@ -2146,12 +2151,16 @@ msgstr ""
|
||||
"مفتاحٍ لهذا الإجراء."
|
||||
|
||||
#: ../src/metacity.schemas.in.h:187
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
"This option determines the effects of double-clicking on the title bar. "
|
||||
"Current valid options are 'toggle_shade', which will shade/unshade the "
|
||||
"window, 'toggle_maximize' which will maximize/unmaximize the window, "
|
||||
"'minimize' which will minimize the window, and 'none' which will not do "
|
||||
"anything."
|
||||
"'toggle_maximize_horizontally' and 'toggle_maximize_vertically' which will "
|
||||
"maximize/unmaximize the window in that direction only, 'minimize' which will "
|
||||
"minimize the window, 'shade' which will roll the window up, 'menu' which "
|
||||
"will display the window menu, 'lower' which will put the window behind all "
|
||||
"the others, and 'none' which will not do anything."
|
||||
msgstr ""
|
||||
"هذا الخيار يحدد نتائج النقر المزدوج على شريط العنواين. الخيارات الممكنة "
|
||||
"حاليا هي 'toggle_shaded'، مما سيخفي/يلغي إخفاء النافذة، 'toggle_maximized' "
|
||||
@@ -2159,12 +2168,16 @@ msgstr ""
|
||||
"أي شيء."
|
||||
|
||||
#: ../src/metacity.schemas.in.h:188
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
"This option determines the effects of middle-clicking on the title bar. "
|
||||
"Current valid options are 'toggle_shade', which will shade/unshade the "
|
||||
"window, 'toggle_maximize' which will maximize/unmaximize the window, "
|
||||
"'minimize' which will minimize the window, and 'none' which will not do "
|
||||
"anything."
|
||||
"'toggle_maximize_horizontally' and 'toggle_maximize_vertically' which will "
|
||||
"maximize/unmaximize the window in that direction only, 'minimize' which will "
|
||||
"minimize the window, 'shade' which will roll the window up, 'menu' which "
|
||||
"will display the window menu, 'lower' which will put the window behind all "
|
||||
"the others, and 'none' which will not do anything."
|
||||
msgstr ""
|
||||
"هذا الخيار يحدد نتائج النقر الأوسط على شريط العنواين. الخيارات المقبولة "
|
||||
"حاليا هي 'toggle_shaded'، مما سيخفي/يلغي إخفاء النافذة، 'toggle_maximized' "
|
||||
@@ -2172,12 +2185,16 @@ msgstr ""
|
||||
"أي شيء."
|
||||
|
||||
#: ../src/metacity.schemas.in.h:189
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
"This option determines the effects of right-clicking on the title bar. "
|
||||
"Current valid options are 'toggle_shade', which will shade/unshade the "
|
||||
"window, 'toggle_maximize' which will maximize/unmaximize the window, "
|
||||
"'minimize' which will minimize the window, and 'none' which will not do "
|
||||
"anything."
|
||||
"'toggle_maximize_horizontally' and 'toggle_maximize_vertically' which will "
|
||||
"maximize/unmaximize the window in that direction only, 'minimize' which will "
|
||||
"minimize the window, 'shade' which will roll the window up, 'menu' which "
|
||||
"will display the window menu, 'lower' which will put the window behind all "
|
||||
"the others, and 'none' which will not do anything."
|
||||
msgstr ""
|
||||
"هذا الخيار يحدد نتائج النقر الأيمن على شريط العنواين. الخيارات الممكنة حاليا "
|
||||
"هي 'toggle_shaded'، مما سيخفي/يلغي إخفاء النافذة، 'toggle_maximized' مما "
|
||||
@@ -2374,17 +2391,22 @@ msgstr "انقل لمساحة العمل إلى الأ_سفل"
|
||||
msgid "_Close"
|
||||
msgstr "ا_غلق"
|
||||
|
||||
#: ../src/ui/menu.c:208
|
||||
#: ../src/ui/menu.c:203
|
||||
#, fuzzy, c-format
|
||||
msgid "Workspace %d%n"
|
||||
msgstr "مساحة العمل %d"
|
||||
|
||||
#: ../src/ui/menu.c:213
|
||||
#, c-format
|
||||
msgid "Workspace 1_0"
|
||||
msgstr "مساحة العمل 1_0"
|
||||
|
||||
#: ../src/ui/menu.c:210
|
||||
#: ../src/ui/menu.c:215
|
||||
#, c-format
|
||||
msgid "Workspace %s%d"
|
||||
msgstr "مساحة العمل %s%d"
|
||||
|
||||
#: ../src/ui/menu.c:390
|
||||
#: ../src/ui/menu.c:395
|
||||
msgid "Move to Another _Workspace"
|
||||
msgstr "انقل ل_مساحة عمل أخرى"
|
||||
|
||||
@@ -2595,7 +2617,7 @@ msgstr "لا صفة \"%s\" على العنصر <%s>"
|
||||
#: ../src/ui/theme-parser.c:1032 ../src/ui/theme-parser.c:1143
|
||||
#, c-format
|
||||
msgid "<%s> name \"%s\" used a second time"
|
||||
msgstr "<%s> استُعمل الإسم \"%s\" للمرّة الثانية"
|
||||
msgstr "<%s> استُعمل الاسم \"%s\" للمرّة الثانية"
|
||||
|
||||
#: ../src/ui/theme-parser.c:931 ../src/ui/theme-parser.c:1044
|
||||
#: ../src/ui/theme-parser.c:1155
|
||||
@@ -3223,7 +3245,7 @@ msgid ""
|
||||
"frame)\n"
|
||||
msgstr ""
|
||||
"دفعت %d إطارات في %g ثوان بإتجاه العميل (%g ملي ثانية لكل إطار) و %g ثواني "
|
||||
"بوقت ساعة حائطية مع مصادر خادم X (%g ملي ثانية لكل إطار)\n"
|
||||
"بوقت ساعة حائطية مع مصادر خادوم X (%g ملي ثانية لكل إطار)\n"
|
||||
|
||||
#: ../src/ui/theme-viewer.c:1225
|
||||
msgid "position expression test returned TRUE but set error"
|
||||
@@ -3298,12 +3320,12 @@ msgstr "النسبة الجانبية للزر %g غير معقولة"
|
||||
msgid "Frame geometry does not specify size of buttons"
|
||||
msgstr "هندسة الاطار لا تخصص حجم الأزرار"
|
||||
|
||||
#: ../src/ui/theme.c:988
|
||||
#: ../src/ui/theme.c:1022
|
||||
#, c-format
|
||||
msgid "Gradients should have at least two colors"
|
||||
msgstr "يجب أن يكون للتّدرُّجات لونان على الأقل"
|
||||
|
||||
#: ../src/ui/theme.c:1114
|
||||
#: ../src/ui/theme.c:1148
|
||||
#, c-format
|
||||
msgid ""
|
||||
"GTK color specification must have the state in brackets, e.g. gtk:fg[NORMAL] "
|
||||
@@ -3312,7 +3334,7 @@ msgstr ""
|
||||
"يجب أن تكون حالة تخصيصات ألوان GTK في قوسان قائمان، مثال gtk:fg[NORMAL] "
|
||||
"NORMAL هنا هو الحالة، لا يمكن تحليل \"%s\""
|
||||
|
||||
#: ../src/ui/theme.c:1128
|
||||
#: ../src/ui/theme.c:1162
|
||||
#, c-format
|
||||
msgid ""
|
||||
"GTK color specification must have a close bracket after the state, e.g. gtk:"
|
||||
@@ -3321,149 +3343,149 @@ msgstr ""
|
||||
"يحب أن يكون لتخصيص حالة ألوان GTK قوس غلق قائم بعد الحالة/ مثال gtk:fg"
|
||||
"[NORMAL]، NORMAL هنا هو الحالة، لا يمكن تحليل \"%s\""
|
||||
|
||||
#: ../src/ui/theme.c:1139
|
||||
#: ../src/ui/theme.c:1173
|
||||
#, c-format
|
||||
msgid "Did not understand state \"%s\" in color specification"
|
||||
msgstr "لم تفهم الحالة \"%s\" في تخصيص الألوان"
|
||||
|
||||
#: ../src/ui/theme.c:1152
|
||||
#: ../src/ui/theme.c:1186
|
||||
#, c-format
|
||||
msgid "Did not understand color component \"%s\" in color specification"
|
||||
msgstr "لم يفهم جزء اللون \"%s\" في تخصيص اللون"
|
||||
|
||||
#: ../src/ui/theme.c:1182
|
||||
#: ../src/ui/theme.c:1216
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Blend format is \"blend/bg_color/fg_color/alpha\", \"%s\" does not fit the "
|
||||
"format"
|
||||
msgstr "تهيئة الخلط \"blend/bg_color/fg_color/alpha\"، \"%s\"لا يناسب التهيئة"
|
||||
|
||||
#: ../src/ui/theme.c:1193
|
||||
#: ../src/ui/theme.c:1227
|
||||
#, c-format
|
||||
msgid "Could not parse alpha value \"%s\" in blended color"
|
||||
msgstr "لا يمكن تحليل قيمة الشفافية \"%s\" في اللون المخلط"
|
||||
|
||||
#: ../src/ui/theme.c:1203
|
||||
#: ../src/ui/theme.c:1237
|
||||
#, c-format
|
||||
msgid "Alpha value \"%s\" in blended color is not between 0.0 and 1.0"
|
||||
msgstr "قيمة الشفافية \"%s\" في اللون المخلوط ليست بين 0.0 و 1.0"
|
||||
|
||||
#: ../src/ui/theme.c:1251
|
||||
#: ../src/ui/theme.c:1284
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Shade format is \"shade/base_color/factor\", \"%s\" does not fit the format"
|
||||
msgstr ""
|
||||
"تهيئة التظليل هي \"تظليل/اللون_الأساسي/العامل\"، \"%s\" لا يناسب التهيئة"
|
||||
|
||||
#: ../src/ui/theme.c:1262
|
||||
#: ../src/ui/theme.c:1295
|
||||
#, c-format
|
||||
msgid "Could not parse shade factor \"%s\" in shaded color"
|
||||
msgstr "لا يمكن تحليل عامل التظليل \"%s\" في اللون المظلل"
|
||||
|
||||
#: ../src/ui/theme.c:1272
|
||||
#: ../src/ui/theme.c:1305
|
||||
#, c-format
|
||||
msgid "Shade factor \"%s\" in shaded color is negative"
|
||||
msgstr "عامل التظليل \"%s\" في اللون المظلل سلبي"
|
||||
|
||||
#: ../src/ui/theme.c:1302
|
||||
#: ../src/ui/theme.c:1334
|
||||
#, c-format
|
||||
msgid "Could not parse color \"%s\""
|
||||
msgstr "لا يمكن تحليل اللون \"%s\""
|
||||
|
||||
#: ../src/ui/theme.c:1560
|
||||
#: ../src/ui/theme.c:1584
|
||||
#, c-format
|
||||
msgid "Coordinate expression contains character '%s' which is not allowed"
|
||||
msgstr "تعبير الإحداثيّات يحتوي على الرمز '%s' الممنوع"
|
||||
|
||||
#: ../src/ui/theme.c:1587
|
||||
#: ../src/ui/theme.c:1611
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Coordinate expression contains floating point number '%s' which could not be "
|
||||
"parsed"
|
||||
msgstr "تعبير الإحداثيّات يحتوي على عدد نقطة متغيرة '%s' تعذّر تحليله"
|
||||
|
||||
#: ../src/ui/theme.c:1601
|
||||
#: ../src/ui/theme.c:1625
|
||||
#, c-format
|
||||
msgid "Coordinate expression contains integer '%s' which could not be parsed"
|
||||
msgstr "تعبير الإحداثيّات يحتوي على عدد صحيح '%s' تعذّر تحليله"
|
||||
|
||||
#: ../src/ui/theme.c:1723
|
||||
#: ../src/ui/theme.c:1747
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Coordinate expression contained unknown operator at the start of this text: "
|
||||
"\"%s\""
|
||||
msgstr "تعبير الإحداثيّات يحتوي على مقسوم مجهول عند بداية هذا النص: \"%s\""
|
||||
|
||||
#: ../src/ui/theme.c:1780
|
||||
#: ../src/ui/theme.c:1804
|
||||
#, c-format
|
||||
msgid "Coordinate expression was empty or not understood"
|
||||
msgstr "تعبير الإحداثيّات فارغ أو لم يفهم"
|
||||
|
||||
#: ../src/ui/theme.c:1891 ../src/ui/theme.c:1901 ../src/ui/theme.c:1935
|
||||
#: ../src/ui/theme.c:1915 ../src/ui/theme.c:1925 ../src/ui/theme.c:1959
|
||||
#, c-format
|
||||
msgid "Coordinate expression results in division by zero"
|
||||
msgstr "تعبير الإحداثيّات ينتُج عند القسمة على صفر"
|
||||
|
||||
#: ../src/ui/theme.c:1943
|
||||
#: ../src/ui/theme.c:1967
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Coordinate expression tries to use mod operator on a floating-point number"
|
||||
msgstr "تعبير الإحداثيّاتيّات يحاول استعمال مقسوم mod على عدد فاصلة متحرّكة"
|
||||
|
||||
#: ../src/ui/theme.c:1999
|
||||
#: ../src/ui/theme.c:2023
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Coordinate expression has an operator \"%s\" where an operand was expected"
|
||||
msgstr "تعبير الإحداثيّات له مقسوم \"%s\" بالرغم من ترقبه قاسم"
|
||||
|
||||
#: ../src/ui/theme.c:2008
|
||||
#: ../src/ui/theme.c:2032
|
||||
#, c-format
|
||||
msgid "Coordinate expression had an operand where an operator was expected"
|
||||
msgstr "تعبير الإحداثيّات له قاسم بالرغم من ترقبه لمقسوم"
|
||||
|
||||
#: ../src/ui/theme.c:2016
|
||||
#: ../src/ui/theme.c:2040
|
||||
#, c-format
|
||||
msgid "Coordinate expression ended with an operator instead of an operand"
|
||||
msgstr "انتهى تعبير الإحداثيّات بمقسوم عوضا عن قاسم"
|
||||
|
||||
#: ../src/ui/theme.c:2026
|
||||
#: ../src/ui/theme.c:2050
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Coordinate expression has operator \"%c\" following operator \"%c\" with no "
|
||||
"operand in between"
|
||||
msgstr "لتعبير الإحداثيّات مقسوم \"%c\" يتبع القاسم \"%c\" بدون قاسم بينهما"
|
||||
|
||||
#: ../src/ui/theme.c:2173 ../src/ui/theme.c:2214
|
||||
#: ../src/ui/theme.c:2197 ../src/ui/theme.c:2238
|
||||
#, c-format
|
||||
msgid "Coordinate expression had unknown variable or constant \"%s\""
|
||||
msgstr "كان لتعبير الإحداثيّات متغير أو ثابت \"%s\""
|
||||
|
||||
#: ../src/ui/theme.c:2268
|
||||
#: ../src/ui/theme.c:2292
|
||||
#, c-format
|
||||
msgid "Coordinate expression parser overflowed its buffer."
|
||||
msgstr "غمر محلّل تعبير الإحداثيّات مجاله"
|
||||
|
||||
#: ../src/ui/theme.c:2297
|
||||
#: ../src/ui/theme.c:2321
|
||||
#, c-format
|
||||
msgid "Coordinate expression had a close parenthesis with no open parenthesis"
|
||||
msgstr "كان لتعبير الإحداثيّات قوس غلق بدون قوس فتح"
|
||||
|
||||
#: ../src/ui/theme.c:2361
|
||||
#: ../src/ui/theme.c:2385
|
||||
#, c-format
|
||||
msgid "Coordinate expression had an open parenthesis with no close parenthesis"
|
||||
msgstr "كان لتعبير الإحداثيات قوس فتح بدون قوس غلق"
|
||||
|
||||
#: ../src/ui/theme.c:2372
|
||||
#: ../src/ui/theme.c:2396
|
||||
#, c-format
|
||||
msgid "Coordinate expression doesn't seem to have any operators or operands"
|
||||
msgstr "تعبير الإحداثيات لا يملك قاسمات و مقسومات"
|
||||
|
||||
#: ../src/ui/theme.c:2574 ../src/ui/theme.c:2594 ../src/ui/theme.c:2614
|
||||
#: ../src/ui/theme.c:2598 ../src/ui/theme.c:2618 ../src/ui/theme.c:2638
|
||||
#, c-format
|
||||
msgid "Theme contained an expression that resulted in an error: %s\n"
|
||||
msgstr "احتوت السِمة على تعبير ادى الى خطأ: %s\n"
|
||||
|
||||
#: ../src/ui/theme.c:4133
|
||||
#: ../src/ui/theme.c:4157
|
||||
#, c-format
|
||||
msgid ""
|
||||
"<button function=\"%s\" state=\"%s\" draw_ops=\"whatever\"/> must be "
|
||||
@@ -3472,25 +3494,25 @@ msgstr ""
|
||||
"يجب تخصيص <button function=\"%s\" state=\"%s\" draw_ops=\"whatever\"/> "
|
||||
"لأسلوب الإطار هذا"
|
||||
|
||||
#: ../src/ui/theme.c:4609 ../src/ui/theme.c:4634
|
||||
#: ../src/ui/theme.c:4633 ../src/ui/theme.c:4658
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Missing <frame state=\"%s\" resize=\"%s\" focus=\"%s\" style=\"whatever\"/>"
|
||||
msgstr ""
|
||||
"<frame state=\"%s\" resize=\"%s\" focus=\"%s\" style=\"whatever\"/> مفقود"
|
||||
|
||||
#: ../src/ui/theme.c:4678
|
||||
#: ../src/ui/theme.c:4702
|
||||
#, c-format
|
||||
msgid "Failed to load theme \"%s\": %s\n"
|
||||
msgstr "فشل تحميل السِمة \"%s\": %s\n"
|
||||
|
||||
#: ../src/ui/theme.c:4804 ../src/ui/theme.c:4811 ../src/ui/theme.c:4818
|
||||
#: ../src/ui/theme.c:4825 ../src/ui/theme.c:4832
|
||||
#: ../src/ui/theme.c:4828 ../src/ui/theme.c:4835 ../src/ui/theme.c:4842
|
||||
#: ../src/ui/theme.c:4849 ../src/ui/theme.c:4856
|
||||
#, c-format
|
||||
msgid "No <%s> set for theme \"%s\""
|
||||
msgstr "لا <%s> ضبط للسِمة \"%s\""
|
||||
|
||||
#: ../src/ui/theme.c:4840
|
||||
#: ../src/ui/theme.c:4864
|
||||
#, c-format
|
||||
msgid ""
|
||||
"No frame style set for window type \"%s\" in theme \"%s\", add a <window "
|
||||
@@ -3499,14 +3521,14 @@ msgstr ""
|
||||
"لا أسلوب إطار مضبوط لنوع النافذة \"%s\" في السِمة \"%s\"، اضف عنصر <window "
|
||||
"type=\"%s\" style_set=\"whatever\"/>"
|
||||
|
||||
#: ../src/ui/theme.c:5207 ../src/ui/theme.c:5269 ../src/ui/theme.c:5332
|
||||
#: ../src/ui/theme.c:5231 ../src/ui/theme.c:5293 ../src/ui/theme.c:5356
|
||||
#, c-format
|
||||
msgid ""
|
||||
"User-defined constants must begin with a capital letter; \"%s\" does not"
|
||||
msgstr ""
|
||||
"الثوابت المعرفة من طرف المستخدم يجب أن تبدأ بحروف كبيرة، \"%s\" لا يبدأ بذلك"
|
||||
|
||||
#: ../src/ui/theme.c:5215 ../src/ui/theme.c:5277 ../src/ui/theme.c:5340
|
||||
#: ../src/ui/theme.c:5239 ../src/ui/theme.c:5301 ../src/ui/theme.c:5364
|
||||
#, c-format
|
||||
msgid "Constant \"%s\" has already been defined"
|
||||
msgstr "عُرِّف الثابت \"%s\" بالفعل"
|
||||
|
208
po/be@latin.po
208
po/be@latin.po
@@ -7,8 +7,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: atk.HEAD\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2008-01-06 02:36+0200\n"
|
||||
"PO-Revision-Date: 2008-01-06 02:40+0200\n"
|
||||
"POT-Creation-Date: 2008-02-23 11:40+0200\n"
|
||||
"PO-Revision-Date: 2008-02-17 01:47+0200\n"
|
||||
"Last-Translator: Ihar Hrachyshka <ihar.hrachyshka@gmail.com>\n"
|
||||
"Language-Team: i18n@mova.org <i18n@mova.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
@@ -67,12 +67,12 @@ msgstr ""
|
||||
msgid "Failed to get hostname: %s\n"
|
||||
msgstr "Nielha atrymać nazvu kamputara: %s\n"
|
||||
|
||||
#: ../src/core/display.c:204
|
||||
#: ../src/core/display.c:256
|
||||
#, c-format
|
||||
msgid "Missing %s extension required for compositing"
|
||||
msgstr "Nie staje pašyreńnia %s, vymahanaha dziela kampazycyi"
|
||||
|
||||
#: ../src/core/display.c:368
|
||||
#: ../src/core/display.c:438
|
||||
#, c-format
|
||||
msgid "Failed to open X Window System display '%s'\n"
|
||||
msgstr "Niemahčyma adčynić spałučeńnie z ekranam \"%s\" systemy X Window\n"
|
||||
@@ -113,61 +113,60 @@ msgid "No command %d has been defined.\n"
|
||||
msgstr "Zahad %d nie akreśleny.\n"
|
||||
|
||||
#: ../src/core/keybindings.c:3866
|
||||
#, c-format
|
||||
msgid "No terminal command has been defined.\n"
|
||||
msgstr "Zahad terminału nie akreśleny.\n"
|
||||
|
||||
#: ../src/core/main.c:67
|
||||
#: ../src/core/main.c:112
|
||||
#, c-format
|
||||
msgid ""
|
||||
"metacity %s\n"
|
||||
"Copyright (C) 2001-2007 Havoc Pennington, Red Hat, Inc., and others\n"
|
||||
"Copyright (C) 2001-2008 Havoc Pennington, Red Hat, Inc., and others\n"
|
||||
"This is free software; see the source for copying conditions.\n"
|
||||
"There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A "
|
||||
"PARTICULAR PURPOSE.\n"
|
||||
msgstr ""
|
||||
"metacity %s\n"
|
||||
"Aŭtarskija pravy (C) 2001-2007 Havoc Pennington, Red Hat, Inc. dy inšyja\n"
|
||||
"Aŭtarskija pravy (C) 2001-2008 Havoc Pennington, Red Hat, Inc. dy inšyja\n"
|
||||
"Heta volnaja prahrama; kab paznajomicca z umovami, pry jakich dapuščalna "
|
||||
"jaje kapijavać, zazirni ŭ jaje krynicy.\n"
|
||||
"Na prahramu nie dajuć NIJAKAJ HARANTYI, navat harantyi HANDLOVAJ PRYDATNAŚCI "
|
||||
"albo PRYDATNAŚCI DLA AKREŚLENYCH METAŬ.\n"
|
||||
|
||||
#: ../src/core/main.c:172
|
||||
#: ../src/core/main.c:239
|
||||
msgid "Disable connection to session manager"
|
||||
msgstr "Uklučaje spałučeńnie z kiraŭnikom sesijaŭ"
|
||||
|
||||
#: ../src/core/main.c:178
|
||||
#: ../src/core/main.c:245
|
||||
msgid "Replace the running window manager with Metacity"
|
||||
msgstr "Zamianiaje ŭruchomlenaha kiraŭnika voknaŭ na Metacity"
|
||||
|
||||
#: ../src/core/main.c:184
|
||||
#: ../src/core/main.c:251
|
||||
msgid "Specify session management ID"
|
||||
msgstr "Akreślivaje ID haspadarańnia sesijami"
|
||||
|
||||
# #FIXME Słova "display" -- nie samameta, ale lepšaj versii nie pryniali. Varyjanty byli: dyspłej, dysplej. Nivodaje nie spadabałasia.
|
||||
#: ../src/core/main.c:189
|
||||
#: ../src/core/main.c:256
|
||||
msgid "X Display to use"
|
||||
msgstr "Užyvany dysplej X"
|
||||
|
||||
#: ../src/core/main.c:195
|
||||
#: ../src/core/main.c:262
|
||||
msgid "Initialize session from savefile"
|
||||
msgstr "Inicyjavańnie sesii z zapisanaha fajłu"
|
||||
|
||||
#: ../src/core/main.c:201
|
||||
#: ../src/core/main.c:268
|
||||
msgid "Print version"
|
||||
msgstr "Pakazvaje versiju"
|
||||
|
||||
#: ../src/core/main.c:207
|
||||
#: ../src/core/main.c:274
|
||||
msgid "Make X calls synchronous"
|
||||
msgstr "Synchranizuj vykliki X"
|
||||
|
||||
#: ../src/core/main.c:361
|
||||
#: ../src/core/main.c:425
|
||||
#, c-format
|
||||
msgid "Failed to scan themes directory: %s\n"
|
||||
msgstr "Niemahčyma prahledzieć kataloh z matyvami: %s\n"
|
||||
|
||||
#: ../src/core/main.c:377
|
||||
#: ../src/core/main.c:441
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Could not find a theme! Be sure %s exists and contains the usual themes.\n"
|
||||
@@ -175,31 +174,43 @@ msgstr ""
|
||||
"Niemahčyma znajści nivodnaha z matyvaŭ. Spraŭdź, kali łaska, ci isnuje "
|
||||
"kataloh %s i ci jość u im standartnyja matyvy.\n"
|
||||
|
||||
#: ../src/core/main.c:452
|
||||
#: ../src/core/main.c:513
|
||||
#, c-format
|
||||
msgid "Failed to restart: %s\n"
|
||||
msgstr "Restart nie ŭdaŭsia: %s\n"
|
||||
|
||||
#: ../src/core/prefs.c:434
|
||||
#.
|
||||
#. * We found it, but it was invalid. Complain.
|
||||
#. *
|
||||
#. * FIXME: This replicates the original behaviour, but in the future
|
||||
#. * we might consider reverting invalid keys to their original values.
|
||||
#. * (We know the old value, so we can look up a suitable string in
|
||||
#. * the symtab.)
|
||||
#.
|
||||
#: ../src/core/prefs.c:325 ../src/core/prefs.c:385
|
||||
#, c-format
|
||||
msgid "Type of %s was not integer"
|
||||
msgstr "Typ %s nia ceły"
|
||||
msgid "GConf key '%s' is set to an invalid value\n"
|
||||
msgstr "Kluču GConfa \"%s\" prypisanaja niapravilnaja vartaść\n"
|
||||
|
||||
#: ../src/core/prefs.c:572 ../src/core/prefs.c:600 ../src/core/prefs.c:616
|
||||
#: ../src/core/prefs.c:632 ../src/core/prefs.c:648 ../src/core/prefs.c:664
|
||||
#: ../src/core/prefs.c:680 ../src/core/prefs.c:696 ../src/core/prefs.c:716
|
||||
#: ../src/core/prefs.c:732 ../src/core/prefs.c:748 ../src/core/prefs.c:766
|
||||
#: ../src/core/prefs.c:782 ../src/core/prefs.c:801 ../src/core/prefs.c:817
|
||||
#: ../src/core/prefs.c:852 ../src/core/prefs.c:868 ../src/core/prefs.c:885
|
||||
#: ../src/core/prefs.c:901 ../src/core/prefs.c:917 ../src/core/prefs.c:933
|
||||
#: ../src/core/prefs.c:949 ../src/core/prefs.c:964 ../src/core/prefs.c:979
|
||||
#: ../src/core/prefs.c:994 ../src/core/prefs.c:1010 ../src/core/prefs.c:1026
|
||||
#: ../src/core/prefs.c:1042 ../src/core/prefs.c:1058
|
||||
#: ../src/core/prefs.c:358 ../src/core/prefs.c:776 ../src/core/prefs.c:792
|
||||
#: ../src/core/prefs.c:808 ../src/core/prefs.c:824 ../src/core/prefs.c:840
|
||||
#: ../src/core/prefs.c:860 ../src/core/prefs.c:876 ../src/core/prefs.c:892
|
||||
#: ../src/core/prefs.c:910 ../src/core/prefs.c:926 ../src/core/prefs.c:945
|
||||
#: ../src/core/prefs.c:961 ../src/core/prefs.c:978 ../src/core/prefs.c:994
|
||||
#: ../src/core/prefs.c:1011 ../src/core/prefs.c:1027 ../src/core/prefs.c:1043
|
||||
#: ../src/core/prefs.c:1059 ../src/core/prefs.c:1075 ../src/core/prefs.c:1090
|
||||
#: ../src/core/prefs.c:1105 ../src/core/prefs.c:1121 ../src/core/prefs.c:1137
|
||||
#: ../src/core/prefs.c:1153 ../src/core/prefs.c:1169
|
||||
#, c-format
|
||||
msgid "GConf key \"%s\" is set to an invalid type\n"
|
||||
msgstr "Kluč GConfa \"%s\" nieadpaviednaha typu\n"
|
||||
|
||||
#: ../src/core/prefs.c:1103
|
||||
#: ../src/core/prefs.c:613
|
||||
#, c-format
|
||||
msgid "Type of %s was not integer"
|
||||
msgstr "Typ %s nia ceły"
|
||||
|
||||
#: ../src/core/prefs.c:1214
|
||||
#, c-format
|
||||
msgid ""
|
||||
"\"%s\" found in configuration database is not a valid value for mouse button "
|
||||
@@ -208,12 +219,7 @@ msgstr ""
|
||||
"Vartaść \"%s\", znojdzienaja ŭ bazie źviestak kanfihuracyi, nie apisvaje "
|
||||
"pravilna madyfikatara knopki myšy\n"
|
||||
|
||||
#: ../src/core/prefs.c:1127 ../src/core/prefs.c:1148 ../src/core/prefs.c:1705
|
||||
#, c-format
|
||||
msgid "GConf key '%s' is set to an invalid value\n"
|
||||
msgstr "Kluču GConfa \"%s\" prypisanaja niapravilnaja vartaść\n"
|
||||
|
||||
#: ../src/core/prefs.c:1277
|
||||
#: ../src/core/prefs.c:1344
|
||||
#, c-format
|
||||
msgid ""
|
||||
"%d stored in GConf key %s is not a reasonable cursor_size; must be in the "
|
||||
@@ -222,12 +228,12 @@ msgstr ""
|
||||
"Vartaść %d, zapisanaja ŭ klučy GConfa %s, nie źjaŭlajecca prydatnaj "
|
||||
"vartaściu dla \"cursor_size\", jana musić być u dyjapazonie 1...128\n"
|
||||
|
||||
#: ../src/core/prefs.c:1357
|
||||
#: ../src/core/prefs.c:1396
|
||||
#, c-format
|
||||
msgid "Could not parse font description \"%s\" from GConf key %s\n"
|
||||
msgstr "Niemahčyma razabrać apisańnie \"%s\", paviazanaje z klučom GConfa %s\n"
|
||||
|
||||
#: ../src/core/prefs.c:1599
|
||||
#: ../src/core/prefs.c:1638
|
||||
#, c-format
|
||||
msgid ""
|
||||
"%d stored in GConf key %s is not a reasonable number of workspaces, current "
|
||||
@@ -236,7 +242,7 @@ msgstr ""
|
||||
"Vartaść %d, zapisanaja ŭ klučy GConfa %s, nie źjaŭlajecca pravilnaj ličbaj "
|
||||
"stałoŭ; maksymum składaje ciapier %d\n"
|
||||
|
||||
#: ../src/core/prefs.c:1659
|
||||
#: ../src/core/prefs.c:1698
|
||||
msgid ""
|
||||
"Workarounds for broken applications disabled. Some applications may not "
|
||||
"behave properly.\n"
|
||||
@@ -256,12 +262,12 @@ msgid "Error setting number of workspaces to %d: %s\n"
|
||||
msgstr ""
|
||||
"Padčas vyznačeńnia kolkaści rabočych abšaraŭ na %d adbyłasia pamyłka: %s\n"
|
||||
|
||||
#: ../src/core/prefs.c:2246 ../src/core/prefs.c:2780 ../src/ui/menu.c:199
|
||||
#: ../src/core/prefs.c:2246 ../src/core/prefs.c:2782 ../src/ui/menu.c:199
|
||||
#, c-format
|
||||
msgid "Workspace %d"
|
||||
msgstr "Rabočy abšar %d"
|
||||
|
||||
#: ../src/core/prefs.c:2276 ../src/core/prefs.c:2446
|
||||
#: ../src/core/prefs.c:2276 ../src/core/prefs.c:2449
|
||||
#, c-format
|
||||
msgid ""
|
||||
"\"%s\" found in configuration database is not a valid value for keybinding "
|
||||
@@ -270,7 +276,7 @@ msgstr ""
|
||||
"Vartaść \"%s\", znojdzienaja ŭ bazie źviestak kanfihuracyi, nie apisvaje "
|
||||
"pravilna klavišny skarot \"%s\"\n"
|
||||
|
||||
#: ../src/core/prefs.c:2861
|
||||
#: ../src/core/prefs.c:2863
|
||||
#, c-format
|
||||
msgid "Error setting name for workspace %d to \"%s\": %s\n"
|
||||
msgstr "Pamyłka pry vyznačeńni rabočaha abšaru %d na \"%s\": %s\n"
|
||||
@@ -338,7 +344,6 @@ msgid "Failed to parse saved session file: %s\n"
|
||||
msgstr "Niemahčyma razabrać zapisany fajł sesii: %s\n"
|
||||
|
||||
#: ../src/core/session.c:1159
|
||||
#, c-format
|
||||
msgid "<metacity_session> attribute seen but we already have the session ID"
|
||||
msgstr "Znojdzieny atrybut <metacity_session>, kali ID sesii byŭ užo akreśleny"
|
||||
|
||||
@@ -349,7 +354,6 @@ msgstr "Nieviadomy atrybut %s unutry elementu <metacity_session>"
|
||||
|
||||
# #FIXME nia ŭpeŭnieny ŭ terminie
|
||||
#: ../src/core/session.c:1189
|
||||
#, c-format
|
||||
msgid "nested <window> tag"
|
||||
msgstr "zahnieždžany značnik <window>"
|
||||
|
||||
@@ -398,25 +402,24 @@ msgid "Opened log file %s\n"
|
||||
msgstr "Adčynieny fajł historyi %s\n"
|
||||
|
||||
#: ../src/core/util.c:133 ../src/tools/metacity-message.c:176
|
||||
#, c-format
|
||||
msgid "Metacity was compiled without support for verbose mode\n"
|
||||
msgstr ""
|
||||
"Prahrama Metacity skampilavanaja biez absłuhoŭvańnia režymu z pašyranaj "
|
||||
"infarmacyjaj\n"
|
||||
|
||||
#: ../src/core/util.c:231
|
||||
#: ../src/core/util.c:233
|
||||
msgid "Window manager: "
|
||||
msgstr "Kiraŭnik voknaŭ: "
|
||||
|
||||
#: ../src/core/util.c:379
|
||||
#: ../src/core/util.c:385
|
||||
msgid "Bug in window manager: "
|
||||
msgstr "Pamyłka ŭ prahramie kiraŭnika voknaŭ: "
|
||||
|
||||
#: ../src/core/util.c:408
|
||||
#: ../src/core/util.c:418
|
||||
msgid "Window manager warning: "
|
||||
msgstr "Aściaroha kiraŭnika voknaŭ: "
|
||||
|
||||
#: ../src/core/util.c:432
|
||||
#: ../src/core/util.c:446
|
||||
msgid "Window manager error: "
|
||||
msgstr "Pamyłka kiraŭnika voknaŭ: "
|
||||
|
||||
@@ -2559,7 +2562,6 @@ msgid "_Close"
|
||||
msgstr "Za_čyni"
|
||||
|
||||
#: ../src/ui/menu.c:208
|
||||
#, c-format
|
||||
msgid "Workspace 1_0"
|
||||
msgstr "Rabočy abšar 1_0"
|
||||
|
||||
@@ -3374,7 +3376,6 @@ msgid "%g milliseconds to draw one window frame"
|
||||
msgstr "%g milisekund(y) dziela stvareńnia adnoj ramki vakna"
|
||||
|
||||
#: ../src/ui/theme-viewer.c:797
|
||||
#, c-format
|
||||
msgid "Usage: metacity-theme-viewer [THEMENAME]\n"
|
||||
msgstr "Užyćcio: methacity-theme-viewer [NAZVA_MATYVU]\n"
|
||||
|
||||
@@ -3462,48 +3463,46 @@ msgid "%d coordinate expressions parsed in %g seconds (%g seconds average)\n"
|
||||
msgstr ""
|
||||
"vyraz kaardynataŭ %d praanalizavany ŭ %g sekund (u siarednim %g sekund(y))\n"
|
||||
|
||||
#: ../src/ui/theme.c:208
|
||||
#: ../src/ui/theme.c:256
|
||||
msgid "top"
|
||||
msgstr "vierch"
|
||||
|
||||
#: ../src/ui/theme.c:210
|
||||
#: ../src/ui/theme.c:258
|
||||
msgid "bottom"
|
||||
msgstr "niz"
|
||||
|
||||
#: ../src/ui/theme.c:212
|
||||
#: ../src/ui/theme.c:260
|
||||
msgid "left"
|
||||
msgstr "levy"
|
||||
|
||||
#: ../src/ui/theme.c:214
|
||||
#: ../src/ui/theme.c:262
|
||||
msgid "right"
|
||||
msgstr "pravy"
|
||||
|
||||
#: ../src/ui/theme.c:228
|
||||
#: ../src/ui/theme.c:289
|
||||
#, c-format
|
||||
msgid "frame geometry does not specify \"%s\" dimension"
|
||||
msgstr "Pamier ramki nie akreślivaje pamieru \"%s\""
|
||||
|
||||
#: ../src/ui/theme.c:247
|
||||
#: ../src/ui/theme.c:308
|
||||
#, c-format
|
||||
msgid "frame geometry does not specify dimension \"%s\" for border \"%s\""
|
||||
msgstr "Pamier ramki nie akreślivaje pamieru \"%s\" dla kraju \"%s\""
|
||||
|
||||
#: ../src/ui/theme.c:284
|
||||
#: ../src/ui/theme.c:345
|
||||
#, c-format
|
||||
msgid "Button aspect ratio %g is not reasonable"
|
||||
msgstr "Kaeficyjent praporcyjaŭ knopki %g nie źmiaščajecca ŭ rezonnych miežach"
|
||||
|
||||
#: ../src/ui/theme.c:296
|
||||
#, c-format
|
||||
#: ../src/ui/theme.c:357
|
||||
msgid "Frame geometry does not specify size of buttons"
|
||||
msgstr "Pamier ramki nie akreślivaje ličby knopak"
|
||||
|
||||
#: ../src/ui/theme.c:927
|
||||
#, c-format
|
||||
#: ../src/ui/theme.c:988
|
||||
msgid "Gradients should have at least two colors"
|
||||
msgstr "Hradyjenty pavinny składacca prynamsi z dvuch koleraŭ"
|
||||
|
||||
#: ../src/ui/theme.c:1053
|
||||
#: ../src/ui/theme.c:1114
|
||||
#, c-format
|
||||
msgid ""
|
||||
"GTK color specification must have the state in brackets, e.g. gtk:fg[NORMAL] "
|
||||
@@ -3513,7 +3512,7 @@ msgstr ""
|
||||
"napr. gtk:fg[NORMAL], dzie NORMAL źjaŭlajecca nazvaj stanu; niemahčyma "
|
||||
"praanalizavać \"%s\""
|
||||
|
||||
#: ../src/ui/theme.c:1067
|
||||
#: ../src/ui/theme.c:1128
|
||||
#, c-format
|
||||
msgid ""
|
||||
"GTK color specification must have a close bracket after the state, e.g. gtk:"
|
||||
@@ -3523,17 +3522,17 @@ msgstr ""
|
||||
"dužku, napr. gtk:fg[NORMAL], dzie NORMAL heta nazva stanu; niemahčyma "
|
||||
"praanalizavać \"%s\""
|
||||
|
||||
#: ../src/ui/theme.c:1078
|
||||
#: ../src/ui/theme.c:1139
|
||||
#, c-format
|
||||
msgid "Did not understand state \"%s\" in color specification"
|
||||
msgstr "Niezrazumieły stan \"%s\" u specyfikacyi koleru"
|
||||
|
||||
#: ../src/ui/theme.c:1091
|
||||
#: ../src/ui/theme.c:1152
|
||||
#, c-format
|
||||
msgid "Did not understand color component \"%s\" in color specification"
|
||||
msgstr "Niezrazumiełaje aznačeńnie koleru \"%s\" ŭ specyfikacyi"
|
||||
|
||||
#: ../src/ui/theme.c:1121
|
||||
#: ../src/ui/theme.c:1182
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Blend format is \"blend/bg_color/fg_color/alpha\", \"%s\" does not fit the "
|
||||
@@ -3542,18 +3541,18 @@ msgstr ""
|
||||
"Farmatam pranikańnia źjaŭlajecca \"blend/bg_color/fg_color/alpha\", \"%s\" "
|
||||
"nie pasuje da farmatu"
|
||||
|
||||
#: ../src/ui/theme.c:1132
|
||||
#: ../src/ui/theme.c:1193
|
||||
#, c-format
|
||||
msgid "Could not parse alpha value \"%s\" in blended color"
|
||||
msgstr "Niemahčyma razabrać vartaść alfa \"%s\" koleru pranikańnia"
|
||||
|
||||
#: ../src/ui/theme.c:1142
|
||||
#: ../src/ui/theme.c:1203
|
||||
#, c-format
|
||||
msgid "Alpha value \"%s\" in blended color is not between 0.0 and 1.0"
|
||||
msgstr ""
|
||||
"Vartaść alfa \"%s\" koleru pranikańnia nie źmiaščajecca pamiž 0,0 i 1,0"
|
||||
|
||||
#: ../src/ui/theme.c:1190
|
||||
#: ../src/ui/theme.c:1251
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Shade format is \"shade/base_color/factor\", \"%s\" does not fit the format"
|
||||
@@ -3561,28 +3560,28 @@ msgstr ""
|
||||
"Farmatam pranikańnia źjaŭlajecca \"shade/base_color/factor\", \"%s\" nie "
|
||||
"pasuje da farmatu"
|
||||
|
||||
#: ../src/ui/theme.c:1201
|
||||
#: ../src/ui/theme.c:1262
|
||||
#, c-format
|
||||
msgid "Could not parse shade factor \"%s\" in shaded color"
|
||||
msgstr "Niemahčyma razabrać kaeficyjent pranikańnia \"%s\" koleru pranikańnia"
|
||||
|
||||
#: ../src/ui/theme.c:1211
|
||||
#: ../src/ui/theme.c:1272
|
||||
#, c-format
|
||||
msgid "Shade factor \"%s\" in shaded color is negative"
|
||||
msgstr "Kaeficyjent pranikańnia \"%s\" koleru pranikańnia admoŭny"
|
||||
|
||||
#: ../src/ui/theme.c:1241
|
||||
#: ../src/ui/theme.c:1302
|
||||
#, c-format
|
||||
msgid "Could not parse color \"%s\""
|
||||
msgstr "Niemahčyma razabrać koler \"%s\""
|
||||
|
||||
#: ../src/ui/theme.c:1462
|
||||
#: ../src/ui/theme.c:1560
|
||||
#, c-format
|
||||
msgid "Coordinate expression contains character '%s' which is not allowed"
|
||||
msgstr ""
|
||||
"Vyraz, jaki akreślivaje kaardynaty, maje ŭ sabie niedazvoleny znak '%s'"
|
||||
|
||||
#: ../src/ui/theme.c:1489
|
||||
#: ../src/ui/theme.c:1587
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Coordinate expression contains floating point number '%s' which could not be "
|
||||
@@ -3591,13 +3590,13 @@ msgstr ""
|
||||
"Vyraz, jaki akreślivaje kaardynaty, maje nierazborlivy numar niefiksavanaj "
|
||||
"koski '%s'"
|
||||
|
||||
#: ../src/ui/theme.c:1503
|
||||
#: ../src/ui/theme.c:1601
|
||||
#, c-format
|
||||
msgid "Coordinate expression contains integer '%s' which could not be parsed"
|
||||
msgstr ""
|
||||
"Vyraz, jaki akreślivaje kaardynaty, maje nierazborlivuju cełuju ličbu '%s'"
|
||||
|
||||
#: ../src/ui/theme.c:1610
|
||||
#: ../src/ui/theme.c:1723
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Coordinate expression contained unknown operator at the start of this text: "
|
||||
@@ -3606,44 +3605,39 @@ msgstr ""
|
||||
"Vyraz, jaki akreślivaje kaardynaty, maje nieviadomy aperatar na pačatku "
|
||||
"tekstu: \"%s\""
|
||||
|
||||
#: ../src/ui/theme.c:1667
|
||||
#, c-format
|
||||
#: ../src/ui/theme.c:1780
|
||||
msgid "Coordinate expression was empty or not understood"
|
||||
msgstr "Vyraz, jaki akreślivaje kaardynaty, pusty albo niezrazumieły"
|
||||
|
||||
#: ../src/ui/theme.c:1764 ../src/ui/theme.c:1774 ../src/ui/theme.c:1808
|
||||
#, c-format
|
||||
#: ../src/ui/theme.c:1891 ../src/ui/theme.c:1901 ../src/ui/theme.c:1935
|
||||
msgid "Coordinate expression results in division by zero"
|
||||
msgstr "Vyraz, jaki akreślivaje kaardynaty, maje dzialeńnie praz nul"
|
||||
|
||||
#: ../src/ui/theme.c:1816
|
||||
#, c-format
|
||||
#: ../src/ui/theme.c:1943
|
||||
msgid ""
|
||||
"Coordinate expression tries to use mod operator on a floating-point number"
|
||||
msgstr ""
|
||||
"Vyraz, jaki akreślivaje kaardynaty, užyvaje aperatara dzialeńnia pa moduli z "
|
||||
"arhumentam niefiksavanaj koski"
|
||||
|
||||
#: ../src/ui/theme.c:1872
|
||||
#: ../src/ui/theme.c:1999
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Coordinate expression has an operator \"%s\" where an operand was expected"
|
||||
msgstr "Vyraz maje aperatar \"%s\" u miescy, dzie čakali arhumentu"
|
||||
|
||||
#: ../src/ui/theme.c:1881
|
||||
#, c-format
|
||||
#: ../src/ui/theme.c:2008
|
||||
msgid "Coordinate expression had an operand where an operator was expected"
|
||||
msgstr ""
|
||||
"Vyraz, jaki apisvaje pałažeńnie, maje arhument u miescy, dzie čakali "
|
||||
"aperatara"
|
||||
|
||||
#: ../src/ui/theme.c:1889
|
||||
#, c-format
|
||||
#: ../src/ui/theme.c:2016
|
||||
msgid "Coordinate expression ended with an operator instead of an operand"
|
||||
msgstr ""
|
||||
"Vyraz, jaki apisvaje pałažeńnie, zakančvajecca aperataram zamiest arhumentu"
|
||||
|
||||
#: ../src/ui/theme.c:1899
|
||||
#: ../src/ui/theme.c:2026
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Coordinate expression has operator \"%c\" following operator \"%c\" with no "
|
||||
@@ -3652,45 +3646,41 @@ msgstr ""
|
||||
"Vyraz, jaki apisvaje pałažeńnie, maje arhument \"%c\" adrazu paśla arhumentu "
|
||||
"\"%c\" biez aperatara pamiž imi"
|
||||
|
||||
#: ../src/ui/theme.c:2023 ../src/ui/theme.c:2064
|
||||
#: ../src/ui/theme.c:2173 ../src/ui/theme.c:2214
|
||||
#, c-format
|
||||
msgid "Coordinate expression had unknown variable or constant \"%s\""
|
||||
msgstr ""
|
||||
"Vyraz, jaki apisvaje pałažeńnie, maje nieviadomuju źmiennuju albo stałuju \"%"
|
||||
"s\""
|
||||
|
||||
#: ../src/ui/theme.c:2108
|
||||
#, c-format
|
||||
#: ../src/ui/theme.c:2268
|
||||
msgid "Coordinate expression parser overflowed its buffer."
|
||||
msgstr ""
|
||||
"Parser vyrazaŭ, jakija akreślivajuć kaardynaty, pierapoŭniŭ svoj bufer."
|
||||
|
||||
#: ../src/ui/theme.c:2137
|
||||
#, c-format
|
||||
#: ../src/ui/theme.c:2297
|
||||
msgid "Coordinate expression had a close parenthesis with no open parenthesis"
|
||||
msgstr ""
|
||||
"Vyraz, jaki apisvaje pałažeńnie, začyniaje dužka biez adpaviednaj dužki na "
|
||||
"pačatku"
|
||||
|
||||
#: ../src/ui/theme.c:2201
|
||||
#, c-format
|
||||
#: ../src/ui/theme.c:2361
|
||||
msgid "Coordinate expression had an open parenthesis with no close parenthesis"
|
||||
msgstr ""
|
||||
"Vyraz, jaki apisvaje pałažeńnie, adčyniaje dužka biez adpaviednaj dužki na "
|
||||
"kancy"
|
||||
|
||||
#: ../src/ui/theme.c:2212
|
||||
#, c-format
|
||||
#: ../src/ui/theme.c:2372
|
||||
msgid "Coordinate expression doesn't seem to have any operators or operands"
|
||||
msgstr ""
|
||||
"Vyraz, jaki apisvaje pałažeńnie, nia maje ani aperataraŭ, ani arhumentaŭ"
|
||||
|
||||
#: ../src/ui/theme.c:2398 ../src/ui/theme.c:2418 ../src/ui/theme.c:2438
|
||||
#: ../src/ui/theme.c:2574 ../src/ui/theme.c:2594 ../src/ui/theme.c:2614
|
||||
#, c-format
|
||||
msgid "Theme contained an expression that resulted in an error: %s\n"
|
||||
msgstr "Matyŭ źmiaščaŭ vyraz, jaki staŭ pryčynaj pamyłki: %s\n"
|
||||
|
||||
#: ../src/ui/theme.c:3942
|
||||
#: ../src/ui/theme.c:4133
|
||||
#, c-format
|
||||
msgid ""
|
||||
"<button function=\"%s\" state=\"%s\" draw_ops=\"whatever\"/> must be "
|
||||
@@ -3699,25 +3689,25 @@ msgstr ""
|
||||
"Pry hetym styli ramki treba padać <button function=\"%s\" state=\"%s\" "
|
||||
"draw_ops=\"niešta\"/>"
|
||||
|
||||
#: ../src/ui/theme.c:4418 ../src/ui/theme.c:4443
|
||||
#: ../src/ui/theme.c:4609 ../src/ui/theme.c:4634
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Missing <frame state=\"%s\" resize=\"%s\" focus=\"%s\" style=\"whatever\"/>"
|
||||
msgstr ""
|
||||
"Niama <frame state=\"%s\" resize=\"%s\" focus=\"%s\" style=\"niešta\"/>"
|
||||
|
||||
#: ../src/ui/theme.c:4487
|
||||
#: ../src/ui/theme.c:4678
|
||||
#, c-format
|
||||
msgid "Failed to load theme \"%s\": %s\n"
|
||||
msgstr "Niemahčyma adčytać matyŭ \"%s\": %s\n"
|
||||
|
||||
#: ../src/ui/theme.c:4613 ../src/ui/theme.c:4620 ../src/ui/theme.c:4627
|
||||
#: ../src/ui/theme.c:4634 ../src/ui/theme.c:4641
|
||||
#: ../src/ui/theme.c:4804 ../src/ui/theme.c:4811 ../src/ui/theme.c:4818
|
||||
#: ../src/ui/theme.c:4825 ../src/ui/theme.c:4832
|
||||
#, c-format
|
||||
msgid "No <%s> set for theme \"%s\""
|
||||
msgstr "Nie akreśleny element <%s> dla matyvu \"%s\""
|
||||
|
||||
#: ../src/ui/theme.c:4649
|
||||
#: ../src/ui/theme.c:4840
|
||||
#, c-format
|
||||
msgid ""
|
||||
"No frame style set for window type \"%s\" in theme \"%s\", add a <window "
|
||||
@@ -3726,7 +3716,7 @@ msgstr ""
|
||||
"Pry typie vakna \"%s\" u matyvie \"%s\" nia vyznačany styl ramki. Dadaj "
|
||||
"element <window type=\"%s\" style_set=\"niešta\"/>"
|
||||
|
||||
#: ../src/ui/theme.c:5016 ../src/ui/theme.c:5078 ../src/ui/theme.c:5141
|
||||
#: ../src/ui/theme.c:5207 ../src/ui/theme.c:5269 ../src/ui/theme.c:5332
|
||||
#, c-format
|
||||
msgid ""
|
||||
"User-defined constants must begin with a capital letter; \"%s\" does not"
|
||||
@@ -3734,7 +3724,7 @@ msgstr ""
|
||||
"Stałyja, aznačanyja karystalnikam, pavinny pačynacca vialikaj litaraj, a \"%s"
|
||||
"\" nie vykonvaje hetaj umovy"
|
||||
|
||||
#: ../src/ui/theme.c:5024 ../src/ui/theme.c:5086 ../src/ui/theme.c:5149
|
||||
#: ../src/ui/theme.c:5215 ../src/ui/theme.c:5277 ../src/ui/theme.c:5340
|
||||
#, c-format
|
||||
msgid "Constant \"%s\" has already been defined"
|
||||
msgstr "Stałaja \"%s\" užo aznačanaja"
|
||||
|
361
po/sl.po
361
po/sl.po
@@ -9,7 +9,7 @@ msgstr ""
|
||||
"Project-Id-Version: metacity\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2007-10-03 03:39+0100\n"
|
||||
"PO-Revision-Date: 2008-01-26 09:52+0100\n"
|
||||
"PO-Revision-Date: 2008-04-13 09:05+0100\n"
|
||||
"Last-Translator: Matej Urbančič <mateju@svn.gnome.org>\n"
|
||||
"Language-Team: Slovenian <sl@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
@@ -33,16 +33,16 @@ msgstr "Upravljanje oken"
|
||||
msgid "Unknown window information request: %d"
|
||||
msgstr "Zahteva izpisa podrobnosti neznanega okna: %d"
|
||||
|
||||
#: ../src/core/delete.c:67
|
||||
#: ../src/core/delete.c:94
|
||||
#: ../src/core/delete.c:70
|
||||
#: ../src/core/delete.c:97
|
||||
#: ../src/ui/metacity-dialog.c:50
|
||||
#: ../src/ui/theme-parser.c:481
|
||||
#, c-format
|
||||
msgid "Could not parse \"%s\" as an integer"
|
||||
msgstr "Ni mogoče razčleniti \"%s\" kot celoštevilčne vrednosti"
|
||||
|
||||
#: ../src/core/delete.c:74
|
||||
#: ../src/core/delete.c:101
|
||||
#: ../src/core/delete.c:77
|
||||
#: ../src/core/delete.c:104
|
||||
#: ../src/ui/metacity-dialog.c:57
|
||||
#: ../src/ui/theme-parser.c:490
|
||||
#: ../src/ui/theme-parser.c:545
|
||||
@@ -50,22 +50,22 @@ msgstr "Ni mogoče razčleniti \"%s\" kot celoštevilčne vrednosti"
|
||||
msgid "Did not understand trailing characters \"%s\" in string \"%s\""
|
||||
msgstr "Ni mogoče razumeti končnih znakov \"%s\" v nizu \"%s\""
|
||||
|
||||
#: ../src/core/delete.c:132
|
||||
#: ../src/core/delete.c:135
|
||||
#, c-format
|
||||
msgid "Failed to parse message \"%s\" from dialog process\n"
|
||||
msgstr "Ni mogoče razčleniti sporočila \"%s\" iz procesa dialogov\n"
|
||||
|
||||
#: ../src/core/delete.c:267
|
||||
#: ../src/core/delete.c:253
|
||||
#, c-format
|
||||
msgid "Error reading from dialog display process: %s\n"
|
||||
msgstr "Napaka ob branju iz procesa prikaza dialogov: %s\n"
|
||||
|
||||
#: ../src/core/delete.c:350
|
||||
#: ../src/core/delete.c:336
|
||||
#, c-format
|
||||
msgid "Error launching metacity-dialog to ask about killing an application: %s\n"
|
||||
msgstr "Napaka ob zaganjanju metacity-dialog, da bi vprašal o ubijanju programa: %s\n"
|
||||
|
||||
#: ../src/core/delete.c:459
|
||||
#: ../src/core/delete.c:445
|
||||
#, c-format
|
||||
msgid "Failed to get hostname: %s\n"
|
||||
msgstr "Ni mogoče dobiti gostitelja z imenom: %s\n"
|
||||
@@ -75,7 +75,7 @@ msgstr "Ni mogoče dobiti gostitelja z imenom: %s\n"
|
||||
msgid "Missing %s extension required for compositing"
|
||||
msgstr "Manjka razširitev %s, ki je ključna za sestavljanje"
|
||||
|
||||
#: ../src/core/display.c:438
|
||||
#: ../src/core/display.c:433
|
||||
#, c-format
|
||||
msgid "Failed to open X Window System display '%s'\n"
|
||||
msgstr "Ni mogoče odpreti zaslona '%s' okenskega sistema X\n"
|
||||
@@ -97,26 +97,27 @@ msgid "Fatal IO error %d (%s) on display '%s'.\n"
|
||||
msgstr "Usodna napaka IO %d (%s) na zaslonu '%s'.\n"
|
||||
|
||||
# G:1 K:0 O:0
|
||||
#: ../src/core/keybindings.c:1087
|
||||
#: ../src/core/keybindings.c:1090
|
||||
#, c-format
|
||||
msgid "Some other program is already using the key %s with modifiers %x as a binding\n"
|
||||
msgstr "Tipko %s s spremenilnikom %x uporablja že nek drug program\n"
|
||||
|
||||
#: ../src/core/keybindings.c:2733
|
||||
#: ../src/core/keybindings.c:2722
|
||||
#, c-format
|
||||
msgid "Error launching metacity-dialog to print an error about a command: %s\n"
|
||||
msgstr "Napaka ob zaganjanju metacity-dialog za izpis napake o ukazu: %s\n"
|
||||
|
||||
#: ../src/core/keybindings.c:2838
|
||||
#: ../src/core/keybindings.c:2827
|
||||
#, c-format
|
||||
msgid "No command %d has been defined.\n"
|
||||
msgstr "Ukaz %d ni bil naveden.\n"
|
||||
|
||||
#: ../src/core/keybindings.c:3866
|
||||
#: ../src/core/keybindings.c:3855
|
||||
#, c-format
|
||||
msgid "No terminal command has been defined.\n"
|
||||
msgstr "Ni bilo navedenih ukazov terminala.\n"
|
||||
|
||||
#: ../src/core/main.c:112
|
||||
#: ../src/core/main.c:115
|
||||
#, c-format
|
||||
msgid ""
|
||||
"metacity %s\n"
|
||||
@@ -129,144 +130,133 @@ msgstr ""
|
||||
"To je prosto programje; za pogoje kopiranja si poglejte izvorno kodo.\n"
|
||||
"Program prihaja BREZ KAKRŠNIHKOLI ZAGOTOVIL.\n"
|
||||
|
||||
#: ../src/core/main.c:239
|
||||
#: ../src/core/main.c:242
|
||||
msgid "Disable connection to session manager"
|
||||
msgstr "Onemogoči povezavo z upraviteljem sej"
|
||||
|
||||
#: ../src/core/main.c:245
|
||||
#: ../src/core/main.c:248
|
||||
msgid "Replace the running window manager with Metacity"
|
||||
msgstr "Zamenjaj trenutnega upravitelja oken z Metacity"
|
||||
|
||||
#: ../src/core/main.c:251
|
||||
#: ../src/core/main.c:254
|
||||
msgid "Specify session management ID"
|
||||
msgstr "Navedite ID upravljanja seje"
|
||||
|
||||
#: ../src/core/main.c:256
|
||||
#: ../src/core/main.c:259
|
||||
msgid "X Display to use"
|
||||
msgstr "Zaslon X za uporabo"
|
||||
|
||||
#: ../src/core/main.c:262
|
||||
#: ../src/core/main.c:265
|
||||
msgid "Initialize session from savefile"
|
||||
msgstr "Zagon seje iz datoteke"
|
||||
|
||||
#: ../src/core/main.c:268
|
||||
#: ../src/core/main.c:271
|
||||
msgid "Print version"
|
||||
msgstr "Izpiši različico"
|
||||
|
||||
#: ../src/core/main.c:274
|
||||
#: ../src/core/main.c:277
|
||||
msgid "Make X calls synchronous"
|
||||
msgstr "Naredi klice X usklajene"
|
||||
|
||||
#: ../src/core/main.c:425
|
||||
#: ../src/core/main.c:428
|
||||
#, c-format
|
||||
msgid "Failed to scan themes directory: %s\n"
|
||||
msgstr "Ni mogoče preiskati mape tem: %s\n"
|
||||
|
||||
#: ../src/core/main.c:441
|
||||
#: ../src/core/main.c:444
|
||||
#, c-format
|
||||
msgid "Could not find a theme! Be sure %s exists and contains the usual themes.\n"
|
||||
msgstr "Ni mogoče najti teme! Prepričajte se, da %s obstaja in vsebuje običajne teme.\n"
|
||||
|
||||
#: ../src/core/main.c:513
|
||||
#: ../src/core/main.c:500
|
||||
#, c-format
|
||||
msgid "Failed to restart: %s\n"
|
||||
msgstr "Ni mogoče znova pognati: %s\n"
|
||||
|
||||
#: ../src/core/prefs.c:434
|
||||
#, c-format
|
||||
msgid "Type of %s was not integer"
|
||||
msgstr "Vrsta %s ni celo število"
|
||||
|
||||
# G:1 K:0 O:0
|
||||
#: ../src/core/prefs.c:572
|
||||
#: ../src/core/prefs.c:600
|
||||
#: ../src/core/prefs.c:616
|
||||
#: ../src/core/prefs.c:632
|
||||
#: ../src/core/prefs.c:648
|
||||
#: ../src/core/prefs.c:664
|
||||
#: ../src/core/prefs.c:680
|
||||
#: ../src/core/prefs.c:696
|
||||
#: ../src/core/prefs.c:716
|
||||
#: ../src/core/prefs.c:732
|
||||
#: ../src/core/prefs.c:748
|
||||
#: ../src/core/prefs.c:766
|
||||
#: ../src/core/prefs.c:782
|
||||
#: ../src/core/prefs.c:801
|
||||
#: ../src/core/prefs.c:817
|
||||
#: ../src/core/prefs.c:852
|
||||
#: ../src/core/prefs.c:868
|
||||
#: ../src/core/prefs.c:885
|
||||
#: ../src/core/prefs.c:901
|
||||
#: ../src/core/prefs.c:917
|
||||
#: ../src/core/prefs.c:933
|
||||
#: ../src/core/prefs.c:949
|
||||
#: ../src/core/prefs.c:964
|
||||
#: ../src/core/prefs.c:979
|
||||
#: ../src/core/prefs.c:994
|
||||
#: ../src/core/prefs.c:1010
|
||||
#: ../src/core/prefs.c:1026
|
||||
#: ../src/core/prefs.c:1042
|
||||
#: ../src/core/prefs.c:1058
|
||||
#, c-format
|
||||
msgid "GConf key \"%s\" is set to an invalid type\n"
|
||||
msgstr "Ključ GConf \"%s\" je nastavljen na neveljavno vrsto\n"
|
||||
|
||||
#: ../src/core/prefs.c:1103
|
||||
#, c-format
|
||||
msgid "\"%s\" found in configuration database is not a valid value for mouse button modifier\n"
|
||||
msgstr "\"%s\", ki je bil najden v podatkovni zbirki nastavitev ni veljaven spremenilnik za miškine gumbe.\n"
|
||||
|
||||
#: ../src/core/prefs.c:1127
|
||||
#: ../src/core/prefs.c:1148
|
||||
#: ../src/core/prefs.c:1705
|
||||
#.
|
||||
#. * We found it, but it was invalid. Complain.
|
||||
#. *
|
||||
#. * FIXME: This replicates the original behaviour, but in the future
|
||||
#. * we might consider reverting invalid keys to their original values.
|
||||
#. * (We know the old value, so we can look up a suitable string in
|
||||
#. * the symtab.)
|
||||
#.
|
||||
#: ../src/core/prefs.c:450
|
||||
#: ../src/core/prefs.c:564
|
||||
#, c-format
|
||||
msgid "GConf key '%s' is set to an invalid value\n"
|
||||
msgstr "Ključ GConf '%s' je nastavljen na neveljavno vrednost\n"
|
||||
|
||||
#: ../src/core/prefs.c:1277
|
||||
# G:1 K:0 O:0
|
||||
#: ../src/core/prefs.c:537
|
||||
#: ../src/core/prefs.c:611
|
||||
#: ../src/core/prefs.c:659
|
||||
#: ../src/core/prefs.c:965
|
||||
#: ../src/core/prefs.c:983
|
||||
#: ../src/core/prefs.c:999
|
||||
#: ../src/core/prefs.c:1018
|
||||
#: ../src/core/prefs.c:1034
|
||||
#: ../src/core/prefs.c:1051
|
||||
#: ../src/core/prefs.c:1068
|
||||
#: ../src/core/prefs.c:1084
|
||||
#: ../src/core/prefs.c:1100
|
||||
#, c-format
|
||||
msgid "GConf key \"%s\" is set to an invalid type\n"
|
||||
msgstr "Ključ GConf \"%s\" je nastavljen na neveljavno vrsto\n"
|
||||
|
||||
#: ../src/core/prefs.c:860
|
||||
#, c-format
|
||||
msgid "Type of %s was not integer"
|
||||
msgstr "Vrsta %s ni celo število"
|
||||
|
||||
#: ../src/core/prefs.c:1169
|
||||
msgid "Workarounds for broken applications disabled. Some applications may not behave properly.\n"
|
||||
msgstr "Obhodi za pokvarjene programe so izključeni. Nekateri programi se morda ne bodo pravilno obnašali.\n"
|
||||
|
||||
#: ../src/core/prefs.c:1224
|
||||
#, c-format
|
||||
msgid "%d stored in GConf key %s is not a reasonable cursor_size; must be in the range 1..128\n"
|
||||
msgstr "%d, ki je shranjen v ključu GConf %s, ni običajen cursor_size; mora biti število med 1..128\n"
|
||||
|
||||
#: ../src/core/prefs.c:1357
|
||||
#: ../src/core/prefs.c:1250
|
||||
#, c-format
|
||||
msgid "Could not parse font description \"%s\" from GConf key %s\n"
|
||||
msgstr "Ni mogoče razčleniti opisa \"%s\" iz ključa GConf %s\n"
|
||||
|
||||
#: ../src/core/prefs.c:1599
|
||||
#: ../src/core/prefs.c:1310
|
||||
#, c-format
|
||||
msgid "\"%s\" found in configuration database is not a valid value for mouse button modifier\n"
|
||||
msgstr "\"%s\", ki je bil najden v podatkovni zbirki nastavitev ni veljaven spremenilnik za miškine gumbe.\n"
|
||||
|
||||
#: ../src/core/prefs.c:1589
|
||||
#, c-format
|
||||
msgid "%d stored in GConf key %s is not a reasonable number of workspaces, current maximum is %d\n"
|
||||
msgstr "%d shranjen v ključu GConf %s ni normalno število delovnih površin, trenutno največje število je %d\n"
|
||||
|
||||
#: ../src/core/prefs.c:1659
|
||||
msgid "Workarounds for broken applications disabled. Some applications may not behave properly.\n"
|
||||
msgstr "Obhodi za pokvarjene programe so izključeni. Nekateri programi se morda ne bodo pravilno obnašali.\n"
|
||||
|
||||
#: ../src/core/prefs.c:1732
|
||||
#: ../src/core/prefs.c:1633
|
||||
#, c-format
|
||||
msgid "%d stored in GConf key %s is out of range 0 to %d\n"
|
||||
msgstr "%d shranjen v GConf ključu %s je izven meje med 0 in %d\n"
|
||||
|
||||
#: ../src/core/prefs.c:1881
|
||||
#: ../src/core/prefs.c:1764
|
||||
#, c-format
|
||||
msgid "Error setting number of workspaces to %d: %s\n"
|
||||
msgstr "Napaka ob nastavljanju števila delovnih površin na %d: %s\n"
|
||||
|
||||
# G:1 K:0 O:0
|
||||
#: ../src/core/prefs.c:2246
|
||||
#: ../src/core/prefs.c:2780
|
||||
#: ../src/ui/menu.c:199
|
||||
#: ../src/core/prefs.c:2129
|
||||
#: ../src/core/prefs.c:2641
|
||||
#, c-format
|
||||
msgid "Workspace %d"
|
||||
msgstr "Delovna površina %d"
|
||||
|
||||
#: ../src/core/prefs.c:2276
|
||||
#: ../src/core/prefs.c:2446
|
||||
#: ../src/core/prefs.c:2159
|
||||
#: ../src/core/prefs.c:2332
|
||||
#, c-format
|
||||
msgid "\"%s\" found in configuration database is not a valid value for keybinding \"%s\"\n"
|
||||
msgstr "\"%s\" najden v podatkovni zbirki nastavitev ni veljaven ključ za tipkovno vez \"%s\"\n"
|
||||
|
||||
#: ../src/core/prefs.c:2861
|
||||
#: ../src/core/prefs.c:2722
|
||||
#, c-format
|
||||
msgid "Error setting name for workspace %d to \"%s\": %s\n"
|
||||
msgstr "Napaka ob nastavljanju imena delovne površine %d na \"%s\": %s\n"
|
||||
@@ -296,14 +286,14 @@ msgstr "Zaslon %d na prikazu \"%s\" že ima upravljalnik oken\n"
|
||||
msgid "Could not release screen %d on display \"%s\"\n"
|
||||
msgstr "Ni mogoče opustiti prikaza %d prikazu \"%s\"\n"
|
||||
|
||||
#: ../src/core/session.c:826
|
||||
#: ../src/core/session.c:833
|
||||
#: ../src/core/session.c:837
|
||||
#: ../src/core/session.c:844
|
||||
#, c-format
|
||||
msgid "Could not create directory '%s': %s\n"
|
||||
msgstr "Ni mogoče ustvariti imenika %s %s\n"
|
||||
|
||||
# G:2 K:0 O:0
|
||||
#: ../src/core/session.c:843
|
||||
#: ../src/core/session.c:854
|
||||
#, c-format
|
||||
msgid "Could not open session file '%s' for writing: %s\n"
|
||||
msgstr "Ni mogoče odpreti datoteke seje '%s' za pisanje: %s\n"
|
||||
@@ -318,109 +308,113 @@ msgstr "Napaka ob zapisovanju datoteke seje '%s': %s\n"
|
||||
msgid "Error closing session file '%s': %s\n"
|
||||
msgstr "Napaka ob zapiranju datoteke seje '%s': %s\n"
|
||||
|
||||
#: ../src/core/session.c:1075
|
||||
#. oh, just give up
|
||||
#: ../src/core/session.c:1093
|
||||
#, c-format
|
||||
msgid "Failed to read saved session file %s: %s\n"
|
||||
msgstr "Ni mogoče prebrati datoteke shranjene seje %s: %s\n"
|
||||
|
||||
#: ../src/core/session.c:1110
|
||||
#: ../src/core/session.c:1132
|
||||
#, c-format
|
||||
msgid "Failed to parse saved session file: %s\n"
|
||||
msgstr "Ni mogoče razčleniti datoteke shranjene seje: %s\n"
|
||||
|
||||
#: ../src/core/session.c:1159
|
||||
#: ../src/core/session.c:1181
|
||||
#, c-format
|
||||
msgid "<metacity_session> attribute seen but we already have the session ID"
|
||||
msgstr "atribut <metacity_session> je bil viden, a mi že imamo ID seje"
|
||||
|
||||
#: ../src/core/session.c:1172
|
||||
#: ../src/core/session.c:1194
|
||||
#, c-format
|
||||
msgid "Unknown attribute %s on <metacity_session> element"
|
||||
msgstr "Neznan atribut %s v elementu <metacity_session>"
|
||||
|
||||
#: ../src/core/session.c:1189
|
||||
#: ../src/core/session.c:1211
|
||||
#, c-format
|
||||
msgid "nested <window> tag"
|
||||
msgstr "gnezdena označba <window>"
|
||||
|
||||
#: ../src/core/session.c:1247
|
||||
#: ../src/core/session.c:1279
|
||||
#: ../src/core/session.c:1269
|
||||
#: ../src/core/session.c:1301
|
||||
#, c-format
|
||||
msgid "Unknown attribute %s on <window> element"
|
||||
msgstr "Neznan atribut %s elementa <window>"
|
||||
|
||||
#: ../src/core/session.c:1351
|
||||
#: ../src/core/session.c:1373
|
||||
#, c-format
|
||||
msgid "Unknown attribute %s on <maximized> element"
|
||||
msgstr "Neznan atribut %s elementa <maximize>"
|
||||
|
||||
#: ../src/core/session.c:1411
|
||||
#: ../src/core/session.c:1433
|
||||
#, c-format
|
||||
msgid "Unknown attribute %s on <geometry> element"
|
||||
msgstr "Neznan atribut %s elementa <geometry>"
|
||||
|
||||
#: ../src/core/session.c:1431
|
||||
#: ../src/core/session.c:1453
|
||||
#, c-format
|
||||
msgid "Unknown element %s"
|
||||
msgstr "Neznan element %s"
|
||||
|
||||
#: ../src/core/session.c:1868
|
||||
#: ../src/core/session.c:1879
|
||||
#, c-format
|
||||
msgid "Error launching metacity-dialog to warn about apps that don't support session management: %s\n"
|
||||
msgstr "Napaka ob zaganjanju metacity-dialog za opozorilo o programih, ki ne podpirajo upravljanja seje: %s\n"
|
||||
|
||||
#: ../src/core/util.c:98
|
||||
#: ../src/core/util.c:101
|
||||
#, c-format
|
||||
msgid "Failed to open debug log: %s\n"
|
||||
msgstr "Odpiranje razhroščevalnega dnevnika ni uspelo: %s\n"
|
||||
|
||||
#: ../src/core/util.c:108
|
||||
#: ../src/core/util.c:111
|
||||
#, c-format
|
||||
msgid "Failed to fdopen() log file %s: %s\n"
|
||||
msgstr "Odpiranje dnevniške datoteke %s s fdopen() ni uspelo: %s\n"
|
||||
|
||||
#: ../src/core/util.c:114
|
||||
#: ../src/core/util.c:117
|
||||
#, c-format
|
||||
msgid "Opened log file %s\n"
|
||||
msgstr "Odpri dnevniško datoteko %s\n"
|
||||
|
||||
#: ../src/core/util.c:133
|
||||
#: ../src/core/util.c:136
|
||||
#: ../src/tools/metacity-message.c:176
|
||||
#, c-format
|
||||
msgid "Metacity was compiled without support for verbose mode\n"
|
||||
msgstr "Metacity je bil preveden brez podpore za podrobni način\n"
|
||||
|
||||
#: ../src/core/util.c:231
|
||||
#: ../src/core/util.c:236
|
||||
msgid "Window manager: "
|
||||
msgstr "Upravljavec oken: "
|
||||
|
||||
# G:4 K:0 O:0
|
||||
#: ../src/core/util.c:379
|
||||
#: ../src/core/util.c:388
|
||||
msgid "Bug in window manager: "
|
||||
msgstr "Hrošč v upravljavcu oken: "
|
||||
|
||||
#: ../src/core/util.c:408
|
||||
#: ../src/core/util.c:421
|
||||
msgid "Window manager warning: "
|
||||
msgstr "Opozorilo upravljavca oken: "
|
||||
|
||||
#: ../src/core/util.c:432
|
||||
#: ../src/core/util.c:449
|
||||
msgid "Window manager error: "
|
||||
msgstr "Napaka upravljavca oken: "
|
||||
|
||||
#: ../src/core/window-props.c:192
|
||||
#: ../src/core/window-props.c:195
|
||||
#, c-format
|
||||
msgid "Application set a bogus _NET_WM_PID %lu\n"
|
||||
msgstr "Program je nastavil pokvarjen _NET_WM_PID %lu\n"
|
||||
|
||||
#: ../src/core/window-props.c:324
|
||||
#: ../src/core/window-props.c:327
|
||||
#, c-format
|
||||
msgid "%s (on %s)"
|
||||
msgstr "%s (na %s)"
|
||||
|
||||
#: ../src/core/window-props.c:1406
|
||||
#: ../src/core/window-props.c:1409
|
||||
#, c-format
|
||||
msgid "Invalid WM_TRANSIENT_FOR window 0x%lx specified for %s.\n"
|
||||
msgstr "Neveljaven WM_TRANSIENT_FOR za okno 0x%lx naveden za %s.\n"
|
||||
|
||||
#. first time through
|
||||
#: ../src/core/window.c:5650
|
||||
#: ../src/core/window.c:5661
|
||||
#, c-format
|
||||
msgid "Window %s sets SM_CLIENT_ID on itself, instead of on the WM_CLIENT_LEADER window as specified in the ICCCM.\n"
|
||||
msgstr "Okno %s nastavi svoj SM_CLIENT_ID, namesto, da bi nastavilo WM_CLIENT_LEADER kot je zavedeno v ICCCM.\n"
|
||||
@@ -432,7 +426,7 @@ msgstr "Okno %s nastavi svoj SM_CLIENT_ID, namesto, da bi nastavilo WM_CLIENT_LE
|
||||
#. * MWM but not WM_NORMAL_HINTS are basically broken. We complain
|
||||
#. * about these apps but make them work.
|
||||
#.
|
||||
#: ../src/core/window.c:6215
|
||||
#: ../src/core/window.c:6226
|
||||
#, c-format
|
||||
msgid "Window %s sets an MWM hint indicating it isn't resizable, but sets min size %d x %d and max size %d x %d; this doesn't make much sense.\n"
|
||||
msgstr "Okno %s določi namig MWM, ki pove, da ni mogoče spremeniti velikosti, hkrati pa določi najmanjšo velikost na %d x %d in največjo na %d x %d; vrednost ni smiselna.\n"
|
||||
@@ -495,8 +489,8 @@ msgid "Arrangement of buttons on the titlebar"
|
||||
msgstr "Postavitev gumbov v nazivu okna"
|
||||
|
||||
#: ../src/metacity.schemas.in.h:8
|
||||
msgid "Arrangement of buttons on the titlebar. The value should be a string, such as \"menu:minimize,maximize,close\"; the colon separates the left corner of the window from the right corner, and the button names are comma-separated. Duplicate buttons are not allowed. Unknown button names are silently ignored so that buttons can be added in future metacity versions without breaking older versions."
|
||||
msgstr "Postavitev gumbov v nazivni vrstici okna. Vrednost mora biti niz, kot je \"menu:minimize,maximize,close\"; dvopičje loči levi kot okna od desnega in imena gumbov so ločena z vejico. Podvojeni gumbi niso dovoljeni. Neznana imena gumbov so tiho prezrta, tako, da se lahko v novih različicah Metacity doda nove gumbe brez, da bi se porušila kompatibilnost s starimi različicami"
|
||||
msgid "Arrangement of buttons on the titlebar. The value should be a string, such as \"menu:minimize,maximize,spacer,close\"; the colon separates the left corner of the window from the right corner, and the button names are comma-separated. Duplicate buttons are not allowed. Unknown button names are silently ignored so that buttons can be added in future metacity versions without breaking older versions. A special spacer tag can be used to insert some space between two adjacent buttons."
|
||||
msgstr "Postavitev gumbov v naslovni vrstici okna. Vrednost mora biti niz, kot je \"menu:minimize,maximize,preslednik,close\"; dvopičje loči levi kot okna od desnega in imena gumbov so ločena z vejico. Podvojeni gumbi niso dovoljeni. Neznana imena gumbov so tiho prezrta, tako, da se lahko v novih različicah Metacity doda nove gumbe brez, da bi se porušila kompatibilnost s starimi različicami. Posebna oznaka ločilnika se lahko uporabi pri večanju razdalje med gumbi."
|
||||
|
||||
#: ../src/metacity.schemas.in.h:9
|
||||
msgid "Automatically raises the focused window"
|
||||
@@ -1218,16 +1212,16 @@ msgid "This keybinding resizes a window to fill available vertical space. The fo
|
||||
msgstr "Ta bližnjica tipk spremeni velikost okna, da napolni navpičen prostor, ki je na voljo. Oblikovano je kot \"<Control>a\" ali \"<Shift><Alt>F1. Razčlenilnik je precej popustljiv in dopušča različno velikost črk ter okrajšave kot npr. \"<Ctl>\" in \"<Ctrl>\". Če v to možnost nastavite posebni niz \"disabled\", potem za to dejanje ne bo bližnjice tipk."
|
||||
|
||||
#: ../src/metacity.schemas.in.h:187
|
||||
msgid "This option determines the effects of double-clicking on the title bar. Current valid options are 'toggle_shade', which will shade/unshade the window, 'toggle_maximize' which will maximize/unmaximize the window, 'minimize' which will minimize the window, and 'none' which will not do anything."
|
||||
msgstr "Ta možnost določa učinek dvojnega klika na naslovno vrstico okna. Trenutno veljavne možnosti so 'toggle_shade', ki spremeni zasenčenost okna, 'toggle_maximize', ki spremeni razprtost okna, 'minimize', ki skrči okno in 'none', ki ne naredi ničesar."
|
||||
msgid "This option determines the effects of double-clicking on the title bar. Current valid options are 'toggle_shade', which will shade/unshade the window, 'toggle_maximize' which will maximize/unmaximize the window, 'toggle_maximize_horizontally' and 'toggle_maximize_vertically' which will maximize/unmaximize the window in that direction only, 'minimize' which will minimize the window, 'shade' which will roll the window up, 'menu' which will display the window menu, 'lower' which will put the window behind all the others, and 'none' which will not do anything."
|
||||
msgstr "Ta možnost določa učinek dvojnega klika miške na naslovno vrstico okna. Trenutno veljavne možnosti so 'preklop_senčenja', ki spremeni zasenčenost okna, 'preklop razpenjanja', ki razpne ali skrči okno, 'preklop razpenjanja vodoravno' in 'preklop razpenjanja navpično', ki razpneta okna le v eni smeri, 'pomanjšaj', ki pomanjša okno, 'zavij', ki zvije okno na velikost naslovne vrstice', 'meni', ki prikaže meni okna, 'pod', ki skrije okno pod ostala okna in 'brez', ki ne naredi ničesar."
|
||||
|
||||
#: ../src/metacity.schemas.in.h:188
|
||||
msgid "This option determines the effects of middle-clicking on the title bar. Current valid options are 'toggle_shade', which will shade/unshade the window, 'toggle_maximize' which will maximize/unmaximize the window, 'minimize' which will minimize the window, and 'none' which will not do anything."
|
||||
msgstr "Ta možnost določa učinek srednjega klika miške na naslovno vrstico okna. Trenutno veljavne možnosti so 'preklop_senčenja', ki spremeni zasenčenost okna, 'preklop razpetosti', ki spremeni razpetost okna, 'pomanjšaj', ki pomanjša okno in 'brez', ki ne naredi ničesar."
|
||||
msgid "This option determines the effects of middle-clicking on the title bar. Current valid options are 'toggle_shade', which will shade/unshade the window, 'toggle_maximize' which will maximize/unmaximize the window, 'toggle_maximize_horizontally' and 'toggle_maximize_vertically' which will maximize/unmaximize the window in that direction only, 'minimize' which will minimize the window, 'shade' which will roll the window up, 'menu' which will display the window menu, 'lower' which will put the window behind all the others, and 'none' which will not do anything."
|
||||
msgstr "Ta možnost določa učinek srednjega klika miške na naslovno vrstico okna. Trenutno veljavne možnosti so 'preklop_senčenja', ki spremeni zasenčenost okna, 'preklop razpenjanja', ki razpne ali skrči okno, 'preklop razpenjanja vodoravno' in 'preklop razpenjanja navpično', ki razpneta okna le v eni smeri, 'pomanjšaj', ki pomanjša okno, 'zavij', ki zvije okno na velikost naslovne vrstice', 'meni', ki prikaže meni okna, 'pod', ki skrije okno pod ostala okna in 'brez', ki ne naredi ničesar."
|
||||
|
||||
#: ../src/metacity.schemas.in.h:189
|
||||
msgid "This option determines the effects of right-clicking on the title bar. Current valid options are 'toggle_shade', which will shade/unshade the window, 'toggle_maximize' which will maximize/unmaximize the window, 'minimize' which will minimize the window, and 'none' which will not do anything."
|
||||
msgstr "Ta možnost določa učinek desnega klika miške na naslovno vrstico okna. Trenutno veljavne možnosti so 'preklop_senčenja', ki spremeni zasenčenost okna, 'preklop razpetosti', ki spremeni razpetost okna, 'pomanjšaj', ki pomanjša okno in 'brez', ki ne naredi ničesar."
|
||||
msgid "This option determines the effects of right-clicking on the title bar. Current valid options are 'toggle_shade', which will shade/unshade the window, 'toggle_maximize' which will maximize/unmaximize the window, 'toggle_maximize_horizontally' and 'toggle_maximize_vertically' which will maximize/unmaximize the window in that direction only, 'minimize' which will minimize the window, 'shade' which will roll the window up, 'menu' which will display the window menu, 'lower' which will put the window behind all the others, and 'none' which will not do anything."
|
||||
msgstr "Ta možnost določa učinek desnega klika miške na naslovno vrstico okna. Trenutno veljavne možnosti so 'preklop_senčenja', ki spremeni zasenčenost okna, 'preklop razpenjanja', ki razpne ali skrči okno, 'preklop razpenjanja vodoravno' in 'preklop razpenjanja navpično', ki razpneta okna le v eni smeri, 'pomanjšaj', ki pomanjša okno, 'zavij', ki zvije okno na velikost naslovne vrstice', 'meni', ki prikaže meni okna, 'pod', ki skrije okno pod ostala okna in 'brez', ki ne naredi ničesar."
|
||||
|
||||
#: ../src/metacity.schemas.in.h:190
|
||||
msgid "This option provides additional control over how newly created windows get focus. It has two possible values; \"smart\" applies the user's normal focus mode, and \"strict\" results in windows started from a terminal not being given focus."
|
||||
@@ -1425,17 +1419,24 @@ msgid "_Close"
|
||||
msgstr "_Zapri"
|
||||
|
||||
# G:1 K:0 O:0
|
||||
#: ../src/ui/menu.c:208
|
||||
#: ../src/ui/menu.c:203
|
||||
#, c-format
|
||||
msgid "Workspace %d%n"
|
||||
msgstr "Delovna površina %d%n"
|
||||
|
||||
# G:1 K:0 O:0
|
||||
#: ../src/ui/menu.c:213
|
||||
#, c-format
|
||||
msgid "Workspace 1_0"
|
||||
msgstr "Delovna površina 1_0"
|
||||
|
||||
# G:2 K:0 O:0
|
||||
#: ../src/ui/menu.c:210
|
||||
#: ../src/ui/menu.c:215
|
||||
#, c-format
|
||||
msgid "Workspace %s%d"
|
||||
msgstr "Delovna površina %s%d"
|
||||
|
||||
#: ../src/ui/menu.c:390
|
||||
#: ../src/ui/menu.c:395
|
||||
msgid "Move to Another _Workspace"
|
||||
msgstr "Premakni na dru_go delovno površino"
|
||||
|
||||
@@ -2265,6 +2266,7 @@ msgid "%g milliseconds to draw one window frame"
|
||||
msgstr "%g milisekund za risanje ene sličice okna"
|
||||
|
||||
#: ../src/ui/theme-viewer.c:797
|
||||
#, c-format
|
||||
msgid "Usage: metacity-theme-viewer [THEMENAME]\n"
|
||||
msgstr "Uporaba: metacity-theme-viewer [IMETEME]\n"
|
||||
|
||||
@@ -2380,189 +2382,200 @@ msgid "Button aspect ratio %g is not reasonable"
|
||||
msgstr "Razmerje gumba %g ni smiselno"
|
||||
|
||||
#: ../src/ui/theme.c:357
|
||||
#, c-format
|
||||
msgid "Frame geometry does not specify size of buttons"
|
||||
msgstr "Geometrija okvirja ne navaja velikosti gumbov"
|
||||
|
||||
#: ../src/ui/theme.c:988
|
||||
#: ../src/ui/theme.c:1022
|
||||
#, c-format
|
||||
msgid "Gradients should have at least two colors"
|
||||
msgstr "Prelivi bi morali imeti vsaj dve barvi"
|
||||
|
||||
#: ../src/ui/theme.c:1114
|
||||
#: ../src/ui/theme.c:1148
|
||||
#, c-format
|
||||
msgid "GTK color specification must have the state in brackets, e.g. gtk:fg[NORMAL] where NORMAL is the state; could not parse \"%s\""
|
||||
msgstr "Navedba barve GTK mora vsebovati stanje v oglatih oklepajih, npr. gtk:fg[NORMAL], kjer je NORMAL stanje; ni mogoče razčleniti \"%s\""
|
||||
|
||||
#: ../src/ui/theme.c:1128
|
||||
#: ../src/ui/theme.c:1162
|
||||
#, c-format
|
||||
msgid "GTK color specification must have a close bracket after the state, e.g. gtk:fg[NORMAL] where NORMAL is the state; could not parse \"%s\""
|
||||
msgstr "Navedbi barve GTK manjka oglati zaklepaj za stanjem, npr. gtk:fg[NORMAL], kjer je NORMAL stanje; ni mogoče razčleniti \"%s\""
|
||||
|
||||
#: ../src/ui/theme.c:1139
|
||||
#: ../src/ui/theme.c:1173
|
||||
#, c-format
|
||||
msgid "Did not understand state \"%s\" in color specification"
|
||||
msgstr "Ni mogoče razumeti stanja \"%s\" v navedbi barve "
|
||||
|
||||
#: ../src/ui/theme.c:1152
|
||||
#: ../src/ui/theme.c:1186
|
||||
#, c-format
|
||||
msgid "Did not understand color component \"%s\" in color specification"
|
||||
msgstr "Ni mogoče razumeti barvne komponente \"%s\" v navedbi barve"
|
||||
|
||||
#: ../src/ui/theme.c:1182
|
||||
#: ../src/ui/theme.c:1216
|
||||
#, c-format
|
||||
msgid "Blend format is \"blend/bg_color/fg_color/alpha\", \"%s\" does not fit the format"
|
||||
msgstr "Oblika zapisa preliva je \"blend/bg_color/fg_color/alpha\", \"%s\" ne ustreza pravilni obliki"
|
||||
|
||||
#: ../src/ui/theme.c:1193
|
||||
#: ../src/ui/theme.c:1227
|
||||
#, c-format
|
||||
msgid "Could not parse alpha value \"%s\" in blended color"
|
||||
msgstr "V prelivni barvi ni mogoče razčleniti vrednosti alfa \"%s\""
|
||||
|
||||
#: ../src/ui/theme.c:1203
|
||||
#: ../src/ui/theme.c:1237
|
||||
#, c-format
|
||||
msgid "Alpha value \"%s\" in blended color is not between 0.0 and 1.0"
|
||||
msgstr "V prelivni barvi alfa vrednost \"%s\" ni med 0.0 in 1.0"
|
||||
|
||||
#: ../src/ui/theme.c:1251
|
||||
#: ../src/ui/theme.c:1285
|
||||
#, c-format
|
||||
msgid "Shade format is \"shade/base_color/factor\", \"%s\" does not fit the format"
|
||||
msgstr "Oblika zapisa barve senčenja je \"shade/base_color/factor\", \"%s\" ne ustreza pravilni obliki."
|
||||
|
||||
#: ../src/ui/theme.c:1262
|
||||
#: ../src/ui/theme.c:1296
|
||||
#, c-format
|
||||
msgid "Could not parse shade factor \"%s\" in shaded color"
|
||||
msgstr "Ni mogoče razčleniti faktorja senčenja \"%s\" v senčeni barvi"
|
||||
|
||||
#: ../src/ui/theme.c:1272
|
||||
#: ../src/ui/theme.c:1306
|
||||
#, c-format
|
||||
msgid "Shade factor \"%s\" in shaded color is negative"
|
||||
msgstr "V senčeni barvi je faktor senčenja \"%s\" negativen"
|
||||
|
||||
#: ../src/ui/theme.c:1302
|
||||
#: ../src/ui/theme.c:1336
|
||||
#, c-format
|
||||
msgid "Could not parse color \"%s\""
|
||||
msgstr "Ni mogoče razčleniti barve \"%s\""
|
||||
|
||||
#: ../src/ui/theme.c:1560
|
||||
#: ../src/ui/theme.c:1594
|
||||
#, c-format
|
||||
msgid "Coordinate expression contains character '%s' which is not allowed"
|
||||
msgstr "Izraz koordinat vsebuje znak '%s', ki ni dovoljen"
|
||||
|
||||
#: ../src/ui/theme.c:1587
|
||||
#: ../src/ui/theme.c:1621
|
||||
#, c-format
|
||||
msgid "Coordinate expression contains floating point number '%s' which could not be parsed"
|
||||
msgstr "Izraz koordinat vsebuje številko s plavajočo vejico '%s', ki ne more biti razčlenjena"
|
||||
|
||||
#: ../src/ui/theme.c:1601
|
||||
#: ../src/ui/theme.c:1635
|
||||
#, c-format
|
||||
msgid "Coordinate expression contains integer '%s' which could not be parsed"
|
||||
msgstr "Izraz koordinat vsebuje celo število '%s', ki ga ni mogoče razčleniti"
|
||||
|
||||
#: ../src/ui/theme.c:1723
|
||||
#: ../src/ui/theme.c:1757
|
||||
#, c-format
|
||||
msgid "Coordinate expression contained unknown operator at the start of this text: \"%s\""
|
||||
msgstr "Izraz koordinat vsebuje neznan operator na pričetku besedila: \"%s\""
|
||||
|
||||
#: ../src/ui/theme.c:1780
|
||||
#: ../src/ui/theme.c:1814
|
||||
#, c-format
|
||||
msgid "Coordinate expression was empty or not understood"
|
||||
msgstr "Izraz koordinat je prazen ali ni razumljen"
|
||||
|
||||
#: ../src/ui/theme.c:1891
|
||||
#: ../src/ui/theme.c:1901
|
||||
#: ../src/ui/theme.c:1925
|
||||
#: ../src/ui/theme.c:1935
|
||||
#: ../src/ui/theme.c:1969
|
||||
#, c-format
|
||||
msgid "Coordinate expression results in division by zero"
|
||||
msgstr "Izraz koordinat se povzroči deljenje z ničlo"
|
||||
|
||||
#: ../src/ui/theme.c:1943
|
||||
#: ../src/ui/theme.c:1977
|
||||
#, c-format
|
||||
msgid "Coordinate expression tries to use mod operator on a floating-point number"
|
||||
msgstr "Izraz koordinat poskuša uporabiti operator mod ali številko s plavajočo vejico"
|
||||
|
||||
#: ../src/ui/theme.c:1999
|
||||
#: ../src/ui/theme.c:2033
|
||||
#, c-format
|
||||
msgid "Coordinate expression has an operator \"%s\" where an operand was expected"
|
||||
msgstr "Izraz koordinat vsebuje operator \"%s\", kjer je pričakovan operand"
|
||||
|
||||
#: ../src/ui/theme.c:2008
|
||||
#: ../src/ui/theme.c:2042
|
||||
#, c-format
|
||||
msgid "Coordinate expression had an operand where an operator was expected"
|
||||
msgstr "Izraz koordinat vsebuje operand kjer je pričakovan operator"
|
||||
|
||||
#: ../src/ui/theme.c:2016
|
||||
#: ../src/ui/theme.c:2050
|
||||
#, c-format
|
||||
msgid "Coordinate expression ended with an operator instead of an operand"
|
||||
msgstr "Izraz koordinat se konča z operatorjem namesto z operandom"
|
||||
|
||||
#: ../src/ui/theme.c:2026
|
||||
#: ../src/ui/theme.c:2060
|
||||
#, c-format
|
||||
msgid "Coordinate expression has operator \"%c\" following operator \"%c\" with no operand in between"
|
||||
msgstr "Izraz koordinat vsebuje operator \"%c\", ki sledi operatorju \"%c\", brez vmesnega operanda"
|
||||
|
||||
#: ../src/ui/theme.c:2173
|
||||
#: ../src/ui/theme.c:2214
|
||||
#: ../src/ui/theme.c:2207
|
||||
#: ../src/ui/theme.c:2248
|
||||
#, c-format
|
||||
msgid "Coordinate expression had unknown variable or constant \"%s\""
|
||||
msgstr "Izraz koordinat vsebuje neznano spremenljivko ali konstanto \"%s\""
|
||||
|
||||
#: ../src/ui/theme.c:2268
|
||||
#: ../src/ui/theme.c:2302
|
||||
#, c-format
|
||||
msgid "Coordinate expression parser overflowed its buffer."
|
||||
msgstr "Razčlenjevalnik izrazov koordinat je preplavil medpomnilnik."
|
||||
|
||||
#: ../src/ui/theme.c:2297
|
||||
#: ../src/ui/theme.c:2331
|
||||
#, c-format
|
||||
msgid "Coordinate expression had a close parenthesis with no open parenthesis"
|
||||
msgstr "Izraz koordinat vsebuje zaklepaj, a ne oklepaja"
|
||||
|
||||
#: ../src/ui/theme.c:2361
|
||||
#: ../src/ui/theme.c:2395
|
||||
#, c-format
|
||||
msgid "Coordinate expression had an open parenthesis with no close parenthesis"
|
||||
msgstr "Izraz koordinat vsebuje uklepaj, vendar je brez zaklepaja"
|
||||
|
||||
#: ../src/ui/theme.c:2372
|
||||
#: ../src/ui/theme.c:2406
|
||||
#, c-format
|
||||
msgid "Coordinate expression doesn't seem to have any operators or operands"
|
||||
msgstr "Videti je, da izraz koordinat ne vsebuje operatorjev ali operandov"
|
||||
|
||||
#: ../src/ui/theme.c:2574
|
||||
#: ../src/ui/theme.c:2594
|
||||
#: ../src/ui/theme.c:2614
|
||||
#: ../src/ui/theme.c:2608
|
||||
#: ../src/ui/theme.c:2628
|
||||
#: ../src/ui/theme.c:2648
|
||||
#, c-format
|
||||
msgid "Theme contained an expression that resulted in an error: %s\n"
|
||||
msgstr "Tema vsebuje izraz, ki je povzročil napako: %s\n"
|
||||
|
||||
#: ../src/ui/theme.c:4133
|
||||
#: ../src/ui/theme.c:4167
|
||||
#, c-format
|
||||
msgid "<button function=\"%s\" state=\"%s\" draw_ops=\"whatever\"/> must be specified for this frame style"
|
||||
msgstr "za ta slog okvirja mora biti naveden <button function=\"%s\" state=\"%s\" draw_ops=\"karkoli\"/>"
|
||||
|
||||
#: ../src/ui/theme.c:4609
|
||||
#: ../src/ui/theme.c:4634
|
||||
#: ../src/ui/theme.c:4643
|
||||
#: ../src/ui/theme.c:4668
|
||||
#, c-format
|
||||
msgid "Missing <frame state=\"%s\" resize=\"%s\" focus=\"%s\" style=\"whatever\"/>"
|
||||
msgstr "Manjka <frame state=\"%s\" resize=\"%s\" focus=\"%s\" style=\"karkoli\"/>"
|
||||
|
||||
#: ../src/ui/theme.c:4678
|
||||
#: ../src/ui/theme.c:4712
|
||||
#, c-format
|
||||
msgid "Failed to load theme \"%s\": %s\n"
|
||||
msgstr "Nalaganje teme \"%s\" ni uspelo: %s\n"
|
||||
|
||||
#: ../src/ui/theme.c:4804
|
||||
#: ../src/ui/theme.c:4811
|
||||
#: ../src/ui/theme.c:4818
|
||||
#: ../src/ui/theme.c:4825
|
||||
#: ../src/ui/theme.c:4832
|
||||
#: ../src/ui/theme.c:4838
|
||||
#: ../src/ui/theme.c:4845
|
||||
#: ../src/ui/theme.c:4852
|
||||
#: ../src/ui/theme.c:4859
|
||||
#: ../src/ui/theme.c:4866
|
||||
#, c-format
|
||||
msgid "No <%s> set for theme \"%s\""
|
||||
msgstr "Ni nastavljen <%s> za temo \"%s\""
|
||||
|
||||
#: ../src/ui/theme.c:4840
|
||||
#: ../src/ui/theme.c:4874
|
||||
#, c-format
|
||||
msgid "No frame style set for window type \"%s\" in theme \"%s\", add a <window type=\"%s\" style_set=\"whatever\"/> element"
|
||||
msgstr "Slog okvirja za okno vrste \"%s\" v temi \"%s\" ni nastavljen, dodajte element <window type=\"%s\" style_set=\"whatever\"/>"
|
||||
|
||||
#: ../src/ui/theme.c:5207
|
||||
#: ../src/ui/theme.c:5269
|
||||
#: ../src/ui/theme.c:5332
|
||||
#: ../src/ui/theme.c:5241
|
||||
#: ../src/ui/theme.c:5303
|
||||
#: ../src/ui/theme.c:5366
|
||||
#, c-format
|
||||
msgid "User-defined constants must begin with a capital letter; \"%s\" does not"
|
||||
msgstr "Uporabniško določene konstante se morajo začeti z veliko črko; \"%s\" se ne"
|
||||
|
||||
#: ../src/ui/theme.c:5215
|
||||
#: ../src/ui/theme.c:5277
|
||||
#: ../src/ui/theme.c:5340
|
||||
#: ../src/ui/theme.c:5249
|
||||
#: ../src/ui/theme.c:5311
|
||||
#: ../src/ui/theme.c:5374
|
||||
#, c-format
|
||||
msgid "Constant \"%s\" has already been defined"
|
||||
msgstr "Konstanta \"%s\" je bila že določena"
|
||||
|
322
po/sv.po
322
po/sv.po
@@ -7,8 +7,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: metacity\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2008-01-15 04:11+0100\n"
|
||||
"PO-Revision-Date: 2008-01-15 04:12+0100\n"
|
||||
"POT-Creation-Date: 2008-03-08 23:07+0100\n"
|
||||
"PO-Revision-Date: 2008-03-09 00:43+0100\n"
|
||||
"Last-Translator: Daniel Nylander <po@danielnylander.se>\n"
|
||||
"Language-Team: Swedish <tp-sv@listor.tp-sv.se>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
@@ -28,16 +28,16 @@ msgstr "Fönsterhantering"
|
||||
msgid "Unknown window information request: %d"
|
||||
msgstr "Okänd fråga efter fönsterinformation: %d"
|
||||
|
||||
#: ../src/core/delete.c:67
|
||||
#: ../src/core/delete.c:94
|
||||
#: ../src/core/delete.c:70
|
||||
#: ../src/core/delete.c:97
|
||||
#: ../src/ui/metacity-dialog.c:50
|
||||
#: ../src/ui/theme-parser.c:481
|
||||
#, c-format
|
||||
msgid "Could not parse \"%s\" as an integer"
|
||||
msgstr "Kunde inte tolka \"%s\" som ett heltal"
|
||||
|
||||
#: ../src/core/delete.c:74
|
||||
#: ../src/core/delete.c:101
|
||||
#: ../src/core/delete.c:77
|
||||
#: ../src/core/delete.c:104
|
||||
#: ../src/ui/metacity-dialog.c:57
|
||||
#: ../src/ui/theme-parser.c:490
|
||||
#: ../src/ui/theme-parser.c:545
|
||||
@@ -45,23 +45,23 @@ msgstr "Kunde inte tolka \"%s\" som ett heltal"
|
||||
msgid "Did not understand trailing characters \"%s\" in string \"%s\""
|
||||
msgstr "Förstod inte de avslutande tecknen \"%s\" i strängen \"%s\""
|
||||
|
||||
#: ../src/core/delete.c:132
|
||||
#: ../src/core/delete.c:135
|
||||
#, c-format
|
||||
msgid "Failed to parse message \"%s\" from dialog process\n"
|
||||
msgstr "Misslyckades med att tolka meddelandet \"%s\" från dialogprocess\n"
|
||||
|
||||
#: ../src/core/delete.c:267
|
||||
#: ../src/core/delete.c:270
|
||||
#, c-format
|
||||
msgid "Error reading from dialog display process: %s\n"
|
||||
msgstr "Fel vid läsning från dialogvisningsprocess: %s\n"
|
||||
|
||||
# SUN CHANGED MESSAGE
|
||||
#: ../src/core/delete.c:350
|
||||
#: ../src/core/delete.c:353
|
||||
#, c-format
|
||||
msgid "Error launching metacity-dialog to ask about killing an application: %s\n"
|
||||
msgstr "Fel vid start av metacity-dialog för att fråga om ett program skulle dödas: %s\n"
|
||||
|
||||
#: ../src/core/delete.c:459
|
||||
#: ../src/core/delete.c:462
|
||||
#, c-format
|
||||
msgid "Failed to get hostname: %s\n"
|
||||
msgstr "Misslyckades med att få tag i värdnamn: %s\n"
|
||||
@@ -92,27 +92,27 @@ msgstr ""
|
||||
msgid "Fatal IO error %d (%s) on display '%s'.\n"
|
||||
msgstr "Ödesdigert IO-fel %d (%s) på display \"%s\".\n"
|
||||
|
||||
#: ../src/core/keybindings.c:1087
|
||||
#: ../src/core/keybindings.c:1090
|
||||
#, c-format
|
||||
msgid "Some other program is already using the key %s with modifiers %x as a binding\n"
|
||||
msgstr "Ett annat program använder redan tangenten %s med modifierarna %x som en bindning\n"
|
||||
|
||||
#: ../src/core/keybindings.c:2733
|
||||
#: ../src/core/keybindings.c:2736
|
||||
#, c-format
|
||||
msgid "Error launching metacity-dialog to print an error about a command: %s\n"
|
||||
msgstr "Fel vid start av metacity-dialog för att skriva ut ett fel om ett kommando: %s\n"
|
||||
|
||||
#: ../src/core/keybindings.c:2838
|
||||
#: ../src/core/keybindings.c:2841
|
||||
#, c-format
|
||||
msgid "No command %d has been defined.\n"
|
||||
msgstr "Inget kommando %d har definierats.\n"
|
||||
|
||||
#: ../src/core/keybindings.c:3866
|
||||
#: ../src/core/keybindings.c:3869
|
||||
#, c-format
|
||||
msgid "No terminal command has been defined.\n"
|
||||
msgstr "Inget terminalkommando har definierats.\n"
|
||||
|
||||
#: ../src/core/main.c:112
|
||||
#: ../src/core/main.c:115
|
||||
#, c-format
|
||||
msgid ""
|
||||
"metacity %s\n"
|
||||
@@ -125,143 +125,133 @@ msgstr ""
|
||||
"Det här är fri programvara; se källkoden för kopieringsvillkor.\n"
|
||||
"Det finns INGA garantier; inte ens för SÄLJBARHET eller LÄMPLIGHET FÖR NÅGOT SPECIELLT ÄNDAMÅL.\n"
|
||||
|
||||
#: ../src/core/main.c:239
|
||||
#: ../src/core/main.c:242
|
||||
msgid "Disable connection to session manager"
|
||||
msgstr "Inaktivera anslutning till sessionshanteraren"
|
||||
|
||||
#: ../src/core/main.c:245
|
||||
#: ../src/core/main.c:248
|
||||
msgid "Replace the running window manager with Metacity"
|
||||
msgstr "Ersätt den körande fönsterhanteraren med Metacity"
|
||||
|
||||
#: ../src/core/main.c:251
|
||||
#: ../src/core/main.c:254
|
||||
msgid "Specify session management ID"
|
||||
msgstr "Ange sessionshanteringsid"
|
||||
|
||||
#: ../src/core/main.c:256
|
||||
#: ../src/core/main.c:259
|
||||
msgid "X Display to use"
|
||||
msgstr "X-display att använda"
|
||||
|
||||
#: ../src/core/main.c:262
|
||||
#: ../src/core/main.c:265
|
||||
msgid "Initialize session from savefile"
|
||||
msgstr "Initiera session från sparandefil"
|
||||
|
||||
#: ../src/core/main.c:268
|
||||
#: ../src/core/main.c:271
|
||||
msgid "Print version"
|
||||
msgstr "Skriv ut version"
|
||||
|
||||
#: ../src/core/main.c:274
|
||||
#: ../src/core/main.c:277
|
||||
msgid "Make X calls synchronous"
|
||||
msgstr "Gör X-anrop synkrona"
|
||||
|
||||
#: ../src/core/main.c:425
|
||||
#: ../src/core/main.c:428
|
||||
#, c-format
|
||||
msgid "Failed to scan themes directory: %s\n"
|
||||
msgstr "Misslyckades med att genomsöka temakatalogen: %s\n"
|
||||
|
||||
#: ../src/core/main.c:441
|
||||
#: ../src/core/main.c:444
|
||||
#, c-format
|
||||
msgid "Could not find a theme! Be sure %s exists and contains the usual themes.\n"
|
||||
msgstr "Kunde inte hitta ett tema! Försäkra dig om att %s finns och innehåller vanliga teman.\n"
|
||||
|
||||
#: ../src/core/main.c:513
|
||||
#: ../src/core/main.c:516
|
||||
#, c-format
|
||||
msgid "Failed to restart: %s\n"
|
||||
msgstr "Misslyckades med att starta om: %s\n"
|
||||
|
||||
#: ../src/core/prefs.c:434
|
||||
#, c-format
|
||||
msgid "Type of %s was not integer"
|
||||
msgstr "Typen för %s var inte ett heltal"
|
||||
|
||||
# SUN CHANGED MESSAGE
|
||||
#: ../src/core/prefs.c:572
|
||||
#: ../src/core/prefs.c:600
|
||||
#: ../src/core/prefs.c:616
|
||||
#: ../src/core/prefs.c:632
|
||||
#: ../src/core/prefs.c:648
|
||||
#: ../src/core/prefs.c:664
|
||||
#: ../src/core/prefs.c:680
|
||||
#: ../src/core/prefs.c:696
|
||||
#: ../src/core/prefs.c:716
|
||||
#: ../src/core/prefs.c:732
|
||||
#: ../src/core/prefs.c:748
|
||||
#: ../src/core/prefs.c:766
|
||||
#: ../src/core/prefs.c:782
|
||||
#: ../src/core/prefs.c:801
|
||||
#: ../src/core/prefs.c:817
|
||||
#: ../src/core/prefs.c:852
|
||||
#: ../src/core/prefs.c:868
|
||||
#: ../src/core/prefs.c:885
|
||||
#: ../src/core/prefs.c:901
|
||||
#: ../src/core/prefs.c:917
|
||||
#: ../src/core/prefs.c:933
|
||||
#: ../src/core/prefs.c:949
|
||||
#: ../src/core/prefs.c:964
|
||||
#: ../src/core/prefs.c:979
|
||||
#: ../src/core/prefs.c:994
|
||||
#: ../src/core/prefs.c:1010
|
||||
#: ../src/core/prefs.c:1026
|
||||
#: ../src/core/prefs.c:1042
|
||||
#: ../src/core/prefs.c:1058
|
||||
#, c-format
|
||||
msgid "GConf key \"%s\" is set to an invalid type\n"
|
||||
msgstr "GConf-nyckeln \"%s\" är satt till en ogiltig typ\n"
|
||||
|
||||
#: ../src/core/prefs.c:1103
|
||||
#, c-format
|
||||
msgid "\"%s\" found in configuration database is not a valid value for mouse button modifier\n"
|
||||
msgstr "\"%s\" som hittades i konfigurationsdatabasen är inte ett giltigt värde för musknappsmodifierare\n"
|
||||
|
||||
#: ../src/core/prefs.c:1127
|
||||
#: ../src/core/prefs.c:1148
|
||||
#: ../src/core/prefs.c:1705
|
||||
#.
|
||||
#. * We found it, but it was invalid. Complain.
|
||||
#. *
|
||||
#. * FIXME: This replicates the original behaviour, but in the future
|
||||
#. * we might consider reverting invalid keys to their original values.
|
||||
#. * (We know the old value, so we can look up a suitable string in
|
||||
#. * the symtab.)
|
||||
#.
|
||||
#: ../src/core/prefs.c:450
|
||||
#: ../src/core/prefs.c:564
|
||||
#, c-format
|
||||
msgid "GConf key '%s' is set to an invalid value\n"
|
||||
msgstr "GConf-nyckeln \"%s\" är satt till ett ogiltigt värde\n"
|
||||
|
||||
#: ../src/core/prefs.c:1277
|
||||
# SUN CHANGED MESSAGE
|
||||
#: ../src/core/prefs.c:537
|
||||
#: ../src/core/prefs.c:607
|
||||
#: ../src/core/prefs.c:655
|
||||
#: ../src/core/prefs.c:961
|
||||
#: ../src/core/prefs.c:979
|
||||
#: ../src/core/prefs.c:995
|
||||
#: ../src/core/prefs.c:1014
|
||||
#: ../src/core/prefs.c:1030
|
||||
#: ../src/core/prefs.c:1047
|
||||
#: ../src/core/prefs.c:1064
|
||||
#: ../src/core/prefs.c:1080
|
||||
#: ../src/core/prefs.c:1096
|
||||
#, c-format
|
||||
msgid "GConf key \"%s\" is set to an invalid type\n"
|
||||
msgstr "GConf-nyckeln \"%s\" är satt till en ogiltig typ\n"
|
||||
|
||||
#: ../src/core/prefs.c:856
|
||||
#, c-format
|
||||
msgid "Type of %s was not integer"
|
||||
msgstr "Typen för %s var inte ett heltal"
|
||||
|
||||
#: ../src/core/prefs.c:1165
|
||||
msgid "Workarounds for broken applications disabled. Some applications may not behave properly.\n"
|
||||
msgstr "Fixar för trasiga program är inaktiverade. En del program fungerar kanske inte korrekt.\n"
|
||||
|
||||
#: ../src/core/prefs.c:1220
|
||||
#, c-format
|
||||
msgid "%d stored in GConf key %s is not a reasonable cursor_size; must be in the range 1..128\n"
|
||||
msgstr "%d lagrad i GConf-nyckeln %s är inte en rimlig cursor_size; måste vara inom intervallet 1..128\n"
|
||||
|
||||
#: ../src/core/prefs.c:1357
|
||||
#: ../src/core/prefs.c:1246
|
||||
#, c-format
|
||||
msgid "Could not parse font description \"%s\" from GConf key %s\n"
|
||||
msgstr "Kunde inte tolka typsnittsbeskrivningen \"%s\" från GConf-nyckeln %s\n"
|
||||
|
||||
#: ../src/core/prefs.c:1599
|
||||
#: ../src/core/prefs.c:1306
|
||||
#, c-format
|
||||
msgid "\"%s\" found in configuration database is not a valid value for mouse button modifier\n"
|
||||
msgstr "\"%s\" som hittades i konfigurationsdatabasen är inte ett giltigt värde för musknappsmodifierare\n"
|
||||
|
||||
#: ../src/core/prefs.c:1585
|
||||
#, c-format
|
||||
msgid "%d stored in GConf key %s is not a reasonable number of workspaces, current maximum is %d\n"
|
||||
msgstr "%d lagrad i GConf-nyckeln %s är inte ett rimligt antal arbetsytor, aktuellt maxvärde är %d\n"
|
||||
|
||||
#: ../src/core/prefs.c:1659
|
||||
msgid "Workarounds for broken applications disabled. Some applications may not behave properly.\n"
|
||||
msgstr "Fixar för trasiga program är inaktiverade. En del program fungerar kanske inte korrekt.\n"
|
||||
|
||||
#: ../src/core/prefs.c:1732
|
||||
#: ../src/core/prefs.c:1629
|
||||
#, c-format
|
||||
msgid "%d stored in GConf key %s is out of range 0 to %d\n"
|
||||
msgstr "%d lagrad i GConf-nyckeln %s är inte i intervallet 0 till %d\n"
|
||||
|
||||
#: ../src/core/prefs.c:1881
|
||||
#: ../src/core/prefs.c:1760
|
||||
#, c-format
|
||||
msgid "Error setting number of workspaces to %d: %s\n"
|
||||
msgstr "Fel vid inställning av antalet arbetsytor till %d: %s\n"
|
||||
|
||||
#: ../src/core/prefs.c:2246
|
||||
#: ../src/core/prefs.c:2780
|
||||
#: ../src/core/prefs.c:2125
|
||||
#: ../src/core/prefs.c:2637
|
||||
#: ../src/ui/menu.c:199
|
||||
#, c-format
|
||||
msgid "Workspace %d"
|
||||
msgstr "Arbetsyta %d"
|
||||
|
||||
#: ../src/core/prefs.c:2276
|
||||
#: ../src/core/prefs.c:2446
|
||||
#: ../src/core/prefs.c:2155
|
||||
#: ../src/core/prefs.c:2328
|
||||
#, c-format
|
||||
msgid "\"%s\" found in configuration database is not a valid value for keybinding \"%s\"\n"
|
||||
msgstr "\"%s\" som hittades i konfigurationsdatabasen är inte ett giltigt värde för tangentbindningen \"%s\"\n"
|
||||
|
||||
#: ../src/core/prefs.c:2861
|
||||
#: ../src/core/prefs.c:2718
|
||||
#, c-format
|
||||
msgid "Error setting name for workspace %d to \"%s\": %s\n"
|
||||
msgstr "Fel vid inställning av namnet på arbetsyta %d till \"%s\": %s\n"
|
||||
@@ -366,60 +356,60 @@ msgstr "Okänt element %s"
|
||||
msgid "Error launching metacity-dialog to warn about apps that don't support session management: %s\n"
|
||||
msgstr "Fel vid start av metacity-dialog för att varna om program som inte stöder sessionshantering: %s\n"
|
||||
|
||||
#: ../src/core/util.c:98
|
||||
#: ../src/core/util.c:101
|
||||
#, c-format
|
||||
msgid "Failed to open debug log: %s\n"
|
||||
msgstr "Misslyckades med att öppna felsökningslogg: %s\n"
|
||||
|
||||
#: ../src/core/util.c:108
|
||||
#: ../src/core/util.c:111
|
||||
#, c-format
|
||||
msgid "Failed to fdopen() log file %s: %s\n"
|
||||
msgstr "Misslyckades med att använda fdopen() på loggfilen %s: %s\n"
|
||||
|
||||
#: ../src/core/util.c:114
|
||||
#: ../src/core/util.c:117
|
||||
#, c-format
|
||||
msgid "Opened log file %s\n"
|
||||
msgstr "Öppnade loggfilen %s\n"
|
||||
|
||||
#: ../src/core/util.c:133
|
||||
#: ../src/core/util.c:136
|
||||
#: ../src/tools/metacity-message.c:176
|
||||
#, c-format
|
||||
msgid "Metacity was compiled without support for verbose mode\n"
|
||||
msgstr "Metacity kompilerades utan stöd för utförligt läge\n"
|
||||
|
||||
#: ../src/core/util.c:231
|
||||
#: ../src/core/util.c:236
|
||||
msgid "Window manager: "
|
||||
msgstr "Fönsterhanterare: "
|
||||
|
||||
#: ../src/core/util.c:379
|
||||
#: ../src/core/util.c:388
|
||||
msgid "Bug in window manager: "
|
||||
msgstr "Fel i fönsterhanterare: "
|
||||
|
||||
#: ../src/core/util.c:408
|
||||
#: ../src/core/util.c:421
|
||||
msgid "Window manager warning: "
|
||||
msgstr "Fönsterhanterarvarning: "
|
||||
|
||||
#: ../src/core/util.c:432
|
||||
#: ../src/core/util.c:449
|
||||
msgid "Window manager error: "
|
||||
msgstr "Fönsterhanterarfel: "
|
||||
|
||||
#: ../src/core/window-props.c:192
|
||||
#: ../src/core/window-props.c:195
|
||||
#, c-format
|
||||
msgid "Application set a bogus _NET_WM_PID %lu\n"
|
||||
msgstr "Programmet ställde in ett felaktigt _NET_WM_PID %lu\n"
|
||||
|
||||
#: ../src/core/window-props.c:324
|
||||
#: ../src/core/window-props.c:327
|
||||
#, c-format
|
||||
msgid "%s (on %s)"
|
||||
msgstr "%s (på %s)"
|
||||
|
||||
#: ../src/core/window-props.c:1406
|
||||
#: ../src/core/window-props.c:1409
|
||||
#, c-format
|
||||
msgid "Invalid WM_TRANSIENT_FOR window 0x%lx specified for %s.\n"
|
||||
msgstr "Ogiltigt WM_TRANSIENT_FOR-fönster 0x%lx angivet för %s.\n"
|
||||
|
||||
#. first time through
|
||||
#: ../src/core/window.c:5650
|
||||
#: ../src/core/window.c:5653
|
||||
#, c-format
|
||||
msgid "Window %s sets SM_CLIENT_ID on itself, instead of on the WM_CLIENT_LEADER window as specified in the ICCCM.\n"
|
||||
msgstr "Fönstret %s ställer in SM_CLIENT_ID på sig själv, istället för på WM_CLIENT_LEADER-fönstret som är angivet i ICCCM.\n"
|
||||
@@ -431,7 +421,7 @@ msgstr "Fönstret %s ställer in SM_CLIENT_ID på sig själv, istället för på
|
||||
#. * MWM but not WM_NORMAL_HINTS are basically broken. We complain
|
||||
#. * about these apps but make them work.
|
||||
#.
|
||||
#: ../src/core/window.c:6215
|
||||
#: ../src/core/window.c:6218
|
||||
#, c-format
|
||||
msgid "Window %s sets an MWM hint indicating it isn't resizable, but sets min size %d x %d and max size %d x %d; this doesn't make much sense.\n"
|
||||
msgstr "Fönstret %s ställer in ett MWM-tips som anger att det inte går att ändra storlek på, men ställer in minsta storleken %d × %d och största storleken %d × %d; detta verkar inte vettigt.\n"
|
||||
@@ -494,8 +484,8 @@ msgid "Arrangement of buttons on the titlebar"
|
||||
msgstr "Knapparrangemang på titalraden"
|
||||
|
||||
#: ../src/metacity.schemas.in.h:8
|
||||
msgid "Arrangement of buttons on the titlebar. The value should be a string, such as \"menu:minimize,maximize,close\"; the colon separates the left corner of the window from the right corner, and the button names are comma-separated. Duplicate buttons are not allowed. Unknown button names are silently ignored so that buttons can be added in future metacity versions without breaking older versions."
|
||||
msgstr "Arrangemang av knapparna på titelraden. Värdet måste vara en sträng som till exempel \"menu:minimize,maximize,close\"; kolonet skiljer det vänstra hörnet från det högra hörnet, och knappnamnen är kommaseparerade. Två knappar av samma typ är inte tillåtet. Okända knappnamn ignoreras helt och hållet så att knappar kan läggas till i framtida versioner utan att gamla versioner går sönder."
|
||||
msgid "Arrangement of buttons on the titlebar. The value should be a string, such as \"menu:minimize,maximize,spacer,close\"; the colon separates the left corner of the window from the right corner, and the button names are comma-separated. Duplicate buttons are not allowed. Unknown button names are silently ignored so that buttons can be added in future metacity versions without breaking older versions. A special spacer tag can be used to insert some space between two adjacent buttons."
|
||||
msgstr "Arrangemang av knapparna på titelraden. Värdet måste vara en sträng som till exempel \"menu:minimize,maximize,close\"; kolonet skiljer det vänstra hörnet från det högra hörnet, och knappnamnen är kommaseparerade. Två knappar av samma typ är inte tillåtet. Okända knappnamn ignoreras helt och hållet så att knappar kan läggas till i framtida versioner utan att gamla versioner går sönder. En speciell utfyllnadstagg kan användas för att infoga utrymme mellan två närliggande knappar."
|
||||
|
||||
#: ../src/metacity.schemas.in.h:9
|
||||
msgid "Automatically raises the focused window"
|
||||
@@ -1213,16 +1203,16 @@ msgid "This keybinding resizes a window to fill available vertical space. The fo
|
||||
msgstr "Denna tangentbindning ändrar storleken på ett fönster för att fylla tillgängligt vertikalt utrymme. Formatet ser ut som \"<Control>a\" eller \"<Shift><Alt>F1\". Tolken är ganska tillåtande och tillåter gemener och versaler och även förkortningar som \"<Ctl>\" och \"<Ctrl>\". Om du ställer in alternativet till specialsträngen \"disabled\" kommer det inte att finnas en tangentbindning för denna åtgärd."
|
||||
|
||||
#: ../src/metacity.schemas.in.h:187
|
||||
msgid "This option determines the effects of double-clicking on the title bar. Current valid options are 'toggle_shade', which will shade/unshade the window, 'toggle_maximize' which will maximize/unmaximize the window, 'minimize' which will minimize the window, and 'none' which will not do anything."
|
||||
msgstr "Detta alternativ bestämmer effekterna av dubbelklick på titelraden. Aktuella giltiga alternativ är \"toggle_shade\" som kommer att skugga/avskugga fönstret, \"toggle_maximize\" som kommer att maximera/avmaximera fönstret, \"minimize\" kommer kommer att minimera fönstret, och \"none\" som inte gör något."
|
||||
msgid "This option determines the effects of double-clicking on the title bar. Current valid options are 'toggle_shade', which will shade/unshade the window, 'toggle_maximize' which will maximize/unmaximize the window, 'toggle_maximize_horizontally' and 'toggle_maximize_vertically' which will maximize/unmaximize the window in that direction only, 'minimize' which will minimize the window, 'shade' which will roll the window up, 'menu' which will display the window menu, 'lower' which will put the window behind all the others, and 'none' which will not do anything."
|
||||
msgstr "Detta alternativ bestämmer effekterna av dubbelklick på titelraden. Aktuella giltiga alternativ är \"toggle_shade\" som kommer att skugga/avskugga fönstret, \"toggle_maximize\" som kommer att maximera/avmaximera fönstret, \"toggle_maximize_horizontally\" och \"toggle_maximize_vertically\" som kommer att maximera/avmaximera fönstret endast i den riktningen, \"minimize\" kommer kommer att minimera fönstret, \"shade\" kommer att rulla upp fönstret, \"menu\" kommer att visa fönstermenyn, \"lower\" som kommer att lägga fönstret bakom alla andra, samt \"none\" som inte gör något."
|
||||
|
||||
#: ../src/metacity.schemas.in.h:188
|
||||
msgid "This option determines the effects of middle-clicking on the title bar. Current valid options are 'toggle_shade', which will shade/unshade the window, 'toggle_maximize' which will maximize/unmaximize the window, 'minimize' which will minimize the window, and 'none' which will not do anything."
|
||||
msgstr "Detta alternativ bestämmer effekterna av mittenklick på titellisten. Aktuella giltiga alternativ är \"toggle_shade\" som kommer att skugga/avskugga fönstret, \"toggle_maximize\" som kommer att maximera/avmaximera fönstret, \"minimize\" kommer kommer att minimera fönstret, och \"none\" som inte gör något."
|
||||
msgid "This option determines the effects of middle-clicking on the title bar. Current valid options are 'toggle_shade', which will shade/unshade the window, 'toggle_maximize' which will maximize/unmaximize the window, 'toggle_maximize_horizontally' and 'toggle_maximize_vertically' which will maximize/unmaximize the window in that direction only, 'minimize' which will minimize the window, 'shade' which will roll the window up, 'menu' which will display the window menu, 'lower' which will put the window behind all the others, and 'none' which will not do anything."
|
||||
msgstr "Detta alternativ bestämmer effekterna av mittenklick på titellisten. Aktuella giltiga alternativ är \"toggle_shade\" som kommer att skugga/avskugga fönstret, \"toggle_maximize\" som kommer att maximera/avmaximera fönstret, \"toggle_maximize_horizontally\" och \"toggle_maximize_vertically\" som kommer att maximera/avmaximera fönstret endast i den riktningen, \"minimize\" kommer kommer att minimera fönstret, \"shade\" kommer att rulla upp fönstret, \"menu\" kommer att visa fönstermenyn, \"lower\" som kommer att lägga fönstret bakom alla andra, samt \"none\" som inte gör något."
|
||||
|
||||
#: ../src/metacity.schemas.in.h:189
|
||||
msgid "This option determines the effects of right-clicking on the title bar. Current valid options are 'toggle_shade', which will shade/unshade the window, 'toggle_maximize' which will maximize/unmaximize the window, 'minimize' which will minimize the window, and 'none' which will not do anything."
|
||||
msgstr "Detta alternativ bestämmer effekterna av högerklick på titellisten. Aktuella giltiga alternativ är \"toggle_shade\" som kommer att skugga/avskugga fönstret, \"toggle_maximize\" som kommer att maximera/avmaximera fönstret, \"minimize\" kommer kommer att minimera fönstret, och \"none\" som inte gör något."
|
||||
msgid "This option determines the effects of right-clicking on the title bar. Current valid options are 'toggle_shade', which will shade/unshade the window, 'toggle_maximize' which will maximize/unmaximize the window, 'toggle_maximize_horizontally' and 'toggle_maximize_vertically' which will maximize/unmaximize the window in that direction only, 'minimize' which will minimize the window, 'shade' which will roll the window up, 'menu' which will display the window menu, 'lower' which will put the window behind all the others, and 'none' which will not do anything."
|
||||
msgstr "Detta alternativ bestämmer effekterna av högerklick på titellisten. Aktuella giltiga alternativ är \"toggle_shade\" som kommer att skugga/avskugga fönstret, \"toggle_maximize\" som kommer att maximera/avmaximera fönstret, \"toggle_maximize_horizontally\" och \"toggle_maximize_vertically\" som kommer att maximera/avmaximera fönstret endast i den riktningen, \"minimize\" kommer kommer att minimera fönstret, \"shade\" kommer att rulla upp fönstret, \"menu\" kommer att visa fönstermenyn, \"lower\" som kommer att lägga fönstret bakom alla andra, samt \"none\" som inte gör något."
|
||||
|
||||
#: ../src/metacity.schemas.in.h:190
|
||||
msgid "This option provides additional control over how newly created windows get focus. It has two possible values; \"smart\" applies the user's normal focus mode, and \"strict\" results in windows started from a terminal not being given focus."
|
||||
@@ -1522,7 +1512,7 @@ msgstr "_Vänta"
|
||||
|
||||
#: ../src/ui/metacity-dialog.c:109
|
||||
msgid "_Force Quit"
|
||||
msgstr "_Tvinga avslutande"
|
||||
msgstr "_Tvinga avslut"
|
||||
|
||||
#: ../src/ui/metacity-dialog.c:206
|
||||
msgid "Title"
|
||||
@@ -2354,232 +2344,232 @@ msgstr "y-värdet var %d, %d förväntades"
|
||||
msgid "%d coordinate expressions parsed in %g seconds (%g seconds average)\n"
|
||||
msgstr "%d koordinatuttryck tolkades på %g sekunder (%g sekunder i medelvärde)\n"
|
||||
|
||||
#: ../src/ui/theme.c:208
|
||||
#: ../src/ui/theme.c:256
|
||||
msgid "top"
|
||||
msgstr "överkant"
|
||||
|
||||
#: ../src/ui/theme.c:210
|
||||
#: ../src/ui/theme.c:258
|
||||
msgid "bottom"
|
||||
msgstr "nederkant"
|
||||
|
||||
#: ../src/ui/theme.c:212
|
||||
#: ../src/ui/theme.c:260
|
||||
msgid "left"
|
||||
msgstr "vänster"
|
||||
|
||||
#: ../src/ui/theme.c:214
|
||||
#: ../src/ui/theme.c:262
|
||||
msgid "right"
|
||||
msgstr "höger"
|
||||
|
||||
#: ../src/ui/theme.c:228
|
||||
#: ../src/ui/theme.c:289
|
||||
#, c-format
|
||||
msgid "frame geometry does not specify \"%s\" dimension"
|
||||
msgstr "ramgeometrin anger inte \"%s\"-dimension"
|
||||
|
||||
#: ../src/ui/theme.c:247
|
||||
#: ../src/ui/theme.c:308
|
||||
#, c-format
|
||||
msgid "frame geometry does not specify dimension \"%s\" for border \"%s\""
|
||||
msgstr "ramgeometrin anger inte dimensionen \"%s\" för ramen \"%s\""
|
||||
|
||||
#: ../src/ui/theme.c:284
|
||||
#: ../src/ui/theme.c:345
|
||||
#, c-format
|
||||
msgid "Button aspect ratio %g is not reasonable"
|
||||
msgstr "Knappförhållandet %g är inte rimligt"
|
||||
|
||||
#: ../src/ui/theme.c:296
|
||||
#: ../src/ui/theme.c:357
|
||||
#, c-format
|
||||
msgid "Frame geometry does not specify size of buttons"
|
||||
msgstr "ramgeometrin anger inte storlek på knappar"
|
||||
|
||||
#: ../src/ui/theme.c:927
|
||||
#: ../src/ui/theme.c:1022
|
||||
#, c-format
|
||||
msgid "Gradients should have at least two colors"
|
||||
msgstr "Toningarna bör ha minst två färger"
|
||||
|
||||
#: ../src/ui/theme.c:1053
|
||||
#: ../src/ui/theme.c:1148
|
||||
#, c-format
|
||||
msgid "GTK color specification must have the state in brackets, e.g. gtk:fg[NORMAL] where NORMAL is the state; could not parse \"%s\""
|
||||
msgstr "GTK-färgspecifikationen måste ha tillståndet inom klamrar, t.ex. gtk:fg[NORMAL], där NORMAL är tillståndet; kunde inte tolka \"%s\""
|
||||
|
||||
#: ../src/ui/theme.c:1067
|
||||
#: ../src/ui/theme.c:1162
|
||||
#, c-format
|
||||
msgid "GTK color specification must have a close bracket after the state, e.g. gtk:fg[NORMAL] where NORMAL is the state; could not parse \"%s\""
|
||||
msgstr "GTK-färgspecifikationen måste ha en stängningsklammer efter tillståndet, t.ex. gtk:fg[NORMAL], där NORMAL är tillståndet; kunde inte tolka \"%s\""
|
||||
|
||||
#: ../src/ui/theme.c:1078
|
||||
#: ../src/ui/theme.c:1173
|
||||
#, c-format
|
||||
msgid "Did not understand state \"%s\" in color specification"
|
||||
msgstr "Förstod inte tillståndet \"%s\" i färgspecifikation"
|
||||
|
||||
#: ../src/ui/theme.c:1091
|
||||
#: ../src/ui/theme.c:1186
|
||||
#, c-format
|
||||
msgid "Did not understand color component \"%s\" in color specification"
|
||||
msgstr "Förstod inte färgkomponenten \"%s\" i färgspecifikation"
|
||||
|
||||
#: ../src/ui/theme.c:1121
|
||||
#: ../src/ui/theme.c:1216
|
||||
#, c-format
|
||||
msgid "Blend format is \"blend/bg_color/fg_color/alpha\", \"%s\" does not fit the format"
|
||||
msgstr "Blandningsformatet är \"blend/bg_color/fg_color/alpha\", \"%s\" passar inte med formatet"
|
||||
|
||||
#: ../src/ui/theme.c:1132
|
||||
#: ../src/ui/theme.c:1227
|
||||
#, c-format
|
||||
msgid "Could not parse alpha value \"%s\" in blended color"
|
||||
msgstr "Kunde inte tolka alfavärdet \"%s\" i blandad färg"
|
||||
|
||||
#: ../src/ui/theme.c:1142
|
||||
#: ../src/ui/theme.c:1237
|
||||
#, c-format
|
||||
msgid "Alpha value \"%s\" in blended color is not between 0.0 and 1.0"
|
||||
msgstr "Alfavärdet \"%s\" i blandad färg är inte mellan 0,0 och 1,0"
|
||||
|
||||
#: ../src/ui/theme.c:1190
|
||||
#: ../src/ui/theme.c:1285
|
||||
#, c-format
|
||||
msgid "Shade format is \"shade/base_color/factor\", \"%s\" does not fit the format"
|
||||
msgstr "Skuggformatet är \"shade/base_color/factor\", \"%s\" passar inte med formatet"
|
||||
|
||||
#: ../src/ui/theme.c:1201
|
||||
#: ../src/ui/theme.c:1296
|
||||
#, c-format
|
||||
msgid "Could not parse shade factor \"%s\" in shaded color"
|
||||
msgstr "Kunde inte tolka skuggfaktorn \"%s\" i skuggad färg"
|
||||
|
||||
#: ../src/ui/theme.c:1211
|
||||
#: ../src/ui/theme.c:1306
|
||||
#, c-format
|
||||
msgid "Shade factor \"%s\" in shaded color is negative"
|
||||
msgstr "Skuggfaktorn \"%s\" i skuggad färg är negativ"
|
||||
|
||||
#: ../src/ui/theme.c:1241
|
||||
#: ../src/ui/theme.c:1336
|
||||
#, c-format
|
||||
msgid "Could not parse color \"%s\""
|
||||
msgstr "Kunde inte tolka färgen \"%s\""
|
||||
|
||||
#: ../src/ui/theme.c:1462
|
||||
#: ../src/ui/theme.c:1594
|
||||
#, c-format
|
||||
msgid "Coordinate expression contains character '%s' which is not allowed"
|
||||
msgstr "Koordinatuttrycket innehåller tecknet \"%s\" vilket inte är tillåtet"
|
||||
|
||||
#: ../src/ui/theme.c:1489
|
||||
#: ../src/ui/theme.c:1621
|
||||
#, c-format
|
||||
msgid "Coordinate expression contains floating point number '%s' which could not be parsed"
|
||||
msgstr "Koordinatuttrycket innehåller flyttalet \"%s\" som inte kunde tolkas"
|
||||
|
||||
#: ../src/ui/theme.c:1503
|
||||
#: ../src/ui/theme.c:1635
|
||||
#, c-format
|
||||
msgid "Coordinate expression contains integer '%s' which could not be parsed"
|
||||
msgstr "Koordinatuttrycket innehåller heltalet \"%s\" som inte kunde tolkas"
|
||||
|
||||
#: ../src/ui/theme.c:1610
|
||||
#: ../src/ui/theme.c:1757
|
||||
#, c-format
|
||||
msgid "Coordinate expression contained unknown operator at the start of this text: \"%s\""
|
||||
msgstr "Koordinatuttrycket hade en okänd operand vid början av denna text: \"%s\""
|
||||
|
||||
#: ../src/ui/theme.c:1667
|
||||
#: ../src/ui/theme.c:1814
|
||||
#, c-format
|
||||
msgid "Coordinate expression was empty or not understood"
|
||||
msgstr "Koordinatuttrycket var tomt eller förstods inte"
|
||||
|
||||
#: ../src/ui/theme.c:1764
|
||||
#: ../src/ui/theme.c:1774
|
||||
#: ../src/ui/theme.c:1808
|
||||
#: ../src/ui/theme.c:1925
|
||||
#: ../src/ui/theme.c:1935
|
||||
#: ../src/ui/theme.c:1969
|
||||
#, c-format
|
||||
msgid "Coordinate expression results in division by zero"
|
||||
msgstr "Koordinatuttrycket resulterar i division med noll"
|
||||
|
||||
#: ../src/ui/theme.c:1816
|
||||
#: ../src/ui/theme.c:1977
|
||||
#, c-format
|
||||
msgid "Coordinate expression tries to use mod operator on a floating-point number"
|
||||
msgstr "Koordinatuttrycket försöker använda mod-operator på ett flyttal"
|
||||
|
||||
#: ../src/ui/theme.c:1872
|
||||
#: ../src/ui/theme.c:2033
|
||||
#, c-format
|
||||
msgid "Coordinate expression has an operator \"%s\" where an operand was expected"
|
||||
msgstr "Koordinatuttrycket har en operator \"%s\" där en operand förväntades"
|
||||
|
||||
#: ../src/ui/theme.c:1881
|
||||
#: ../src/ui/theme.c:2042
|
||||
#, c-format
|
||||
msgid "Coordinate expression had an operand where an operator was expected"
|
||||
msgstr "Koordinatuttrycket hade en operand där en operator förväntades"
|
||||
|
||||
#: ../src/ui/theme.c:1889
|
||||
#: ../src/ui/theme.c:2050
|
||||
#, c-format
|
||||
msgid "Coordinate expression ended with an operator instead of an operand"
|
||||
msgstr "Koordinatuttrycket slutade med en operator istället för en operand"
|
||||
|
||||
#: ../src/ui/theme.c:1899
|
||||
#: ../src/ui/theme.c:2060
|
||||
#, c-format
|
||||
msgid "Coordinate expression has operator \"%c\" following operator \"%c\" with no operand in between"
|
||||
msgstr "Koordinatuttrycket har en operator \"%c\" som följer på operatorn \"%c\" utan någon operand imellan"
|
||||
|
||||
#: ../src/ui/theme.c:2023
|
||||
#: ../src/ui/theme.c:2064
|
||||
#: ../src/ui/theme.c:2207
|
||||
#: ../src/ui/theme.c:2248
|
||||
#, c-format
|
||||
msgid "Coordinate expression had unknown variable or constant \"%s\""
|
||||
msgstr "Koordinatuttrycket hade en okänd variabel eller konstant \"%s\""
|
||||
|
||||
#: ../src/ui/theme.c:2108
|
||||
#: ../src/ui/theme.c:2302
|
||||
#, c-format
|
||||
msgid "Coordinate expression parser overflowed its buffer."
|
||||
msgstr "Koordinatuttryckstolkaren överflödade sin buffert."
|
||||
|
||||
#: ../src/ui/theme.c:2137
|
||||
#: ../src/ui/theme.c:2331
|
||||
#, c-format
|
||||
msgid "Coordinate expression had a close parenthesis with no open parenthesis"
|
||||
msgstr "Koordinatuttrycket hade en stängningsparentes utan någon öppningsparentes"
|
||||
|
||||
#: ../src/ui/theme.c:2201
|
||||
#: ../src/ui/theme.c:2395
|
||||
#, c-format
|
||||
msgid "Coordinate expression had an open parenthesis with no close parenthesis"
|
||||
msgstr "Koordinatuttrycket hade en öppningsparentes utan någon stängningsparentes"
|
||||
|
||||
#: ../src/ui/theme.c:2212
|
||||
#: ../src/ui/theme.c:2406
|
||||
#, c-format
|
||||
msgid "Coordinate expression doesn't seem to have any operators or operands"
|
||||
msgstr "Koordinatuttrycket verkar inte ha några operatorer eller operander"
|
||||
|
||||
#: ../src/ui/theme.c:2398
|
||||
#: ../src/ui/theme.c:2418
|
||||
#: ../src/ui/theme.c:2438
|
||||
#: ../src/ui/theme.c:2608
|
||||
#: ../src/ui/theme.c:2628
|
||||
#: ../src/ui/theme.c:2648
|
||||
#, c-format
|
||||
msgid "Theme contained an expression that resulted in an error: %s\n"
|
||||
msgstr "Temat innehöll ett uttryck som resulterade i ett fel: %s\n"
|
||||
|
||||
#: ../src/ui/theme.c:3942
|
||||
#: ../src/ui/theme.c:4167
|
||||
#, c-format
|
||||
msgid "<button function=\"%s\" state=\"%s\" draw_ops=\"whatever\"/> must be specified for this frame style"
|
||||
msgstr "<button function=\"%s\" state=\"%s\" draw_ops=\"whatever\"/> måste anges för denna ramtyp"
|
||||
|
||||
#: ../src/ui/theme.c:4418
|
||||
#: ../src/ui/theme.c:4443
|
||||
#: ../src/ui/theme.c:4643
|
||||
#: ../src/ui/theme.c:4668
|
||||
#, c-format
|
||||
msgid "Missing <frame state=\"%s\" resize=\"%s\" focus=\"%s\" style=\"whatever\"/>"
|
||||
msgstr "<frame state=\"%s\" resize=\"%s\" focus=\"%s\" style=\"whatever\"/> saknas"
|
||||
|
||||
#: ../src/ui/theme.c:4487
|
||||
#: ../src/ui/theme.c:4712
|
||||
#, c-format
|
||||
msgid "Failed to load theme \"%s\": %s\n"
|
||||
msgstr "Misslyckades med att läsa in temat \"%s\": %s\n"
|
||||
|
||||
#: ../src/ui/theme.c:4613
|
||||
#: ../src/ui/theme.c:4620
|
||||
#: ../src/ui/theme.c:4627
|
||||
#: ../src/ui/theme.c:4634
|
||||
#: ../src/ui/theme.c:4641
|
||||
#: ../src/ui/theme.c:4838
|
||||
#: ../src/ui/theme.c:4845
|
||||
#: ../src/ui/theme.c:4852
|
||||
#: ../src/ui/theme.c:4859
|
||||
#: ../src/ui/theme.c:4866
|
||||
#, c-format
|
||||
msgid "No <%s> set for theme \"%s\""
|
||||
msgstr "Inget <%s> angivet för temat \"%s\""
|
||||
|
||||
#: ../src/ui/theme.c:4649
|
||||
#: ../src/ui/theme.c:4874
|
||||
#, c-format
|
||||
msgid "No frame style set for window type \"%s\" in theme \"%s\", add a <window type=\"%s\" style_set=\"whatever\"/> element"
|
||||
msgstr "Ingen ramstil angiven för fönstertypen \"%s\" i temat \"%s\", lägg till ett <window type=\"%s\" style_set=\"whatever\"/>-element"
|
||||
|
||||
#: ../src/ui/theme.c:5016
|
||||
#: ../src/ui/theme.c:5078
|
||||
#: ../src/ui/theme.c:5141
|
||||
#: ../src/ui/theme.c:5241
|
||||
#: ../src/ui/theme.c:5303
|
||||
#: ../src/ui/theme.c:5366
|
||||
#, c-format
|
||||
msgid "User-defined constants must begin with a capital letter; \"%s\" does not"
|
||||
msgstr "Användardefinierade konstanter måste börja med en stor bokstav; \"%s\" gör det inte"
|
||||
|
||||
#: ../src/ui/theme.c:5024
|
||||
#: ../src/ui/theme.c:5086
|
||||
#: ../src/ui/theme.c:5149
|
||||
#: ../src/ui/theme.c:5249
|
||||
#: ../src/ui/theme.c:5311
|
||||
#: ../src/ui/theme.c:5374
|
||||
#, c-format
|
||||
msgid "Constant \"%s\" has already been defined"
|
||||
msgstr "Konstanten \"%s\" har redan definierats"
|
||||
|
364
po/th.po
364
po/th.po
@@ -11,8 +11,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: metacity\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2008-02-01 17:56+0700\n"
|
||||
"PO-Revision-Date: 2008-02-01 11:51+0700\n"
|
||||
"POT-Creation-Date: 2008-06-12 17:28+0700\n"
|
||||
"PO-Revision-Date: 2008-06-12 17:44+0700\n"
|
||||
"Last-Translator: Theppitak Karoonboonyanan <thep@linux.thai.net>\n"
|
||||
"Language-Team: Thai <thai-l10n@googlegroups.com>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
@@ -33,36 +33,36 @@ msgstr "การจัดการหน้าต่าง"
|
||||
msgid "Unknown window information request: %d"
|
||||
msgstr "คำร้องขอข้อมูลหน้าต่างที่ไม่รู้จัก: %d"
|
||||
|
||||
#: ../src/core/delete.c:67 ../src/core/delete.c:94
|
||||
#: ../src/core/delete.c:70 ../src/core/delete.c:97
|
||||
#: ../src/ui/metacity-dialog.c:50 ../src/ui/theme-parser.c:481
|
||||
#, c-format
|
||||
msgid "Could not parse \"%s\" as an integer"
|
||||
msgstr "ไม่สามารถแปลง \"%s\" เป็นเลขจำนวนเต็ม"
|
||||
|
||||
#: ../src/core/delete.c:74 ../src/core/delete.c:101
|
||||
#: ../src/core/delete.c:77 ../src/core/delete.c:104
|
||||
#: ../src/ui/metacity-dialog.c:57 ../src/ui/theme-parser.c:490
|
||||
#: ../src/ui/theme-parser.c:545
|
||||
#, c-format
|
||||
msgid "Did not understand trailing characters \"%s\" in string \"%s\""
|
||||
msgstr "ไม่เข้าใจตัวอักษร \"%s\" ที่ข้างท้ายข้อความ \"%s\""
|
||||
|
||||
#: ../src/core/delete.c:132
|
||||
#: ../src/core/delete.c:135
|
||||
#, c-format
|
||||
msgid "Failed to parse message \"%s\" from dialog process\n"
|
||||
msgstr "ไม่เข้าใจข้อความ \"%s\" จากโพรเซสกล่องโต้ตอบ\n"
|
||||
|
||||
#: ../src/core/delete.c:267
|
||||
#: ../src/core/delete.c:253
|
||||
#, c-format
|
||||
msgid "Error reading from dialog display process: %s\n"
|
||||
msgstr "เกิดข้อผิดพลาดขณะอ่านจากโพรเซสกล่องโต้ตอบ: %s\n"
|
||||
|
||||
#: ../src/core/delete.c:350
|
||||
#: ../src/core/delete.c:336
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Error launching metacity-dialog to ask about killing an application: %s\n"
|
||||
msgstr "เกิดข้อผิดพลาด ขณะเปิดหน้าต่าง ถามการฆ่าโปรแกรม: %s\n"
|
||||
|
||||
#: ../src/core/delete.c:459
|
||||
#: ../src/core/delete.c:445
|
||||
#, c-format
|
||||
msgid "Failed to get hostname: %s\n"
|
||||
msgstr "ไม่สามารถอ่านชื่อโฮสต์: %s\n"
|
||||
@@ -72,12 +72,12 @@ msgstr "ไม่สามารถอ่านชื่อโฮสต์: %s\n
|
||||
msgid "Missing %s extension required for compositing"
|
||||
msgstr "ไม่มีส่วนขยาย %s ซึ่งจำเป็นต่อการทำ composite"
|
||||
|
||||
#: ../src/core/display.c:438
|
||||
#: ../src/core/display.c:334
|
||||
#, c-format
|
||||
msgid "Failed to open X Window System display '%s'\n"
|
||||
msgstr "ไม่สามารถเปิดดิสเพลย์ '%s' ของระบบ X Window\n"
|
||||
|
||||
#: ../src/core/errors.c:271
|
||||
#: ../src/core/errors.c:272
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Lost connection to the display '%s';\n"
|
||||
@@ -87,35 +87,35 @@ msgstr ""
|
||||
"ขาดการติดต่อจากดิสเพลย์ '%s';\n"
|
||||
"X เซิร์ฟเวอร์อาจจะถูกปิด หรือคุณอาจฆ่าโปรแกรมจัดการหน้าต่างไป\n"
|
||||
|
||||
#: ../src/core/errors.c:278
|
||||
#: ../src/core/errors.c:279
|
||||
#, c-format
|
||||
msgid "Fatal IO error %d (%s) on display '%s'.\n"
|
||||
msgstr "เกิดข้อผิดพลาดร้ายแรง %d (%s) ในการอ่านเขียนข้อมูลจากดิสเพลย์'%s'\n"
|
||||
|
||||
#: ../src/core/keybindings.c:1087
|
||||
#: ../src/core/keybindings.c:1090
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Some other program is already using the key %s with modifiers %x as a "
|
||||
"binding\n"
|
||||
msgstr "โปรแกรมอื่นกำลังใช้ปุ่ม %s ร่วมกับปุ่ม %x เป็นปุ่มลัดอยู่แล้ว\n"
|
||||
|
||||
#: ../src/core/keybindings.c:2733
|
||||
#: ../src/core/keybindings.c:2729
|
||||
#, c-format
|
||||
msgid "Error launching metacity-dialog to print an error about a command: %s\n"
|
||||
msgstr "ไม่สามารถเปิดกล่องโต้ตอบ เพื่อแสดงข้อผิดพลาดของคำสั่ง: %s\n"
|
||||
|
||||
#: ../src/core/keybindings.c:2838
|
||||
#: ../src/core/keybindings.c:2834
|
||||
#, c-format
|
||||
msgid "No command %d has been defined.\n"
|
||||
msgstr "คำสั่ง %d ยังไม่ได้ถูกกำหนด\n"
|
||||
|
||||
#: ../src/core/keybindings.c:3866
|
||||
#: ../src/core/keybindings.c:3862
|
||||
#, c-format
|
||||
msgid "No terminal command has been defined.\n"
|
||||
msgstr "คำสั่งเปิดเทอร์มินัลยังไม่ได้ถูกกำหนด\n"
|
||||
|
||||
# FIXME: Get a lawer to translate the legal clause.
|
||||
#: ../src/core/main.c:112
|
||||
#: ../src/core/main.c:115
|
||||
#, c-format
|
||||
msgid ""
|
||||
"metacity %s\n"
|
||||
@@ -130,102 +130,77 @@ msgstr ""
|
||||
"ไม่รับผิดชอบข้อเสียหายใดๆ "
|
||||
"ไม่รับประกันความเหมาะสมในเชิงพาณิชย์หรือการใช้งานเฉพาะทางอย่างหนึ่งอย่างใด\n"
|
||||
|
||||
#: ../src/core/main.c:239
|
||||
#: ../src/core/main.c:242
|
||||
msgid "Disable connection to session manager"
|
||||
msgstr "ปิดการเชื่อมต่อไปยังโปรแกรมจัดการวาระ"
|
||||
|
||||
#: ../src/core/main.c:245
|
||||
#: ../src/core/main.c:248
|
||||
msgid "Replace the running window manager with Metacity"
|
||||
msgstr "แทนที่โปรแกรมจัดการหน้าต่างที่กำลังทำงานอยู่ด้วย Metacity"
|
||||
|
||||
#: ../src/core/main.c:251
|
||||
#: ../src/core/main.c:254
|
||||
msgid "Specify session management ID"
|
||||
msgstr "ระบุ ID ของการจัดการวาระ"
|
||||
|
||||
#: ../src/core/main.c:256
|
||||
#: ../src/core/main.c:259
|
||||
msgid "X Display to use"
|
||||
msgstr "ดิสเพลย์ X ที่จะใช้"
|
||||
|
||||
#: ../src/core/main.c:262
|
||||
#: ../src/core/main.c:265
|
||||
msgid "Initialize session from savefile"
|
||||
msgstr "ใช้ค่าเริ่มต้นของวาระจากแฟ้มที่บันทึกไว้"
|
||||
|
||||
#: ../src/core/main.c:268
|
||||
#: ../src/core/main.c:271
|
||||
msgid "Print version"
|
||||
msgstr "แสดงเลขรุ่น"
|
||||
|
||||
#: ../src/core/main.c:274
|
||||
#: ../src/core/main.c:277
|
||||
msgid "Make X calls synchronous"
|
||||
msgstr "ให้การเรียกฟังก์ชัน X เป็นแบบซิงโครนัส"
|
||||
|
||||
#: ../src/core/main.c:425
|
||||
#: ../src/core/main.c:428
|
||||
#, c-format
|
||||
msgid "Failed to scan themes directory: %s\n"
|
||||
msgstr "ไม่สามารถอ่านโฟลเดอร์ชุดตกแต่ง: %s\n"
|
||||
|
||||
#: ../src/core/main.c:441
|
||||
#: ../src/core/main.c:444
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Could not find a theme! Be sure %s exists and contains the usual themes.\n"
|
||||
msgstr "ไม่พบชุดตกแต่ง โปรดตรวจดูว่า %s มีอยู่จริง และบรรจุชุดตกแต่งที่ควรจะมี\n"
|
||||
|
||||
#: ../src/core/main.c:513
|
||||
#: ../src/core/main.c:500
|
||||
#, c-format
|
||||
msgid "Failed to restart: %s\n"
|
||||
msgstr "ไม่สามารถเริ่มการทำงานใหม่ของ: %s\n"
|
||||
|
||||
#: ../src/core/prefs.c:434
|
||||
#, c-format
|
||||
msgid "Type of %s was not integer"
|
||||
msgstr "ชนิดของ %s ไม่ใช่จำนวนเต็ม"
|
||||
|
||||
#: ../src/core/prefs.c:572 ../src/core/prefs.c:600 ../src/core/prefs.c:616
|
||||
#: ../src/core/prefs.c:632 ../src/core/prefs.c:648 ../src/core/prefs.c:664
|
||||
#: ../src/core/prefs.c:680 ../src/core/prefs.c:696 ../src/core/prefs.c:716
|
||||
#: ../src/core/prefs.c:732 ../src/core/prefs.c:748 ../src/core/prefs.c:766
|
||||
#: ../src/core/prefs.c:782 ../src/core/prefs.c:801 ../src/core/prefs.c:817
|
||||
#: ../src/core/prefs.c:852 ../src/core/prefs.c:868 ../src/core/prefs.c:885
|
||||
#: ../src/core/prefs.c:901 ../src/core/prefs.c:917 ../src/core/prefs.c:933
|
||||
#: ../src/core/prefs.c:949 ../src/core/prefs.c:964 ../src/core/prefs.c:979
|
||||
#: ../src/core/prefs.c:994 ../src/core/prefs.c:1010 ../src/core/prefs.c:1026
|
||||
#: ../src/core/prefs.c:1042 ../src/core/prefs.c:1058
|
||||
#, c-format
|
||||
msgid "GConf key \"%s\" is set to an invalid type\n"
|
||||
msgstr "GConf คีย์ \"%s\" ถูกตั้งค่าเป็นชนิดที่ใช้ไม่ได้\n"
|
||||
|
||||
#: ../src/core/prefs.c:1103
|
||||
#, c-format
|
||||
msgid ""
|
||||
"\"%s\" found in configuration database is not a valid value for mouse button "
|
||||
"modifier\n"
|
||||
msgstr "\"%s\" ที่พบในฐานข้อมูลข้อปรับแต่ง ใช้เป็นปุ่มใช้ร่วมสำหรับเมาส์ไม่ได้\n"
|
||||
|
||||
#: ../src/core/prefs.c:1127 ../src/core/prefs.c:1148 ../src/core/prefs.c:1705
|
||||
#.
|
||||
#. * We found it, but it was invalid. Complain.
|
||||
#. *
|
||||
#. * FIXME: This replicates the original behaviour, but in the future
|
||||
#. * we might consider reverting invalid keys to their original values.
|
||||
#. * (We know the old value, so we can look up a suitable string in
|
||||
#. * the symtab.)
|
||||
#.
|
||||
#: ../src/core/prefs.c:450 ../src/core/prefs.c:564
|
||||
#, c-format
|
||||
msgid "GConf key '%s' is set to an invalid value\n"
|
||||
msgstr "GConf คีย์ '%s' ถูกตั้งค่าเป็นค่าที่ใช้ไม่ได้\n"
|
||||
|
||||
#: ../src/core/prefs.c:1277
|
||||
#: ../src/core/prefs.c:537 ../src/core/prefs.c:611 ../src/core/prefs.c:659
|
||||
#: ../src/core/prefs.c:978 ../src/core/prefs.c:996 ../src/core/prefs.c:1012
|
||||
#: ../src/core/prefs.c:1031 ../src/core/prefs.c:1047 ../src/core/prefs.c:1064
|
||||
#: ../src/core/prefs.c:1081 ../src/core/prefs.c:1097 ../src/core/prefs.c:1113
|
||||
#, c-format
|
||||
msgid ""
|
||||
"%d stored in GConf key %s is not a reasonable cursor_size; must be in the "
|
||||
"range 1..128\n"
|
||||
msgstr ""
|
||||
"%d ใน GConf คีย์ %s ไม่ใช่ขนาดเคอร์เซอร์ที่สมเหตุสมผล ค่าดังกล่าวควรอยู่ในช่วง 1..128\n"
|
||||
msgid "GConf key \"%s\" is set to an invalid type\n"
|
||||
msgstr "GConf คีย์ \"%s\" ถูกตั้งค่าเป็นชนิดที่ใช้ไม่ได้\n"
|
||||
|
||||
#: ../src/core/prefs.c:1357
|
||||
#: ../src/core/prefs.c:873
|
||||
#, c-format
|
||||
msgid "Could not parse font description \"%s\" from GConf key %s\n"
|
||||
msgstr "ไม่เข้าใจคำบรรยายแบบตัวอักษร \"%s\" จาก GConf คีย์ %s\n"
|
||||
msgid "Type of %s was not integer"
|
||||
msgstr "ชนิดของ %s ไม่ใช่จำนวนเต็ม"
|
||||
|
||||
#: ../src/core/prefs.c:1599
|
||||
#, c-format
|
||||
msgid ""
|
||||
"%d stored in GConf key %s is not a reasonable number of workspaces, current "
|
||||
"maximum is %d\n"
|
||||
msgstr "%d ใน GConf คีย์ %s ไม่ใช่จำนวนพื้นที่ทำงานที่สมเหตุสมผล สามารถตั้งได้มากสุดเป็น %d\n"
|
||||
|
||||
#: ../src/core/prefs.c:1659
|
||||
#: ../src/core/prefs.c:1182
|
||||
msgid ""
|
||||
"Workarounds for broken applications disabled. Some applications may not "
|
||||
"behave properly.\n"
|
||||
@@ -233,39 +208,66 @@ msgstr ""
|
||||
"ปิดการแก้ขัดที่เตรียมไว้สำหรับโปรแกรมเสียๆ บางโปรแกรมแล้ว "
|
||||
"ซึ่งอาจทำให้โปรแกรมเหล่านี้ทำงานไม่ปกติ\n"
|
||||
|
||||
#: ../src/core/prefs.c:1732
|
||||
#: ../src/core/prefs.c:1237
|
||||
#, c-format
|
||||
msgid ""
|
||||
"%d stored in GConf key %s is not a reasonable cursor_size; must be in the "
|
||||
"range 1..128\n"
|
||||
msgstr ""
|
||||
"%d ใน GConf คีย์ %s ไม่ใช่ขนาดเคอร์เซอร์ที่สมเหตุสมผล ค่าดังกล่าวควรอยู่ในช่วง 1..128\n"
|
||||
|
||||
#: ../src/core/prefs.c:1263
|
||||
#, c-format
|
||||
msgid "Could not parse font description \"%s\" from GConf key %s\n"
|
||||
msgstr "ไม่เข้าใจคำบรรยายแบบตัวอักษร \"%s\" จาก GConf คีย์ %s\n"
|
||||
|
||||
#: ../src/core/prefs.c:1323
|
||||
#, c-format
|
||||
msgid ""
|
||||
"\"%s\" found in configuration database is not a valid value for mouse button "
|
||||
"modifier\n"
|
||||
msgstr "\"%s\" ที่พบในฐานข้อมูลข้อปรับแต่ง ใช้เป็นปุ่มใช้ร่วมสำหรับเมาส์ไม่ได้\n"
|
||||
|
||||
#: ../src/core/prefs.c:1602
|
||||
#, c-format
|
||||
msgid ""
|
||||
"%d stored in GConf key %s is not a reasonable number of workspaces, current "
|
||||
"maximum is %d\n"
|
||||
msgstr "%d ใน GConf คีย์ %s ไม่ใช่จำนวนพื้นที่ทำงานที่สมเหตุสมผล สามารถตั้งได้มากสุดเป็น %d\n"
|
||||
|
||||
#: ../src/core/prefs.c:1646
|
||||
#, c-format
|
||||
msgid "%d stored in GConf key %s is out of range 0 to %d\n"
|
||||
msgstr "%d ใน GConf คีย์ %s ต้องอยู่ระหว่าง 0 และ %d\n"
|
||||
|
||||
#: ../src/core/prefs.c:1881
|
||||
#: ../src/core/prefs.c:1777
|
||||
#, c-format
|
||||
msgid "Error setting number of workspaces to %d: %s\n"
|
||||
msgstr "ไม่สามารถตั้งจำนวนพื้นที่ทำงานเป็น %d: %s\n"
|
||||
|
||||
#: ../src/core/prefs.c:2246 ../src/core/prefs.c:2780 ../src/ui/menu.c:199
|
||||
#: ../src/core/prefs.c:2142 ../src/core/prefs.c:2654
|
||||
#, c-format
|
||||
msgid "Workspace %d"
|
||||
msgstr "พื้นที่ทำงาน %d"
|
||||
|
||||
#: ../src/core/prefs.c:2276 ../src/core/prefs.c:2446
|
||||
#: ../src/core/prefs.c:2172 ../src/core/prefs.c:2345
|
||||
#, c-format
|
||||
msgid ""
|
||||
"\"%s\" found in configuration database is not a valid value for keybinding "
|
||||
"\"%s\"\n"
|
||||
msgstr "\"%s\" ที่พบในฐานข้อมูลค่าปรับแต่ง ไม่สามารถใช้เป็นปุ่มลัด \"%s\"\n"
|
||||
|
||||
#: ../src/core/prefs.c:2861
|
||||
#: ../src/core/prefs.c:2735
|
||||
#, c-format
|
||||
msgid "Error setting name for workspace %d to \"%s\": %s\n"
|
||||
msgstr "ไม่สามารถตั้งชื่อพื้นที่ทำงาน %d เป็น %s: %s\n"
|
||||
|
||||
#: ../src/core/screen.c:410
|
||||
#: ../src/core/screen.c:350
|
||||
#, c-format
|
||||
msgid "Screen %d on display '%s' is invalid\n"
|
||||
msgstr "สกรีน %d บนดิสเพลย์ '%s' ใช้ไม่ได้\n"
|
||||
|
||||
#: ../src/core/screen.c:426
|
||||
#: ../src/core/screen.c:366
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Screen %d on display \"%s\" already has a window manager; try using the --"
|
||||
@@ -274,28 +276,28 @@ msgstr ""
|
||||
"สกรีน %d บนดิสเพลย์ \"%s\" มีโปรแกรมจัดการหน้าต่างอยู่แล้ว ลองใช้ตัวเลือก --replace "
|
||||
"ถ้าต้องการแทนที่โปรแกรมจัดการหน้าต่างปัจจุบัน\n"
|
||||
|
||||
#: ../src/core/screen.c:453
|
||||
#: ../src/core/screen.c:393
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Could not acquire window manager selection on screen %d display \"%s\"\n"
|
||||
msgstr "ไม่สามารถอ่านค่าโปรแกรมจัดการหน้าต่างจากสกรีน %d ดิสเพลย์ \"%s\" ได้\n"
|
||||
|
||||
#: ../src/core/screen.c:511
|
||||
#: ../src/core/screen.c:451
|
||||
#, c-format
|
||||
msgid "Screen %d on display \"%s\" already has a window manager\n"
|
||||
msgstr "สกรีน %d บนดิสเพลย์ \"%s\" มีโปรแกรมจัดการหน้าต่างอยู่แล้ว\n"
|
||||
|
||||
#: ../src/core/screen.c:721
|
||||
#: ../src/core/screen.c:661
|
||||
#, c-format
|
||||
msgid "Could not release screen %d on display \"%s\"\n"
|
||||
msgstr "ไม่สามารถปล่อยการควบคุมสกรีน %d บนดิสเพลย์ \"%s\"\n"
|
||||
|
||||
#: ../src/core/session.c:826 ../src/core/session.c:833
|
||||
#: ../src/core/session.c:837 ../src/core/session.c:844
|
||||
#, c-format
|
||||
msgid "Could not create directory '%s': %s\n"
|
||||
msgstr "ไม่สามารถสร้างโฟลเดอร์ '%s': %s\n"
|
||||
|
||||
#: ../src/core/session.c:843
|
||||
#: ../src/core/session.c:854
|
||||
#, c-format
|
||||
msgid "Could not open session file '%s' for writing: %s\n"
|
||||
msgstr "ไม่สามารถเปิดแฟ้มวาระ '%s' สำหรับเขียน: %s\n"
|
||||
@@ -310,111 +312,112 @@ msgstr "ไม่สามารถเขียนลงแฟ้มวาระ
|
||||
msgid "Error closing session file '%s': %s\n"
|
||||
msgstr "ไม่สามารถปิดแฟ้มวาระ '%s': %s\n"
|
||||
|
||||
#: ../src/core/session.c:1075
|
||||
#. oh, just give up
|
||||
#: ../src/core/session.c:1093
|
||||
#, c-format
|
||||
msgid "Failed to read saved session file %s: %s\n"
|
||||
msgstr "ไม่สามารถอ่านแฟ้มวาระที่บันทึกไว้ %s: %s\n"
|
||||
|
||||
#: ../src/core/session.c:1110
|
||||
#: ../src/core/session.c:1132
|
||||
#, c-format
|
||||
msgid "Failed to parse saved session file: %s\n"
|
||||
msgstr "ไม่เข้าใจแฟ้มวาระที่บันทึกไว้: %s\n"
|
||||
|
||||
#: ../src/core/session.c:1159
|
||||
#: ../src/core/session.c:1181
|
||||
#, c-format
|
||||
msgid "<metacity_session> attribute seen but we already have the session ID"
|
||||
msgstr "พบแอตทริบิวต์ <metacity_session> แต่ว่ามี ID วาระอยู่แล้ว"
|
||||
|
||||
#: ../src/core/session.c:1172
|
||||
#: ../src/core/session.c:1194
|
||||
#, c-format
|
||||
msgid "Unknown attribute %s on <metacity_session> element"
|
||||
msgstr "ไม่รู้จักแอตทริบิวต์ %s ในอีลิเมนต์ <metacity_session>"
|
||||
|
||||
#: ../src/core/session.c:1189
|
||||
#: ../src/core/session.c:1211
|
||||
#, c-format
|
||||
msgid "nested <window> tag"
|
||||
msgstr "มีแท็ก <window> ซ้อนด้านใน"
|
||||
|
||||
#: ../src/core/session.c:1247 ../src/core/session.c:1279
|
||||
#: ../src/core/session.c:1269 ../src/core/session.c:1301
|
||||
#, c-format
|
||||
msgid "Unknown attribute %s on <window> element"
|
||||
msgstr "ไม่รู้จักแอตทริบิวต์ %s ในอีลิเมนต์ <window>"
|
||||
|
||||
#: ../src/core/session.c:1351
|
||||
#: ../src/core/session.c:1373
|
||||
#, c-format
|
||||
msgid "Unknown attribute %s on <maximized> element"
|
||||
msgstr "ไม่รู้จักแอตทริบิวต์ %s ในอีลิเมนต์ <maximized>"
|
||||
|
||||
#: ../src/core/session.c:1411
|
||||
#: ../src/core/session.c:1433
|
||||
#, c-format
|
||||
msgid "Unknown attribute %s on <geometry> element"
|
||||
msgstr "ไม่รู้จักแอตทริบิวต์ %s ในอีลิเมนต์ <geometry>"
|
||||
|
||||
#: ../src/core/session.c:1431
|
||||
#: ../src/core/session.c:1453
|
||||
#, c-format
|
||||
msgid "Unknown element %s"
|
||||
msgstr "ไม่รู้จักอีลิเมนต์ %s"
|
||||
|
||||
#: ../src/core/session.c:1868
|
||||
#: ../src/core/session.c:1879
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Error launching metacity-dialog to warn about apps that don't support "
|
||||
"session management: %s\n"
|
||||
msgstr "ไม่สามารถเปิดกล่องโต้ตอบ เพื่อเตือนเกี่ยวกับโปรแกรมซึ่งไม่รองรับการจัดการวาระ: %s\n"
|
||||
|
||||
#: ../src/core/util.c:98
|
||||
#: ../src/core/util.c:101
|
||||
#, c-format
|
||||
msgid "Failed to open debug log: %s\n"
|
||||
msgstr "เปิดแฟ้มบันทึกการดีบั๊กไม่สำเร็จ: %s\n"
|
||||
msgstr "เปิดแฟ้มปูมการดีบั๊กไม่สำเร็จ: %s\n"
|
||||
|
||||
#: ../src/core/util.c:108
|
||||
#: ../src/core/util.c:111
|
||||
#, c-format
|
||||
msgid "Failed to fdopen() log file %s: %s\n"
|
||||
msgstr "fdopen() แฟ้มบันทึกปฏิบัติการ %s ไม่สำเร็จ: %s\n"
|
||||
msgstr "fdopen() แฟ้มปูม %s ไม่สำเร็จ: %s\n"
|
||||
|
||||
#: ../src/core/util.c:114
|
||||
#: ../src/core/util.c:117
|
||||
#, c-format
|
||||
msgid "Opened log file %s\n"
|
||||
msgstr "เปิดแฟ้มบันทึกปฏิบัติการ %s เรียบร้อยแล้ว\n"
|
||||
msgstr "เปิดแฟ้มปูม %s เรียบร้อยแล้ว\n"
|
||||
|
||||
#: ../src/core/util.c:133 ../src/tools/metacity-message.c:176
|
||||
#: ../src/core/util.c:136 ../src/tools/metacity-message.c:176
|
||||
#, c-format
|
||||
msgid "Metacity was compiled without support for verbose mode\n"
|
||||
msgstr "Metacity ถูกคอมไพล์โดยไม่ได้เลือกรองรับโหมด verbose\n"
|
||||
|
||||
#: ../src/core/util.c:231
|
||||
#: ../src/core/util.c:236
|
||||
msgid "Window manager: "
|
||||
msgstr "โปรแกรมจัดการหน้าต่าง: "
|
||||
|
||||
#: ../src/core/util.c:379
|
||||
#: ../src/core/util.c:388
|
||||
msgid "Bug in window manager: "
|
||||
msgstr "บั๊กในโปรแกรมจัดการหน้าต่าง: "
|
||||
|
||||
#: ../src/core/util.c:408
|
||||
#: ../src/core/util.c:421
|
||||
msgid "Window manager warning: "
|
||||
msgstr "คำเตือนในโปรแกรมจัดการหน้าต่าง: "
|
||||
|
||||
#: ../src/core/util.c:432
|
||||
#: ../src/core/util.c:449
|
||||
msgid "Window manager error: "
|
||||
msgstr "เกิดข้อผิดพลาดในโปรแกรมจัดการหน้าต่าง: "
|
||||
|
||||
#: ../src/core/window-props.c:192
|
||||
#: ../src/core/window-props.c:195
|
||||
#, c-format
|
||||
msgid "Application set a bogus _NET_WM_PID %lu\n"
|
||||
msgstr "โปรแกรมประยุกต์ตั้งค่า _NET_WM_PID เป็น %lu ซึ่งไม่มีอยู่จริง\n"
|
||||
|
||||
#: ../src/core/window-props.c:324
|
||||
#: ../src/core/window-props.c:327
|
||||
#, c-format
|
||||
msgid "%s (on %s)"
|
||||
msgstr "%s (ที่เครื่อง %s)"
|
||||
|
||||
#: ../src/core/window-props.c:1406
|
||||
#: ../src/core/window-props.c:1409
|
||||
#, c-format
|
||||
msgid "Invalid WM_TRANSIENT_FOR window 0x%lx specified for %s.\n"
|
||||
msgstr "ค่า WM_TRANSIENT_FOR หน้าต่าง 0x%lx ที่กำหนดให้กับ %s ใช้ไม่ได้\n"
|
||||
|
||||
#. first time through
|
||||
#: ../src/core/window.c:5650
|
||||
#: ../src/core/window.c:5674
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Window %s sets SM_CLIENT_ID on itself, instead of on the WM_CLIENT_LEADER "
|
||||
@@ -430,7 +433,7 @@ msgstr ""
|
||||
#. * MWM but not WM_NORMAL_HINTS are basically broken. We complain
|
||||
#. * about these apps but make them work.
|
||||
#.
|
||||
#: ../src/core/window.c:6215
|
||||
#: ../src/core/window.c:6239
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Window %s sets an MWM hint indicating it isn't resizable, but sets min size %"
|
||||
@@ -508,16 +511,18 @@ msgstr "การจัดเรียงปุ่มบนแถบหัวห
|
||||
#: ../src/metacity.schemas.in.h:8
|
||||
msgid ""
|
||||
"Arrangement of buttons on the titlebar. The value should be a string, such "
|
||||
"as \"menu:minimize,maximize,close\"; the colon separates the left corner of "
|
||||
"the window from the right corner, and the button names are comma-separated. "
|
||||
"Duplicate buttons are not allowed. Unknown button names are silently ignored "
|
||||
"so that buttons can be added in future metacity versions without breaking "
|
||||
"older versions."
|
||||
"as \"menu:minimize,maximize,spacer,close\"; the colon separates the left "
|
||||
"corner of the window from the right corner, and the button names are comma-"
|
||||
"separated. Duplicate buttons are not allowed. Unknown button names are "
|
||||
"silently ignored so that buttons can be added in future metacity versions "
|
||||
"without breaking older versions. A special spacer tag can be used to insert "
|
||||
"some space between two adjacent buttons."
|
||||
msgstr ""
|
||||
"การจัดเรียงปุ่มบนแถบหัวหน้าต่าง ค่าของคีย์ควรเป็นข้อความ ตัวอย่างเช่น \"menu:minimize,"
|
||||
"maximize,close\" โดย colon จะแบ่งมุมซ้ายกับมุมขวาของหน้าต่างออกจากกัน และปุ่มต่างๆ "
|
||||
"จะคั่นด้วยจุลภาค ห้ามใช้ปุ่มซ้ำกัน ปุ่มที่ไม่รู้จักจะถูกข้ามไป "
|
||||
"เพื่อรองรับการเพิ่มปุ่มใหม่ในอนาคตได้โดยไม่ขัดกับ metacity รุ่นเก่า"
|
||||
"maximize,spacer,close\" โดย colon จะแบ่งมุมซ้ายกับมุมขวาของหน้าต่างออกจากกัน "
|
||||
"และปุ่มต่างๆ จะคั่นด้วยจุลภาค ห้ามใช้ปุ่มซ้ำกัน ปุ่มที่ไม่รู้จักจะถูกข้ามไป "
|
||||
"เพื่อรองรับการเพิ่มปุ่มใหม่ในอนาคตได้โดยไม่ขัดกับ metacity รุ่นเก่า คุณสามารถใช้แท็กพิเศษ "
|
||||
"\"spacer\" ในการแทรกช่องว่างระหว่างปุ่มที่อยู่ติดกันได้"
|
||||
|
||||
#: ../src/metacity.schemas.in.h:9
|
||||
msgid "Automatically raises the focused window"
|
||||
@@ -2111,39 +2116,57 @@ msgid ""
|
||||
"This option determines the effects of double-clicking on the title bar. "
|
||||
"Current valid options are 'toggle_shade', which will shade/unshade the "
|
||||
"window, 'toggle_maximize' which will maximize/unmaximize the window, "
|
||||
"'minimize' which will minimize the window, and 'none' which will not do "
|
||||
"anything."
|
||||
"'toggle_maximize_horizontally' and 'toggle_maximize_vertically' which will "
|
||||
"maximize/unmaximize the window in that direction only, 'minimize' which will "
|
||||
"minimize the window, 'shade' which will roll the window up, 'menu' which "
|
||||
"will display the window menu, 'lower' which will put the window behind all "
|
||||
"the others, and 'none' which will not do anything."
|
||||
msgstr ""
|
||||
"ตัวเลือกนี้เลือกการปฏิบัติเมื่อดับเบิลคลิกที่แถบหัวหน้าต่าง ค่าตัวเลือกที่เป็นไปได้ในขณะนี้คือ "
|
||||
"'toggle_shade' ซึ่งจะม้วนหรือคลี่หน้าต่าง, 'toggle_maximize' "
|
||||
"ซึ่งจะขยายหรือยกเลิกการขยายหน้าต่างให้เต็มพื้นโต๊ะ, 'minimize' ซึ่งจะย่อหน้าต่างหาย และ "
|
||||
"'none' ซึ่งจะไม่ทำอะไรเลย"
|
||||
"ซึ่งจะขยายหรือยกเลิกการขยายหน้าต่างให้เต็มพื้นโต๊ะ, 'toggle_maximize_horizontally' และ "
|
||||
"'toggle_maximize_vertically' ซึ่งจะขยายหรือยกเลิกการขยายหน้าต่างในทิศทางที่กำหนดเท่านั้น, "
|
||||
"'minimize' ซึ่งจะย่อหน้าต่างเก็บ, 'shade' ซึ่งจะม้วนหน้าต่างเก็บ, 'menu' "
|
||||
"ซึ่งจะแสดงเมนูหน้าต่าง, 'lower' ซึ่งจะนำหน้าต่างลงไปอยู่หลังหน้าต่างอื่นทั้งหมด, และ 'none' "
|
||||
"ซึ่งจะไม่ทำอะไรเลย"
|
||||
|
||||
#: ../src/metacity.schemas.in.h:188
|
||||
msgid ""
|
||||
"This option determines the effects of middle-clicking on the title bar. "
|
||||
"Current valid options are 'toggle_shade', which will shade/unshade the "
|
||||
"window, 'toggle_maximize' which will maximize/unmaximize the window, "
|
||||
"'minimize' which will minimize the window, and 'none' which will not do "
|
||||
"anything."
|
||||
"'toggle_maximize_horizontally' and 'toggle_maximize_vertically' which will "
|
||||
"maximize/unmaximize the window in that direction only, 'minimize' which will "
|
||||
"minimize the window, 'shade' which will roll the window up, 'menu' which "
|
||||
"will display the window menu, 'lower' which will put the window behind all "
|
||||
"the others, and 'none' which will not do anything."
|
||||
msgstr ""
|
||||
"ตัวเลือกนี้เลือกการปฏิบัติเมื่อคลิกเมาส์ปุ่มกลางที่แถบหัวหน้าต่าง ค่าตัวเลือกที่เป็นไปได้ในขณะนี้คือ "
|
||||
"'toggle_shade' ซึ่งจะม้วนหรือคลี่หน้าต่าง, 'toggle_maximize' "
|
||||
"ซึ่งจะขยายหรือยกเลิกการขยายหน้าต่างให้เต็มพื้นโต๊ะ, 'minimize' ซึ่งจะย่อหน้าต่างหาย และ "
|
||||
"'none' ซึ่งจะไม่ทำอะไรเลย"
|
||||
"ซึ่งจะขยายหรือยกเลิกการขยายหน้าต่างให้เต็มพื้นโต๊ะ, 'toggle_maximize_horizontally' และ "
|
||||
"'toggle_maximize_vertically' ซึ่งจะขยายหรือยกเลิกการขยายหน้าต่างในทิศทางที่กำหนดเท่านั้น, "
|
||||
"'minimize' ซึ่งจะย่อหน้าต่างเก็บ, 'shade' ซึ่งจะม้วนหน้าต่างเก็บ, 'menu' "
|
||||
"ซึ่งจะแสดงเมนูหน้าต่าง, 'lower' ซึ่งจะนำหน้าต่างลงไปอยู่หลังหน้าต่างอื่นทั้งหมด, และ 'none' "
|
||||
"ซึ่งจะไม่ทำอะไรเลย"
|
||||
|
||||
#: ../src/metacity.schemas.in.h:189
|
||||
msgid ""
|
||||
"This option determines the effects of right-clicking on the title bar. "
|
||||
"Current valid options are 'toggle_shade', which will shade/unshade the "
|
||||
"window, 'toggle_maximize' which will maximize/unmaximize the window, "
|
||||
"'minimize' which will minimize the window, and 'none' which will not do "
|
||||
"anything."
|
||||
"'toggle_maximize_horizontally' and 'toggle_maximize_vertically' which will "
|
||||
"maximize/unmaximize the window in that direction only, 'minimize' which will "
|
||||
"minimize the window, 'shade' which will roll the window up, 'menu' which "
|
||||
"will display the window menu, 'lower' which will put the window behind all "
|
||||
"the others, and 'none' which will not do anything."
|
||||
msgstr ""
|
||||
"ตัวเลือกนี้เลือกการปฏิบัติเมื่อคลิกเมาส์ปุ่มขวาที่แถบหัวหน้าต่าง ค่าตัวเลือกที่เป็นไปได้ในขณะนี้คือ "
|
||||
"'toggle_shade' ซึ่งจะม้วนหรือคลี่หน้าต่าง, 'toggle_maximize' "
|
||||
"ซึ่งจะขยายหรือยกเลิกการขยายหน้าต่างให้เต็มพื้นโต๊ะ, 'minimize' ซึ่งจะย่อหน้าต่างหาย และ "
|
||||
"'none' ซึ่งจะไม่ทำอะไรเลย"
|
||||
"ซึ่งจะขยายหรือยกเลิกการขยายหน้าต่างให้เต็มพื้นโต๊ะ, 'toggle_maximize_horizontally' และ "
|
||||
"'toggle_maximize_vertically' ซึ่งจะขยายหรือยกเลิกการขยายหน้าต่างในทิศทางที่กำหนดเท่านั้น, "
|
||||
"'minimize' ซึ่งจะย่อหน้าต่างเก็บ, 'shade' ซึ่งจะม้วนหน้าต่างเก็บ, 'menu' "
|
||||
"ซึ่งจะแสดงเมนูหน้าต่าง, 'lower' ซึ่งจะนำหน้าต่างลงไปอยู่หลังหน้าต่างอื่นทั้งหมด, และ 'none' "
|
||||
"ซึ่งจะไม่ทำอะไรเลย"
|
||||
|
||||
#: ../src/metacity.schemas.in.h:190
|
||||
msgid ""
|
||||
@@ -2334,17 +2357,22 @@ msgstr "ย้ายไปพื้นที่ทำงาน_ล่าง"
|
||||
msgid "_Close"
|
||||
msgstr "ปิ_ด"
|
||||
|
||||
#: ../src/ui/menu.c:208
|
||||
#: ../src/ui/menu.c:203
|
||||
#, c-format
|
||||
msgid "Workspace %d%n"
|
||||
msgstr "พื้นที่ทำงาน %d%n"
|
||||
|
||||
#: ../src/ui/menu.c:213
|
||||
#, c-format
|
||||
msgid "Workspace 1_0"
|
||||
msgstr "พื้นที่ทำงาน 1_0"
|
||||
|
||||
#: ../src/ui/menu.c:210
|
||||
#: ../src/ui/menu.c:215
|
||||
#, c-format
|
||||
msgid "Workspace %s%d"
|
||||
msgstr "พื้นที่ทำงาน %s%d"
|
||||
|
||||
#: ../src/ui/menu.c:390
|
||||
#: ../src/ui/menu.c:395
|
||||
msgid "Move to Another _Workspace"
|
||||
msgstr "ย้ายไป_พื้นที่ทำงานอื่น"
|
||||
|
||||
@@ -3259,12 +3287,12 @@ msgstr "ค่า aspect ratio %g ของปุ่มไม่สมเหต
|
||||
msgid "Frame geometry does not specify size of buttons"
|
||||
msgstr "ค่าเรขาคณิตของเฟรมไม่ได้ระบุขนาดของปุ่ม"
|
||||
|
||||
#: ../src/ui/theme.c:988
|
||||
#: ../src/ui/theme.c:1022
|
||||
#, c-format
|
||||
msgid "Gradients should have at least two colors"
|
||||
msgstr "การไล่สีควรใช้อย่างน้อยสองสี"
|
||||
|
||||
#: ../src/ui/theme.c:1114
|
||||
#: ../src/ui/theme.c:1148
|
||||
#, c-format
|
||||
msgid ""
|
||||
"GTK color specification must have the state in brackets, e.g. gtk:fg[NORMAL] "
|
||||
@@ -3273,7 +3301,7 @@ msgstr ""
|
||||
"การกำหนดสี GTK ต้องเขียนสถานะในวงเล็บเหลี่ยม เช่น gtk:fg[NORMAL] เมื่อ NORMAL "
|
||||
"เป็นสถานะ; ไม่สามารถแจงค่า \"%s\""
|
||||
|
||||
#: ../src/ui/theme.c:1128
|
||||
#: ../src/ui/theme.c:1162
|
||||
#, c-format
|
||||
msgid ""
|
||||
"GTK color specification must have a close bracket after the state, e.g. gtk:"
|
||||
@@ -3282,17 +3310,17 @@ msgstr ""
|
||||
"การกำหนดสี·GTK·ต้องมีวงเล็บเหลี่ยมปิดหลังสถานะด้วย·เช่น·gtk:fg[NORMAL]"
|
||||
"·เมื่อ·NORMAL·เป็นสถานะ;·ไม่สามารถแจงค่า·\"%s\""
|
||||
|
||||
#: ../src/ui/theme.c:1139
|
||||
#: ../src/ui/theme.c:1173
|
||||
#, c-format
|
||||
msgid "Did not understand state \"%s\" in color specification"
|
||||
msgstr "ไม่เข้าใจสถานะ \"%s\" ในการระบุสี"
|
||||
|
||||
#: ../src/ui/theme.c:1152
|
||||
#: ../src/ui/theme.c:1186
|
||||
#, c-format
|
||||
msgid "Did not understand color component \"%s\" in color specification"
|
||||
msgstr "ไม่เข้าใจองค์ประกอบ \"%s\" ในการระบุสี"
|
||||
|
||||
#: ../src/ui/theme.c:1182
|
||||
#: ../src/ui/theme.c:1216
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Blend format is \"blend/bg_color/fg_color/alpha\", \"%s\" does not fit the "
|
||||
@@ -3300,94 +3328,94 @@ msgid ""
|
||||
msgstr ""
|
||||
"รูปแบบการเกลี่ยสีคือ \"blend/bg_color/fg_color/alpha\", ค่า \"%s\" ไม่ตรงกับรูปแบบ"
|
||||
|
||||
#: ../src/ui/theme.c:1193
|
||||
#: ../src/ui/theme.c:1227
|
||||
#, c-format
|
||||
msgid "Could not parse alpha value \"%s\" in blended color"
|
||||
msgstr "ไม่สามารถแจงค่าอัลฟา \"%s\" ในการเกลี่ยสี"
|
||||
|
||||
#: ../src/ui/theme.c:1203
|
||||
#: ../src/ui/theme.c:1237
|
||||
#, c-format
|
||||
msgid "Alpha value \"%s\" in blended color is not between 0.0 and 1.0"
|
||||
msgstr "ค่าอัลฟา \"%s\" ในการเกลี่ยสีไม่อยู่ระหว่าง 0.0 และ 1.0"
|
||||
|
||||
#: ../src/ui/theme.c:1251
|
||||
#: ../src/ui/theme.c:1284
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Shade format is \"shade/base_color/factor\", \"%s\" does not fit the format"
|
||||
msgstr "รูปแบบของเฉดสีคือ \"shade/base_color/factor \", \"%s\" ไม่ตรงกับรูปแบบ"
|
||||
|
||||
#: ../src/ui/theme.c:1262
|
||||
#: ../src/ui/theme.c:1295
|
||||
#, c-format
|
||||
msgid "Could not parse shade factor \"%s\" in shaded color"
|
||||
msgstr "ไม่สามารถแจงค่าตัวคูณของเฉด \"%s\" ในเฉดสี"
|
||||
|
||||
#: ../src/ui/theme.c:1272
|
||||
#: ../src/ui/theme.c:1305
|
||||
#, c-format
|
||||
msgid "Shade factor \"%s\" in shaded color is negative"
|
||||
msgstr "ตัวคูณเฉดสี \"%s\" ในเฉดสีเป็นค่าลบ"
|
||||
|
||||
#: ../src/ui/theme.c:1302
|
||||
#: ../src/ui/theme.c:1334
|
||||
#, c-format
|
||||
msgid "Could not parse color \"%s\""
|
||||
msgstr "ไม่เข้าใจสี \"%s\""
|
||||
|
||||
#: ../src/ui/theme.c:1560
|
||||
#: ../src/ui/theme.c:1584
|
||||
#, c-format
|
||||
msgid "Coordinate expression contains character '%s' which is not allowed"
|
||||
msgstr "นิพจน์พิกัดมีอักขระ'%s' ซึ่งไม่อนุญาตให้ใช้"
|
||||
|
||||
#: ../src/ui/theme.c:1587
|
||||
#: ../src/ui/theme.c:1611
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Coordinate expression contains floating point number '%s' which could not be "
|
||||
"parsed"
|
||||
msgstr "นิพจน์พิกัดมีเลขจุดทศนิยม '%s'·ที่แจงค่าไม่ได้"
|
||||
|
||||
#: ../src/ui/theme.c:1601
|
||||
#: ../src/ui/theme.c:1625
|
||||
#, c-format
|
||||
msgid "Coordinate expression contains integer '%s' which could not be parsed"
|
||||
msgstr "นิพจน์พิกัดมีเลขจำนวนเต็ม·'%s' ที่แจงค่าไม่ได้"
|
||||
|
||||
#: ../src/ui/theme.c:1723
|
||||
#: ../src/ui/theme.c:1747
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Coordinate expression contained unknown operator at the start of this text: "
|
||||
"\"%s\""
|
||||
msgstr "นิพจน์พิกัดมีเครื่องหมายดำเนินการที่ไม่รู้จัก เริ่มจากตำแหน่ง·\"%s\""
|
||||
|
||||
#: ../src/ui/theme.c:1780
|
||||
#: ../src/ui/theme.c:1804
|
||||
#, c-format
|
||||
msgid "Coordinate expression was empty or not understood"
|
||||
msgstr "นิพจน์พิกัดว่างเปล่าหรือไม่สามารถเข้าใจ"
|
||||
|
||||
#: ../src/ui/theme.c:1891 ../src/ui/theme.c:1901 ../src/ui/theme.c:1935
|
||||
#: ../src/ui/theme.c:1915 ../src/ui/theme.c:1925 ../src/ui/theme.c:1959
|
||||
#, c-format
|
||||
msgid "Coordinate expression results in division by zero"
|
||||
msgstr "นิพจน์พิกัดมีผลลัพธ์ที่เป็นการหารด้วยศูนย์"
|
||||
|
||||
#: ../src/ui/theme.c:1943
|
||||
#: ../src/ui/theme.c:1967
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Coordinate expression tries to use mod operator on a floating-point number"
|
||||
msgstr "นิพจน์พิกัดพยายามใช้ตัวดำเนินการ mod กับตัวเลขจุดทศนิยม"
|
||||
|
||||
#: ../src/ui/theme.c:1999
|
||||
#: ../src/ui/theme.c:2023
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Coordinate expression has an operator \"%s\" where an operand was expected"
|
||||
msgstr "นิพจน์พิกัดมีตัวดำเนินการ\"%s\" ในที่ที่ควรจะเป็นตัวถูกดำเนินการ"
|
||||
|
||||
#: ../src/ui/theme.c:2008
|
||||
#: ../src/ui/theme.c:2032
|
||||
#, c-format
|
||||
msgid "Coordinate expression had an operand where an operator was expected"
|
||||
msgstr "นิพจน์พิกัดมีตัวถูกดำเนินการในที่ที่ควรจะเป็นตัวดำเนินการ"
|
||||
|
||||
#: ../src/ui/theme.c:2016
|
||||
#: ../src/ui/theme.c:2040
|
||||
#, c-format
|
||||
msgid "Coordinate expression ended with an operator instead of an operand"
|
||||
msgstr "นิพจน์พิกัดจบด้วยตัวดำเนินการแทนที่จะเป็นตัวถูกดำเนินการ"
|
||||
|
||||
#: ../src/ui/theme.c:2026
|
||||
#: ../src/ui/theme.c:2050
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Coordinate expression has operator \"%c\" following operator \"%c\" with no "
|
||||
@@ -3395,37 +3423,37 @@ msgid ""
|
||||
msgstr ""
|
||||
"นิพจน์พิกัดมีตัวดำเนินการ\"%c\" ตามหลังตัวดำเนินการ \"%c\" โดยไม่มีตัวถูกดำเนินการคั่นกลาง"
|
||||
|
||||
#: ../src/ui/theme.c:2173 ../src/ui/theme.c:2214
|
||||
#: ../src/ui/theme.c:2197 ../src/ui/theme.c:2238
|
||||
#, c-format
|
||||
msgid "Coordinate expression had unknown variable or constant \"%s\""
|
||||
msgstr "นิพจน์พิกัดมีตัวแปรหรือค่าคงที่ \"%s\" ที่ไม่รู้จัก"
|
||||
|
||||
#: ../src/ui/theme.c:2268
|
||||
#: ../src/ui/theme.c:2292
|
||||
#, c-format
|
||||
msgid "Coordinate expression parser overflowed its buffer."
|
||||
msgstr "ตัวแจงค่านิพจน์พิกัดทำข้อมูลล้น"
|
||||
|
||||
#: ../src/ui/theme.c:2297
|
||||
#: ../src/ui/theme.c:2321
|
||||
#, c-format
|
||||
msgid "Coordinate expression had a close parenthesis with no open parenthesis"
|
||||
msgstr "นิพจน์พิกัดมีวงเล็บปิดโดยไม่มีวงเล็บเปิด"
|
||||
|
||||
#: ../src/ui/theme.c:2361
|
||||
#: ../src/ui/theme.c:2385
|
||||
#, c-format
|
||||
msgid "Coordinate expression had an open parenthesis with no close parenthesis"
|
||||
msgstr "นิพจน์พิกัดมีวงเล็บเปิดโดยไม่มีวงเล็บปิด"
|
||||
|
||||
#: ../src/ui/theme.c:2372
|
||||
#: ../src/ui/theme.c:2396
|
||||
#, c-format
|
||||
msgid "Coordinate expression doesn't seem to have any operators or operands"
|
||||
msgstr "นิพจน์พิกัดท่าทางจะไม่มีตัวดำเนินการหรือตัวถูกดำเนินการเลย"
|
||||
|
||||
#: ../src/ui/theme.c:2574 ../src/ui/theme.c:2594 ../src/ui/theme.c:2614
|
||||
#: ../src/ui/theme.c:2598 ../src/ui/theme.c:2618 ../src/ui/theme.c:2638
|
||||
#, c-format
|
||||
msgid "Theme contained an expression that resulted in an error: %s\n"
|
||||
msgstr "ชุดตกแต่งมีนิพจน์ซึ่งทำให้เกิดข้อผิดพลาด: %s\n"
|
||||
|
||||
#: ../src/ui/theme.c:4133
|
||||
#: ../src/ui/theme.c:4157
|
||||
#, c-format
|
||||
msgid ""
|
||||
"<button function=\"%s\" state=\"%s\" draw_ops=\"whatever\"/> must be "
|
||||
@@ -3434,25 +3462,25 @@ msgstr ""
|
||||
"ต้องระบุ <button function =\"%s\" state=\"%s\" draw_ops=\"อะไรก็ตามแต่\"/> "
|
||||
"สำหรับรูปแบบเฟรมด้วย"
|
||||
|
||||
#: ../src/ui/theme.c:4609 ../src/ui/theme.c:4634
|
||||
#: ../src/ui/theme.c:4633 ../src/ui/theme.c:4658
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Missing <frame state=\"%s\" resize=\"%s\" focus=\"%s\" style=\"whatever\"/>"
|
||||
msgstr ""
|
||||
"ขาด <frame state=\"%s\" resize=\"%s\" focus=\"%s\" style=\"อะไรก็ตามแต่\"/>"
|
||||
|
||||
#: ../src/ui/theme.c:4678
|
||||
#: ../src/ui/theme.c:4702
|
||||
#, c-format
|
||||
msgid "Failed to load theme \"%s\": %s\n"
|
||||
msgstr "โหลดชุดตกแต่ง \"%s\" ล้มเหลว: %s\n"
|
||||
|
||||
#: ../src/ui/theme.c:4804 ../src/ui/theme.c:4811 ../src/ui/theme.c:4818
|
||||
#: ../src/ui/theme.c:4825 ../src/ui/theme.c:4832
|
||||
#: ../src/ui/theme.c:4828 ../src/ui/theme.c:4835 ../src/ui/theme.c:4842
|
||||
#: ../src/ui/theme.c:4849 ../src/ui/theme.c:4856
|
||||
#, c-format
|
||||
msgid "No <%s> set for theme \"%s\""
|
||||
msgstr "ไม่ได้กำหนดค่า <%s> สำหรับชุดตกแต่ง \"%s\""
|
||||
|
||||
#: ../src/ui/theme.c:4840
|
||||
#: ../src/ui/theme.c:4864
|
||||
#, c-format
|
||||
msgid ""
|
||||
"No frame style set for window type \"%s\" in theme \"%s\", add a <window "
|
||||
@@ -3461,13 +3489,13 @@ msgstr ""
|
||||
"ไม่ได้กำหนดรูปแบบเฟรมสำหรับชนิดหน้าต่าง \"%s\" ในชุดตกแต่ง \"%s\", กรุณาเพิ่มอีลิเมนต์ "
|
||||
"<window type=\"%s\" style_set=\"อะไรก็ตามแต่\"/>"
|
||||
|
||||
#: ../src/ui/theme.c:5207 ../src/ui/theme.c:5269 ../src/ui/theme.c:5332
|
||||
#: ../src/ui/theme.c:5231 ../src/ui/theme.c:5293 ../src/ui/theme.c:5356
|
||||
#, c-format
|
||||
msgid ""
|
||||
"User-defined constants must begin with a capital letter; \"%s\" does not"
|
||||
msgstr "ค่าคงที่ที่ผู้ใช้กำหนดเองต้องเริ่มต้นด้วยอักษรตัวใหญ่; แต่ \"%s\" ไม่ได้เป็นตามนั้น"
|
||||
|
||||
#: ../src/ui/theme.c:5215 ../src/ui/theme.c:5277 ../src/ui/theme.c:5340
|
||||
#: ../src/ui/theme.c:5239 ../src/ui/theme.c:5301 ../src/ui/theme.c:5364
|
||||
#, c-format
|
||||
msgid "Constant \"%s\" has already been defined"
|
||||
msgstr "ค่าคงที่ \"%s\" ถูกกำหนดไว้แล้ว"
|
||||
|
1801
po/zh_CN.po
1801
po/zh_CN.po
File diff suppressed because it is too large
Load Diff
2123
po/zh_HK.po
2123
po/zh_HK.po
File diff suppressed because it is too large
Load Diff
2156
po/zh_TW.po
2156
po/zh_TW.po
File diff suppressed because it is too large
Load Diff
@@ -7,18 +7,23 @@ INCLUDES=@METACITY_CFLAGS@ -I $(srcdir)/include -DMETACITY_LIBEXECDIR=\"$(libexe
|
||||
metacity_SOURCES= \
|
||||
core/async-getprop.c \
|
||||
core/async-getprop.h \
|
||||
core/atomnames.h \
|
||||
core/bell.c \
|
||||
core/bell.h \
|
||||
core/boxes.c \
|
||||
include/boxes.h \
|
||||
core/compositor.c \
|
||||
core/compositor.h \
|
||||
compositor/compositor.c \
|
||||
compositor/compositor-private.h \
|
||||
compositor/compositor-xrender.c \
|
||||
compositor/compositor-xrender.h \
|
||||
include/compositor.h \
|
||||
core/constraints.c \
|
||||
core/constraints.h \
|
||||
core/core.c \
|
||||
core/delete.c \
|
||||
core/display.c \
|
||||
core/display.h \
|
||||
core/display-private.h \
|
||||
include/display.h \
|
||||
ui/draw-workspace.c \
|
||||
ui/draw-workspace.h \
|
||||
core/edge-resistance.c \
|
||||
@@ -26,11 +31,12 @@ metacity_SOURCES= \
|
||||
core/effects.c \
|
||||
core/effects.h \
|
||||
core/errors.c \
|
||||
core/errors.h \
|
||||
include/errors.h \
|
||||
core/eventqueue.c \
|
||||
core/eventqueue.h \
|
||||
core/frame.c \
|
||||
core/frame.h \
|
||||
core/frame-private.h \
|
||||
include/frame.h \
|
||||
ui/gradient.c \
|
||||
ui/gradient.h \
|
||||
core/group-private.h \
|
||||
@@ -50,11 +56,11 @@ metacity_SOURCES= \
|
||||
core/prefs.c \
|
||||
include/prefs.h \
|
||||
core/screen.c \
|
||||
core/screen.h \
|
||||
core/screen-private.h \
|
||||
include/screen.h \
|
||||
include/types.h \
|
||||
core/session.c \
|
||||
core/session.h \
|
||||
core/spring-model.c \
|
||||
core/spring-model.h \
|
||||
core/stack.c \
|
||||
core/stack.h \
|
||||
core/util.c \
|
||||
@@ -62,11 +68,12 @@ metacity_SOURCES= \
|
||||
core/window-props.c \
|
||||
core/window-props.h \
|
||||
core/window.c \
|
||||
core/window.h \
|
||||
core/window-private.h \
|
||||
include/window.h \
|
||||
core/workspace.c \
|
||||
core/workspace.h \
|
||||
core/xprops.c \
|
||||
core/xprops.h \
|
||||
include/xprops.h \
|
||||
include/common.h \
|
||||
include/core.h \
|
||||
include/ui.h \
|
||||
@@ -151,6 +158,7 @@ desktopfilesdir=$(datadir)/gnome/wm-properties
|
||||
desktopfiles_in_files=metacity.desktop.in
|
||||
desktopfiles_files=$(desktopfiles_in_files:.desktop.in=.desktop)
|
||||
desktopfiles_DATA = $(desktopfiles_files)
|
||||
|
||||
@INTLTOOL_DESKTOP_RULE@
|
||||
|
||||
schemadir = @GCONF_SCHEMA_FILE_DIR@
|
||||
|
54
src/compositor/compositor-private.h
Normal file
54
src/compositor/compositor-private.h
Normal file
@@ -0,0 +1,54 @@
|
||||
/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */
|
||||
|
||||
/*
|
||||
* Copyright (C) 2008 Iain Holmes
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License as
|
||||
* published by the Free Software Foundation; either version 2 of the
|
||||
* License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
||||
* 02111-1307, USA.
|
||||
*/
|
||||
|
||||
#ifndef META_COMPOSITOR_PRIVATE_H
|
||||
#define META_COMPOSITOR_PRIVATE_H
|
||||
|
||||
#include "compositor.h"
|
||||
|
||||
struct _MetaCompositor
|
||||
{
|
||||
void (* destroy) (MetaCompositor *compositor);
|
||||
|
||||
void (*manage_screen) (MetaCompositor *compositor,
|
||||
MetaScreen *screen);
|
||||
void (*unmanage_screen) (MetaCompositor *compositor,
|
||||
MetaScreen *screen);
|
||||
void (*add_window) (MetaCompositor *compositor,
|
||||
MetaWindow *window,
|
||||
Window xwindow,
|
||||
XWindowAttributes *attrs);
|
||||
void (*remove_window) (MetaCompositor *compositor,
|
||||
Window xwindow);
|
||||
void (*set_updates) (MetaCompositor *compositor,
|
||||
MetaWindow *window,
|
||||
gboolean update);
|
||||
void (*process_event) (MetaCompositor *compositor,
|
||||
XEvent *event,
|
||||
MetaWindow *window);
|
||||
Pixmap (*get_window_pixmap) (MetaCompositor *compositor,
|
||||
MetaWindow *window);
|
||||
void (*set_active_window) (MetaCompositor *compositor,
|
||||
MetaScreen *screen,
|
||||
MetaWindow *window);
|
||||
};
|
||||
|
||||
#endif
|
File diff suppressed because it is too large
Load Diff
@@ -1,9 +1,9 @@
|
||||
/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */
|
||||
|
||||
/* Metacity RGB color stuff */
|
||||
|
||||
/*
|
||||
* Copyright (C) 2001 Havoc Pennington
|
||||
* Copyright (C) 2007 Iain Holmes
|
||||
* Based on xcompmgr - (c) 2003 Keith Packard
|
||||
* xfwm4 - (c) 2005-2007 Olivier Fourdan
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License as
|
||||
@@ -21,26 +21,11 @@
|
||||
* 02111-1307, USA.
|
||||
*/
|
||||
|
||||
#ifndef META_COLORS_H
|
||||
#define META_COLORS_H
|
||||
#ifndef META_COMPOSITOR_XRENDER_H_
|
||||
#define META_COMPOSITOR_XRENDER_H_
|
||||
|
||||
/* Colors/state stuff matches GTK.
|
||||
*/
|
||||
typedef struct _MetaUIColors MetaUIColors;
|
||||
|
||||
/* This stuff will all just be XlibRGB eventually. Right now
|
||||
* it has a stub implementation.
|
||||
*/
|
||||
|
||||
#include "screen.h"
|
||||
#include "util.h"
|
||||
|
||||
gulong meta_screen_get_x_pixel (MetaScreen *screen,
|
||||
const PangoColor *color);
|
||||
void meta_screen_init_visual_info (MetaScreen *screen);
|
||||
void meta_screen_set_ui_colors (MetaScreen *screen,
|
||||
const MetaUIColors *colors);
|
||||
void meta_screen_init_ui_colors (MetaScreen *screen);
|
||||
#include "types.h"
|
||||
|
||||
MetaCompositor *meta_compositor_xrender_new (MetaDisplay *display);
|
||||
|
||||
#endif
|
159
src/compositor/compositor.c
Normal file
159
src/compositor/compositor.c
Normal file
@@ -0,0 +1,159 @@
|
||||
/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */
|
||||
|
||||
/*
|
||||
* Copyright (C) 2008 Iain Holmes
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License as
|
||||
* published by the Free Software Foundation; either version 2 of the
|
||||
* License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
||||
* 02111-1307, USA.
|
||||
*/
|
||||
|
||||
#include <config.h>
|
||||
#include "compositor-private.h"
|
||||
#include "compositor-xrender.h"
|
||||
|
||||
MetaCompositor *
|
||||
meta_compositor_new (MetaDisplay *display)
|
||||
{
|
||||
#ifdef HAVE_COMPOSITE_EXTENSIONS
|
||||
/* At some point we would have a way to select between backends */
|
||||
return meta_compositor_xrender_new (display);
|
||||
#else
|
||||
return NULL;
|
||||
#endif
|
||||
}
|
||||
|
||||
void
|
||||
meta_compositor_destroy (MetaCompositor *compositor)
|
||||
{
|
||||
#ifdef HAVE_COMPOSITE_EXTENSIONS
|
||||
if (compositor && compositor->destroy)
|
||||
compositor->destroy (compositor);
|
||||
#endif
|
||||
}
|
||||
|
||||
void
|
||||
meta_compositor_add_window (MetaCompositor *compositor,
|
||||
MetaWindow *window,
|
||||
Window xwindow,
|
||||
XWindowAttributes *attrs)
|
||||
{
|
||||
#ifdef HAVE_COMPOSITE_EXTENSIONS
|
||||
if (compositor && compositor->add_window)
|
||||
compositor->add_window (compositor, window, xwindow, attrs);
|
||||
#endif
|
||||
}
|
||||
|
||||
void
|
||||
meta_compositor_remove_window (MetaCompositor *compositor,
|
||||
Window xwindow)
|
||||
{
|
||||
#ifdef HAVE_COMPOSITE_EXTENSIONS
|
||||
if (compositor && compositor->remove_window)
|
||||
compositor->remove_window (compositor, xwindow);
|
||||
#endif
|
||||
}
|
||||
|
||||
void
|
||||
meta_compositor_manage_screen (MetaCompositor *compositor,
|
||||
MetaScreen *screen)
|
||||
{
|
||||
#ifdef HAVE_COMPOSITE_EXTENSIONS
|
||||
if (compositor && compositor->manage_screen)
|
||||
compositor->manage_screen (compositor, screen);
|
||||
#endif
|
||||
}
|
||||
|
||||
void
|
||||
meta_compositor_unmanage_screen (MetaCompositor *compositor,
|
||||
MetaScreen *screen)
|
||||
{
|
||||
#ifdef HAVE_COMPOSITE_EXTENSIONS
|
||||
if (compositor && compositor->unmanage_screen)
|
||||
compositor->unmanage_screen (compositor, screen);
|
||||
#endif
|
||||
}
|
||||
|
||||
void
|
||||
meta_compositor_set_updates (MetaCompositor *compositor,
|
||||
MetaWindow *window,
|
||||
gboolean updates)
|
||||
{
|
||||
#ifdef HAVE_COMPOSITE_EXTENSIONS
|
||||
if (compositor && compositor->set_updates)
|
||||
compositor->set_updates (compositor, window, updates);
|
||||
#endif
|
||||
}
|
||||
|
||||
void
|
||||
meta_compositor_process_event (MetaCompositor *compositor,
|
||||
XEvent *event,
|
||||
MetaWindow *window)
|
||||
{
|
||||
#ifdef HAVE_COMPOSITE_EXTENSIONS
|
||||
if (compositor && compositor->process_event)
|
||||
compositor->process_event (compositor, event, window);
|
||||
#endif
|
||||
}
|
||||
|
||||
Pixmap
|
||||
meta_compositor_get_window_pixmap (MetaCompositor *compositor,
|
||||
MetaWindow *window)
|
||||
{
|
||||
#ifdef HAVE_COMPOSITE_EXTENSIONS
|
||||
if (compositor && compositor->get_window_pixmap)
|
||||
return compositor->get_window_pixmap (compositor, window);
|
||||
else
|
||||
return None;
|
||||
#else
|
||||
return None;
|
||||
#endif
|
||||
}
|
||||
|
||||
void
|
||||
meta_compositor_set_active_window (MetaCompositor *compositor,
|
||||
MetaScreen *screen,
|
||||
MetaWindow *window)
|
||||
{
|
||||
#ifdef HAVE_COMPOSITE_EXTENSIONS
|
||||
if (compositor && compositor->set_active_window)
|
||||
compositor->set_active_window (compositor, screen, window);
|
||||
#endif
|
||||
}
|
||||
|
||||
/* These functions are unused at the moment */
|
||||
void meta_compositor_begin_move (MetaCompositor *compositor,
|
||||
MetaWindow *window,
|
||||
MetaRectangle *initial,
|
||||
int grab_x,
|
||||
int grab_y)
|
||||
{
|
||||
}
|
||||
|
||||
void meta_compositor_update_move (MetaCompositor *compositor,
|
||||
MetaWindow *window,
|
||||
int x,
|
||||
int y)
|
||||
{
|
||||
}
|
||||
|
||||
void meta_compositor_end_move (MetaCompositor *compositor,
|
||||
MetaWindow *window)
|
||||
{
|
||||
}
|
||||
|
||||
void meta_compositor_free_window (MetaCompositor *compositor,
|
||||
MetaWindow *window)
|
||||
{
|
||||
}
|
164
src/core/atomnames.h
Normal file
164
src/core/atomnames.h
Normal file
@@ -0,0 +1,164 @@
|
||||
/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */
|
||||
|
||||
/*
|
||||
* Copyright (C) 2001 Havoc Pennington
|
||||
* Copyright (C) 2002, 2003, 2004 Red Hat, Inc.
|
||||
* Copyright (C) 2003, 2004 Rob Adams
|
||||
* Copyright (C) 2004-2006 Elijah Newren
|
||||
* Copyright (C) 2008 Thomas Thurman
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License as
|
||||
* published by the Free Software Foundation; either version 2 of the
|
||||
* License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
||||
* 02111-1307, USA.
|
||||
*/
|
||||
|
||||
/**
|
||||
* \file atomnames.h A list of atom names.
|
||||
*
|
||||
* This is a list of the names of all the X atoms that Metacity uses.
|
||||
* Each is wrapped in a macro "item()" which is undefined here; the
|
||||
* idea is that when you need to make a big list of all the X atoms,
|
||||
* you can define item(), include this file, and then undefine it
|
||||
* again.
|
||||
*
|
||||
* If you also define EWMH_ATOMS_ONLY then you will only get _NET_WM_*
|
||||
* hints rather than all of them.
|
||||
*/
|
||||
|
||||
#ifndef item
|
||||
#error "item(x) must be defined when you include atomnames.h"
|
||||
#endif
|
||||
|
||||
#ifndef EWMH_ATOMS_ONLY
|
||||
|
||||
item(WM_PROTOCOLS)
|
||||
item(WM_TAKE_FOCUS)
|
||||
item(WM_DELETE_WINDOW)
|
||||
item(WM_STATE)
|
||||
item(_MOTIF_WM_HINTS)
|
||||
item(WM_CHANGE_STATE)
|
||||
item(SM_CLIENT_ID)
|
||||
item(WM_CLIENT_LEADER)
|
||||
item(WM_WINDOW_ROLE)
|
||||
item(UTF8_STRING)
|
||||
item(WM_ICON_SIZE)
|
||||
item(_KWM_WIN_ICON)
|
||||
item(_METACITY_RESTART_MESSAGE)
|
||||
item(_METACITY_RELOAD_THEME_MESSAGE)
|
||||
item(_METACITY_SET_KEYBINDINGS_MESSAGE)
|
||||
item(_METACITY_TOGGLE_VERBOSE)
|
||||
item(_GNOME_PANEL_ACTION)
|
||||
item(_GNOME_PANEL_ACTION_MAIN_MENU)
|
||||
item(_GNOME_PANEL_ACTION_RUN_DIALOG)
|
||||
item(_METACITY_SENTINEL)
|
||||
item(_METACITY_VERSION)
|
||||
item(WM_CLIENT_MACHINE)
|
||||
item(MANAGER)
|
||||
item(TARGETS)
|
||||
item(MULTIPLE)
|
||||
item(TIMESTAMP)
|
||||
item(VERSION)
|
||||
item(ATOM_PAIR)
|
||||
|
||||
/* Oddities: These are used, and we need atoms for them,
|
||||
* but when we need all _NET_WM hints (i.e. when we're making
|
||||
* lists of which _NET_WM hints we support in order to advertise
|
||||
* it) we haven't historically listed them. I don't know what
|
||||
* the reason for this is. It may be a bug.
|
||||
*/
|
||||
item(_NET_WM_SYNC_REQUEST)
|
||||
item(_NET_WM_SYNC_REQUEST_COUNTER)
|
||||
item(_NET_WM_VISIBLE_NAME)
|
||||
item(_NET_WM_VISIBLE_ICON_NAME)
|
||||
item(_NET_SUPPORTING_WM_CHECK)
|
||||
|
||||
/* But I suppose it's quite reasonable not to advertise using
|
||||
* _NET_SUPPORTED that we support _NET_SUPPORTED :)
|
||||
*/
|
||||
item(_NET_SUPPORTED)
|
||||
|
||||
#endif /* !EWMH_ATOMS_ONLY */
|
||||
|
||||
/**************************************************************************/
|
||||
|
||||
item(_NET_WM_NAME)
|
||||
item(_NET_CLOSE_WINDOW)
|
||||
item(_NET_WM_STATE)
|
||||
item(_NET_WM_STATE_SHADED)
|
||||
item(_NET_WM_STATE_MAXIMIZED_HORZ)
|
||||
item(_NET_WM_STATE_MAXIMIZED_VERT)
|
||||
item(_NET_WM_DESKTOP)
|
||||
item(_NET_NUMBER_OF_DESKTOPS)
|
||||
item(_NET_CURRENT_DESKTOP)
|
||||
item(_NET_WM_WINDOW_TYPE)
|
||||
item(_NET_WM_WINDOW_TYPE_DESKTOP)
|
||||
item(_NET_WM_WINDOW_TYPE_DOCK)
|
||||
item(_NET_WM_WINDOW_TYPE_TOOLBAR)
|
||||
item(_NET_WM_WINDOW_TYPE_MENU)
|
||||
item(_NET_WM_WINDOW_TYPE_DIALOG)
|
||||
item(_NET_WM_WINDOW_TYPE_NORMAL)
|
||||
item(_NET_WM_STATE_MODAL)
|
||||
item(_NET_CLIENT_LIST)
|
||||
item(_NET_CLIENT_LIST_STACKING)
|
||||
item(_NET_WM_STATE_SKIP_TASKBAR)
|
||||
item(_NET_WM_STATE_SKIP_PAGER)
|
||||
item(_NET_WM_ICON_NAME)
|
||||
item(_NET_WM_ICON)
|
||||
item(_NET_WM_ICON_GEOMETRY)
|
||||
item(_NET_WM_MOVERESIZE)
|
||||
item(_NET_ACTIVE_WINDOW)
|
||||
item(_NET_WM_STRUT)
|
||||
item(_NET_WM_STATE_HIDDEN)
|
||||
item(_NET_WM_WINDOW_TYPE_UTILITY)
|
||||
item(_NET_WM_WINDOW_TYPE_SPLASH)
|
||||
item(_NET_WM_STATE_FULLSCREEN)
|
||||
item(_NET_WM_PING)
|
||||
item(_NET_WM_PID)
|
||||
item(_NET_WORKAREA)
|
||||
item(_NET_SHOWING_DESKTOP)
|
||||
item(_NET_DESKTOP_LAYOUT)
|
||||
item(_NET_DESKTOP_NAMES)
|
||||
item(_NET_WM_ALLOWED_ACTIONS)
|
||||
item(_NET_WM_ACTION_MOVE)
|
||||
item(_NET_WM_ACTION_RESIZE)
|
||||
item(_NET_WM_ACTION_SHADE)
|
||||
item(_NET_WM_ACTION_STICK)
|
||||
item(_NET_WM_ACTION_MAXIMIZE_HORZ)
|
||||
item(_NET_WM_ACTION_MAXIMIZE_VERT)
|
||||
item(_NET_WM_ACTION_CHANGE_DESKTOP)
|
||||
item(_NET_WM_ACTION_CLOSE)
|
||||
item(_NET_WM_STATE_ABOVE)
|
||||
item(_NET_WM_STATE_BELOW)
|
||||
item(_NET_STARTUP_ID)
|
||||
item(_NET_WM_STRUT_PARTIAL)
|
||||
item(_NET_WM_ACTION_FULLSCREEN)
|
||||
item(_NET_WM_ACTION_MINIMIZE)
|
||||
item(_NET_FRAME_EXTENTS)
|
||||
item(_NET_REQUEST_FRAME_EXTENTS)
|
||||
item(_NET_WM_USER_TIME)
|
||||
item(_NET_WM_STATE_DEMANDS_ATTENTION)
|
||||
item(_NET_MOVERESIZE_WINDOW)
|
||||
item(_NET_DESKTOP_GEOMETRY)
|
||||
item(_NET_DESKTOP_VIEWPORT)
|
||||
item(_NET_WM_USER_TIME_WINDOW)
|
||||
item(_NET_WM_ACTION_ABOVE)
|
||||
item(_NET_WM_ACTION_BELOW)
|
||||
|
||||
#if 0
|
||||
/* We apparently never use: */
|
||||
/* item(_NET_RESTACK_WINDOW) */
|
||||
#endif
|
||||
|
||||
/* eof atomnames.h */
|
||||
|
@@ -52,7 +52,7 @@
|
||||
|
||||
#include <config.h>
|
||||
#include "bell.h"
|
||||
#include "screen.h"
|
||||
#include "screen-private.h"
|
||||
#include "prefs.h"
|
||||
|
||||
/**
|
||||
|
@@ -24,8 +24,8 @@
|
||||
#ifdef HAVE_XKB
|
||||
#include <X11/XKBlib.h>
|
||||
#endif
|
||||
#include "display.h"
|
||||
#include "frame.h"
|
||||
#include "display-private.h"
|
||||
#include "frame-private.h"
|
||||
|
||||
#ifdef HAVE_XKB
|
||||
void meta_bell_notify (MetaDisplay *display, XkbAnyEvent *xkb_ev);
|
||||
|
@@ -29,7 +29,6 @@
|
||||
#include "boxes.h"
|
||||
#include "util.h"
|
||||
#include <X11/Xutil.h> /* Just for the definition of the various gravities */
|
||||
#include <stdio.h> /* For snprintf */
|
||||
|
||||
char*
|
||||
meta_rectangle_to_string (const MetaRectangle *rect,
|
||||
@@ -61,7 +60,7 @@ meta_rectangle_region_to_string (GList *region,
|
||||
char *cur = output;
|
||||
|
||||
if (region == NULL)
|
||||
snprintf (output, 10, "(EMPTY)");
|
||||
g_snprintf (output, 10, "(EMPTY)");
|
||||
|
||||
while (tmp)
|
||||
{
|
||||
@@ -114,7 +113,7 @@ meta_rectangle_edge_list_to_string (GList *edge_list,
|
||||
GList *tmp = edge_list;
|
||||
|
||||
if (edge_list == NULL)
|
||||
snprintf (output, 10, "(EMPTY)");
|
||||
g_snprintf (output, 10, "(EMPTY)");
|
||||
|
||||
while (tmp)
|
||||
{
|
||||
|
@@ -91,7 +91,7 @@
|
||||
|
||||
typedef enum
|
||||
{
|
||||
PRIORITY_MINIMUM = 0, // Dummy value used for loop start = min(all priorities)
|
||||
PRIORITY_MINIMUM = 0, /* Dummy value used for loop start = min(all priorities) */
|
||||
PRIORITY_ASPECT_RATIO = 0,
|
||||
PRIORITY_ENTIRELY_VISIBLE_ON_SINGLE_XINERAMA = 0,
|
||||
PRIORITY_ENTIRELY_VISIBLE_ON_WORKAREA = 1,
|
||||
@@ -101,7 +101,7 @@ typedef enum
|
||||
PRIORITY_SIZE_HINTS_LIMITS = 3,
|
||||
PRIORITY_TITLEBAR_VISIBLE = 4,
|
||||
PRIORITY_PARTIALLY_VISIBLE_ON_WORKAREA = 4,
|
||||
PRIORITY_MAXIMUM = 4 // Dummy value used for loop end = max(all priorities)
|
||||
PRIORITY_MAXIMUM = 4 /* Dummy value used for loop end = max(all priorities) */
|
||||
} ConstraintPriority;
|
||||
|
||||
typedef enum
|
||||
@@ -811,6 +811,7 @@ constrain_size_increments (MetaWindow *window,
|
||||
int bh, hi, bw, wi, extra_height, extra_width;
|
||||
int new_width, new_height;
|
||||
gboolean constraint_already_satisfied;
|
||||
MetaRectangle *start_rect;
|
||||
|
||||
if (priority > PRIORITY_SIZE_HINTS_INCREMENTS)
|
||||
return TRUE;
|
||||
@@ -852,8 +853,16 @@ constrain_size_increments (MetaWindow *window,
|
||||
if (new_height < window->size_hints.min_height)
|
||||
new_height += ((window->size_hints.min_height - new_height)/hi + 1)*hi;
|
||||
|
||||
/* Figure out what original rect to pass to meta_rectangle_resize_with_gravity
|
||||
* See bug 448183
|
||||
*/
|
||||
if (info->action_type == ACTION_MOVE_AND_RESIZE)
|
||||
start_rect = &info->current;
|
||||
else
|
||||
start_rect = &info->orig;
|
||||
|
||||
/* Resize to the new size */
|
||||
meta_rectangle_resize_with_gravity (&info->orig,
|
||||
meta_rectangle_resize_with_gravity (start_rect,
|
||||
&info->current,
|
||||
info->resize_gravity,
|
||||
new_width,
|
||||
@@ -870,6 +879,7 @@ constrain_size_limits (MetaWindow *window,
|
||||
MetaRectangle min_size, max_size;
|
||||
gboolean too_big, too_small, constraint_already_satisfied;
|
||||
int new_width, new_height;
|
||||
MetaRectangle *start_rect;
|
||||
|
||||
if (priority > PRIORITY_SIZE_HINTS_LIMITS)
|
||||
return TRUE;
|
||||
@@ -898,7 +908,16 @@ constrain_size_limits (MetaWindow *window,
|
||||
/*** Enforce constraint ***/
|
||||
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,
|
||||
|
||||
/* Figure out what original rect to pass to meta_rectangle_resize_with_gravity
|
||||
* See bug 448183
|
||||
*/
|
||||
if (info->action_type == ACTION_MOVE_AND_RESIZE)
|
||||
start_rect = &info->current;
|
||||
else
|
||||
start_rect = &info->orig;
|
||||
|
||||
meta_rectangle_resize_with_gravity (start_rect,
|
||||
&info->current,
|
||||
info->resize_gravity,
|
||||
new_width,
|
||||
@@ -917,6 +936,7 @@ constrain_aspect_ratio (MetaWindow *window,
|
||||
int fudge, new_width, new_height;
|
||||
double best_width, best_height;
|
||||
double alt_width, alt_height;
|
||||
MetaRectangle *start_rect;
|
||||
|
||||
if (priority > PRIORITY_ASPECT_RATIO)
|
||||
return TRUE;
|
||||
@@ -1022,7 +1042,15 @@ constrain_aspect_ratio (MetaWindow *window,
|
||||
break;
|
||||
}
|
||||
|
||||
meta_rectangle_resize_with_gravity (&info->orig,
|
||||
/* Figure out what original rect to pass to meta_rectangle_resize_with_gravity
|
||||
* See bug 448183
|
||||
*/
|
||||
if (info->action_type == ACTION_MOVE_AND_RESIZE)
|
||||
start_rect = &info->current;
|
||||
else
|
||||
start_rect = &info->orig;
|
||||
|
||||
meta_rectangle_resize_with_gravity (start_rect,
|
||||
&info->current,
|
||||
info->resize_gravity,
|
||||
new_width,
|
||||
|
@@ -26,8 +26,8 @@
|
||||
#define META_CONSTRAINTS_H
|
||||
|
||||
#include "util.h"
|
||||
#include "window.h"
|
||||
#include "frame.h"
|
||||
#include "window-private.h"
|
||||
#include "frame-private.h"
|
||||
|
||||
typedef enum
|
||||
{
|
||||
|
@@ -25,7 +25,7 @@
|
||||
|
||||
#include <config.h>
|
||||
#include "core.h"
|
||||
#include "frame.h"
|
||||
#include "frame-private.h"
|
||||
#include "workspace.h"
|
||||
#include "prefs.h"
|
||||
|
||||
@@ -328,6 +328,40 @@ meta_core_maximize (Display *xdisplay,
|
||||
META_MAXIMIZE_HORIZONTAL | META_MAXIMIZE_VERTICAL);
|
||||
}
|
||||
|
||||
void
|
||||
meta_core_toggle_maximize_vertically (Display *xdisplay,
|
||||
Window frame_xwindow)
|
||||
{
|
||||
MetaWindow *window = get_window (xdisplay, frame_xwindow);
|
||||
|
||||
if (meta_prefs_get_raise_on_click ())
|
||||
meta_window_raise (window);
|
||||
|
||||
if (META_WINDOW_MAXIMIZED_VERTICALLY (window))
|
||||
meta_window_unmaximize (window,
|
||||
META_MAXIMIZE_VERTICAL);
|
||||
else
|
||||
meta_window_maximize (window,
|
||||
META_MAXIMIZE_VERTICAL);
|
||||
}
|
||||
|
||||
void
|
||||
meta_core_toggle_maximize_horizontally (Display *xdisplay,
|
||||
Window frame_xwindow)
|
||||
{
|
||||
MetaWindow *window = get_window (xdisplay, frame_xwindow);
|
||||
|
||||
if (meta_prefs_get_raise_on_click ())
|
||||
meta_window_raise (window);
|
||||
|
||||
if (META_WINDOW_MAXIMIZED_HORIZONTALLY (window))
|
||||
meta_window_unmaximize (window,
|
||||
META_MAXIMIZE_HORIZONTAL);
|
||||
else
|
||||
meta_window_maximize (window,
|
||||
META_MAXIMIZE_HORIZONTAL);
|
||||
}
|
||||
|
||||
void
|
||||
meta_core_toggle_maximize (Display *xdisplay,
|
||||
Window frame_xwindow)
|
||||
@@ -718,27 +752,25 @@ meta_core_increment_event_serial (Display *xdisplay)
|
||||
void
|
||||
meta_invalidate_default_icons (void)
|
||||
{
|
||||
GSList *displays;
|
||||
MetaDisplay *display = meta_get_display ();
|
||||
GSList *windows;
|
||||
GSList *l;
|
||||
|
||||
for (displays = meta_displays_list ();
|
||||
displays != NULL;
|
||||
displays = displays->next)
|
||||
if (display == NULL)
|
||||
return; /* We can validly be called before the display is opened. */
|
||||
|
||||
windows = meta_display_list_windows (display);
|
||||
for (l = windows; l != NULL; l = l->next)
|
||||
{
|
||||
GSList *windows, *l;
|
||||
MetaWindow *window = (MetaWindow*)l->data;
|
||||
|
||||
windows = meta_display_list_windows (displays->data);
|
||||
for (l = windows; l != NULL; l = l->next)
|
||||
if (window->icon_cache.origin == USING_FALLBACK_ICON)
|
||||
{
|
||||
MetaWindow *window = (MetaWindow*)l->data;
|
||||
|
||||
if (window->icon_cache.origin == USING_FALLBACK_ICON)
|
||||
{
|
||||
meta_icon_cache_free (&(window->icon_cache));
|
||||
meta_window_update_icon_now (window);
|
||||
}
|
||||
meta_icon_cache_free (&(window->icon_cache));
|
||||
meta_window_update_icon_now (window);
|
||||
}
|
||||
|
||||
g_slist_free (windows);
|
||||
}
|
||||
|
||||
g_slist_free (windows);
|
||||
}
|
||||
|
||||
|
@@ -22,9 +22,12 @@
|
||||
* 02111-1307, USA.
|
||||
*/
|
||||
|
||||
#define _GNU_SOURCE
|
||||
#define _SVID_SOURCE /* for gethostname() */
|
||||
|
||||
#include <config.h>
|
||||
#include "util.h"
|
||||
#include "window.h"
|
||||
#include "window-private.h"
|
||||
#include "errors.h"
|
||||
#include "workspace.h"
|
||||
|
||||
@@ -144,7 +147,8 @@ search_and_destroy_window (int pid,
|
||||
* kill the window.
|
||||
*/
|
||||
GSList *tmp;
|
||||
gboolean found;
|
||||
gboolean found = FALSE;
|
||||
GSList *windows;
|
||||
|
||||
if (xwindow == None)
|
||||
{
|
||||
@@ -153,39 +157,31 @@ search_and_destroy_window (int pid,
|
||||
return;
|
||||
}
|
||||
|
||||
found = FALSE;
|
||||
tmp = meta_displays_list ();
|
||||
windows = meta_display_list_windows (meta_get_display ());
|
||||
tmp = windows;
|
||||
|
||||
while (tmp != NULL)
|
||||
{
|
||||
GSList *windows = meta_display_list_windows (tmp->data);
|
||||
GSList *tmp2;
|
||||
MetaWindow *w = tmp->data;
|
||||
|
||||
tmp2 = windows;
|
||||
while (tmp2 != NULL)
|
||||
if (w->dialog_pid == pid)
|
||||
{
|
||||
MetaWindow *w = tmp2->data;
|
||||
|
||||
if (w->dialog_pid == pid)
|
||||
if (w->xwindow != xwindow)
|
||||
meta_topic (META_DEBUG_PING,
|
||||
"Dialog pid matches but not xwindow (0x%lx vs. 0x%lx)\n",
|
||||
w->xwindow, xwindow);
|
||||
else
|
||||
{
|
||||
if (w->xwindow != xwindow)
|
||||
meta_topic (META_DEBUG_PING,
|
||||
"Dialog pid matches but not xwindow (0x%lx vs. 0x%lx)\n",
|
||||
w->xwindow, xwindow);
|
||||
else
|
||||
{
|
||||
meta_window_kill (w);
|
||||
found = TRUE;
|
||||
}
|
||||
meta_window_kill (w);
|
||||
found = TRUE;
|
||||
}
|
||||
|
||||
tmp2 = tmp2->next;
|
||||
}
|
||||
|
||||
g_slist_free (windows);
|
||||
|
||||
|
||||
tmp = tmp->next;
|
||||
}
|
||||
|
||||
g_slist_free (windows);
|
||||
|
||||
if (!found)
|
||||
meta_topic (META_DEBUG_PING,
|
||||
"Did not find a window with dialog pid %d xwindow 0x%lx\n",
|
||||
@@ -199,40 +195,30 @@ release_window_with_fd (int fd)
|
||||
* double check that it matches "xwindow", then
|
||||
* kill the window.
|
||||
*/
|
||||
GSList *tmp;
|
||||
gboolean found;
|
||||
|
||||
found = FALSE;
|
||||
gboolean found = FALSE;
|
||||
|
||||
tmp = meta_displays_list ();
|
||||
GSList *windows = meta_display_list_windows (meta_get_display ());
|
||||
GSList *tmp = windows;
|
||||
|
||||
while (tmp != NULL)
|
||||
{
|
||||
GSList *windows = meta_display_list_windows (tmp->data);
|
||||
GSList *tmp2;
|
||||
MetaWindow *w = tmp->data;
|
||||
|
||||
tmp2 = windows;
|
||||
while (tmp2 != NULL)
|
||||
if (w->dialog_pid >= 0 &&
|
||||
w->dialog_pipe == fd)
|
||||
{
|
||||
MetaWindow *w = tmp2->data;
|
||||
|
||||
if (w->dialog_pid >= 0 &&
|
||||
w->dialog_pipe == fd)
|
||||
{
|
||||
meta_topic (META_DEBUG_PING,
|
||||
"Removing dialog with fd %d pid %d from window %s\n",
|
||||
fd, w->dialog_pid, w->desc);
|
||||
meta_window_free_delete_dialog (w);
|
||||
found = TRUE;
|
||||
}
|
||||
|
||||
tmp2 = tmp2->next;
|
||||
meta_topic (META_DEBUG_PING,
|
||||
"Removing dialog with fd %d pid %d from window %s\n",
|
||||
fd, w->dialog_pid, w->desc);
|
||||
meta_window_free_delete_dialog (w);
|
||||
found = TRUE;
|
||||
}
|
||||
|
||||
g_slist_free (windows);
|
||||
|
||||
|
||||
tmp = tmp->next;
|
||||
}
|
||||
|
||||
g_slist_free (windows);
|
||||
|
||||
if (!found)
|
||||
meta_topic (META_DEBUG_PING,
|
||||
"Did not find a window with a dialog pipe %d\n",
|
||||
@@ -251,7 +237,7 @@ io_from_ping_dialog (GIOChannel *channel,
|
||||
if (condition & G_IO_IN)
|
||||
{
|
||||
char *str;
|
||||
unsigned int len;
|
||||
gsize len;
|
||||
GError *err;
|
||||
|
||||
/* Go ahead and block for all data from child */
|
||||
@@ -270,7 +256,7 @@ io_from_ping_dialog (GIOChannel *channel,
|
||||
}
|
||||
|
||||
meta_topic (META_DEBUG_PING,
|
||||
"Read %d bytes strlen %d \"%s\" from child\n",
|
||||
"Read %" G_GSIZE_FORMAT " bytes strlen %d \"%s\" from child\n",
|
||||
len, str ? (int) strlen (str) : 0, str ? str : "NULL");
|
||||
|
||||
if (len > 0)
|
||||
@@ -379,7 +365,7 @@ meta_window_delete (MetaWindow *window,
|
||||
"Deleting %s with delete_window request\n",
|
||||
window->desc);
|
||||
meta_window_send_icccm_message (window,
|
||||
window->display->atom_wm_delete_window,
|
||||
window->display->atom_WM_DELETE_WINDOW,
|
||||
timestamp);
|
||||
}
|
||||
else
|
||||
|
@@ -24,8 +24,8 @@
|
||||
* 02111-1307, USA.
|
||||
*/
|
||||
|
||||
#ifndef META_DISPLAY_H
|
||||
#define META_DISPLAY_H
|
||||
#ifndef META_DISPLAY_PRIVATE_H
|
||||
#define META_DISPLAY_PRIVATE_H
|
||||
|
||||
#ifndef PACKAGE
|
||||
#error "config.h not included"
|
||||
@@ -36,6 +36,7 @@
|
||||
#include "eventqueue.h"
|
||||
#include "common.h"
|
||||
#include "boxes.h"
|
||||
#include "display.h"
|
||||
|
||||
#ifdef HAVE_STARTUP_NOTIFICATION
|
||||
#include <libsn/sn.h>
|
||||
@@ -45,16 +46,9 @@
|
||||
#include <X11/extensions/sync.h>
|
||||
#endif
|
||||
|
||||
#define meta_XFree(p) do { if ((p)) XFree ((p)); } while (0)
|
||||
|
||||
typedef struct _MetaCompositor MetaCompositor;
|
||||
typedef struct _MetaDisplay MetaDisplay;
|
||||
typedef struct _MetaFrame MetaFrame;
|
||||
typedef struct _MetaKeyBinding MetaKeyBinding;
|
||||
typedef struct _MetaScreen MetaScreen;
|
||||
typedef struct _MetaStack MetaStack;
|
||||
typedef struct _MetaUISlave MetaUISlave;
|
||||
typedef struct _MetaWindow MetaWindow;
|
||||
typedef struct _MetaWorkspace MetaWorkspace;
|
||||
|
||||
typedef struct _MetaWindowPropHooks MetaWindowPropHooks;
|
||||
@@ -87,103 +81,12 @@ struct _MetaDisplay
|
||||
Window leader_window;
|
||||
Window timestamp_pinging_window;
|
||||
|
||||
Atom atom_net_wm_name;
|
||||
Atom atom_wm_protocols;
|
||||
Atom atom_wm_take_focus;
|
||||
Atom atom_wm_delete_window;
|
||||
Atom atom_wm_state;
|
||||
Atom atom_net_close_window;
|
||||
Atom atom_net_wm_state;
|
||||
Atom atom_motif_wm_hints;
|
||||
Atom atom_net_wm_state_shaded;
|
||||
Atom atom_net_wm_state_maximized_horz;
|
||||
Atom atom_net_wm_state_maximized_vert;
|
||||
Atom atom_net_wm_desktop;
|
||||
Atom atom_net_number_of_desktops;
|
||||
Atom atom_wm_change_state;
|
||||
Atom atom_sm_client_id;
|
||||
Atom atom_wm_client_leader;
|
||||
Atom atom_wm_window_role;
|
||||
Atom atom_net_current_desktop;
|
||||
Atom atom_net_supporting_wm_check;
|
||||
Atom atom_net_supported;
|
||||
Atom atom_net_wm_window_type;
|
||||
Atom atom_net_wm_window_type_desktop;
|
||||
Atom atom_net_wm_window_type_dock;
|
||||
Atom atom_net_wm_window_type_toolbar;
|
||||
Atom atom_net_wm_window_type_menu;
|
||||
Atom atom_net_wm_window_type_dialog;
|
||||
Atom atom_net_wm_window_type_normal;
|
||||
Atom atom_net_wm_state_modal;
|
||||
Atom atom_net_client_list;
|
||||
Atom atom_net_client_list_stacking;
|
||||
Atom atom_net_wm_state_skip_taskbar;
|
||||
Atom atom_net_wm_state_skip_pager;
|
||||
Atom atom_net_wm_icon_name;
|
||||
Atom atom_net_wm_icon;
|
||||
Atom atom_net_wm_icon_geometry;
|
||||
Atom atom_utf8_string;
|
||||
Atom atom_wm_icon_size;
|
||||
Atom atom_kwm_win_icon;
|
||||
Atom atom_net_wm_moveresize;
|
||||
Atom atom_net_active_window;
|
||||
Atom atom_metacity_restart_message;
|
||||
Atom atom_net_wm_strut;
|
||||
Atom atom_metacity_reload_theme_message;
|
||||
Atom atom_metacity_set_keybindings_message;
|
||||
Atom atom_net_wm_state_hidden;
|
||||
Atom atom_net_wm_window_type_utility;
|
||||
Atom atom_net_wm_window_type_splash;
|
||||
Atom atom_net_wm_ping;
|
||||
Atom atom_net_wm_pid;
|
||||
Atom atom_wm_client_machine;
|
||||
Atom atom_net_wm_state_fullscreen;
|
||||
Atom atom_net_workarea;
|
||||
Atom atom_net_showing_desktop;
|
||||
Atom atom_net_desktop_layout;
|
||||
Atom atom_manager;
|
||||
Atom atom_targets;
|
||||
Atom atom_multiple;
|
||||
Atom atom_timestamp;
|
||||
Atom atom_version;
|
||||
Atom atom_atom_pair;
|
||||
Atom atom_net_desktop_names;
|
||||
Atom atom_net_wm_allowed_actions;
|
||||
Atom atom_net_wm_action_move;
|
||||
Atom atom_net_wm_action_resize;
|
||||
Atom atom_net_wm_action_fullscreen;
|
||||
Atom atom_net_wm_action_minimize;
|
||||
Atom atom_net_wm_action_shade;
|
||||
Atom atom_net_wm_action_stick;
|
||||
Atom atom_net_wm_action_maximize_horz;
|
||||
Atom atom_net_wm_action_maximize_vert;
|
||||
Atom atom_net_wm_action_change_desktop;
|
||||
Atom atom_net_wm_action_close;
|
||||
Atom atom_net_wm_action_above;
|
||||
Atom atom_net_wm_action_below;
|
||||
Atom atom_net_wm_state_above;
|
||||
Atom atom_net_wm_state_below;
|
||||
Atom atom_net_startup_id;
|
||||
Atom atom_metacity_toggle_verbose;
|
||||
Atom atom_net_wm_sync_request;
|
||||
Atom atom_net_wm_sync_request_counter;
|
||||
Atom atom_gnome_panel_action;
|
||||
Atom atom_gnome_panel_action_main_menu;
|
||||
Atom atom_gnome_panel_action_run_dialog;
|
||||
Atom atom_metacity_sentinel;
|
||||
Atom atom_net_wm_strut_partial;
|
||||
Atom atom_net_frame_extents;
|
||||
Atom atom_net_request_frame_extents;
|
||||
Atom atom_net_wm_user_time;
|
||||
Atom atom_net_wm_state_demands_attention;
|
||||
Atom atom_net_restack_window;
|
||||
Atom atom_net_moveresize_window;
|
||||
Atom atom_net_desktop_geometry;
|
||||
Atom atom_net_desktop_viewport;
|
||||
Atom atom_metacity_version;
|
||||
Atom atom_net_wm_visible_name;
|
||||
Atom atom_net_wm_visible_icon_name;
|
||||
Atom atom_net_wm_user_time_window;
|
||||
/* Pull in all the names of atoms as fields; we will intern them when the
|
||||
* class is constructed.
|
||||
*/
|
||||
#define item(x) Atom atom_##x;
|
||||
#include "atomnames.h"
|
||||
#undef item
|
||||
|
||||
/* This is the actual window from focus events,
|
||||
* not the one we last set
|
||||
@@ -421,8 +324,6 @@ struct _MetaDisplay
|
||||
gboolean meta_display_open (void);
|
||||
void meta_display_close (MetaDisplay *display,
|
||||
guint32 timestamp);
|
||||
MetaScreen* meta_display_screen_for_root (MetaDisplay *display,
|
||||
Window xroot);
|
||||
MetaScreen* meta_display_screen_for_x_screen (MetaDisplay *display,
|
||||
Screen *screen);
|
||||
MetaScreen* meta_display_screen_for_xwindow (MetaDisplay *display,
|
||||
@@ -459,7 +360,7 @@ gboolean meta_display_xwindow_is_a_no_focus_window (MetaDisplay *display,
|
||||
GSList* meta_display_list_windows (MetaDisplay *display);
|
||||
|
||||
MetaDisplay* meta_display_for_x_display (Display *xdisplay);
|
||||
GSList* meta_displays_list (void);
|
||||
MetaDisplay* meta_get_display (void);
|
||||
|
||||
Cursor meta_display_create_x_cursor (MetaDisplay *display,
|
||||
MetaCursor cursor);
|
File diff suppressed because it is too large
Load Diff
@@ -21,9 +21,10 @@
|
||||
* 02111-1307, USA.
|
||||
*/
|
||||
|
||||
#include <config.h>
|
||||
#include "edge-resistance.h"
|
||||
#include "boxes.h"
|
||||
#include "display.h"
|
||||
#include "display-private.h"
|
||||
#include "workspace.h"
|
||||
|
||||
/* A simple macro for whether a given window's edges are potentially
|
||||
|
@@ -24,7 +24,7 @@
|
||||
#ifndef META_EDGE_RESISTANCE_H
|
||||
#define META_EDGE_RESISTANCE_H
|
||||
|
||||
#include "window.h"
|
||||
#include "window-private.h"
|
||||
|
||||
void meta_window_edge_resistance_for_move (MetaWindow *window,
|
||||
int old_x,
|
||||
|
@@ -21,11 +21,21 @@
|
||||
* 02111-1307, USA.
|
||||
*/
|
||||
|
||||
|
||||
/**
|
||||
* \file effects.c "Special effects" other than compositor effects.
|
||||
*
|
||||
* Before we had a serious compositor, we supported swooping
|
||||
* rectangles for minimising and so on. These are still supported
|
||||
* today, even when the compositor is enabled.
|
||||
*/
|
||||
|
||||
|
||||
#include <config.h>
|
||||
#include "effects.h"
|
||||
#include "display.h"
|
||||
#include "display-private.h"
|
||||
#include "ui.h"
|
||||
#include "window.h"
|
||||
#include "window-private.h"
|
||||
|
||||
#ifdef HAVE_SHAPE
|
||||
#include <X11/extensions/shape.h>
|
||||
@@ -256,14 +266,15 @@ update_wireframe_window (MetaDisplay *display,
|
||||
#endif
|
||||
}
|
||||
|
||||
/**
|
||||
* A hack to force the X server to synchronize with the
|
||||
* graphics hardware.
|
||||
*/
|
||||
static void
|
||||
graphics_sync (BoxAnimationContext *context)
|
||||
{
|
||||
XImage *image;
|
||||
|
||||
/* A hack to force the X server to synchronize with the
|
||||
* graphics hardware
|
||||
*/
|
||||
image = XGetImage (context->screen->display->xdisplay,
|
||||
context->screen->xroot,
|
||||
0, 0, 1, 1,
|
||||
|
@@ -25,7 +25,7 @@
|
||||
#define META_EFFECTS_H
|
||||
|
||||
#include "util.h"
|
||||
#include "screen.h"
|
||||
#include "screen-private.h"
|
||||
|
||||
typedef struct MetaEffect MetaEffect;
|
||||
typedef struct MetaEffectPriv MetaEffectPriv;
|
||||
|
@@ -24,6 +24,7 @@
|
||||
|
||||
#include <config.h>
|
||||
#include "errors.h"
|
||||
#include "display-private.h"
|
||||
#include <errno.h>
|
||||
#include <stdlib.h>
|
||||
#include <gdk/gdk.h>
|
||||
|
@@ -21,10 +21,11 @@
|
||||
* 02111-1307, USA.
|
||||
*/
|
||||
|
||||
#ifndef META_FRAME_H
|
||||
#define META_FRAME_H
|
||||
#ifndef META_FRAME_PRIVATE_H
|
||||
#define META_FRAME_PRIVATE_H
|
||||
|
||||
#include "window.h"
|
||||
#include "frame.h"
|
||||
#include "window-private.h"
|
||||
|
||||
typedef struct _MetaFrameGeometry MetaFrameGeometry;
|
||||
|
@@ -24,7 +24,7 @@
|
||||
*/
|
||||
|
||||
#include <config.h>
|
||||
#include "frame.h"
|
||||
#include "frame-private.h"
|
||||
#include "bell.h"
|
||||
#include "errors.h"
|
||||
#include "keybindings.h"
|
||||
@@ -413,3 +413,8 @@ meta_frame_set_screen_cursor (MetaFrame *frame,
|
||||
}
|
||||
}
|
||||
|
||||
Window
|
||||
meta_frame_get_xwindow (MetaFrame *frame)
|
||||
{
|
||||
return frame->xwindow;
|
||||
}
|
||||
|
@@ -126,7 +126,7 @@ init_wm_client_machine (MetaDisplay *display,
|
||||
MetaPropValue *value)
|
||||
{
|
||||
value->type = META_PROP_VALUE_STRING;
|
||||
value->atom = display->atom_wm_client_machine;
|
||||
value->atom = display->atom_WM_CLIENT_MACHINE;
|
||||
}
|
||||
|
||||
static void
|
||||
@@ -149,7 +149,7 @@ init_net_startup_id (MetaDisplay *display,
|
||||
MetaPropValue *value)
|
||||
{
|
||||
value->type = META_PROP_VALUE_UTF8;
|
||||
value->atom = display->atom_net_startup_id;
|
||||
value->atom = display->atom__NET_STARTUP_ID;
|
||||
}
|
||||
|
||||
static void
|
||||
@@ -181,23 +181,25 @@ meta_display_init_group_prop_hooks (MetaDisplay *display)
|
||||
|
||||
i = 0;
|
||||
|
||||
hooks[i].property = display->atom_wm_client_machine;
|
||||
hooks[i].property = display->atom_WM_CLIENT_MACHINE;
|
||||
hooks[i].init_func = init_wm_client_machine;
|
||||
hooks[i].reload_func = reload_wm_client_machine;
|
||||
++i;
|
||||
|
||||
hooks[i].property = display->atom_net_wm_pid;
|
||||
hooks[i].property = display->atom__NET_WM_PID;
|
||||
hooks[i].init_func = NULL;
|
||||
hooks[i].reload_func = NULL;
|
||||
++i;
|
||||
|
||||
hooks[i].property = display->atom_net_startup_id;
|
||||
hooks[i].property = display->atom__NET_STARTUP_ID;
|
||||
hooks[i].init_func = init_net_startup_id;
|
||||
hooks[i].reload_func = reload_net_startup_id;
|
||||
++i;
|
||||
|
||||
if (i != N_HOOKS)
|
||||
g_error ("Initialized %d group hooks should have been %d\n", i, N_HOOKS);
|
||||
{
|
||||
g_error ("Initialized %d group hooks should have been %d\n", i, N_HOOKS);
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
|
@@ -58,9 +58,9 @@ meta_group_new (MetaDisplay *display,
|
||||
|
||||
/* Fill these in the order we want them to be gotten */
|
||||
i = 0;
|
||||
initial_props[i++] = display->atom_wm_client_machine;
|
||||
initial_props[i++] = display->atom_net_wm_pid;
|
||||
initial_props[i++] = display->atom_net_startup_id;
|
||||
initial_props[i++] = display->atom_WM_CLIENT_MACHINE;
|
||||
initial_props[i++] = display->atom__NET_WM_PID;
|
||||
initial_props[i++] = display->atom__NET_STARTUP_ID;
|
||||
g_assert (N_INITIAL_PROPS == i);
|
||||
|
||||
meta_group_reload_properties (group, initial_props, N_INITIAL_PROPS);
|
||||
|
@@ -24,7 +24,7 @@
|
||||
#ifndef META_GROUP_H
|
||||
#define META_GROUP_H
|
||||
|
||||
#include "window.h"
|
||||
#include "window-private.h"
|
||||
|
||||
/* note, can return NULL */
|
||||
MetaGroup* meta_window_get_group (MetaWindow *window);
|
||||
|
@@ -236,7 +236,7 @@ read_rgb_icon (MetaDisplay *display,
|
||||
data = NULL;
|
||||
result = XGetWindowProperty (display->xdisplay,
|
||||
xwindow,
|
||||
display->atom_net_wm_icon,
|
||||
display->atom__NET_WM_ICON,
|
||||
0, G_MAXLONG,
|
||||
False, XA_CARDINAL, &type, &format, &nitems,
|
||||
&bytes_after, ((guchar **)&data));
|
||||
@@ -473,10 +473,10 @@ get_kwm_win_icon (MetaDisplay *display,
|
||||
meta_error_trap_push_with_return (display);
|
||||
icons = NULL;
|
||||
result = XGetWindowProperty (display->xdisplay, xwindow,
|
||||
display->atom_kwm_win_icon,
|
||||
display->atom__KWM_WIN_ICON,
|
||||
0, G_MAXLONG,
|
||||
False,
|
||||
display->atom_kwm_win_icon,
|
||||
display->atom__KWM_WIN_ICON,
|
||||
&type, &format, &nitems,
|
||||
&bytes_after, (guchar **)&icons);
|
||||
|
||||
@@ -485,7 +485,7 @@ get_kwm_win_icon (MetaDisplay *display,
|
||||
result != Success)
|
||||
return;
|
||||
|
||||
if (type != display->atom_kwm_win_icon)
|
||||
if (type != display->atom__KWM_WIN_ICON)
|
||||
{
|
||||
XFree (icons);
|
||||
return;
|
||||
@@ -556,9 +556,9 @@ meta_icon_cache_property_changed (MetaIconCache *icon_cache,
|
||||
MetaDisplay *display,
|
||||
Atom atom)
|
||||
{
|
||||
if (atom == display->atom_net_wm_icon)
|
||||
if (atom == display->atom__NET_WM_ICON)
|
||||
icon_cache->net_wm_icon_dirty = TRUE;
|
||||
else if (atom == display->atom_kwm_win_icon)
|
||||
else if (atom == display->atom__KWM_WIN_ICON)
|
||||
icon_cache->kwm_win_icon_dirty = TRUE;
|
||||
else if (atom == XA_WM_HINTS)
|
||||
icon_cache->wm_hints_dirty = TRUE;
|
||||
|
@@ -24,7 +24,7 @@
|
||||
#ifndef META_ICON_CACHE_H
|
||||
#define META_ICON_CACHE_H
|
||||
|
||||
#include "screen.h"
|
||||
#include "screen-private.h"
|
||||
|
||||
typedef struct _MetaIconCache MetaIconCache;
|
||||
|
||||
|
@@ -23,13 +23,16 @@
|
||||
* 02111-1307, USA.
|
||||
*/
|
||||
|
||||
#define _GNU_SOURCE
|
||||
#define _SVID_SOURCE /* for putenv() */
|
||||
|
||||
#include <config.h>
|
||||
#include "keybindings.h"
|
||||
#include "workspace.h"
|
||||
#include "errors.h"
|
||||
#include "edge-resistance.h"
|
||||
#include "ui.h"
|
||||
#include "frame.h"
|
||||
#include "frame-private.h"
|
||||
#include "place.h"
|
||||
#include "prefs.h"
|
||||
#include "effects.h"
|
||||
@@ -1580,7 +1583,7 @@ find_handler (const MetaKeyHandler *handlers,
|
||||
return NULL;
|
||||
}
|
||||
|
||||
static void
|
||||
static gboolean
|
||||
process_event (MetaKeyBinding *bindings,
|
||||
int n_bindings,
|
||||
const MetaKeyHandler *handlers,
|
||||
@@ -1594,13 +1597,13 @@ process_event (MetaKeyBinding *bindings,
|
||||
|
||||
/* we used to have release-based bindings but no longer. */
|
||||
if (event->type == KeyRelease)
|
||||
return;
|
||||
return FALSE;
|
||||
|
||||
i = 0;
|
||||
while (i < n_bindings)
|
||||
{
|
||||
if (bindings[i].keycode == event->xkey.keycode &&
|
||||
((event->xkey.state & ~(display->ignored_modifier_mask)) ==
|
||||
((event->xkey.state & 0xff & ~(display->ignored_modifier_mask)) ==
|
||||
bindings[i].mask) &&
|
||||
event->type == KeyPress)
|
||||
{
|
||||
@@ -1634,7 +1637,7 @@ process_event (MetaKeyBinding *bindings,
|
||||
|
||||
(* handler->func) (display, screen, window, event,
|
||||
&bindings[i]);
|
||||
return;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
++i;
|
||||
@@ -1642,6 +1645,7 @@ process_event (MetaKeyBinding *bindings,
|
||||
|
||||
meta_topic (META_DEBUG_KEYBINDINGS,
|
||||
"No handler found for this event in this binding table\n");
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
/* Handle a key event. May be called recursively: some key events cause
|
||||
@@ -1662,16 +1666,17 @@ meta_display_process_key_event (MetaDisplay *display,
|
||||
{
|
||||
KeySym keysym;
|
||||
gboolean handled;
|
||||
gboolean keep_grab;
|
||||
gboolean all_keys_grabbed;
|
||||
const char *str;
|
||||
MetaScreen *screen;
|
||||
|
||||
|
||||
XAllowEvents (display->xdisplay,
|
||||
all_bindings_disabled ? ReplayKeyboard : AsyncKeyboard,
|
||||
event->xkey.time);
|
||||
if (all_bindings_disabled)
|
||||
return;
|
||||
|
||||
|
||||
/* if key event was on root window, we have a shortcut */
|
||||
screen = meta_display_screen_for_root (display, event->xkey.window);
|
||||
|
||||
@@ -1700,115 +1705,102 @@ meta_display_process_key_event (MetaDisplay *display,
|
||||
str ? str : "none", event->xkey.state,
|
||||
window ? window->desc : "(no window)");
|
||||
|
||||
keep_grab = TRUE;
|
||||
all_keys_grabbed = window ? window->all_keys_grabbed : screen->all_keys_grabbed;
|
||||
if (!all_keys_grabbed)
|
||||
if (all_keys_grabbed)
|
||||
{
|
||||
/* Do the normal keybindings */
|
||||
process_event (display->screen_bindings,
|
||||
display->n_screen_bindings,
|
||||
screen_handlers,
|
||||
display, screen, NULL, event, keysym);
|
||||
|
||||
if (window)
|
||||
process_event (display->window_bindings,
|
||||
display->n_window_bindings,
|
||||
window_handlers,
|
||||
display, screen, window, event, keysym);
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
if (display->grab_op == META_GRAB_OP_NONE)
|
||||
return;
|
||||
|
||||
/* If we get here we have a global grab, because
|
||||
* we're in some special keyboard mode such as window move
|
||||
* mode.
|
||||
*/
|
||||
|
||||
handled = FALSE;
|
||||
|
||||
if (window ? (window == display->grab_window) :
|
||||
(screen == display->grab_screen))
|
||||
{
|
||||
switch (display->grab_op)
|
||||
if (display->grab_op == META_GRAB_OP_NONE)
|
||||
return;
|
||||
/* If we get here we have a global grab, because
|
||||
* we're in some special keyboard mode such as window move
|
||||
* mode.
|
||||
*/
|
||||
if (window ? (window == display->grab_window) :
|
||||
(screen == display->grab_screen))
|
||||
{
|
||||
case META_GRAB_OP_MOVING:
|
||||
case META_GRAB_OP_RESIZING_SE:
|
||||
case META_GRAB_OP_RESIZING_S:
|
||||
case META_GRAB_OP_RESIZING_SW:
|
||||
case META_GRAB_OP_RESIZING_N:
|
||||
case META_GRAB_OP_RESIZING_NE:
|
||||
case META_GRAB_OP_RESIZING_NW:
|
||||
case META_GRAB_OP_RESIZING_W:
|
||||
case META_GRAB_OP_RESIZING_E:
|
||||
meta_topic (META_DEBUG_KEYBINDINGS,
|
||||
"Processing event for mouse-only move/resize\n");
|
||||
g_assert (window != NULL);
|
||||
handled = process_mouse_move_resize_grab (display, screen,
|
||||
window, event, keysym);
|
||||
break;
|
||||
|
||||
case META_GRAB_OP_KEYBOARD_MOVING:
|
||||
meta_topic (META_DEBUG_KEYBINDINGS,
|
||||
"Processing event for keyboard move\n");
|
||||
g_assert (window != NULL);
|
||||
handled = process_keyboard_move_grab (display, screen,
|
||||
window, event, keysym);
|
||||
break;
|
||||
|
||||
case META_GRAB_OP_KEYBOARD_RESIZING_UNKNOWN:
|
||||
case META_GRAB_OP_KEYBOARD_RESIZING_S:
|
||||
case META_GRAB_OP_KEYBOARD_RESIZING_N:
|
||||
case META_GRAB_OP_KEYBOARD_RESIZING_W:
|
||||
case META_GRAB_OP_KEYBOARD_RESIZING_E:
|
||||
case META_GRAB_OP_KEYBOARD_RESIZING_SE:
|
||||
case META_GRAB_OP_KEYBOARD_RESIZING_NE:
|
||||
case META_GRAB_OP_KEYBOARD_RESIZING_SW:
|
||||
case META_GRAB_OP_KEYBOARD_RESIZING_NW:
|
||||
meta_topic (META_DEBUG_KEYBINDINGS,
|
||||
"Processing event for keyboard resize\n");
|
||||
g_assert (window != NULL);
|
||||
handled = process_keyboard_resize_grab (display, screen,
|
||||
window, event, keysym);
|
||||
break;
|
||||
|
||||
case META_GRAB_OP_KEYBOARD_TABBING_NORMAL:
|
||||
case META_GRAB_OP_KEYBOARD_TABBING_DOCK:
|
||||
case META_GRAB_OP_KEYBOARD_TABBING_GROUP:
|
||||
case META_GRAB_OP_KEYBOARD_ESCAPING_NORMAL:
|
||||
case META_GRAB_OP_KEYBOARD_ESCAPING_DOCK:
|
||||
case META_GRAB_OP_KEYBOARD_ESCAPING_GROUP:
|
||||
meta_topic (META_DEBUG_KEYBINDINGS,
|
||||
"Processing event for keyboard tabbing/cycling\n");
|
||||
handled = process_tab_grab (display, screen, event, keysym);
|
||||
break;
|
||||
|
||||
case META_GRAB_OP_KEYBOARD_WORKSPACE_SWITCHING:
|
||||
meta_topic (META_DEBUG_KEYBINDINGS,
|
||||
"Processing event for keyboard workspace switching\n");
|
||||
handled = process_workspace_switch_grab (display, screen, event, keysym);
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
switch (display->grab_op)
|
||||
{
|
||||
case META_GRAB_OP_MOVING:
|
||||
case META_GRAB_OP_RESIZING_SE:
|
||||
case META_GRAB_OP_RESIZING_S:
|
||||
case META_GRAB_OP_RESIZING_SW:
|
||||
case META_GRAB_OP_RESIZING_N:
|
||||
case META_GRAB_OP_RESIZING_NE:
|
||||
case META_GRAB_OP_RESIZING_NW:
|
||||
case META_GRAB_OP_RESIZING_W:
|
||||
case META_GRAB_OP_RESIZING_E:
|
||||
meta_topic (META_DEBUG_KEYBINDINGS,
|
||||
"Processing event for mouse-only move/resize\n");
|
||||
g_assert (window != NULL);
|
||||
keep_grab = process_mouse_move_resize_grab (display, screen,
|
||||
window, event, keysym);
|
||||
break;
|
||||
|
||||
case META_GRAB_OP_KEYBOARD_MOVING:
|
||||
meta_topic (META_DEBUG_KEYBINDINGS,
|
||||
"Processing event for keyboard move\n");
|
||||
g_assert (window != NULL);
|
||||
keep_grab = process_keyboard_move_grab (display, screen,
|
||||
window, event, keysym);
|
||||
break;
|
||||
|
||||
case META_GRAB_OP_KEYBOARD_RESIZING_UNKNOWN:
|
||||
case META_GRAB_OP_KEYBOARD_RESIZING_S:
|
||||
case META_GRAB_OP_KEYBOARD_RESIZING_N:
|
||||
case META_GRAB_OP_KEYBOARD_RESIZING_W:
|
||||
case META_GRAB_OP_KEYBOARD_RESIZING_E:
|
||||
case META_GRAB_OP_KEYBOARD_RESIZING_SE:
|
||||
case META_GRAB_OP_KEYBOARD_RESIZING_NE:
|
||||
case META_GRAB_OP_KEYBOARD_RESIZING_SW:
|
||||
case META_GRAB_OP_KEYBOARD_RESIZING_NW:
|
||||
meta_topic (META_DEBUG_KEYBINDINGS,
|
||||
"Processing event for keyboard resize\n");
|
||||
g_assert (window != NULL);
|
||||
keep_grab = process_keyboard_resize_grab (display, screen,
|
||||
window, event, keysym);
|
||||
break;
|
||||
|
||||
case META_GRAB_OP_KEYBOARD_TABBING_NORMAL:
|
||||
case META_GRAB_OP_KEYBOARD_TABBING_DOCK:
|
||||
case META_GRAB_OP_KEYBOARD_TABBING_GROUP:
|
||||
case META_GRAB_OP_KEYBOARD_ESCAPING_NORMAL:
|
||||
case META_GRAB_OP_KEYBOARD_ESCAPING_DOCK:
|
||||
case META_GRAB_OP_KEYBOARD_ESCAPING_GROUP:
|
||||
meta_topic (META_DEBUG_KEYBINDINGS,
|
||||
"Processing event for keyboard tabbing/cycling\n");
|
||||
keep_grab = process_tab_grab (display, screen, event, keysym);
|
||||
break;
|
||||
|
||||
case META_GRAB_OP_KEYBOARD_WORKSPACE_SWITCHING:
|
||||
meta_topic (META_DEBUG_KEYBINDINGS,
|
||||
"Processing event for keyboard workspace switching\n");
|
||||
keep_grab = process_workspace_switch_grab (display, screen, event, keysym);
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* end grab if a key that isn't used gets pressed */
|
||||
if (!handled)
|
||||
{
|
||||
meta_topic (META_DEBUG_KEYBINDINGS,
|
||||
"Ending grab op %u on key event sym %s\n",
|
||||
display->grab_op, XKeysymToString (keysym));
|
||||
meta_display_end_grab_op (display, event->xkey.time);
|
||||
|
||||
g_assert (display->grab_op == META_GRAB_OP_NONE);
|
||||
|
||||
/* and go round again: #112560 */
|
||||
meta_display_process_key_event (display, window, event);
|
||||
|
||||
}
|
||||
if (!keep_grab)
|
||||
{
|
||||
meta_topic (META_DEBUG_KEYBINDINGS,
|
||||
"Ending grab op %u on key event sym %s\n",
|
||||
display->grab_op, XKeysymToString (keysym));
|
||||
meta_display_end_grab_op (display, event->xkey.time);
|
||||
return;
|
||||
}
|
||||
}
|
||||
/* Do the normal keybindings */
|
||||
handled = process_event (display->screen_bindings,
|
||||
display->n_screen_bindings,
|
||||
screen_handlers,
|
||||
display, screen, NULL, event, keysym);
|
||||
|
||||
if (!all_keys_grabbed && !handled && window)
|
||||
handled = process_event (display->window_bindings,
|
||||
display->n_window_bindings,
|
||||
window_handlers,
|
||||
display, screen, window, event, keysym);
|
||||
}
|
||||
|
||||
static gboolean
|
||||
@@ -1845,13 +1837,10 @@ process_mouse_move_resize_grab (MetaDisplay *display,
|
||||
else
|
||||
display->grab_was_cancelled = TRUE;
|
||||
|
||||
/* End grab, since this was an "unhandled" keypress */
|
||||
/* End grab */
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
/* The keypress really isn't handled but we just want to ignore it, so
|
||||
* treat it as handled.
|
||||
*/
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
@@ -2560,6 +2549,13 @@ process_tab_grab (MetaDisplay *display,
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
/* !! TO HERE !!
|
||||
* alt-f6 during alt-{Tab,Escape} does not end the grab
|
||||
* but does change the grab op (and redraws the window,
|
||||
* of course).
|
||||
* See _{SWITCH,CYCLE}_GROUP.@@@
|
||||
*/
|
||||
|
||||
popup_not_showing = FALSE;
|
||||
key_used = FALSE;
|
||||
@@ -3197,10 +3193,10 @@ handle_panel_keybinding (MetaDisplay *display,
|
||||
switch (action)
|
||||
{
|
||||
case META_KEYBINDING_ACTION_PANEL_MAIN_MENU:
|
||||
action_atom = display->atom_gnome_panel_action_main_menu;
|
||||
action_atom = display->atom__GNOME_PANEL_ACTION_MAIN_MENU;
|
||||
break;
|
||||
case META_KEYBINDING_ACTION_PANEL_RUN_DIALOG:
|
||||
action_atom = display->atom_gnome_panel_action_run_dialog;
|
||||
action_atom = display->atom__GNOME_PANEL_ACTION_RUN_DIALOG;
|
||||
break;
|
||||
default:
|
||||
return;
|
||||
@@ -3208,7 +3204,7 @@ handle_panel_keybinding (MetaDisplay *display,
|
||||
|
||||
ev.type = ClientMessage;
|
||||
ev.window = screen->xroot;
|
||||
ev.message_type = display->atom_gnome_panel_action;
|
||||
ev.message_type = display->atom__GNOME_PANEL_ACTION;
|
||||
ev.format = 32;
|
||||
ev.data.l[0] = action_atom;
|
||||
ev.data.l[1] = event->xkey.time;
|
||||
|
@@ -24,7 +24,7 @@
|
||||
#ifndef META_KEYBINDINGS_H
|
||||
#define META_KEYBINDINGS_H
|
||||
|
||||
#include "display.h"
|
||||
#include "display-private.h"
|
||||
#include "window.h"
|
||||
|
||||
void meta_display_init_keys (MetaDisplay *display);
|
||||
|
@@ -40,10 +40,13 @@
|
||||
* to investigate, read main(), meta_display_open(), and event_callback().
|
||||
*/
|
||||
|
||||
#define _GNU_SOURCE
|
||||
#define _SVID_SOURCE /* for putenv() and some signal-related functions */
|
||||
|
||||
#include <config.h>
|
||||
#include "main.h"
|
||||
#include "util.h"
|
||||
#include "display.h"
|
||||
#include "display-private.h"
|
||||
#include "errors.h"
|
||||
#include "ui.h"
|
||||
#include "session.h"
|
||||
@@ -331,7 +334,7 @@ main (int argc, char **argv)
|
||||
NULL, G_LOG_DOMAIN, "Gtk", "Gdk", "GLib",
|
||||
"Pango", "GLib-GObject", "GThread"
|
||||
};
|
||||
gint i;
|
||||
guint i;
|
||||
|
||||
if (setlocale (LC_ALL, "") == NULL)
|
||||
meta_warning ("Locale not understood by C library, internationalization will not work\n");
|
||||
@@ -475,24 +478,8 @@ main (int argc, char **argv)
|
||||
|
||||
g_main_loop_run (meta_main_loop);
|
||||
|
||||
{
|
||||
GSList *displays;
|
||||
GSList *tmp;
|
||||
|
||||
/* we need a copy since closing the display removes it
|
||||
* from the list
|
||||
*/
|
||||
displays = g_slist_copy (meta_displays_list ());
|
||||
tmp = displays;
|
||||
while (tmp != NULL)
|
||||
{
|
||||
guint32 timestamp;
|
||||
timestamp = CurrentTime; /* I doubt correct timestamps matter here */
|
||||
meta_display_close (tmp->data, timestamp);
|
||||
tmp = tmp->next;
|
||||
}
|
||||
g_slist_free (displays);
|
||||
}
|
||||
meta_display_close (meta_get_display (),
|
||||
CurrentTime); /* I doubt correct timestamps matter here */
|
||||
|
||||
meta_session_shutdown ();
|
||||
|
||||
|
@@ -86,7 +86,7 @@ northwestcmp (gconstpointer a, gconstpointer b)
|
||||
else
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
find_next_cascade (MetaWindow *window,
|
||||
MetaFrameGeometry *fgeom,
|
||||
@@ -871,6 +871,12 @@ meta_window_place (MetaWindow *window,
|
||||
}
|
||||
}
|
||||
|
||||
/* If no placement has been done, revert to cascade to avoid
|
||||
* fully overlapping window (e.g. starting multiple terminals)
|
||||
* */
|
||||
if (x == xi->rect.x && y == xi->rect.y)
|
||||
find_next_cascade (window, fgeom, windows, x, y, &x, &y);
|
||||
|
||||
done_check_denied_focus:
|
||||
/* If the window is being denied focus and isn't a transient of the
|
||||
* focus window, we do NOT want it to overlap with the focus window
|
||||
|
@@ -24,8 +24,8 @@
|
||||
#ifndef META_PLACE_H
|
||||
#define META_PLACE_H
|
||||
|
||||
#include "window.h"
|
||||
#include "frame.h"
|
||||
#include "window-private.h"
|
||||
#include "frame-private.h"
|
||||
|
||||
void meta_window_place (MetaWindow *window,
|
||||
MetaFrameGeometry *fgeom,
|
||||
|
2085
src/core/prefs.c
2085
src/core/prefs.c
File diff suppressed because it is too large
Load Diff
@@ -23,10 +23,11 @@
|
||||
* 02111-1307, USA.
|
||||
*/
|
||||
|
||||
#ifndef META_SCREEN_H
|
||||
#define META_SCREEN_H
|
||||
#ifndef META_SCREEN_PRIVATE_H
|
||||
#define META_SCREEN_PRIVATE_H
|
||||
|
||||
#include "display.h"
|
||||
#include "display-private.h"
|
||||
#include "screen.h"
|
||||
#include <X11/Xutil.h>
|
||||
#include "ui.h"
|
||||
|
||||
@@ -132,7 +133,6 @@ MetaScreen* meta_screen_new (MetaDisplay *displ
|
||||
void meta_screen_free (MetaScreen *screen,
|
||||
guint32 timestamp);
|
||||
void meta_screen_manage_all_windows (MetaScreen *screen);
|
||||
MetaScreen* meta_screen_for_x_screen (Screen *xscreen);
|
||||
void meta_screen_foreach_window (MetaScreen *screen,
|
||||
MetaScreenWindowFunc func,
|
||||
gpointer data);
|
||||
@@ -215,9 +215,4 @@ gboolean meta_screen_apply_startup_properties (MetaScreen *screen,
|
||||
MetaWindow *window);
|
||||
void meta_screen_composite_all_windows (MetaScreen *screen);
|
||||
|
||||
#ifdef HAVE_COMPOSITE_EXTENSIONS
|
||||
void meta_screen_set_cm_selection (MetaScreen *screen);
|
||||
void meta_screen_unset_cm_selection (MetaScreen *screen);
|
||||
#endif
|
||||
|
||||
#endif
|
@@ -27,11 +27,11 @@
|
||||
*/
|
||||
|
||||
#include <config.h>
|
||||
#include "screen.h"
|
||||
#include "screen-private.h"
|
||||
#include "util.h"
|
||||
#include "errors.h"
|
||||
#include "window.h"
|
||||
#include "frame.h"
|
||||
#include "window-private.h"
|
||||
#include "frame-private.h"
|
||||
#include "prefs.h"
|
||||
#include "workspace.h"
|
||||
#include "keybindings.h"
|
||||
@@ -79,7 +79,7 @@ set_wm_check_hint (MetaScreen *screen)
|
||||
data[0] = screen->display->leader_window;
|
||||
|
||||
XChangeProperty (screen->display->xdisplay, screen->xroot,
|
||||
screen->display->atom_net_supporting_wm_check,
|
||||
screen->display->atom__NET_SUPPORTING_WM_CHECK,
|
||||
XA_WINDOW,
|
||||
32, PropModeReplace, (guchar*) data, 1);
|
||||
|
||||
@@ -89,81 +89,21 @@ set_wm_check_hint (MetaScreen *screen)
|
||||
static int
|
||||
set_supported_hint (MetaScreen *screen)
|
||||
{
|
||||
#define N_SUPPORTED 62
|
||||
Atom atoms[N_SUPPORTED];
|
||||
|
||||
atoms[0] = screen->display->atom_net_wm_name;
|
||||
atoms[1] = screen->display->atom_net_close_window;
|
||||
atoms[2] = screen->display->atom_net_wm_state;
|
||||
atoms[3] = screen->display->atom_net_wm_state_shaded;
|
||||
atoms[4] = screen->display->atom_net_wm_state_maximized_vert;
|
||||
atoms[5] = screen->display->atom_net_wm_state_maximized_horz;
|
||||
atoms[6] = screen->display->atom_net_wm_desktop;
|
||||
atoms[7] = screen->display->atom_net_number_of_desktops;
|
||||
atoms[8] = screen->display->atom_net_current_desktop;
|
||||
atoms[9] = screen->display->atom_net_wm_window_type;
|
||||
atoms[10] = screen->display->atom_net_wm_window_type_desktop;
|
||||
atoms[11] = screen->display->atom_net_wm_window_type_dock;
|
||||
atoms[12] = screen->display->atom_net_wm_window_type_toolbar;
|
||||
atoms[13] = screen->display->atom_net_wm_window_type_menu;
|
||||
atoms[14] = screen->display->atom_net_wm_window_type_dialog;
|
||||
atoms[15] = screen->display->atom_net_wm_window_type_normal;
|
||||
atoms[16] = screen->display->atom_net_wm_state_modal;
|
||||
atoms[17] = screen->display->atom_net_client_list;
|
||||
atoms[18] = screen->display->atom_net_client_list_stacking;
|
||||
atoms[19] = screen->display->atom_net_wm_state_skip_taskbar;
|
||||
atoms[20] = screen->display->atom_net_wm_state_skip_pager;
|
||||
atoms[21] = screen->display->atom_net_wm_icon_name;
|
||||
atoms[22] = screen->display->atom_net_wm_icon;
|
||||
atoms[23] = screen->display->atom_net_wm_icon_geometry;
|
||||
atoms[24] = screen->display->atom_net_wm_moveresize;
|
||||
atoms[25] = screen->display->atom_net_active_window;
|
||||
atoms[26] = screen->display->atom_net_wm_strut;
|
||||
atoms[27] = screen->display->atom_net_wm_state_hidden;
|
||||
atoms[28] = screen->display->atom_net_wm_window_type_utility;
|
||||
atoms[29] = screen->display->atom_net_wm_window_type_splash;
|
||||
atoms[30] = screen->display->atom_net_wm_state_fullscreen;
|
||||
atoms[31] = screen->display->atom_net_wm_ping;
|
||||
atoms[32] = screen->display->atom_net_wm_pid;
|
||||
atoms[33] = screen->display->atom_net_workarea;
|
||||
atoms[34] = screen->display->atom_net_showing_desktop;
|
||||
atoms[35] = screen->display->atom_net_desktop_layout;
|
||||
atoms[36] = screen->display->atom_net_desktop_names;
|
||||
atoms[37] = screen->display->atom_net_wm_allowed_actions;
|
||||
atoms[38] = screen->display->atom_net_wm_action_move;
|
||||
atoms[39] = screen->display->atom_net_wm_action_resize;
|
||||
atoms[40] = screen->display->atom_net_wm_action_shade;
|
||||
atoms[41] = screen->display->atom_net_wm_action_stick;
|
||||
atoms[42] = screen->display->atom_net_wm_action_maximize_horz;
|
||||
atoms[43] = screen->display->atom_net_wm_action_maximize_vert;
|
||||
atoms[44] = screen->display->atom_net_wm_action_change_desktop;
|
||||
atoms[45] = screen->display->atom_net_wm_action_close;
|
||||
atoms[46] = screen->display->atom_net_wm_state_above;
|
||||
atoms[47] = screen->display->atom_net_wm_state_below;
|
||||
atoms[48] = screen->display->atom_net_startup_id;
|
||||
atoms[49] = screen->display->atom_net_wm_strut_partial;
|
||||
atoms[50] = screen->display->atom_net_wm_action_fullscreen;
|
||||
atoms[51] = screen->display->atom_net_wm_action_minimize;
|
||||
atoms[52] = screen->display->atom_net_frame_extents;
|
||||
atoms[53] = screen->display->atom_net_request_frame_extents;
|
||||
atoms[54] = screen->display->atom_net_wm_user_time;
|
||||
atoms[55] = screen->display->atom_net_wm_state_demands_attention;
|
||||
atoms[56] = screen->display->atom_net_desktop_geometry;
|
||||
atoms[57] = screen->display->atom_net_desktop_viewport;
|
||||
atoms[58] = screen->display->atom_net_wm_user_time_window;
|
||||
atoms[59] = screen->display->atom_net_moveresize_window;
|
||||
atoms[60] = screen->display->atom_net_wm_action_above;
|
||||
atoms[61] = screen->display->atom_net_wm_action_below;
|
||||
Atom atoms[] = {
|
||||
#define EWMH_ATOMS_ONLY
|
||||
#define item(x) screen->display->atom_##x,
|
||||
#include "atomnames.h"
|
||||
#undef item
|
||||
#undef EWMH_ATOMS_ONLY
|
||||
};
|
||||
|
||||
/* atoms[58] = screen->display->atom_net_restack_window; */
|
||||
|
||||
XChangeProperty (screen->display->xdisplay, screen->xroot,
|
||||
screen->display->atom_net_supported,
|
||||
screen->display->atom__NET_SUPPORTED,
|
||||
XA_ATOM,
|
||||
32, PropModeReplace, (guchar*) atoms, N_SUPPORTED);
|
||||
32, PropModeReplace,
|
||||
(guchar*) atoms, G_N_ELEMENTS(atoms));
|
||||
|
||||
return Success;
|
||||
#undef N_SUPPORTED
|
||||
}
|
||||
|
||||
static int
|
||||
@@ -181,7 +121,7 @@ set_wm_icon_size_hint (MetaScreen *screen)
|
||||
vals[5] = 0;
|
||||
|
||||
XChangeProperty (screen->display->xdisplay, screen->xroot,
|
||||
screen->display->atom_wm_icon_size,
|
||||
screen->display->atom_WM_ICON_SIZE,
|
||||
XA_CARDINAL,
|
||||
32, PropModeReplace, (guchar*) vals, N_VALS);
|
||||
|
||||
@@ -464,7 +404,7 @@ meta_screen_new (MetaDisplay *display,
|
||||
|
||||
ev.type = ClientMessage;
|
||||
ev.window = xroot;
|
||||
ev.message_type = display->atom_manager;
|
||||
ev.message_type = display->atom_MANAGER;
|
||||
ev.format = 32;
|
||||
ev.data.l[0] = manager_timestamp;
|
||||
ev.data.l[1] = wm_sn_atom;
|
||||
@@ -612,7 +552,7 @@ meta_screen_new (MetaDisplay *display,
|
||||
current_workspace = 0;
|
||||
if (meta_prop_get_cardinal (screen->display,
|
||||
screen->xroot,
|
||||
screen->display->atom_net_current_desktop,
|
||||
screen->display->atom__NET_CURRENT_DESKTOP,
|
||||
¤t_workspace))
|
||||
meta_verbose ("Read existing _NET_CURRENT_DESKTOP = %d\n",
|
||||
(int) current_workspace);
|
||||
@@ -1080,7 +1020,7 @@ set_number_of_spaces_hint (MetaScreen *screen,
|
||||
|
||||
meta_error_trap_push (screen->display);
|
||||
XChangeProperty (screen->display->xdisplay, screen->xroot,
|
||||
screen->display->atom_net_number_of_desktops,
|
||||
screen->display->atom__NET_NUMBER_OF_DESKTOPS,
|
||||
XA_CARDINAL,
|
||||
32, PropModeReplace, (guchar*) data, 1);
|
||||
meta_error_trap_pop (screen->display, FALSE);
|
||||
@@ -1101,7 +1041,7 @@ set_desktop_geometry_hint (MetaScreen *screen)
|
||||
|
||||
meta_error_trap_push (screen->display);
|
||||
XChangeProperty (screen->display->xdisplay, screen->xroot,
|
||||
screen->display->atom_net_desktop_geometry,
|
||||
screen->display->atom__NET_DESKTOP_GEOMETRY,
|
||||
XA_CARDINAL,
|
||||
32, PropModeReplace, (guchar*) data, 2);
|
||||
meta_error_trap_pop (screen->display, FALSE);
|
||||
@@ -1125,7 +1065,7 @@ set_desktop_viewport_hint (MetaScreen *screen)
|
||||
|
||||
meta_error_trap_push (screen->display);
|
||||
XChangeProperty (screen->display->xdisplay, screen->xroot,
|
||||
screen->display->atom_net_desktop_viewport,
|
||||
screen->display->atom__NET_DESKTOP_VIEWPORT,
|
||||
XA_CARDINAL,
|
||||
32, PropModeReplace, (guchar*) data, 2);
|
||||
meta_error_trap_pop (screen->display, FALSE);
|
||||
@@ -1770,7 +1710,7 @@ meta_screen_update_workspace_layout (MetaScreen *screen)
|
||||
|
||||
if (meta_prop_get_cardinal_list (screen->display,
|
||||
screen->xroot,
|
||||
screen->display->atom_net_desktop_layout,
|
||||
screen->display->atom__NET_DESKTOP_LAYOUT,
|
||||
&list, &n_items))
|
||||
{
|
||||
if (n_items == 3 || n_items == 4)
|
||||
@@ -1883,8 +1823,8 @@ set_workspace_names (MetaScreen *screen)
|
||||
meta_error_trap_push (screen->display);
|
||||
XChangeProperty (screen->display->xdisplay,
|
||||
screen->xroot,
|
||||
screen->display->atom_net_desktop_names,
|
||||
screen->display->atom_utf8_string,
|
||||
screen->display->atom__NET_DESKTOP_NAMES,
|
||||
screen->display->atom_UTF8_STRING,
|
||||
8, PropModeReplace,
|
||||
(unsigned char *)flattened->str, flattened->len);
|
||||
meta_error_trap_pop (screen->display, FALSE);
|
||||
@@ -1907,7 +1847,7 @@ meta_screen_update_workspace_names (MetaScreen *screen)
|
||||
n_names = 0;
|
||||
if (!meta_prop_get_utf8_list (screen->display,
|
||||
screen->xroot,
|
||||
screen->display->atom_net_desktop_names,
|
||||
screen->display->atom__NET_DESKTOP_NAMES,
|
||||
&names, &n_names))
|
||||
{
|
||||
meta_verbose ("Failed to get workspace names from root window %d\n",
|
||||
@@ -1987,7 +1927,7 @@ set_work_area_hint (MetaScreen *screen)
|
||||
|
||||
meta_error_trap_push (screen->display);
|
||||
XChangeProperty (screen->display->xdisplay, screen->xroot,
|
||||
screen->display->atom_net_workarea,
|
||||
screen->display->atom__NET_WORKAREA,
|
||||
XA_CARDINAL, 32, PropModeReplace,
|
||||
(guchar*) data, num_workspaces*4);
|
||||
g_free (data);
|
||||
@@ -2357,7 +2297,7 @@ meta_screen_update_showing_desktop_hint (MetaScreen *screen)
|
||||
|
||||
meta_error_trap_push (screen->display);
|
||||
XChangeProperty (screen->display->xdisplay, screen->xroot,
|
||||
screen->display->atom_net_showing_desktop,
|
||||
screen->display->atom__NET_SHOWING_DESKTOP,
|
||||
XA_CARDINAL,
|
||||
32, PropModeReplace, (guchar*) data, 1);
|
||||
meta_error_trap_pop (screen->display, FALSE);
|
||||
@@ -2795,6 +2735,46 @@ meta_screen_apply_startup_properties (MetaScreen *screen,
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
int
|
||||
meta_screen_get_screen_number (MetaScreen *screen)
|
||||
{
|
||||
return screen->number;
|
||||
}
|
||||
|
||||
MetaDisplay *
|
||||
meta_screen_get_display (MetaScreen *screen)
|
||||
{
|
||||
return screen->display;
|
||||
}
|
||||
|
||||
Window
|
||||
meta_screen_get_xroot (MetaScreen *screen)
|
||||
{
|
||||
return screen->xroot;
|
||||
}
|
||||
|
||||
void
|
||||
meta_screen_get_size (MetaScreen *screen,
|
||||
int *width,
|
||||
int *height)
|
||||
{
|
||||
*width = screen->rect.width;
|
||||
*height = screen->rect.height;
|
||||
}
|
||||
|
||||
gpointer
|
||||
meta_screen_get_compositor_data (MetaScreen *screen)
|
||||
{
|
||||
return screen->compositor_data;
|
||||
}
|
||||
|
||||
void
|
||||
meta_screen_set_compositor_data (MetaScreen *screen,
|
||||
gpointer compositor)
|
||||
{
|
||||
screen->compositor_data = compositor;
|
||||
}
|
||||
|
||||
#ifdef HAVE_COMPOSITE_EXTENSIONS
|
||||
void
|
||||
meta_screen_set_cm_selection (MetaScreen *screen)
|
||||
|
@@ -70,7 +70,7 @@ meta_window_release_saved_state (const MetaWindowSessionInfo *info)
|
||||
#include <stdio.h>
|
||||
#include "main.h"
|
||||
#include "util.h"
|
||||
#include "display.h"
|
||||
#include "display-private.h"
|
||||
#include "workspace.h"
|
||||
|
||||
static void ice_io_error_handler (IceConn connection);
|
||||
@@ -807,17 +807,28 @@ save_state (void)
|
||||
char *metacity_dir;
|
||||
char *session_dir;
|
||||
FILE *outfile;
|
||||
GSList *displays;
|
||||
GSList *display_iter;
|
||||
GSList *windows;
|
||||
GSList *tmp;
|
||||
int stack_position;
|
||||
|
||||
g_assert (client_id);
|
||||
|
||||
outfile = NULL;
|
||||
|
||||
metacity_dir = g_strconcat (g_get_home_dir (), "/.metacity",
|
||||
/*
|
||||
* g_get_user_config_dir() is guaranteed to return an existing directory.
|
||||
* Eventually, if SM stays with the WM, I'd like to make this
|
||||
* something like <config>/window_placement in a standard format.
|
||||
* Future optimisers should note also that by the time we get here
|
||||
* we probably already have full_save_path figured out and therefore
|
||||
* can just use the directory name from that.
|
||||
*/
|
||||
metacity_dir = g_strconcat (g_get_user_config_dir (),
|
||||
G_DIR_SEPARATOR_S "metacity",
|
||||
NULL);
|
||||
|
||||
session_dir = g_strconcat (metacity_dir, "/sessions",
|
||||
session_dir = g_strconcat (metacity_dir,
|
||||
G_DIR_SEPARATOR_S "sessions",
|
||||
NULL);
|
||||
|
||||
if (mkdir (metacity_dir, 0700) < 0 &&
|
||||
@@ -863,127 +874,116 @@ save_state (void)
|
||||
|
||||
fprintf (outfile, "<metacity_session id=\"%s\">\n",
|
||||
client_id);
|
||||
|
||||
displays = meta_displays_list ();
|
||||
display_iter = displays;
|
||||
while (display_iter != NULL)
|
||||
|
||||
windows = meta_display_list_windows (meta_get_display ());
|
||||
stack_position = 0;
|
||||
|
||||
windows = g_slist_sort (windows, meta_display_stack_cmp);
|
||||
tmp = windows;
|
||||
stack_position = 0;
|
||||
|
||||
while (tmp != NULL)
|
||||
{
|
||||
GSList *windows;
|
||||
GSList *tmp;
|
||||
int stack_position;
|
||||
|
||||
windows = meta_display_list_windows (display_iter->data);
|
||||
windows = g_slist_sort (windows, meta_display_stack_cmp);
|
||||
MetaWindow *window;
|
||||
|
||||
stack_position = 0;
|
||||
tmp = windows;
|
||||
while (tmp != NULL)
|
||||
window = tmp->data;
|
||||
|
||||
if (window->sm_client_id)
|
||||
{
|
||||
MetaWindow *window;
|
||||
char *sm_client_id;
|
||||
char *res_class;
|
||||
char *res_name;
|
||||
char *role;
|
||||
char *title;
|
||||
|
||||
window = tmp->data;
|
||||
|
||||
if (window->sm_client_id)
|
||||
{
|
||||
char *sm_client_id;
|
||||
char *res_class;
|
||||
char *res_name;
|
||||
char *role;
|
||||
char *title;
|
||||
|
||||
/* client id, class, name, role are not expected to be
|
||||
* in UTF-8 (I think they are in XPCS which is Latin-1?
|
||||
* in practice they are always ascii though.)
|
||||
*/
|
||||
/* client id, class, name, role are not expected to be
|
||||
* in UTF-8 (I think they are in XPCS which is Latin-1?
|
||||
* in practice they are always ascii though.)
|
||||
*/
|
||||
|
||||
sm_client_id = encode_text_as_utf8_markup (window->sm_client_id);
|
||||
res_class = window->res_class ?
|
||||
encode_text_as_utf8_markup (window->res_class) : NULL;
|
||||
res_name = window->res_name ?
|
||||
encode_text_as_utf8_markup (window->res_name) : NULL;
|
||||
role = window->role ?
|
||||
encode_text_as_utf8_markup (window->role) : NULL;
|
||||
if (window->title)
|
||||
title = g_markup_escape_text (window->title, -1);
|
||||
else
|
||||
title = NULL;
|
||||
|
||||
meta_topic (META_DEBUG_SM, "Saving session managed window %s, client ID '%s'\n",
|
||||
window->desc, window->sm_client_id);
|
||||
|
||||
fprintf (outfile,
|
||||
" <window id=\"%s\" class=\"%s\" name=\"%s\" title=\"%s\" role=\"%s\" type=\"%s\" stacking=\"%d\">\n",
|
||||
sm_client_id,
|
||||
res_class ? res_class : "",
|
||||
res_name ? res_name : "",
|
||||
title ? title : "",
|
||||
role ? role : "",
|
||||
window_type_to_string (window->type),
|
||||
stack_position);
|
||||
|
||||
g_free (sm_client_id);
|
||||
g_free (res_class);
|
||||
g_free (res_name);
|
||||
g_free (role);
|
||||
g_free (title);
|
||||
|
||||
/* Sticky */
|
||||
if (window->on_all_workspaces)
|
||||
fputs (" <sticky/>\n", outfile);
|
||||
|
||||
/* Minimized */
|
||||
if (window->minimized)
|
||||
fputs (" <minimized/>\n", outfile);
|
||||
|
||||
/* Maximized */
|
||||
if (META_WINDOW_MAXIMIZED (window))
|
||||
{
|
||||
fprintf (outfile,
|
||||
" <maximized saved_x=\"%d\" saved_y=\"%d\" saved_width=\"%d\" saved_height=\"%d\"/>\n",
|
||||
window->saved_rect.x,
|
||||
window->saved_rect.y,
|
||||
window->saved_rect.width,
|
||||
window->saved_rect.height);
|
||||
}
|
||||
|
||||
/* Workspaces we're on */
|
||||
{
|
||||
int n;
|
||||
n = meta_workspace_index (window->workspace);
|
||||
fprintf (outfile,
|
||||
" <workspace index=\"%d\"/>\n", n);
|
||||
}
|
||||
|
||||
/* Gravity */
|
||||
{
|
||||
int x, y, w, h;
|
||||
meta_window_get_geometry (window, &x, &y, &w, &h);
|
||||
|
||||
fprintf (outfile,
|
||||
" <geometry x=\"%d\" y=\"%d\" width=\"%d\" height=\"%d\" gravity=\"%s\"/>\n",
|
||||
x, y, w, h,
|
||||
meta_gravity_to_string (window->size_hints.win_gravity));
|
||||
}
|
||||
|
||||
fputs (" </window>\n", outfile);
|
||||
}
|
||||
sm_client_id = encode_text_as_utf8_markup (window->sm_client_id);
|
||||
res_class = window->res_class ?
|
||||
encode_text_as_utf8_markup (window->res_class) : NULL;
|
||||
res_name = window->res_name ?
|
||||
encode_text_as_utf8_markup (window->res_name) : NULL;
|
||||
role = window->role ?
|
||||
encode_text_as_utf8_markup (window->role) : NULL;
|
||||
if (window->title)
|
||||
title = g_markup_escape_text (window->title, -1);
|
||||
else
|
||||
{
|
||||
meta_topic (META_DEBUG_SM, "Not saving window '%s', not session managed\n",
|
||||
window->desc);
|
||||
}
|
||||
|
||||
tmp = tmp->next;
|
||||
++stack_position;
|
||||
}
|
||||
|
||||
g_slist_free (windows);
|
||||
title = NULL;
|
||||
|
||||
meta_topic (META_DEBUG_SM, "Saving session managed window %s, client ID '%s'\n",
|
||||
window->desc, window->sm_client_id);
|
||||
|
||||
display_iter = display_iter->next;
|
||||
fprintf (outfile,
|
||||
" <window id=\"%s\" class=\"%s\" name=\"%s\" title=\"%s\" role=\"%s\" type=\"%s\" stacking=\"%d\">\n",
|
||||
sm_client_id,
|
||||
res_class ? res_class : "",
|
||||
res_name ? res_name : "",
|
||||
title ? title : "",
|
||||
role ? role : "",
|
||||
window_type_to_string (window->type),
|
||||
stack_position);
|
||||
|
||||
g_free (sm_client_id);
|
||||
g_free (res_class);
|
||||
g_free (res_name);
|
||||
g_free (role);
|
||||
g_free (title);
|
||||
|
||||
/* Sticky */
|
||||
if (window->on_all_workspaces)
|
||||
fputs (" <sticky/>\n", outfile);
|
||||
|
||||
/* Minimized */
|
||||
if (window->minimized)
|
||||
fputs (" <minimized/>\n", outfile);
|
||||
|
||||
/* Maximized */
|
||||
if (META_WINDOW_MAXIMIZED (window))
|
||||
{
|
||||
fprintf (outfile,
|
||||
" <maximized saved_x=\"%d\" saved_y=\"%d\" saved_width=\"%d\" saved_height=\"%d\"/>\n",
|
||||
window->saved_rect.x,
|
||||
window->saved_rect.y,
|
||||
window->saved_rect.width,
|
||||
window->saved_rect.height);
|
||||
}
|
||||
|
||||
/* Workspaces we're on */
|
||||
{
|
||||
int n;
|
||||
n = meta_workspace_index (window->workspace);
|
||||
fprintf (outfile,
|
||||
" <workspace index=\"%d\"/>\n", n);
|
||||
}
|
||||
|
||||
/* Gravity */
|
||||
{
|
||||
int x, y, w, h;
|
||||
meta_window_get_geometry (window, &x, &y, &w, &h);
|
||||
|
||||
fprintf (outfile,
|
||||
" <geometry x=\"%d\" y=\"%d\" width=\"%d\" height=\"%d\" gravity=\"%s\"/>\n",
|
||||
x, y, w, h,
|
||||
meta_gravity_to_string (window->size_hints.win_gravity));
|
||||
}
|
||||
|
||||
fputs (" </window>\n", outfile);
|
||||
}
|
||||
else
|
||||
{
|
||||
meta_topic (META_DEBUG_SM, "Not saving window '%s', not session managed\n",
|
||||
window->desc);
|
||||
}
|
||||
|
||||
tmp = tmp->next;
|
||||
++stack_position;
|
||||
}
|
||||
/* don't need to free displays */
|
||||
displays = NULL;
|
||||
|
||||
|
||||
g_slist_free (windows);
|
||||
|
||||
fputs ("</metacity_session>\n", outfile);
|
||||
|
||||
out:
|
||||
@@ -1061,8 +1061,9 @@ load_state (const char *previous_save_file)
|
||||
gsize length;
|
||||
char *session_file;
|
||||
|
||||
session_file = g_strconcat (g_get_home_dir (),
|
||||
"/.metacity/sessions/",
|
||||
session_file = g_strconcat (g_get_user_config_dir (),
|
||||
G_DIR_SEPARATOR_S "metacity"
|
||||
G_DIR_SEPARATOR_S "sessions" G_DIR_SEPARATOR_S,
|
||||
previous_save_file,
|
||||
NULL);
|
||||
|
||||
@@ -1072,11 +1073,32 @@ load_state (const char *previous_save_file)
|
||||
&length,
|
||||
&error))
|
||||
{
|
||||
meta_warning (_("Failed to read saved session file %s: %s\n"),
|
||||
session_file, error->message);
|
||||
g_error_free (error);
|
||||
g_free (session_file);
|
||||
return NULL;
|
||||
char *canonical_session_file = session_file;
|
||||
|
||||
/* Maybe they were doing it the old way, with ~/.metacity */
|
||||
session_file = g_strconcat (g_get_home_dir (),
|
||||
G_DIR_SEPARATOR_S ".metacity"
|
||||
G_DIR_SEPARATOR_S "sessions"
|
||||
G_DIR_SEPARATOR_S,
|
||||
previous_save_file,
|
||||
NULL);
|
||||
|
||||
if (!g_file_get_contents (session_file,
|
||||
&text,
|
||||
&length,
|
||||
NULL))
|
||||
{
|
||||
/* oh, just give up */
|
||||
|
||||
meta_warning (_("Failed to read saved session file %s: %s\n"),
|
||||
canonical_session_file, error->message);
|
||||
g_error_free (error);
|
||||
g_free (session_file);
|
||||
g_free (canonical_session_file);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
g_free (canonical_session_file);
|
||||
}
|
||||
|
||||
meta_topic (META_DEBUG_SM, "Parsing saved session file %s\n", session_file);
|
||||
@@ -1678,8 +1700,9 @@ regenerate_save_file (void)
|
||||
g_free (full_save_path);
|
||||
|
||||
if (client_id)
|
||||
full_save_path = g_strconcat (g_get_home_dir (),
|
||||
"/.metacity/sessions/",
|
||||
full_save_path = g_strconcat (g_get_user_config_dir (),
|
||||
G_DIR_SEPARATOR_S "metacity"
|
||||
G_DIR_SEPARATOR_S "sessions" G_DIR_SEPARATOR_S,
|
||||
client_id,
|
||||
".ms",
|
||||
NULL);
|
||||
@@ -1760,9 +1783,8 @@ io_from_warning_dialog (GIOChannel *channel,
|
||||
static void
|
||||
warn_about_lame_clients_and_finish_interact (gboolean shutdown)
|
||||
{
|
||||
GSList *displays;
|
||||
GSList *display_iter;
|
||||
GSList *lame;
|
||||
GSList *windows;
|
||||
char **argv;
|
||||
int i;
|
||||
GSList *tmp;
|
||||
@@ -1776,34 +1798,26 @@ warn_about_lame_clients_and_finish_interact (gboolean shutdown)
|
||||
char timestampbuf[32];
|
||||
|
||||
lame = NULL;
|
||||
displays = meta_displays_list ();
|
||||
display_iter = displays;
|
||||
while (display_iter != NULL)
|
||||
windows = meta_display_list_windows (meta_get_display ());
|
||||
tmp = windows;
|
||||
while (tmp != NULL)
|
||||
{
|
||||
GSList *windows;
|
||||
|
||||
windows = meta_display_list_windows (display_iter->data);
|
||||
tmp = windows;
|
||||
while (tmp != NULL)
|
||||
{
|
||||
MetaWindow *window;
|
||||
|
||||
window = tmp->data;
|
||||
|
||||
/* only complain about normal windows, the others
|
||||
* are kind of dumb to worry about
|
||||
*/
|
||||
if (window->sm_client_id == NULL &&
|
||||
window->type == META_WINDOW_NORMAL)
|
||||
lame = g_slist_prepend (lame, window);
|
||||
MetaWindow *window;
|
||||
|
||||
tmp = tmp->next;
|
||||
}
|
||||
|
||||
g_slist_free (windows);
|
||||
window = tmp->data;
|
||||
|
||||
display_iter = display_iter->next;
|
||||
/* only complain about normal windows, the others
|
||||
* are kind of dumb to worry about
|
||||
*/
|
||||
if (window->sm_client_id == NULL &&
|
||||
window->type == META_WINDOW_NORMAL)
|
||||
lame = g_slist_prepend (lame, window);
|
||||
|
||||
tmp = tmp->next;
|
||||
}
|
||||
|
||||
g_slist_free (windows);
|
||||
|
||||
if (lame == NULL)
|
||||
{
|
||||
/* No lame apps. */
|
||||
@@ -1813,12 +1827,9 @@ warn_about_lame_clients_and_finish_interact (gboolean shutdown)
|
||||
|
||||
lame = g_slist_sort (lame, (GCompareFunc) windows_cmp_by_title);
|
||||
|
||||
timestamp = meta_display_get_current_time_roundtrip (displays->data);
|
||||
timestamp = meta_display_get_current_time_roundtrip (meta_get_display ());
|
||||
sprintf (timestampbuf, "%u", timestamp);
|
||||
|
||||
/* don't need to free displays */
|
||||
displays = NULL;
|
||||
|
||||
len = g_slist_length (lame);
|
||||
len *= 2; /* titles and also classes */
|
||||
len += 2; /* --timestamp flag and actual timestamp */
|
||||
|
@@ -24,7 +24,7 @@
|
||||
#ifndef META_SESSION_H
|
||||
#define META_SESSION_H
|
||||
|
||||
#include "window.h"
|
||||
#include "window-private.h"
|
||||
|
||||
typedef struct _MetaWindowSessionInfo MetaWindowSessionInfo;
|
||||
|
||||
|
@@ -1,418 +0,0 @@
|
||||
/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */
|
||||
|
||||
#include "spring-model.h"
|
||||
#include <math.h>
|
||||
|
||||
struct XYPair
|
||||
{
|
||||
double x, y;
|
||||
};
|
||||
|
||||
#define GRID_WIDTH 4
|
||||
#define GRID_HEIGHT 4
|
||||
|
||||
#define MODEL_MAX_OBJECTS (GRID_WIDTH * GRID_HEIGHT)
|
||||
#define MODEL_MAX_SPRINGS (MODEL_MAX_OBJECTS * 2)
|
||||
|
||||
#define DEFAULT_SPRING_K 5.0
|
||||
#define DEFAULT_FRICTION 1.4
|
||||
|
||||
struct Spring {
|
||||
Object *a;
|
||||
Object *b;
|
||||
/* Spring position at rest, from a to b:
|
||||
offset = b.position - a.position
|
||||
*/
|
||||
Vector offset;
|
||||
};
|
||||
|
||||
struct Object {
|
||||
Vector force;
|
||||
|
||||
Point position;
|
||||
Vector velocity;
|
||||
|
||||
double mass;
|
||||
double theta;
|
||||
|
||||
int immobile;
|
||||
};
|
||||
|
||||
struct Model {
|
||||
int num_objects;
|
||||
Object objects[MODEL_MAX_OBJECTS];
|
||||
|
||||
int num_springs;
|
||||
Spring springs[MODEL_MAX_SPRINGS];
|
||||
|
||||
Object *anchor_object;
|
||||
Vector anchor_offset;
|
||||
|
||||
double friction;/* Friction constant */
|
||||
double k;/* Spring constant */
|
||||
|
||||
double last_time;
|
||||
double steps;
|
||||
};
|
||||
|
||||
static void
|
||||
object_init (Object *object,
|
||||
double position_x, double position_y,
|
||||
double velocity_x, double velocity_y, double mass)
|
||||
{
|
||||
object->position.x = position_x;
|
||||
object->position.y = position_y;
|
||||
|
||||
object->velocity.x = velocity_x;
|
||||
object->velocity.y = velocity_y;
|
||||
|
||||
object->mass = mass;
|
||||
|
||||
object->force.x = 0;
|
||||
object->force.y = 0;
|
||||
|
||||
object->immobile = 0;
|
||||
}
|
||||
|
||||
static void
|
||||
spring_init (Spring *spring,
|
||||
Object *object_a, Object *object_b,
|
||||
double offset_x, double offset_y)
|
||||
{
|
||||
spring->a = object_a;
|
||||
spring->b = object_b;
|
||||
spring->offset.x = offset_x;
|
||||
spring->offset.y = offset_y;
|
||||
}
|
||||
|
||||
static void
|
||||
model_add_spring (Model *model,
|
||||
Object *object_a, Object *object_b,
|
||||
double offset_x, double offset_y)
|
||||
{
|
||||
Spring *spring;
|
||||
|
||||
g_assert (model->num_springs < MODEL_MAX_SPRINGS);
|
||||
|
||||
spring = &model->springs[model->num_springs];
|
||||
model->num_springs++;
|
||||
|
||||
spring_init (spring, object_a, object_b, offset_x, offset_y);
|
||||
}
|
||||
|
||||
static void
|
||||
object_apply_force (Object *object, double fx, double fy)
|
||||
{
|
||||
object->force.x += fx;
|
||||
object->force.y += fy;
|
||||
}
|
||||
|
||||
/* The model here can be understood as a rigid body of the spring's
|
||||
* rest shape, centered on the vector between the two object
|
||||
* positions. This rigid body is then connected by linear-force
|
||||
* springs to each object. This model does degnerate into a simple
|
||||
* spring for linear displacements, and does something reasonable for
|
||||
* rotation.
|
||||
*
|
||||
* There are other possibilities for handling the rotation of the
|
||||
* spring, and it might be interesting to explore something which has
|
||||
* better length-preserving properties. For example, with the current
|
||||
* model, an initial 180 degree rotation of the spring results in the
|
||||
* spring collapsing down to 0 size before expanding back to it's
|
||||
* natural size again.
|
||||
*/
|
||||
|
||||
static void
|
||||
spring_exert_forces (Spring *spring, double k)
|
||||
{
|
||||
Vector da, db;
|
||||
Vector a, b;
|
||||
|
||||
a = spring->a->position;
|
||||
b = spring->b->position;
|
||||
|
||||
/* A nice vector diagram would likely help here, but my ASCII-art
|
||||
* skills aren't up to the task. Here's how to make your own
|
||||
* diagram:
|
||||
*
|
||||
* Draw a and b, and the vector AB from a to b
|
||||
* Find the center of AB
|
||||
* Draw spring->offset so that its center point is on the center of AB
|
||||
* Draw da from a to the initial point of spring->offset
|
||||
* Draw db from b to the final point of spring->offset
|
||||
*
|
||||
* The math below should be easy to verify from the diagram.
|
||||
*/
|
||||
|
||||
da.x = 0.5 * (b.x - a.x - spring->offset.x);
|
||||
da.y = 0.5 * (b.y - a.y - spring->offset.y);
|
||||
|
||||
db.x = 0.5 * (a.x - b.x + spring->offset.x);
|
||||
db.y = 0.5 * (a.y - b.y + spring->offset.y);
|
||||
|
||||
object_apply_force (spring->a, k * da.x, k * da.y);
|
||||
object_apply_force (spring->b, k * db.x, k * db.y);
|
||||
}
|
||||
|
||||
static void
|
||||
model_step_object (Model *model, Object *object)
|
||||
{
|
||||
Vector acceleration;
|
||||
|
||||
object->theta += 0.05;
|
||||
|
||||
/* Slow down due to friction. */
|
||||
object->force.x -= model->friction * object->velocity.x;
|
||||
object->force.y -= model->friction * object->velocity.y;
|
||||
|
||||
acceleration.x = object->force.x / object->mass;
|
||||
acceleration.y = object->force.y / object->mass;
|
||||
|
||||
if (object->immobile)
|
||||
{
|
||||
object->velocity.x = 0;
|
||||
object->velocity.y = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
object->velocity.x += acceleration.x;
|
||||
object->velocity.y += acceleration.y;
|
||||
|
||||
object->position.x += object->velocity.x;
|
||||
object->position.y += object->velocity.y;
|
||||
}
|
||||
|
||||
object->force.x = 0.0;
|
||||
object->force.y = 0.0;
|
||||
}
|
||||
|
||||
static void
|
||||
model_init_grid (Model *model, MetaRectangle *rect, gboolean expand)
|
||||
{
|
||||
int x, y, i, v_x, v_y;
|
||||
int hpad, vpad;
|
||||
|
||||
model->num_objects = MODEL_MAX_OBJECTS;
|
||||
|
||||
model->num_springs = 0;
|
||||
|
||||
i = 0;
|
||||
if (expand)
|
||||
{
|
||||
hpad = rect->width / 3;
|
||||
vpad = rect->height / 3;
|
||||
}
|
||||
else
|
||||
{
|
||||
hpad = rect->width / 6;
|
||||
vpad = rect->height / 6;
|
||||
}
|
||||
|
||||
#define EXPAND_DELTA 4
|
||||
|
||||
for (y = 0; y < GRID_HEIGHT; y++)
|
||||
for (x = 0; x < GRID_WIDTH; x++)
|
||||
{
|
||||
if (expand)
|
||||
{
|
||||
if (y == 0)
|
||||
v_y = - EXPAND_DELTA * g_random_double();
|
||||
else if (y == GRID_HEIGHT - 1)
|
||||
v_y = EXPAND_DELTA * g_random_double();
|
||||
else
|
||||
v_y = 2 * EXPAND_DELTA * g_random_double() - EXPAND_DELTA;
|
||||
|
||||
if (x == 0)
|
||||
v_x = - EXPAND_DELTA * g_random_double();
|
||||
else if (x == GRID_WIDTH - 1)
|
||||
v_x = EXPAND_DELTA * g_random_double();
|
||||
else
|
||||
v_x = 2 * EXPAND_DELTA * g_random_double() - EXPAND_DELTA;
|
||||
}
|
||||
else
|
||||
{
|
||||
v_x = v_y = 0;
|
||||
}
|
||||
|
||||
#if 0
|
||||
if (expand)
|
||||
object_init (&model->objects[i],
|
||||
rect->x + x * rect->width / 6 + rect->width / 4,
|
||||
rect->y + y * rect->height / 6 + rect->height / 4,
|
||||
v_x, v_y, 20);
|
||||
else
|
||||
#endif
|
||||
{
|
||||
#if 0
|
||||
g_print ("obj: %d %d\n", rect->x + x * rect->width / 3,
|
||||
rect->y + y * rect->height / 3);
|
||||
#endif
|
||||
object_init (&model->objects[i],
|
||||
rect->x + x * rect->width / 3,
|
||||
rect->y + y * rect->height / 3,
|
||||
v_x, v_y, 15);
|
||||
}
|
||||
|
||||
if (x > 0)
|
||||
model_add_spring (model,
|
||||
&model->objects[i - 1],
|
||||
&model->objects[i],
|
||||
hpad, 0);
|
||||
|
||||
if (y > 0)
|
||||
model_add_spring (model,
|
||||
&model->objects[i - GRID_WIDTH],
|
||||
&model->objects[i],
|
||||
0, vpad);
|
||||
|
||||
i++;
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
model_init (Model *model, MetaRectangle *rect, gboolean expand)
|
||||
{
|
||||
model->anchor_object = NULL;
|
||||
|
||||
model->k = DEFAULT_SPRING_K;
|
||||
model->friction = DEFAULT_FRICTION;
|
||||
|
||||
model_init_grid (model, rect, expand);
|
||||
model->steps = 0;
|
||||
model->last_time = 0;
|
||||
}
|
||||
|
||||
Model *
|
||||
model_new (MetaRectangle *rect, gboolean expand)
|
||||
{
|
||||
Model *model = g_new0 (Model, 1);
|
||||
|
||||
model_init (model, rect, expand);
|
||||
|
||||
return model;
|
||||
}
|
||||
|
||||
static double
|
||||
object_distance (Object *object, double x, double y)
|
||||
{
|
||||
double dx, dy;
|
||||
|
||||
dx = object->position.x - x;
|
||||
dy = object->position.y - y;
|
||||
|
||||
return sqrt (dx*dx + dy*dy);
|
||||
}
|
||||
|
||||
static Object *
|
||||
model_find_nearest (Model *model, double x, double y)
|
||||
{
|
||||
Object *object = &model->objects[0];
|
||||
double distance, min_distance = 0.0;
|
||||
int i;
|
||||
|
||||
for (i = 0; i < model->num_objects; i++) {
|
||||
distance = object_distance (&model->objects[i], x, y);
|
||||
if (i == 0 || distance < min_distance) {
|
||||
min_distance = distance;
|
||||
object = &model->objects[i];
|
||||
}
|
||||
}
|
||||
|
||||
return object;
|
||||
}
|
||||
|
||||
void
|
||||
model_begin_move (Model *model, int x, int y)
|
||||
{
|
||||
if (model->anchor_object)
|
||||
model->anchor_object->immobile = 0;
|
||||
|
||||
model->anchor_object = model_find_nearest (model, x, y);
|
||||
|
||||
model->anchor_offset.x = x - model->anchor_object->position.x;
|
||||
model->anchor_offset.y = y - model->anchor_object->position.y;
|
||||
|
||||
g_print ("ypos: %f %f\n", model->anchor_object->position.y,
|
||||
model->anchor_object->position.x);
|
||||
|
||||
g_print ("anchor offset: %f %f\n",
|
||||
model->anchor_offset.x,
|
||||
model->anchor_offset.y);
|
||||
|
||||
model->anchor_object->immobile = 1;
|
||||
}
|
||||
|
||||
void
|
||||
model_set_anchor (Model *model,
|
||||
int x,
|
||||
int y)
|
||||
{
|
||||
if (model->anchor_object)
|
||||
model->anchor_object->immobile = 0;
|
||||
|
||||
model->anchor_object = model_find_nearest (model, x, y);
|
||||
model->anchor_offset.x = model->anchor_object->position.x - x;
|
||||
model->anchor_offset.y = model->anchor_object->position.y - y;
|
||||
|
||||
model->anchor_object->immobile = 1;
|
||||
}
|
||||
|
||||
void
|
||||
model_update_move (Model *model, int x, int y)
|
||||
{
|
||||
model->anchor_object->position.x = x - model->anchor_offset.x;
|
||||
model->anchor_object->position.y = y - model->anchor_offset.y;
|
||||
}
|
||||
|
||||
#define EPSILON 0.02
|
||||
|
||||
gboolean
|
||||
model_is_calm (Model *model)
|
||||
{
|
||||
int i;
|
||||
|
||||
for (i = 0; i < model->num_objects; i++)
|
||||
{
|
||||
if (model->objects[i].velocity.x > EPSILON ||
|
||||
model->objects[i].velocity.y > EPSILON ||
|
||||
model->objects[i].velocity.x < - EPSILON ||
|
||||
model->objects[i].velocity.y < - EPSILON)
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
void
|
||||
model_step (Model *model)
|
||||
{
|
||||
int i;
|
||||
|
||||
for (i = 0; i < model->num_springs; i++)
|
||||
spring_exert_forces (&model->springs[i], model->k);
|
||||
|
||||
for (i = 0; i < model->num_objects; i++)
|
||||
model_step_object (model, &model->objects[i]);
|
||||
}
|
||||
|
||||
void
|
||||
model_destroy (Model *model)
|
||||
{
|
||||
g_free (model);
|
||||
}
|
||||
|
||||
void
|
||||
model_get_position (Model *model,
|
||||
int i,
|
||||
int j,
|
||||
double *x,
|
||||
double *y)
|
||||
{
|
||||
if (x)
|
||||
*x = model->objects[j * 4 + i].position.x;
|
||||
|
||||
if (y)
|
||||
*y = model->objects[j * 4 + i].position.y;
|
||||
}
|
@@ -1,33 +0,0 @@
|
||||
/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */
|
||||
|
||||
#include "window.h"
|
||||
|
||||
typedef struct XYPair Point;
|
||||
typedef struct XYPair Vector;
|
||||
typedef struct Spring Spring;
|
||||
typedef struct Object Object;
|
||||
typedef struct Model Model;
|
||||
|
||||
Model *model_new (MetaRectangle *rectangle,
|
||||
gboolean expand);
|
||||
void model_destroy (Model *model);
|
||||
void
|
||||
model_get_position (Model *model,
|
||||
int i,
|
||||
int j,
|
||||
double *x,
|
||||
double *y);
|
||||
void
|
||||
model_step (Model *model);
|
||||
void
|
||||
model_destroy (Model *model);
|
||||
gboolean
|
||||
model_is_calm (Model *model);
|
||||
void
|
||||
model_set_anchor (Model *model,
|
||||
int x,
|
||||
int y);
|
||||
void
|
||||
model_begin_move (Model *model, int x, int y);
|
||||
void
|
||||
model_update_move (Model *model, int x, int y);
|
@@ -26,9 +26,9 @@
|
||||
|
||||
#include <config.h>
|
||||
#include "stack.h"
|
||||
#include "window.h"
|
||||
#include "window-private.h"
|
||||
#include "errors.h"
|
||||
#include "frame.h"
|
||||
#include "frame-private.h"
|
||||
#include "group.h"
|
||||
#include "prefs.h"
|
||||
#include "workspace.h"
|
||||
@@ -1159,14 +1159,14 @@ meta_stack_sync_to_server (MetaStack *stack)
|
||||
|
||||
XChangeProperty (stack->screen->display->xdisplay,
|
||||
stack->screen->xroot,
|
||||
stack->screen->display->atom_net_client_list,
|
||||
stack->screen->display->atom__NET_CLIENT_LIST,
|
||||
XA_WINDOW,
|
||||
32, PropModeReplace,
|
||||
(unsigned char *)stack->windows->data,
|
||||
stack->windows->len);
|
||||
XChangeProperty (stack->screen->display->xdisplay,
|
||||
stack->screen->xroot,
|
||||
stack->screen->display->atom_net_client_list_stacking,
|
||||
stack->screen->display->atom__NET_CLIENT_LIST_STACKING,
|
||||
XA_WINDOW,
|
||||
32, PropModeReplace,
|
||||
(unsigned char *)stacked->data,
|
||||
|
@@ -25,7 +25,7 @@
|
||||
#ifndef META_STACK_H
|
||||
#define META_STACK_H
|
||||
|
||||
#include "screen.h"
|
||||
#include "screen-private.h"
|
||||
|
||||
/* Layers vs. stack positions
|
||||
* ==========================
|
||||
|
@@ -625,15 +625,15 @@ test_regions_okay ()
|
||||
/*************************************************************/
|
||||
region = get_screen_region (3);
|
||||
tmp = NULL;
|
||||
tmp = g_list_prepend (tmp, new_meta_rect ( 380, 675, 420, 525)); // 220500
|
||||
tmp = g_list_prepend (tmp, new_meta_rect ( 0, 20, 300, 1180)); // 354000
|
||||
tmp = g_list_prepend (tmp, new_meta_rect ( 380, 20, 320, 1180)); // 377600
|
||||
tmp = g_list_prepend (tmp, new_meta_rect ( 0, 675, 800, 475)); // 380000
|
||||
tmp = g_list_prepend (tmp, new_meta_rect (1200, 20, 400, 1180)); // 472000
|
||||
tmp = g_list_prepend (tmp, new_meta_rect ( 0, 675, 1600, 425)); // 680000
|
||||
tmp = g_list_prepend (tmp, new_meta_rect ( 900, 20, 700, 1080)); // 756000
|
||||
tmp = g_list_prepend (tmp, new_meta_rect ( 0, 20, 700, 1130)); // 791000
|
||||
tmp = g_list_prepend (tmp, new_meta_rect ( 0, 20, 1600, 505)); // 808000
|
||||
tmp = g_list_prepend (tmp, new_meta_rect ( 380, 675, 420, 525)); /* 220500 */
|
||||
tmp = g_list_prepend (tmp, new_meta_rect ( 0, 20, 300, 1180)); /* 354000 */
|
||||
tmp = g_list_prepend (tmp, new_meta_rect ( 380, 20, 320, 1180)); /* 377600 */
|
||||
tmp = g_list_prepend (tmp, new_meta_rect ( 0, 675, 800, 475)); /* 380000 */
|
||||
tmp = g_list_prepend (tmp, new_meta_rect (1200, 20, 400, 1180)); /* 472000 */
|
||||
tmp = g_list_prepend (tmp, new_meta_rect ( 0, 675, 1600, 425)); /* 680000 */
|
||||
tmp = g_list_prepend (tmp, new_meta_rect ( 900, 20, 700, 1080)); /* 756000 */
|
||||
tmp = g_list_prepend (tmp, new_meta_rect ( 0, 20, 700, 1130)); /* 791000 */
|
||||
tmp = g_list_prepend (tmp, new_meta_rect ( 0, 20, 1600, 505)); /* 808000 */
|
||||
#if 0
|
||||
printf ("Got to here...\n");
|
||||
char region_list[(RECT_LENGTH+2) * g_list_length (region)];
|
||||
|
@@ -22,6 +22,9 @@
|
||||
* 02111-1307, USA.
|
||||
*/
|
||||
|
||||
#define _GNU_SOURCE
|
||||
#define _POSIX_C_SOURCE /* for fdopen() */
|
||||
|
||||
#include <config.h>
|
||||
#include "util.h"
|
||||
#include "main.h"
|
||||
@@ -131,10 +134,10 @@ meta_set_verbose (gboolean setting)
|
||||
#ifndef WITH_VERBOSE_MODE
|
||||
if (setting)
|
||||
meta_fatal (_("Metacity was compiled without support for verbose mode\n"));
|
||||
#endif
|
||||
|
||||
#else
|
||||
if (setting)
|
||||
ensure_logfile ();
|
||||
#endif
|
||||
|
||||
is_verbose = setting;
|
||||
}
|
||||
@@ -148,9 +151,11 @@ meta_is_debugging (void)
|
||||
void
|
||||
meta_set_debugging (gboolean setting)
|
||||
{
|
||||
#ifdef WITH_VERBOSE_MODE
|
||||
if (setting)
|
||||
ensure_logfile ();
|
||||
|
||||
#endif
|
||||
|
||||
is_debugging = setting;
|
||||
}
|
||||
|
||||
@@ -373,8 +378,12 @@ meta_bug (const char *format, ...)
|
||||
str = g_strdup_vprintf (format, args);
|
||||
va_end (args);
|
||||
|
||||
#ifdef WITH_VERBOSE_MODE
|
||||
out = logfile ? logfile : stderr;
|
||||
|
||||
#else
|
||||
out = stderr;
|
||||
#endif
|
||||
|
||||
if (no_prefix == 0)
|
||||
utf8_fputs (_("Bug in window manager: "), out);
|
||||
utf8_fputs (str, out);
|
||||
@@ -402,8 +411,12 @@ meta_warning (const char *format, ...)
|
||||
str = g_strdup_vprintf (format, args);
|
||||
va_end (args);
|
||||
|
||||
#ifdef WITH_VERBOSE_MODE
|
||||
out = logfile ? logfile : stderr;
|
||||
|
||||
#else
|
||||
out = stderr;
|
||||
#endif
|
||||
|
||||
if (no_prefix == 0)
|
||||
utf8_fputs (_("Window manager warning: "), out);
|
||||
utf8_fputs (str, out);
|
||||
@@ -426,8 +439,12 @@ meta_fatal (const char *format, ...)
|
||||
str = g_strdup_vprintf (format, args);
|
||||
va_end (args);
|
||||
|
||||
#ifdef WITH_VERBOSE_MODE
|
||||
out = logfile ? logfile : stderr;
|
||||
|
||||
#else
|
||||
out = stderr;
|
||||
#endif
|
||||
|
||||
if (no_prefix == 0)
|
||||
utf8_fputs (_("Window manager error: "), out);
|
||||
utf8_fputs (str, out);
|
||||
|
@@ -24,11 +24,12 @@
|
||||
* 02111-1307, USA.
|
||||
*/
|
||||
|
||||
#ifndef META_WINDOW_H
|
||||
#define META_WINDOW_H
|
||||
#ifndef META_WINDOW_PRIVATE_H
|
||||
#define META_WINDOW_PRIVATE_H
|
||||
|
||||
#include <config.h>
|
||||
#include "screen.h"
|
||||
#include "window.h"
|
||||
#include "screen-private.h"
|
||||
#include "util.h"
|
||||
#include "stack.h"
|
||||
#include "iconcache.h"
|
||||
@@ -362,6 +363,8 @@ struct _MetaWindow
|
||||
*/
|
||||
#define META_WINDOW_MAXIMIZED(w) ((w)->maximized_horizontally && \
|
||||
(w)->maximized_vertically)
|
||||
#define META_WINDOW_MAXIMIZED_VERTICALLY(w) ((w)->maximized_vertically)
|
||||
#define META_WINDOW_MAXIMIZED_HORIZONTALLY(w) ((w)->maximized_horizontally)
|
||||
#define META_WINDOW_ALLOWS_MOVE(w) ((w)->has_move_func && !(w)->fullscreen)
|
||||
#define META_WINDOW_ALLOWS_RESIZE_EXCEPT_HINTS(w) ((w)->has_resize_func && !META_WINDOW_MAXIMIZED (w) && !(w)->fullscreen && !(w)->shaded)
|
||||
#define META_WINDOW_ALLOWS_RESIZE(w) (META_WINDOW_ALLOWS_RESIZE_EXCEPT_HINTS (w) && \
|
||||
@@ -558,7 +561,7 @@ gboolean meta_window_same_application (MetaWindow *window,
|
||||
#define META_WINDOW_IN_NORMAL_TAB_CHAIN(w) \
|
||||
(((w)->input || (w)->take_focus ) && META_WINDOW_IN_NORMAL_TAB_CHAIN_TYPE (w) && (!(w)->skip_taskbar))
|
||||
#define META_WINDOW_IN_DOCK_TAB_CHAIN(w) \
|
||||
(((w)->input || (w)->take_focus) && ! META_WINDOW_IN_NORMAL_TAB_CHAIN_TYPE (w))
|
||||
(((w)->input || (w)->take_focus) && (! META_WINDOW_IN_NORMAL_TAB_CHAIN_TYPE (w) || (w)->skip_taskbar))
|
||||
#define META_WINDOW_IN_GROUP_TAB_CHAIN(w, g) \
|
||||
(((w)->input || (w)->take_focus) && (!g || meta_window_get_group(w)==g))
|
||||
|
@@ -1,6 +1,17 @@
|
||||
/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */
|
||||
|
||||
/* MetaWindow property handling */
|
||||
/**
|
||||
* \file window-props.c MetaWindow property handling
|
||||
*
|
||||
* A system which can inspect sets of properties of given windows
|
||||
* and take appropriate action given their values.
|
||||
*
|
||||
* Note that all the meta_window_reload_propert* functions require a
|
||||
* round trip to the server.
|
||||
*
|
||||
* \bug Not all the properties have moved over from their original
|
||||
* handler in window.c yet.
|
||||
*/
|
||||
|
||||
/*
|
||||
* Copyright (C) 2001, 2002, 2003 Red Hat, Inc.
|
||||
@@ -22,11 +33,14 @@
|
||||
* 02111-1307, USA.
|
||||
*/
|
||||
|
||||
#define _GNU_SOURCE
|
||||
#define _SVID_SOURCE /* for gethostname() */
|
||||
|
||||
#include <config.h>
|
||||
#include "window-props.h"
|
||||
#include "errors.h"
|
||||
#include "xprops.h"
|
||||
#include "frame.h"
|
||||
#include "frame-private.h"
|
||||
#include "group.h"
|
||||
#include <X11/Xatom.h>
|
||||
#include <unistd.h>
|
||||
@@ -154,7 +168,7 @@ init_wm_client_machine (MetaDisplay *display,
|
||||
MetaPropValue *value)
|
||||
{
|
||||
value->type = META_PROP_VALUE_STRING;
|
||||
value->atom = display->atom_wm_client_machine;
|
||||
value->atom = display->atom_WM_CLIENT_MACHINE;
|
||||
}
|
||||
|
||||
static void
|
||||
@@ -177,7 +191,7 @@ init_net_wm_pid (MetaDisplay *display,
|
||||
MetaPropValue *value)
|
||||
{
|
||||
value->type = META_PROP_VALUE_CARDINAL;
|
||||
value->atom = display->atom_net_wm_pid;
|
||||
value->atom = display->atom__NET_WM_PID;
|
||||
}
|
||||
|
||||
static void
|
||||
@@ -206,7 +220,7 @@ init_net_wm_user_time (MetaDisplay *display,
|
||||
MetaPropValue *value)
|
||||
{
|
||||
value->type = META_PROP_VALUE_CARDINAL;
|
||||
value->atom = display->atom_net_wm_user_time;
|
||||
value->atom = display->atom__NET_WM_USER_TIME;
|
||||
}
|
||||
|
||||
static void
|
||||
@@ -226,7 +240,7 @@ init_net_wm_user_time_window (MetaDisplay *display,
|
||||
MetaPropValue *value)
|
||||
{
|
||||
value->type = META_PROP_VALUE_WINDOW;
|
||||
value->atom = display->atom_net_wm_user_time_window;
|
||||
value->atom = display->atom__NET_WM_USER_TIME_WINDOW;
|
||||
}
|
||||
|
||||
static void
|
||||
@@ -261,7 +275,7 @@ reload_net_wm_user_time_window (MetaWindow *window,
|
||||
* treated identically and will result in functions for
|
||||
* window being called to update it. Maybe we should ignore
|
||||
* any property notifies to window->user_time_window other
|
||||
* than atom_net_wm_user_time ones, but I just don't care
|
||||
* than atom__NET_WM_USER_TIME ones, but I just don't care
|
||||
* and it's not specified in the spec anyway.
|
||||
*/
|
||||
meta_display_register_x_window (window->display,
|
||||
@@ -279,7 +293,7 @@ reload_net_wm_user_time_window (MetaWindow *window,
|
||||
meta_window_reload_property_from_xwindow (
|
||||
window,
|
||||
window->user_time_window,
|
||||
window->display->atom_net_wm_user_time);
|
||||
window->display->atom__NET_WM_USER_TIME);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -356,7 +370,7 @@ set_window_title (MetaWindow *window,
|
||||
set_title_text (window,
|
||||
window->using_net_wm_visible_name,
|
||||
title,
|
||||
window->display->atom_net_wm_visible_name,
|
||||
window->display->atom__NET_WM_VISIBLE_NAME,
|
||||
&window->title);
|
||||
window->using_net_wm_visible_name = modified;
|
||||
|
||||
@@ -378,7 +392,7 @@ init_net_wm_name (MetaDisplay *display,
|
||||
MetaPropValue *value)
|
||||
{
|
||||
value->type = META_PROP_VALUE_UTF8;
|
||||
value->atom = display->atom_net_wm_name;
|
||||
value->atom = display->atom__NET_WM_NAME;
|
||||
}
|
||||
|
||||
static void
|
||||
@@ -442,7 +456,7 @@ set_icon_title (MetaWindow *window,
|
||||
set_title_text (window,
|
||||
window->using_net_wm_visible_icon_name,
|
||||
title,
|
||||
window->display->atom_net_wm_visible_icon_name,
|
||||
window->display->atom__NET_WM_VISIBLE_ICON_NAME,
|
||||
&window->icon_name);
|
||||
window->using_net_wm_visible_icon_name = modified;
|
||||
}
|
||||
@@ -453,7 +467,7 @@ init_net_wm_icon_name (MetaDisplay *display,
|
||||
MetaPropValue *value)
|
||||
{
|
||||
value->type = META_PROP_VALUE_UTF8;
|
||||
value->atom = display->atom_net_wm_icon_name;
|
||||
value->atom = display->atom__NET_WM_ICON_NAME;
|
||||
}
|
||||
|
||||
static void
|
||||
@@ -515,7 +529,7 @@ init_net_wm_state (MetaDisplay *display,
|
||||
MetaPropValue *value)
|
||||
{
|
||||
value->type = META_PROP_VALUE_ATOM_LIST;
|
||||
value->atom = display->atom_net_wm_state;
|
||||
value->atom = display->atom__NET_WM_STATE;
|
||||
}
|
||||
|
||||
static void
|
||||
@@ -544,27 +558,27 @@ reload_net_wm_state (MetaWindow *window,
|
||||
i = 0;
|
||||
while (i < value->v.atom_list.n_atoms)
|
||||
{
|
||||
if (value->v.atom_list.atoms[i] == window->display->atom_net_wm_state_shaded)
|
||||
if (value->v.atom_list.atoms[i] == window->display->atom__NET_WM_STATE_SHADED)
|
||||
window->shaded = TRUE;
|
||||
else if (value->v.atom_list.atoms[i] == window->display->atom_net_wm_state_maximized_horz)
|
||||
else if (value->v.atom_list.atoms[i] == window->display->atom__NET_WM_STATE_MAXIMIZED_HORZ)
|
||||
window->maximize_horizontally_after_placement = TRUE;
|
||||
else if (value->v.atom_list.atoms[i] == window->display->atom_net_wm_state_maximized_vert)
|
||||
else if (value->v.atom_list.atoms[i] == window->display->atom__NET_WM_STATE_MAXIMIZED_VERT)
|
||||
window->maximize_vertically_after_placement = TRUE;
|
||||
else if (value->v.atom_list.atoms[i] == window->display->atom_net_wm_state_hidden)
|
||||
else if (value->v.atom_list.atoms[i] == window->display->atom__NET_WM_STATE_HIDDEN)
|
||||
window->minimize_after_placement = TRUE;
|
||||
else if (value->v.atom_list.atoms[i] == window->display->atom_net_wm_state_modal)
|
||||
else if (value->v.atom_list.atoms[i] == window->display->atom__NET_WM_STATE_MODAL)
|
||||
window->wm_state_modal = TRUE;
|
||||
else if (value->v.atom_list.atoms[i] == window->display->atom_net_wm_state_skip_taskbar)
|
||||
else if (value->v.atom_list.atoms[i] == window->display->atom__NET_WM_STATE_SKIP_TASKBAR)
|
||||
window->wm_state_skip_taskbar = TRUE;
|
||||
else if (value->v.atom_list.atoms[i] == window->display->atom_net_wm_state_skip_pager)
|
||||
else if (value->v.atom_list.atoms[i] == window->display->atom__NET_WM_STATE_SKIP_PAGER)
|
||||
window->wm_state_skip_pager = TRUE;
|
||||
else if (value->v.atom_list.atoms[i] == window->display->atom_net_wm_state_fullscreen)
|
||||
else if (value->v.atom_list.atoms[i] == window->display->atom__NET_WM_STATE_FULLSCREEN)
|
||||
window->fullscreen = TRUE;
|
||||
else if (value->v.atom_list.atoms[i] == window->display->atom_net_wm_state_above)
|
||||
else if (value->v.atom_list.atoms[i] == window->display->atom__NET_WM_STATE_ABOVE)
|
||||
window->wm_state_above = TRUE;
|
||||
else if (value->v.atom_list.atoms[i] == window->display->atom_net_wm_state_below)
|
||||
else if (value->v.atom_list.atoms[i] == window->display->atom__NET_WM_STATE_BELOW)
|
||||
window->wm_state_below = TRUE;
|
||||
else if (value->v.atom_list.atoms[i] == window->display->atom_net_wm_state_demands_attention)
|
||||
else if (value->v.atom_list.atoms[i] == window->display->atom__NET_WM_STATE_DEMANDS_ATTENTION)
|
||||
window->wm_state_demands_attention = TRUE;
|
||||
|
||||
++i;
|
||||
@@ -582,7 +596,7 @@ init_mwm_hints (MetaDisplay *display,
|
||||
MetaPropValue *value)
|
||||
{
|
||||
value->type = META_PROP_VALUE_MOTIF_HINTS;
|
||||
value->atom = display->atom_motif_wm_hints;
|
||||
value->atom = display->atom__MOTIF_WM_HINTS;
|
||||
}
|
||||
|
||||
static void
|
||||
@@ -751,7 +765,7 @@ init_net_wm_desktop (MetaDisplay *display,
|
||||
MetaPropValue *value)
|
||||
{
|
||||
value->type = META_PROP_VALUE_CARDINAL;
|
||||
value->atom = display->atom_net_wm_desktop;
|
||||
value->atom = display->atom__NET_WM_DESKTOP;
|
||||
}
|
||||
|
||||
static void
|
||||
@@ -774,7 +788,7 @@ init_net_startup_id (MetaDisplay *display,
|
||||
MetaPropValue *value)
|
||||
{
|
||||
value->type = META_PROP_VALUE_UTF8;
|
||||
value->atom = display->atom_net_startup_id;
|
||||
value->atom = display->atom__NET_STARTUP_ID;
|
||||
}
|
||||
|
||||
static void
|
||||
@@ -820,7 +834,7 @@ init_update_counter (MetaDisplay *display,
|
||||
MetaPropValue *value)
|
||||
{
|
||||
value->type = META_PROP_VALUE_SYNC_COUNTER;
|
||||
value->atom = display->atom_net_wm_sync_request_counter;
|
||||
value->atom = display->atom__NET_WM_SYNC_REQUEST_COUNTER;
|
||||
}
|
||||
|
||||
static void
|
||||
@@ -1279,7 +1293,7 @@ init_wm_protocols (MetaDisplay *display,
|
||||
MetaPropValue *value)
|
||||
{
|
||||
value->type = META_PROP_VALUE_ATOM_LIST;
|
||||
value->atom = display->atom_wm_protocols;
|
||||
value->atom = display->atom_WM_PROTOCOLS;
|
||||
}
|
||||
|
||||
static void
|
||||
@@ -1299,13 +1313,13 @@ reload_wm_protocols (MetaWindow *window,
|
||||
while (i < value->v.atom_list.n_atoms)
|
||||
{
|
||||
if (value->v.atom_list.atoms[i] ==
|
||||
window->display->atom_wm_take_focus)
|
||||
window->display->atom_WM_TAKE_FOCUS)
|
||||
window->take_focus = TRUE;
|
||||
else if (value->v.atom_list.atoms[i] ==
|
||||
window->display->atom_wm_delete_window)
|
||||
window->display->atom_WM_DELETE_WINDOW)
|
||||
window->delete_window = TRUE;
|
||||
else if (value->v.atom_list.atoms[i] ==
|
||||
window->display->atom_net_wm_ping)
|
||||
window->display->atom__NET_WM_PING)
|
||||
window->net_wm_ping = TRUE;
|
||||
++i;
|
||||
}
|
||||
@@ -1452,27 +1466,27 @@ meta_display_init_window_prop_hooks (MetaDisplay *display)
|
||||
|
||||
i = 0;
|
||||
|
||||
hooks[i].property = display->atom_wm_state;
|
||||
hooks[i].property = display->atom_WM_STATE;
|
||||
hooks[i].init_func = NULL;
|
||||
hooks[i].reload_func = NULL;
|
||||
++i;
|
||||
|
||||
hooks[i].property = display->atom_wm_client_machine;
|
||||
hooks[i].property = display->atom_WM_CLIENT_MACHINE;
|
||||
hooks[i].init_func = init_wm_client_machine;
|
||||
hooks[i].reload_func = reload_wm_client_machine;
|
||||
++i;
|
||||
|
||||
hooks[i].property = display->atom_net_wm_pid;
|
||||
hooks[i].property = display->atom__NET_WM_PID;
|
||||
hooks[i].init_func = init_net_wm_pid;
|
||||
hooks[i].reload_func = reload_net_wm_pid;
|
||||
++i;
|
||||
|
||||
hooks[i].property = display->atom_net_wm_user_time;
|
||||
hooks[i].property = display->atom__NET_WM_USER_TIME;
|
||||
hooks[i].init_func = init_net_wm_user_time;
|
||||
hooks[i].reload_func = reload_net_wm_user_time;
|
||||
++i;
|
||||
|
||||
hooks[i].property = display->atom_net_wm_name;
|
||||
hooks[i].property = display->atom__NET_WM_NAME;
|
||||
hooks[i].init_func = init_net_wm_name;
|
||||
hooks[i].reload_func = reload_net_wm_name;
|
||||
++i;
|
||||
@@ -1482,7 +1496,7 @@ meta_display_init_window_prop_hooks (MetaDisplay *display)
|
||||
hooks[i].reload_func = reload_wm_name;
|
||||
++i;
|
||||
|
||||
hooks[i].property = display->atom_net_wm_icon_name;
|
||||
hooks[i].property = display->atom__NET_WM_ICON_NAME;
|
||||
hooks[i].init_func = init_net_wm_icon_name;
|
||||
hooks[i].reload_func = reload_net_wm_icon_name;
|
||||
++i;
|
||||
@@ -1492,17 +1506,17 @@ meta_display_init_window_prop_hooks (MetaDisplay *display)
|
||||
hooks[i].reload_func = reload_wm_icon_name;
|
||||
++i;
|
||||
|
||||
hooks[i].property = display->atom_net_wm_state;
|
||||
hooks[i].property = display->atom__NET_WM_STATE;
|
||||
hooks[i].init_func = init_net_wm_state;
|
||||
hooks[i].reload_func = reload_net_wm_state;
|
||||
++i;
|
||||
|
||||
hooks[i].property = display->atom_motif_wm_hints;
|
||||
hooks[i].property = display->atom__MOTIF_WM_HINTS;
|
||||
hooks[i].init_func = init_mwm_hints;
|
||||
hooks[i].reload_func = reload_mwm_hints;
|
||||
++i;
|
||||
|
||||
hooks[i].property = display->atom_net_wm_icon_geometry;
|
||||
hooks[i].property = display->atom__NET_WM_ICON_GEOMETRY;
|
||||
hooks[i].init_func = NULL;
|
||||
hooks[i].reload_func = NULL;
|
||||
++i;
|
||||
@@ -1512,47 +1526,47 @@ meta_display_init_window_prop_hooks (MetaDisplay *display)
|
||||
hooks[i].reload_func = reload_wm_class;
|
||||
++i;
|
||||
|
||||
hooks[i].property = display->atom_wm_client_leader;
|
||||
hooks[i].property = display->atom_WM_CLIENT_LEADER;
|
||||
hooks[i].init_func = NULL;
|
||||
hooks[i].reload_func = NULL;
|
||||
++i;
|
||||
|
||||
hooks[i].property = display->atom_sm_client_id;
|
||||
hooks[i].property = display->atom_SM_CLIENT_ID;
|
||||
hooks[i].init_func = NULL;
|
||||
hooks[i].reload_func = NULL;
|
||||
++i;
|
||||
|
||||
hooks[i].property = display->atom_wm_window_role;
|
||||
hooks[i].property = display->atom_WM_WINDOW_ROLE;
|
||||
hooks[i].init_func = NULL;
|
||||
hooks[i].reload_func = NULL;
|
||||
++i;
|
||||
|
||||
hooks[i].property = display->atom_net_wm_window_type;
|
||||
hooks[i].property = display->atom__NET_WM_WINDOW_TYPE;
|
||||
hooks[i].init_func = NULL;
|
||||
hooks[i].reload_func = NULL;
|
||||
++i;
|
||||
|
||||
hooks[i].property = display->atom_net_wm_desktop;
|
||||
hooks[i].property = display->atom__NET_WM_DESKTOP;
|
||||
hooks[i].init_func = init_net_wm_desktop;
|
||||
hooks[i].reload_func = reload_net_wm_desktop;
|
||||
++i;
|
||||
|
||||
hooks[i].property = display->atom_net_wm_strut;
|
||||
hooks[i].property = display->atom__NET_WM_STRUT;
|
||||
hooks[i].init_func = NULL;
|
||||
hooks[i].reload_func = NULL;
|
||||
++i;
|
||||
|
||||
hooks[i].property = display->atom_net_wm_strut_partial;
|
||||
hooks[i].property = display->atom__NET_WM_STRUT_PARTIAL;
|
||||
hooks[i].init_func = NULL;
|
||||
hooks[i].reload_func = NULL;
|
||||
++i;
|
||||
|
||||
hooks[i].property = display->atom_net_startup_id;
|
||||
hooks[i].property = display->atom__NET_STARTUP_ID;
|
||||
hooks[i].init_func = init_net_startup_id;
|
||||
hooks[i].reload_func = reload_net_startup_id;
|
||||
++i;
|
||||
|
||||
hooks[i].property = display->atom_net_wm_sync_request_counter;
|
||||
hooks[i].property = display->atom__NET_WM_SYNC_REQUEST_COUNTER;
|
||||
hooks[i].init_func = init_update_counter;
|
||||
hooks[i].reload_func = reload_update_counter;
|
||||
++i;
|
||||
@@ -1562,7 +1576,7 @@ meta_display_init_window_prop_hooks (MetaDisplay *display)
|
||||
hooks[i].reload_func = reload_normal_hints;
|
||||
++i;
|
||||
|
||||
hooks[i].property = display->atom_wm_protocols;
|
||||
hooks[i].property = display->atom_WM_PROTOCOLS;
|
||||
hooks[i].init_func = init_wm_protocols;
|
||||
hooks[i].reload_func = reload_wm_protocols;
|
||||
++i;
|
||||
@@ -1577,13 +1591,15 @@ meta_display_init_window_prop_hooks (MetaDisplay *display)
|
||||
hooks[i].reload_func = reload_transient_for;
|
||||
++i;
|
||||
|
||||
hooks[i].property = display->atom_net_wm_user_time_window;
|
||||
hooks[i].property = display->atom__NET_WM_USER_TIME_WINDOW;
|
||||
hooks[i].init_func = init_net_wm_user_time_window;
|
||||
hooks[i].reload_func = reload_net_wm_user_time_window;
|
||||
++i;
|
||||
|
||||
if (i != N_HOOKS)
|
||||
g_error ("Initialized %d hooks should have been %d\n", i, N_HOOKS);
|
||||
{
|
||||
g_error ("Initialized %d hooks should have been %d\n", i, N_HOOKS);
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
|
@@ -1,6 +1,14 @@
|
||||
/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */
|
||||
|
||||
/* MetaWindow property handling */
|
||||
/**
|
||||
* \file window-props.c MetaWindow property handling
|
||||
*
|
||||
* A system which can inspect sets of properties of given windows
|
||||
* and take appropriate action given their values.
|
||||
*
|
||||
* Note that all the meta_window_reload_propert* functions require a
|
||||
* round trip to the server.
|
||||
*/
|
||||
|
||||
/*
|
||||
* Copyright (C) 2001, 2002 Red Hat, Inc.
|
||||
@@ -24,26 +32,93 @@
|
||||
#ifndef META_WINDOW_PROPS_H
|
||||
#define META_WINDOW_PROPS_H
|
||||
|
||||
#include "window.h"
|
||||
#include "window-private.h"
|
||||
|
||||
/**
|
||||
* Requests the current values of a single property for a given
|
||||
* window from the server, and deals with it appropriately.
|
||||
* Does not return it to the caller (it's been dealt with!)
|
||||
*
|
||||
* \param window The window.
|
||||
* \param property A single X atom.
|
||||
*/
|
||||
void meta_window_reload_property (MetaWindow *window,
|
||||
Atom property);
|
||||
|
||||
|
||||
/**
|
||||
* Requests the current values of a set of properties for a given
|
||||
* window from the server, and deals with them appropriately.
|
||||
* Does not return them to the caller (they've been dealt with!)
|
||||
*
|
||||
* \param window The window.
|
||||
* \param properties A pointer to a list of X atoms, "n_properties" long.
|
||||
* \param n_properties The length of the properties list.
|
||||
*/
|
||||
void meta_window_reload_properties (MetaWindow *window,
|
||||
const Atom *properties,
|
||||
int n_properties);
|
||||
|
||||
/**
|
||||
* Requests the current values of a single property for a given
|
||||
* window from the server, and deals with it appropriately.
|
||||
* Does not return it to the caller (it's been dealt with!)
|
||||
*
|
||||
* \param window A window on the same display as the one we're
|
||||
* investigating (only used to find the display)
|
||||
* \param xwindow The X handle for the window.
|
||||
* \param property A single X atom.
|
||||
*/
|
||||
void meta_window_reload_property_from_xwindow
|
||||
(MetaWindow *window,
|
||||
Window xwindow,
|
||||
Atom property);
|
||||
|
||||
/**
|
||||
* Requests the current values of a set of properties for a given
|
||||
* window from the server, and deals with them appropriately.
|
||||
* Does not return them to the caller (they've been dealt with!)
|
||||
*
|
||||
* \param window A window on the same display as the one we're
|
||||
* investigating (only used to find the display)
|
||||
* \param xwindow The X handle for the window.
|
||||
* \param properties A pointer to a list of X atoms, "n_properties" long.
|
||||
* \param n_properties The length of the properties list.
|
||||
*/
|
||||
void meta_window_reload_properties_from_xwindow
|
||||
(MetaWindow *window,
|
||||
Window xwindow,
|
||||
const Atom *properties,
|
||||
int n_properties);
|
||||
|
||||
/**
|
||||
* Initialises the hooks used for the reload_propert* functions
|
||||
* on a particular display, and stores a pointer to them in the
|
||||
* display.
|
||||
*
|
||||
* \param display The display.
|
||||
*/
|
||||
void meta_display_init_window_prop_hooks (MetaDisplay *display);
|
||||
|
||||
/**
|
||||
* Frees the hooks used for the reload_propert* functions
|
||||
* for a particular display.
|
||||
*
|
||||
* \param display The display.
|
||||
*/
|
||||
void meta_display_free_window_prop_hooks (MetaDisplay *display);
|
||||
|
||||
/**
|
||||
* Sets the size hints for a window. This happens when a
|
||||
* WM_NORMAL_HINTS property is set on a window, but it is public
|
||||
* because the size hints are set to defaults when a window is
|
||||
* created. See
|
||||
* http://tronche.com/gui/x/icccm/sec-4.html#WM_NORMAL_HINTS
|
||||
* for the X details.
|
||||
*
|
||||
* \param window The window to set the size hints on.
|
||||
* \param hints Either some X size hints, or NULL for default.
|
||||
*/
|
||||
void meta_set_normal_hints (MetaWindow *window,
|
||||
XSizeHints *hints);
|
||||
|
||||
|
@@ -25,10 +25,10 @@
|
||||
*/
|
||||
|
||||
#include <config.h>
|
||||
#include "window.h"
|
||||
#include "window-private.h"
|
||||
#include "edge-resistance.h"
|
||||
#include "util.h"
|
||||
#include "frame.h"
|
||||
#include "frame-private.h"
|
||||
#include "errors.h"
|
||||
#include "workspace.h"
|
||||
#include "stack.h"
|
||||
@@ -206,21 +206,30 @@ meta_window_new (MetaDisplay *display,
|
||||
|
||||
meta_error_trap_push_with_return (display);
|
||||
|
||||
XGetWindowAttributes (display->xdisplay,
|
||||
xwindow, &attrs);
|
||||
|
||||
if (meta_error_trap_pop_with_return (display, TRUE) != Success)
|
||||
{
|
||||
meta_verbose ("Failed to get attributes for window 0x%lx\n",
|
||||
xwindow);
|
||||
meta_error_trap_pop (display, TRUE);
|
||||
meta_display_ungrab (display);
|
||||
return NULL;
|
||||
}
|
||||
window = meta_window_new_with_attrs (display, xwindow,
|
||||
if (XGetWindowAttributes (display->xdisplay,xwindow, &attrs))
|
||||
{
|
||||
if(meta_error_trap_pop_with_return (display, TRUE) != Success)
|
||||
{
|
||||
meta_verbose ("Failed to get attributes for window 0x%lx\n",
|
||||
xwindow);
|
||||
meta_error_trap_pop (display, TRUE);
|
||||
meta_display_ungrab (display);
|
||||
return NULL;
|
||||
}
|
||||
window = meta_window_new_with_attrs (display, xwindow,
|
||||
must_be_viewable, &attrs);
|
||||
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
meta_error_trap_pop_with_return (display, TRUE);
|
||||
meta_verbose ("Failed to get attributes for window 0x%lx\n",
|
||||
xwindow);
|
||||
meta_error_trap_pop (display, TRUE);
|
||||
meta_display_ungrab (display);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
||||
meta_error_trap_pop (display, FALSE);
|
||||
meta_display_ungrab (display);
|
||||
|
||||
@@ -287,8 +296,8 @@ meta_window_new_with_attrs (MetaDisplay *display,
|
||||
|
||||
/* WM_STATE isn't a cardinal, it's type WM_STATE, but is an int */
|
||||
if (!(meta_prop_get_cardinal_with_atom_type (display, xwindow,
|
||||
display->atom_wm_state,
|
||||
display->atom_wm_state,
|
||||
display->atom_WM_STATE,
|
||||
display->atom_WM_STATE,
|
||||
&state) &&
|
||||
(state == IconicState || state == NormalState)))
|
||||
{
|
||||
@@ -563,24 +572,24 @@ meta_window_new_with_attrs (MetaDisplay *display,
|
||||
* wm_client_machine, so push it slightly sooner.
|
||||
*/
|
||||
i = 0;
|
||||
initial_props[i++] = display->atom_wm_client_machine;
|
||||
initial_props[i++] = display->atom_net_wm_name;
|
||||
initial_props[i++] = display->atom_WM_CLIENT_MACHINE;
|
||||
initial_props[i++] = display->atom__NET_WM_NAME;
|
||||
initial_props[i++] = XA_WM_CLASS;
|
||||
initial_props[i++] = display->atom_net_wm_pid;
|
||||
initial_props[i++] = display->atom__NET_WM_PID;
|
||||
initial_props[i++] = XA_WM_NAME;
|
||||
initial_props[i++] = display->atom_net_wm_icon_name;
|
||||
initial_props[i++] = display->atom__NET_WM_ICON_NAME;
|
||||
initial_props[i++] = XA_WM_ICON_NAME;
|
||||
initial_props[i++] = display->atom_net_wm_desktop;
|
||||
initial_props[i++] = display->atom_net_startup_id;
|
||||
initial_props[i++] = display->atom_net_wm_sync_request_counter;
|
||||
initial_props[i++] = display->atom__NET_WM_DESKTOP;
|
||||
initial_props[i++] = display->atom__NET_STARTUP_ID;
|
||||
initial_props[i++] = display->atom__NET_WM_SYNC_REQUEST_COUNTER;
|
||||
initial_props[i++] = XA_WM_NORMAL_HINTS;
|
||||
initial_props[i++] = display->atom_wm_protocols;
|
||||
initial_props[i++] = display->atom_WM_PROTOCOLS;
|
||||
initial_props[i++] = XA_WM_HINTS;
|
||||
initial_props[i++] = display->atom_net_wm_user_time;
|
||||
initial_props[i++] = display->atom_net_wm_state;
|
||||
initial_props[i++] = display->atom_motif_wm_hints;
|
||||
initial_props[i++] = display->atom__NET_WM_USER_TIME;
|
||||
initial_props[i++] = display->atom__NET_WM_STATE;
|
||||
initial_props[i++] = display->atom__MOTIF_WM_HINTS;
|
||||
initial_props[i++] = XA_WM_TRANSIENT_FOR;
|
||||
initial_props[i++] = display->atom_net_wm_user_time_window;
|
||||
initial_props[i++] = display->atom__NET_WM_USER_TIME_WINDOW;
|
||||
g_assert (N_INITIAL_PROPS == i);
|
||||
|
||||
meta_window_reload_properties (window, initial_props, N_INITIAL_PROPS);
|
||||
@@ -627,17 +636,20 @@ meta_window_new_with_attrs (MetaDisplay *display,
|
||||
parent = meta_display_lookup_x_window (window->display,
|
||||
window->xtransient_for);
|
||||
|
||||
// First, maybe the app was launched with startup notification using an
|
||||
// obsolete version of the spec; use that timestamp if it exists.
|
||||
/* First, maybe the app was launched with startup notification using an
|
||||
* obsolete version of the spec; use that timestamp if it exists.
|
||||
*/
|
||||
if (window->initial_timestamp_set)
|
||||
// NOTE: Do NOT toggle net_wm_user_time_set to true; this is just
|
||||
// being recorded as a fallback for potential transients
|
||||
/* NOTE: Do NOT toggle net_wm_user_time_set to true; this is just
|
||||
* being recorded as a fallback for potential transients
|
||||
*/
|
||||
window->net_wm_user_time = window->initial_timestamp;
|
||||
else if (parent != NULL)
|
||||
meta_window_set_user_time(window, parent->net_wm_user_time);
|
||||
else
|
||||
// NOTE: Do NOT toggle net_wm_user_time_set to true; this is just
|
||||
// being recorded as a fallback for potential transients
|
||||
/* NOTE: Do NOT toggle net_wm_user_time_set to true; this is just
|
||||
* being recorded as a fallback for potential transients
|
||||
*/
|
||||
window->net_wm_user_time =
|
||||
meta_display_get_current_time_roundtrip (window->display);
|
||||
}
|
||||
@@ -796,8 +808,11 @@ meta_window_new_with_attrs (MetaDisplay *display,
|
||||
* However, we shouldn't unminimize windows here when opening
|
||||
* a new display because that breaks passing _NET_WM_STATE_HIDDEN
|
||||
* between window managers when replacing them; see bug 358042.
|
||||
*
|
||||
* And we shouldn't unminimize windows if they were initially
|
||||
* iconic.
|
||||
*/
|
||||
if (!display->display_opening)
|
||||
if (!display->display_opening && !window->initially_iconic)
|
||||
unminimize_window_and_all_transient_parents (window);
|
||||
|
||||
meta_error_trap_pop (display, FALSE); /* pop the XSync()-reducing trap */
|
||||
@@ -1040,7 +1055,11 @@ meta_window_free (MetaWindow *window,
|
||||
g_assert (window->display->grab_window != window);
|
||||
|
||||
if (window->display->focus_window == window)
|
||||
window->display->focus_window = NULL;
|
||||
{
|
||||
window->display->focus_window = NULL;
|
||||
meta_compositor_set_active_window (window->display->compositor,
|
||||
window->screen, NULL);
|
||||
}
|
||||
|
||||
if (window->maximized_horizontally || window->maximized_vertically)
|
||||
unmaximize_window_before_freeing (window);
|
||||
@@ -1088,10 +1107,10 @@ meta_window_free (MetaWindow *window,
|
||||
meta_verbose ("Cleaning state from window %s\n", window->desc);
|
||||
XDeleteProperty (window->display->xdisplay,
|
||||
window->xwindow,
|
||||
window->display->atom_net_wm_desktop);
|
||||
window->display->atom__NET_WM_DESKTOP);
|
||||
XDeleteProperty (window->display->xdisplay,
|
||||
window->xwindow,
|
||||
window->display->atom_net_wm_state);
|
||||
window->display->atom__NET_WM_STATE);
|
||||
set_wm_state (window, WithdrawnState);
|
||||
meta_error_trap_pop (window->display, FALSE);
|
||||
}
|
||||
@@ -1195,8 +1214,8 @@ set_wm_state (MetaWindow *window,
|
||||
|
||||
meta_error_trap_push (window->display);
|
||||
XChangeProperty (window->display->xdisplay, window->xwindow,
|
||||
window->display->atom_wm_state,
|
||||
window->display->atom_wm_state,
|
||||
window->display->atom_WM_STATE,
|
||||
window->display->atom_WM_STATE,
|
||||
32, PropModeReplace, (guchar*) data, 2);
|
||||
meta_error_trap_pop (window->display, FALSE);
|
||||
}
|
||||
@@ -1210,57 +1229,57 @@ set_net_wm_state (MetaWindow *window)
|
||||
i = 0;
|
||||
if (window->shaded)
|
||||
{
|
||||
data[i] = window->display->atom_net_wm_state_shaded;
|
||||
data[i] = window->display->atom__NET_WM_STATE_SHADED;
|
||||
++i;
|
||||
}
|
||||
if (window->wm_state_modal)
|
||||
{
|
||||
data[i] = window->display->atom_net_wm_state_modal;
|
||||
data[i] = window->display->atom__NET_WM_STATE_MODAL;
|
||||
++i;
|
||||
}
|
||||
if (window->skip_pager)
|
||||
{
|
||||
data[i] = window->display->atom_net_wm_state_skip_pager;
|
||||
data[i] = window->display->atom__NET_WM_STATE_SKIP_PAGER;
|
||||
++i;
|
||||
}
|
||||
if (window->skip_taskbar)
|
||||
{
|
||||
data[i] = window->display->atom_net_wm_state_skip_taskbar;
|
||||
data[i] = window->display->atom__NET_WM_STATE_SKIP_TASKBAR;
|
||||
++i;
|
||||
}
|
||||
if (window->maximized_horizontally)
|
||||
{
|
||||
data[i] = window->display->atom_net_wm_state_maximized_horz;
|
||||
data[i] = window->display->atom__NET_WM_STATE_MAXIMIZED_HORZ;
|
||||
++i;
|
||||
}
|
||||
if (window->maximized_vertically)
|
||||
{
|
||||
data[i] = window->display->atom_net_wm_state_maximized_vert;
|
||||
data[i] = window->display->atom__NET_WM_STATE_MAXIMIZED_VERT;
|
||||
++i;
|
||||
}
|
||||
if (window->fullscreen)
|
||||
{
|
||||
data[i] = window->display->atom_net_wm_state_fullscreen;
|
||||
data[i] = window->display->atom__NET_WM_STATE_FULLSCREEN;
|
||||
++i;
|
||||
}
|
||||
if (!meta_window_showing_on_its_workspace (window) || window->shaded)
|
||||
{
|
||||
data[i] = window->display->atom_net_wm_state_hidden;
|
||||
data[i] = window->display->atom__NET_WM_STATE_HIDDEN;
|
||||
++i;
|
||||
}
|
||||
if (window->wm_state_above)
|
||||
{
|
||||
data[i] = window->display->atom_net_wm_state_above;
|
||||
data[i] = window->display->atom__NET_WM_STATE_ABOVE;
|
||||
++i;
|
||||
}
|
||||
if (window->wm_state_below)
|
||||
{
|
||||
data[i] = window->display->atom_net_wm_state_below;
|
||||
data[i] = window->display->atom__NET_WM_STATE_BELOW;
|
||||
++i;
|
||||
}
|
||||
if (window->wm_state_demands_attention)
|
||||
{
|
||||
data[i] = window->display->atom_net_wm_state_demands_attention;
|
||||
data[i] = window->display->atom__NET_WM_STATE_DEMANDS_ATTENTION;
|
||||
++i;
|
||||
}
|
||||
|
||||
@@ -1268,7 +1287,7 @@ set_net_wm_state (MetaWindow *window)
|
||||
|
||||
meta_error_trap_push (window->display);
|
||||
XChangeProperty (window->display->xdisplay, window->xwindow,
|
||||
window->display->atom_net_wm_state,
|
||||
window->display->atom__NET_WM_STATE,
|
||||
XA_ATOM,
|
||||
32, PropModeReplace, (guchar*) data, i);
|
||||
meta_error_trap_pop (window->display, FALSE);
|
||||
@@ -2006,7 +2025,7 @@ window_would_be_covered (const MetaWindow *newbie)
|
||||
{
|
||||
MetaWindow *w = tmp->data;
|
||||
|
||||
if (w->wm_state_above)
|
||||
if (w->wm_state_above && w != newbie)
|
||||
{
|
||||
/* We have found a window that is "above". Perhaps it overlaps. */
|
||||
if (windows_overlap (w, newbie))
|
||||
@@ -3081,9 +3100,9 @@ send_sync_request (MetaWindow *window)
|
||||
|
||||
ev.type = ClientMessage;
|
||||
ev.window = window->xwindow;
|
||||
ev.message_type = window->display->atom_wm_protocols;
|
||||
ev.message_type = window->display->atom_WM_PROTOCOLS;
|
||||
ev.format = 32;
|
||||
ev.data.l[0] = window->display->atom_net_wm_sync_request;
|
||||
ev.data.l[0] = window->display->atom__NET_WM_SYNC_REQUEST;
|
||||
/* FIXME: meta_display_get_current_time() is bad, but since calls
|
||||
* come from meta_window_move_resize_internal (which in turn come
|
||||
* from all over), I'm not sure what we can do to fix it. Do we
|
||||
@@ -4079,7 +4098,7 @@ meta_window_focus (MetaWindow *window,
|
||||
"Sending WM_TAKE_FOCUS to %s since take_focus = true\n",
|
||||
window->desc);
|
||||
meta_window_send_icccm_message (window,
|
||||
window->display->atom_wm_take_focus,
|
||||
window->display->atom_WM_TAKE_FOCUS,
|
||||
timestamp);
|
||||
window->display->expected_focus_window = window;
|
||||
}
|
||||
@@ -4271,7 +4290,7 @@ update_net_frame_extents (MetaWindow *window)
|
||||
|
||||
meta_error_trap_push (window->display);
|
||||
XChangeProperty (window->display->xdisplay, window->xwindow,
|
||||
window->display->atom_net_frame_extents,
|
||||
window->display->atom__NET_FRAME_EXTENTS,
|
||||
XA_CARDINAL,
|
||||
32, PropModeReplace, (guchar*) data, 4);
|
||||
meta_error_trap_pop (window->display, FALSE);
|
||||
@@ -4298,7 +4317,7 @@ meta_window_set_current_workspace_hint (MetaWindow *window)
|
||||
|
||||
meta_error_trap_push (window->display);
|
||||
XChangeProperty (window->display->xdisplay, window->xwindow,
|
||||
window->display->atom_net_wm_desktop,
|
||||
window->display->atom__NET_WM_DESKTOP,
|
||||
XA_CARDINAL,
|
||||
32, PropModeReplace, (guchar*) data, 1);
|
||||
meta_error_trap_pop (window->display, FALSE);
|
||||
@@ -4402,7 +4421,7 @@ meta_window_send_icccm_message (MetaWindow *window,
|
||||
|
||||
ev.type = ClientMessage;
|
||||
ev.window = window->xwindow;
|
||||
ev.message_type = window->display->atom_wm_protocols;
|
||||
ev.message_type = window->display->atom_WM_PROTOCOLS;
|
||||
ev.format = 32;
|
||||
ev.data.l[0] = atom;
|
||||
ev.data.l[1] = timestamp;
|
||||
@@ -4690,7 +4709,7 @@ meta_window_client_message (MetaWindow *window,
|
||||
display = window->display;
|
||||
|
||||
if (event->xclient.message_type ==
|
||||
display->atom_net_close_window)
|
||||
display->atom__NET_CLOSE_WINDOW)
|
||||
{
|
||||
guint32 timestamp;
|
||||
|
||||
@@ -4710,7 +4729,7 @@ meta_window_client_message (MetaWindow *window,
|
||||
return TRUE;
|
||||
}
|
||||
else if (event->xclient.message_type ==
|
||||
display->atom_net_wm_desktop)
|
||||
display->atom__NET_WM_DESKTOP)
|
||||
{
|
||||
int space;
|
||||
MetaWorkspace *workspace;
|
||||
@@ -4745,7 +4764,7 @@ meta_window_client_message (MetaWindow *window,
|
||||
return TRUE;
|
||||
}
|
||||
else if (event->xclient.message_type ==
|
||||
display->atom_net_wm_state)
|
||||
display->atom__NET_WM_STATE)
|
||||
{
|
||||
gulong action;
|
||||
Atom first;
|
||||
@@ -4779,8 +4798,8 @@ meta_window_client_message (MetaWindow *window,
|
||||
meta_XFree (str2);
|
||||
}
|
||||
|
||||
if (first == display->atom_net_wm_state_shaded ||
|
||||
second == display->atom_net_wm_state_shaded)
|
||||
if (first == display->atom__NET_WM_STATE_SHADED ||
|
||||
second == display->atom__NET_WM_STATE_SHADED)
|
||||
{
|
||||
gboolean shade;
|
||||
guint32 timestamp;
|
||||
@@ -4799,8 +4818,8 @@ meta_window_client_message (MetaWindow *window,
|
||||
meta_window_unshade (window, timestamp);
|
||||
}
|
||||
|
||||
if (first == display->atom_net_wm_state_fullscreen ||
|
||||
second == display->atom_net_wm_state_fullscreen)
|
||||
if (first == display->atom__NET_WM_STATE_FULLSCREEN ||
|
||||
second == display->atom__NET_WM_STATE_FULLSCREEN)
|
||||
{
|
||||
gboolean make_fullscreen;
|
||||
|
||||
@@ -4812,8 +4831,8 @@ meta_window_client_message (MetaWindow *window,
|
||||
meta_window_unmake_fullscreen (window);
|
||||
}
|
||||
|
||||
if (first == display->atom_net_wm_state_maximized_horz ||
|
||||
second == display->atom_net_wm_state_maximized_horz)
|
||||
if (first == display->atom__NET_WM_STATE_MAXIMIZED_HORZ ||
|
||||
second == display->atom__NET_WM_STATE_MAXIMIZED_HORZ)
|
||||
{
|
||||
gboolean max;
|
||||
|
||||
@@ -4834,8 +4853,8 @@ meta_window_client_message (MetaWindow *window,
|
||||
}
|
||||
}
|
||||
|
||||
if (first == display->atom_net_wm_state_maximized_vert ||
|
||||
second == display->atom_net_wm_state_maximized_vert)
|
||||
if (first == display->atom__NET_WM_STATE_MAXIMIZED_VERT ||
|
||||
second == display->atom__NET_WM_STATE_MAXIMIZED_VERT)
|
||||
{
|
||||
gboolean max;
|
||||
|
||||
@@ -4856,8 +4875,8 @@ meta_window_client_message (MetaWindow *window,
|
||||
}
|
||||
}
|
||||
|
||||
if (first == display->atom_net_wm_state_modal ||
|
||||
second == display->atom_net_wm_state_modal)
|
||||
if (first == display->atom__NET_WM_STATE_MODAL ||
|
||||
second == display->atom__NET_WM_STATE_MODAL)
|
||||
{
|
||||
window->wm_state_modal =
|
||||
(action == _NET_WM_STATE_ADD) ||
|
||||
@@ -4867,8 +4886,8 @@ meta_window_client_message (MetaWindow *window,
|
||||
meta_window_queue(window, META_QUEUE_MOVE_RESIZE);
|
||||
}
|
||||
|
||||
if (first == display->atom_net_wm_state_skip_pager ||
|
||||
second == display->atom_net_wm_state_skip_pager)
|
||||
if (first == display->atom__NET_WM_STATE_SKIP_PAGER ||
|
||||
second == display->atom__NET_WM_STATE_SKIP_PAGER)
|
||||
{
|
||||
window->wm_state_skip_pager =
|
||||
(action == _NET_WM_STATE_ADD) ||
|
||||
@@ -4878,8 +4897,8 @@ meta_window_client_message (MetaWindow *window,
|
||||
set_net_wm_state (window);
|
||||
}
|
||||
|
||||
if (first == display->atom_net_wm_state_skip_taskbar ||
|
||||
second == display->atom_net_wm_state_skip_taskbar)
|
||||
if (first == display->atom__NET_WM_STATE_SKIP_TASKBAR ||
|
||||
second == display->atom__NET_WM_STATE_SKIP_TASKBAR)
|
||||
{
|
||||
window->wm_state_skip_taskbar =
|
||||
(action == _NET_WM_STATE_ADD) ||
|
||||
@@ -4889,8 +4908,8 @@ meta_window_client_message (MetaWindow *window,
|
||||
set_net_wm_state (window);
|
||||
}
|
||||
|
||||
if (first == display->atom_net_wm_state_above ||
|
||||
second == display->atom_net_wm_state_above)
|
||||
if (first == display->atom__NET_WM_STATE_ABOVE ||
|
||||
second == display->atom__NET_WM_STATE_ABOVE)
|
||||
{
|
||||
window->wm_state_above =
|
||||
(action == _NET_WM_STATE_ADD) ||
|
||||
@@ -4900,8 +4919,8 @@ meta_window_client_message (MetaWindow *window,
|
||||
set_net_wm_state (window);
|
||||
}
|
||||
|
||||
if (first == display->atom_net_wm_state_below ||
|
||||
second == display->atom_net_wm_state_below)
|
||||
if (first == display->atom__NET_WM_STATE_BELOW ||
|
||||
second == display->atom__NET_WM_STATE_BELOW)
|
||||
{
|
||||
window->wm_state_below =
|
||||
(action == _NET_WM_STATE_ADD) ||
|
||||
@@ -4911,8 +4930,8 @@ meta_window_client_message (MetaWindow *window,
|
||||
set_net_wm_state (window);
|
||||
}
|
||||
|
||||
if (first == display->atom_net_wm_state_demands_attention ||
|
||||
second == display->atom_net_wm_state_demands_attention)
|
||||
if (first == display->atom__NET_WM_STATE_DEMANDS_ATTENTION ||
|
||||
second == display->atom__NET_WM_STATE_DEMANDS_ATTENTION)
|
||||
{
|
||||
if ((action == _NET_WM_STATE_ADD) ||
|
||||
(action == _NET_WM_STATE_TOGGLE && !window->wm_state_demands_attention))
|
||||
@@ -4924,7 +4943,7 @@ meta_window_client_message (MetaWindow *window,
|
||||
return TRUE;
|
||||
}
|
||||
else if (event->xclient.message_type ==
|
||||
display->atom_wm_change_state)
|
||||
display->atom_WM_CHANGE_STATE)
|
||||
{
|
||||
meta_verbose ("WM_CHANGE_STATE client message, state: %ld\n",
|
||||
event->xclient.data.l[0]);
|
||||
@@ -4935,7 +4954,7 @@ meta_window_client_message (MetaWindow *window,
|
||||
return TRUE;
|
||||
}
|
||||
else if (event->xclient.message_type ==
|
||||
display->atom_net_wm_moveresize)
|
||||
display->atom__NET_WM_MOVERESIZE)
|
||||
{
|
||||
int x_root;
|
||||
int y_root;
|
||||
@@ -5070,7 +5089,7 @@ meta_window_client_message (MetaWindow *window,
|
||||
return TRUE;
|
||||
}
|
||||
else if (event->xclient.message_type ==
|
||||
display->atom_net_moveresize_window)
|
||||
display->atom__NET_MOVERESIZE_WINDOW)
|
||||
{
|
||||
int gravity, source;
|
||||
guint value_mask;
|
||||
@@ -5085,13 +5104,13 @@ meta_window_client_message (MetaWindow *window,
|
||||
meta_window_move_resize_request(window,
|
||||
value_mask,
|
||||
gravity,
|
||||
event->xclient.data.l[1], // x
|
||||
event->xclient.data.l[2], // y
|
||||
event->xclient.data.l[3], // width
|
||||
event->xclient.data.l[4]); // height
|
||||
event->xclient.data.l[1], /* x */
|
||||
event->xclient.data.l[2], /* y */
|
||||
event->xclient.data.l[3], /* width */
|
||||
event->xclient.data.l[4]); /* height */
|
||||
}
|
||||
else if (event->xclient.message_type ==
|
||||
display->atom_net_active_window)
|
||||
display->atom__NET_ACTIVE_WINDOW)
|
||||
{
|
||||
MetaClientType source_indication;
|
||||
guint32 timestamp;
|
||||
@@ -5200,6 +5219,8 @@ meta_window_notify_focus (MetaWindow *window,
|
||||
"* Focus --> %s\n", window->desc);
|
||||
window->display->focus_window = window;
|
||||
window->has_focus = TRUE;
|
||||
meta_compositor_set_active_window (window->display->compositor,
|
||||
window->screen, window);
|
||||
|
||||
/* Move to the front of the focusing workspace's MRU list.
|
||||
* We should only be "removing" it from the MRU list if it's
|
||||
@@ -5284,6 +5305,9 @@ meta_window_notify_focus (MetaWindow *window,
|
||||
if (window->frame)
|
||||
meta_frame_queue_draw (window->frame);
|
||||
|
||||
meta_compositor_set_active_window (window->display->compositor,
|
||||
window->screen, NULL);
|
||||
|
||||
meta_error_trap_push (window->display);
|
||||
XUninstallColormap (window->display->xdisplay,
|
||||
window->colormap);
|
||||
@@ -5312,7 +5336,7 @@ process_property_notify (MetaWindow *window,
|
||||
/* First, property notifies to ignore because we shouldn't honor
|
||||
* new values
|
||||
*/
|
||||
if (event->atom == window->display->atom_net_wm_state)
|
||||
if (event->atom == window->display->atom__NET_WM_STATE)
|
||||
{
|
||||
meta_verbose ("Property notify on %s for _NET_WM_STATE, ignoring (we should be the one who set the property in the first place)\n",
|
||||
window->desc);
|
||||
@@ -5333,10 +5357,10 @@ process_property_notify (MetaWindow *window,
|
||||
if (!window->using_net_wm_name)
|
||||
meta_window_reload_property (window, XA_WM_NAME);
|
||||
}
|
||||
else if (event->atom == window->display->atom_net_wm_name)
|
||||
else if (event->atom == window->display->atom__NET_WM_NAME)
|
||||
{
|
||||
meta_verbose ("Property notify on %s for NET_WM_NAME\n", window->desc);
|
||||
meta_window_reload_property (window, window->display->atom_net_wm_name);
|
||||
meta_window_reload_property (window, window->display->atom__NET_WM_NAME);
|
||||
|
||||
/* if _NET_WM_NAME was unset, reload WM_NAME */
|
||||
if (!window->using_net_wm_name)
|
||||
@@ -5350,10 +5374,10 @@ process_property_notify (MetaWindow *window,
|
||||
if (!window->using_net_wm_icon_name)
|
||||
meta_window_reload_property (window, XA_WM_ICON_NAME);
|
||||
}
|
||||
else if (event->atom == window->display->atom_net_wm_icon_name)
|
||||
else if (event->atom == window->display->atom__NET_WM_ICON_NAME)
|
||||
{
|
||||
meta_verbose ("Property notify on %s for NET_WM_ICON_NAME\n", window->desc);
|
||||
meta_window_reload_property (window, window->display->atom_net_wm_icon_name);
|
||||
meta_window_reload_property (window, window->display->atom__NET_WM_ICON_NAME);
|
||||
|
||||
/* if _NET_WM_ICON_NAME was unset, reload WM_ICON_NAME */
|
||||
if (!window->using_net_wm_icon_name)
|
||||
@@ -5368,11 +5392,11 @@ process_property_notify (MetaWindow *window,
|
||||
/* See if we need to constrain current size */
|
||||
meta_window_queue(window, META_QUEUE_MOVE_RESIZE);
|
||||
}
|
||||
else if (event->atom == window->display->atom_wm_protocols)
|
||||
else if (event->atom == window->display->atom_WM_PROTOCOLS)
|
||||
{
|
||||
meta_verbose ("Property notify on %s for WM_PROTOCOLS\n", window->desc);
|
||||
|
||||
meta_window_reload_property (window, window->display->atom_wm_protocols);
|
||||
meta_window_reload_property (window, window->display->atom_WM_PROTOCOLS);
|
||||
}
|
||||
else if (event->atom == XA_WM_HINTS)
|
||||
{
|
||||
@@ -5380,12 +5404,12 @@ process_property_notify (MetaWindow *window,
|
||||
|
||||
meta_window_reload_property (window, XA_WM_HINTS);
|
||||
}
|
||||
else if (event->atom == window->display->atom_motif_wm_hints)
|
||||
else if (event->atom == window->display->atom__MOTIF_WM_HINTS)
|
||||
{
|
||||
meta_verbose ("Property notify on %s for MOTIF_WM_HINTS\n", window->desc);
|
||||
|
||||
meta_window_reload_property (window,
|
||||
window->display->atom_motif_wm_hints);
|
||||
window->display->atom__MOTIF_WM_HINTS);
|
||||
}
|
||||
else if (event->atom == XA_WM_CLASS)
|
||||
{
|
||||
@@ -5400,26 +5424,26 @@ process_property_notify (MetaWindow *window,
|
||||
meta_window_reload_property (window, XA_WM_TRANSIENT_FOR);
|
||||
}
|
||||
else if (event->atom ==
|
||||
window->display->atom_wm_window_role)
|
||||
window->display->atom_WM_WINDOW_ROLE)
|
||||
{
|
||||
meta_verbose ("Property notify on %s for WM_WINDOW_ROLE\n", window->desc);
|
||||
|
||||
update_role (window);
|
||||
}
|
||||
else if (event->atom ==
|
||||
window->display->atom_wm_client_leader ||
|
||||
window->display->atom_WM_CLIENT_LEADER ||
|
||||
event->atom ==
|
||||
window->display->atom_sm_client_id)
|
||||
window->display->atom_SM_CLIENT_ID)
|
||||
{
|
||||
meta_warning ("Broken client! Window %s changed client leader window or SM client ID\n", window->desc);
|
||||
}
|
||||
else if (event->atom ==
|
||||
window->display->atom_net_wm_window_type)
|
||||
window->display->atom__NET_WM_WINDOW_TYPE)
|
||||
{
|
||||
meta_verbose ("Property notify on %s for NET_WM_WINDOW_TYPE\n", window->desc);
|
||||
update_net_wm_type (window);
|
||||
}
|
||||
else if (event->atom == window->display->atom_net_wm_icon)
|
||||
else if (event->atom == window->display->atom__NET_WM_ICON)
|
||||
{
|
||||
meta_verbose ("Property notify on %s for NET_WM_ICON\n", window->desc);
|
||||
meta_icon_cache_property_changed (&window->icon_cache,
|
||||
@@ -5427,7 +5451,7 @@ process_property_notify (MetaWindow *window,
|
||||
event->atom);
|
||||
meta_window_queue(window, META_QUEUE_UPDATE_ICON);
|
||||
}
|
||||
else if (event->atom == window->display->atom_kwm_win_icon)
|
||||
else if (event->atom == window->display->atom__KWM_WIN_ICON)
|
||||
{
|
||||
meta_verbose ("Property notify on %s for KWM_WIN_ICON\n", window->desc);
|
||||
|
||||
@@ -5436,41 +5460,41 @@ process_property_notify (MetaWindow *window,
|
||||
event->atom);
|
||||
meta_window_queue(window, META_QUEUE_UPDATE_ICON);
|
||||
}
|
||||
else if ((event->atom == window->display->atom_net_wm_strut) ||
|
||||
(event->atom == window->display->atom_net_wm_strut_partial))
|
||||
else if ((event->atom == window->display->atom__NET_WM_STRUT) ||
|
||||
(event->atom == window->display->atom__NET_WM_STRUT_PARTIAL))
|
||||
{
|
||||
meta_verbose ("Property notify on %s for _NET_WM_STRUT\n", window->desc);
|
||||
meta_window_update_struts (window);
|
||||
}
|
||||
else if (event->atom == window->display->atom_net_startup_id)
|
||||
else if (event->atom == window->display->atom__NET_STARTUP_ID)
|
||||
{
|
||||
meta_verbose ("Property notify on %s for _NET_STARTUP_ID\n", window->desc);
|
||||
|
||||
meta_window_reload_property (window,
|
||||
window->display->atom_net_startup_id);
|
||||
window->display->atom__NET_STARTUP_ID);
|
||||
}
|
||||
else if (event->atom == window->display->atom_net_wm_sync_request_counter)
|
||||
else if (event->atom == window->display->atom__NET_WM_SYNC_REQUEST_COUNTER)
|
||||
{
|
||||
meta_verbose ("Property notify on %s for _NET_WM_SYNC_REQUEST_COUNTER\n", window->desc);
|
||||
|
||||
meta_window_reload_property (window,
|
||||
window->display->atom_net_wm_sync_request_counter);
|
||||
window->display->atom__NET_WM_SYNC_REQUEST_COUNTER);
|
||||
}
|
||||
else if (event->atom == window->display->atom_net_wm_user_time)
|
||||
else if (event->atom == window->display->atom__NET_WM_USER_TIME)
|
||||
{
|
||||
Window xid;
|
||||
Atom atom_net_wm_user_time;
|
||||
Atom atom__NET_WM_USER_TIME;
|
||||
|
||||
meta_verbose ("Property notify on %s for _NET_WM_USER_TIME\n", window->desc);
|
||||
|
||||
atom_net_wm_user_time = window->display->atom_net_wm_user_time;
|
||||
atom__NET_WM_USER_TIME = window->display->atom__NET_WM_USER_TIME;
|
||||
if (window->user_time_window)
|
||||
xid = window->user_time_window;
|
||||
else
|
||||
xid = window->xwindow;
|
||||
meta_window_reload_property_from_xwindow (window,
|
||||
xid,
|
||||
atom_net_wm_user_time);
|
||||
atom__NET_WM_USER_TIME);
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
@@ -5534,7 +5558,7 @@ meta_window_get_icon_geometry (MetaWindow *window,
|
||||
|
||||
if (meta_prop_get_cardinal_list (window->display,
|
||||
window->xwindow,
|
||||
window->display->atom_net_wm_icon_geometry,
|
||||
window->display->atom__NET_WM_ICON_GEOMETRY,
|
||||
&geometry, &nitems))
|
||||
{
|
||||
if (nitems != 4)
|
||||
@@ -5568,7 +5592,7 @@ read_client_leader (MetaDisplay *display,
|
||||
Window retval = None;
|
||||
|
||||
meta_prop_get_window (display, xwindow,
|
||||
display->atom_wm_client_leader,
|
||||
display->atom_WM_CLIENT_LEADER,
|
||||
&retval);
|
||||
|
||||
return retval;
|
||||
@@ -5623,7 +5647,7 @@ update_sm_hints (MetaWindow *window)
|
||||
window->xclient_leader = leader;
|
||||
|
||||
if (meta_prop_get_latin1_string (window->display, leader,
|
||||
window->display->atom_sm_client_id,
|
||||
window->display->atom_SM_CLIENT_ID,
|
||||
&str))
|
||||
{
|
||||
window->sm_client_id = g_strdup (str);
|
||||
@@ -5643,7 +5667,7 @@ update_sm_hints (MetaWindow *window)
|
||||
|
||||
str = NULL;
|
||||
if (meta_prop_get_latin1_string (window->display, window->xwindow,
|
||||
window->display->atom_sm_client_id,
|
||||
window->display->atom_SM_CLIENT_ID,
|
||||
&str))
|
||||
{
|
||||
if (window->sm_client_id == NULL) /* first time through */
|
||||
@@ -5671,7 +5695,7 @@ update_role (MetaWindow *window)
|
||||
window->role = NULL;
|
||||
|
||||
if (meta_prop_get_latin1_string (window->display, window->xwindow,
|
||||
window->display->atom_wm_window_role,
|
||||
window->display->atom_WM_WINDOW_ROLE,
|
||||
&str))
|
||||
{
|
||||
window->role = g_strdup (str);
|
||||
@@ -5694,7 +5718,7 @@ update_net_wm_type (MetaWindow *window)
|
||||
atoms = NULL;
|
||||
|
||||
meta_prop_get_atom_list (window->display, window->xwindow,
|
||||
window->display->atom_net_wm_window_type,
|
||||
window->display->atom__NET_WM_WINDOW_TYPE,
|
||||
&atoms, &n_atoms);
|
||||
|
||||
i = 0;
|
||||
@@ -5703,14 +5727,14 @@ update_net_wm_type (MetaWindow *window)
|
||||
/* We break as soon as we find one we recognize,
|
||||
* supposed to prefer those near the front of the list
|
||||
*/
|
||||
if (atoms[i] == window->display->atom_net_wm_window_type_desktop ||
|
||||
atoms[i] == window->display->atom_net_wm_window_type_dock ||
|
||||
atoms[i] == window->display->atom_net_wm_window_type_toolbar ||
|
||||
atoms[i] == window->display->atom_net_wm_window_type_menu ||
|
||||
atoms[i] == window->display->atom_net_wm_window_type_dialog ||
|
||||
atoms[i] == window->display->atom_net_wm_window_type_normal ||
|
||||
atoms[i] == window->display->atom_net_wm_window_type_utility ||
|
||||
atoms[i] == window->display->atom_net_wm_window_type_splash)
|
||||
if (atoms[i] == window->display->atom__NET_WM_WINDOW_TYPE_DESKTOP ||
|
||||
atoms[i] == window->display->atom__NET_WM_WINDOW_TYPE_DOCK ||
|
||||
atoms[i] == window->display->atom__NET_WM_WINDOW_TYPE_TOOLBAR ||
|
||||
atoms[i] == window->display->atom__NET_WM_WINDOW_TYPE_MENU ||
|
||||
atoms[i] == window->display->atom__NET_WM_WINDOW_TYPE_DIALOG ||
|
||||
atoms[i] == window->display->atom__NET_WM_WINDOW_TYPE_NORMAL ||
|
||||
atoms[i] == window->display->atom__NET_WM_WINDOW_TYPE_UTILITY ||
|
||||
atoms[i] == window->display->atom__NET_WM_WINDOW_TYPE_SPLASH)
|
||||
{
|
||||
window->type_atom = atoms[i];
|
||||
break;
|
||||
@@ -5869,7 +5893,7 @@ meta_window_update_struts (MetaWindow *window)
|
||||
|
||||
if (meta_prop_get_cardinal_list (window->display,
|
||||
window->xwindow,
|
||||
window->display->atom_net_wm_strut_partial,
|
||||
window->display->atom__NET_WM_STRUT_PARTIAL,
|
||||
&struts, &nitems))
|
||||
{
|
||||
if (nitems != 12)
|
||||
@@ -5892,7 +5916,7 @@ meta_window_update_struts (MetaWindow *window)
|
||||
strut_end = struts[4+(i*2)+1];
|
||||
|
||||
temp = g_new (MetaStrut, 1);
|
||||
temp->side = 1 << i; // See MetaDirection def. Matches nicely, eh?
|
||||
temp->side = 1 << i; /* See MetaDirection def. Matches nicely, eh? */
|
||||
temp->rect = window->screen->rect;
|
||||
switch (temp->side)
|
||||
{
|
||||
@@ -5935,7 +5959,7 @@ meta_window_update_struts (MetaWindow *window)
|
||||
if (!new_struts &&
|
||||
meta_prop_get_cardinal_list (window->display,
|
||||
window->xwindow,
|
||||
window->display->atom_net_wm_strut,
|
||||
window->display->atom__NET_WM_STRUT,
|
||||
&struts, &nitems))
|
||||
{
|
||||
if (nitems != 4)
|
||||
@@ -6039,21 +6063,21 @@ recalc_window_type (MetaWindow *window)
|
||||
|
||||
if (window->type_atom != None)
|
||||
{
|
||||
if (window->type_atom == window->display->atom_net_wm_window_type_desktop)
|
||||
if (window->type_atom == window->display->atom__NET_WM_WINDOW_TYPE_DESKTOP)
|
||||
window->type = META_WINDOW_DESKTOP;
|
||||
else if (window->type_atom == window->display->atom_net_wm_window_type_dock)
|
||||
else if (window->type_atom == window->display->atom__NET_WM_WINDOW_TYPE_DOCK)
|
||||
window->type = META_WINDOW_DOCK;
|
||||
else if (window->type_atom == window->display->atom_net_wm_window_type_toolbar)
|
||||
else if (window->type_atom == window->display->atom__NET_WM_WINDOW_TYPE_TOOLBAR)
|
||||
window->type = META_WINDOW_TOOLBAR;
|
||||
else if (window->type_atom == window->display->atom_net_wm_window_type_menu)
|
||||
else if (window->type_atom == window->display->atom__NET_WM_WINDOW_TYPE_MENU)
|
||||
window->type = META_WINDOW_MENU;
|
||||
else if (window->type_atom == window->display->atom_net_wm_window_type_dialog)
|
||||
else if (window->type_atom == window->display->atom__NET_WM_WINDOW_TYPE_DIALOG)
|
||||
window->type = META_WINDOW_DIALOG;
|
||||
else if (window->type_atom == window->display->atom_net_wm_window_type_normal)
|
||||
else if (window->type_atom == window->display->atom__NET_WM_WINDOW_TYPE_NORMAL)
|
||||
window->type = META_WINDOW_NORMAL;
|
||||
else if (window->type_atom == window->display->atom_net_wm_window_type_utility)
|
||||
else if (window->type_atom == window->display->atom__NET_WM_WINDOW_TYPE_UTILITY)
|
||||
window->type = META_WINDOW_UTILITY;
|
||||
else if (window->type_atom == window->display->atom_net_wm_window_type_splash)
|
||||
else if (window->type_atom == window->display->atom__NET_WM_WINDOW_TYPE_SPLASH)
|
||||
window->type = META_WINDOW_SPLASHSCREEN;
|
||||
else
|
||||
meta_bug ("Set a type atom for %s that wasn't handled in recalc_window_type\n",
|
||||
@@ -6104,27 +6128,27 @@ set_allowed_actions_hint (MetaWindow *window)
|
||||
i = 0;
|
||||
if (window->has_move_func)
|
||||
{
|
||||
data[i] = window->display->atom_net_wm_action_move;
|
||||
data[i] = window->display->atom__NET_WM_ACTION_MOVE;
|
||||
++i;
|
||||
}
|
||||
if (window->has_resize_func)
|
||||
{
|
||||
data[i] = window->display->atom_net_wm_action_resize;
|
||||
data[i] = window->display->atom__NET_WM_ACTION_RESIZE;
|
||||
++i;
|
||||
}
|
||||
if (window->has_fullscreen_func)
|
||||
{
|
||||
data[i] = window->display->atom_net_wm_action_fullscreen;
|
||||
data[i] = window->display->atom__NET_WM_ACTION_FULLSCREEN;
|
||||
++i;
|
||||
}
|
||||
if (window->has_minimize_func)
|
||||
{
|
||||
data[i] = window->display->atom_net_wm_action_minimize;
|
||||
data[i] = window->display->atom__NET_WM_ACTION_MINIMIZE;
|
||||
++i;
|
||||
}
|
||||
if (window->has_shade_func)
|
||||
{
|
||||
data[i] = window->display->atom_net_wm_action_shade;
|
||||
data[i] = window->display->atom__NET_WM_ACTION_SHADE;
|
||||
++i;
|
||||
}
|
||||
/* sticky according to EWMH is different from metacity's sticky;
|
||||
@@ -6132,24 +6156,24 @@ set_allowed_actions_hint (MetaWindow *window)
|
||||
*/
|
||||
if (window->has_maximize_func)
|
||||
{
|
||||
data[i] = window->display->atom_net_wm_action_maximize_horz;
|
||||
data[i] = window->display->atom__NET_WM_ACTION_MAXIMIZE_HORZ;
|
||||
++i;
|
||||
data[i] = window->display->atom_net_wm_action_maximize_vert;
|
||||
data[i] = window->display->atom__NET_WM_ACTION_MAXIMIZE_VERT;
|
||||
++i;
|
||||
}
|
||||
/* We always allow this */
|
||||
data[i] = window->display->atom_net_wm_action_change_desktop;
|
||||
data[i] = window->display->atom__NET_WM_ACTION_CHANGE_DESKTOP;
|
||||
++i;
|
||||
if (window->has_close_func)
|
||||
{
|
||||
data[i] = window->display->atom_net_wm_action_close;
|
||||
data[i] = window->display->atom__NET_WM_ACTION_CLOSE;
|
||||
++i;
|
||||
}
|
||||
|
||||
/* I guess we always allow above/below operations */
|
||||
data[i] = window->display->atom_net_wm_action_above;
|
||||
data[i] = window->display->atom__NET_WM_ACTION_ABOVE;
|
||||
++i;
|
||||
data[i] = window->display->atom_net_wm_action_below;
|
||||
data[i] = window->display->atom__NET_WM_ACTION_BELOW;
|
||||
++i;
|
||||
|
||||
g_assert (i <= MAX_N_ACTIONS);
|
||||
@@ -6158,7 +6182,7 @@ set_allowed_actions_hint (MetaWindow *window)
|
||||
|
||||
meta_error_trap_push (window->display);
|
||||
XChangeProperty (window->display->xdisplay, window->xwindow,
|
||||
window->display->atom_net_wm_allowed_actions,
|
||||
window->display->atom__NET_WM_ALLOWED_ACTIONS,
|
||||
XA_ATOM,
|
||||
32, PropModeReplace, (guchar*) data, i);
|
||||
meta_error_trap_pop (window->display, FALSE);
|
||||
@@ -7784,7 +7808,7 @@ warp_grab_pointer (MetaWindow *window,
|
||||
|
||||
case META_GRAB_OP_KEYBOARD_RESIZING_S:
|
||||
*x = rect.width / 2;
|
||||
*y = rect.height;
|
||||
*y = rect.height - 1;
|
||||
break;
|
||||
|
||||
case META_GRAB_OP_KEYBOARD_RESIZING_N:
|
||||
@@ -7798,23 +7822,23 @@ warp_grab_pointer (MetaWindow *window,
|
||||
break;
|
||||
|
||||
case META_GRAB_OP_KEYBOARD_RESIZING_E:
|
||||
*x = rect.width;
|
||||
*x = rect.width - 1;
|
||||
*y = rect.height / 2;
|
||||
break;
|
||||
|
||||
case META_GRAB_OP_KEYBOARD_RESIZING_SE:
|
||||
*x = rect.width;
|
||||
*y = rect.height;
|
||||
*x = rect.width - 1;
|
||||
*y = rect.height - 1;
|
||||
break;
|
||||
|
||||
case META_GRAB_OP_KEYBOARD_RESIZING_NE:
|
||||
*x = rect.width;
|
||||
*x = rect.width - 1;
|
||||
*y = 0;
|
||||
break;
|
||||
|
||||
case META_GRAB_OP_KEYBOARD_RESIZING_SW:
|
||||
*x = 0;
|
||||
*y = rect.height;
|
||||
*y = rect.height - 1;
|
||||
break;
|
||||
|
||||
case META_GRAB_OP_KEYBOARD_RESIZING_NW:
|
||||
@@ -8112,3 +8136,45 @@ meta_window_unset_demands_attention (MetaWindow *window)
|
||||
window->wm_state_demands_attention = FALSE;
|
||||
set_net_wm_state (window);
|
||||
}
|
||||
|
||||
MetaFrame *
|
||||
meta_window_get_frame (MetaWindow *window)
|
||||
{
|
||||
return window->frame;
|
||||
}
|
||||
|
||||
gboolean
|
||||
meta_window_has_focus (MetaWindow *window)
|
||||
{
|
||||
return window->has_focus;
|
||||
}
|
||||
|
||||
gboolean
|
||||
meta_window_is_shaded (MetaWindow *window)
|
||||
{
|
||||
return window->shaded;
|
||||
}
|
||||
|
||||
MetaRectangle *
|
||||
meta_window_get_rect (MetaWindow *window)
|
||||
{
|
||||
return &window->rect;
|
||||
}
|
||||
|
||||
MetaScreen *
|
||||
meta_window_get_screen (MetaWindow *window)
|
||||
{
|
||||
return window->screen;
|
||||
}
|
||||
|
||||
MetaDisplay *
|
||||
meta_window_get_display (MetaWindow *window)
|
||||
{
|
||||
return window->display;
|
||||
}
|
||||
|
||||
Window
|
||||
meta_window_get_xwindow (MetaWindow *window)
|
||||
{
|
||||
return window->xwindow;
|
||||
}
|
||||
|
@@ -315,10 +315,12 @@ meta_workspace_activate_with_focus (MetaWorkspace *workspace,
|
||||
* then remove from old workspace, so the window
|
||||
* never gets unmapped and we maintain the button grab
|
||||
* on it.
|
||||
*
|
||||
* \bug This comment appears to be the reverse of what happens
|
||||
*/
|
||||
if (move_window && (move_window->workspace != workspace))
|
||||
{
|
||||
meta_workspace_remove_window (workspace, move_window);
|
||||
meta_workspace_remove_window (old, move_window);
|
||||
meta_workspace_add_window (workspace, move_window);
|
||||
}
|
||||
}
|
||||
@@ -417,7 +419,7 @@ set_active_space_hint (MetaScreen *screen)
|
||||
|
||||
meta_error_trap_push (screen->display);
|
||||
XChangeProperty (screen->display->xdisplay, screen->xroot,
|
||||
screen->display->atom_net_current_desktop,
|
||||
screen->display->atom__NET_CURRENT_DESKTOP,
|
||||
XA_CARDINAL,
|
||||
32, PropModeReplace, (guchar*) data, 1);
|
||||
meta_error_trap_pop (screen->display, FALSE);
|
||||
|
@@ -25,7 +25,7 @@
|
||||
#ifndef META_WORKSPACE_H
|
||||
#define META_WORKSPACE_H
|
||||
|
||||
#include "window.h"
|
||||
#include "window-private.h"
|
||||
|
||||
/* Negative to avoid conflicting with real workspace
|
||||
* numbers
|
||||
|
@@ -89,7 +89,7 @@ from The Open Group.
|
||||
#include "metacity-Xatomtype.h"
|
||||
#include <X11/Xatom.h>
|
||||
#include <string.h>
|
||||
#include "window.h"
|
||||
#include "window-private.h"
|
||||
|
||||
typedef struct
|
||||
{
|
||||
@@ -389,7 +389,7 @@ utf8_string_from_results (GetPropertyResults *results,
|
||||
*str_p = NULL;
|
||||
|
||||
if (!validate_or_free_results (results, 8,
|
||||
results->display->atom_utf8_string, FALSE))
|
||||
results->display->atom_UTF8_STRING, FALSE))
|
||||
return FALSE;
|
||||
|
||||
if (results->n_items > 0 &&
|
||||
@@ -424,7 +424,7 @@ meta_prop_get_utf8_string (MetaDisplay *display,
|
||||
*str_p = NULL;
|
||||
|
||||
if (!get_property (display, xwindow, xatom,
|
||||
display->atom_utf8_string,
|
||||
display->atom_UTF8_STRING,
|
||||
&results))
|
||||
return FALSE;
|
||||
|
||||
@@ -446,7 +446,7 @@ utf8_list_from_results (GetPropertyResults *results,
|
||||
*n_str_p = 0;
|
||||
|
||||
if (!validate_or_free_results (results, 8,
|
||||
results->display->atom_utf8_string, FALSE))
|
||||
results->display->atom_UTF8_STRING, FALSE))
|
||||
return FALSE;
|
||||
|
||||
/* I'm not sure this is right, but I'm guessing the
|
||||
@@ -519,7 +519,7 @@ meta_prop_get_utf8_list (MetaDisplay *display,
|
||||
*str_p = NULL;
|
||||
|
||||
if (!get_property (display, xwindow, xatom,
|
||||
display->atom_utf8_string,
|
||||
display->atom_UTF8_STRING,
|
||||
&results))
|
||||
return FALSE;
|
||||
|
||||
@@ -535,7 +535,7 @@ meta_prop_set_utf8_string_hint (MetaDisplay *display,
|
||||
meta_error_trap_push (display);
|
||||
XChangeProperty (display->xdisplay,
|
||||
xwindow, atom,
|
||||
display->atom_utf8_string,
|
||||
display->atom_UTF8_STRING,
|
||||
8, PropModeReplace, (guchar*) val, strlen (val));
|
||||
meta_error_trap_pop (display, FALSE);
|
||||
}
|
||||
@@ -969,7 +969,7 @@ meta_prop_get_values (MetaDisplay *display,
|
||||
break;
|
||||
case META_PROP_VALUE_UTF8_LIST:
|
||||
case META_PROP_VALUE_UTF8:
|
||||
values[i].required_type = display->atom_utf8_string;
|
||||
values[i].required_type = display->atom_UTF8_STRING;
|
||||
break;
|
||||
case META_PROP_VALUE_STRING:
|
||||
case META_PROP_VALUE_STRING_AS_UTF8:
|
||||
|
@@ -174,6 +174,8 @@ typedef enum
|
||||
{
|
||||
META_ACTION_TITLEBAR_TOGGLE_SHADE,
|
||||
META_ACTION_TITLEBAR_TOGGLE_MAXIMIZE,
|
||||
META_ACTION_TITLEBAR_TOGGLE_MAXIMIZE_HORIZONTALLY,
|
||||
META_ACTION_TITLEBAR_TOGGLE_MAXIMIZE_VERTICALLY,
|
||||
META_ACTION_TITLEBAR_MINIMIZE,
|
||||
META_ACTION_TITLEBAR_NONE,
|
||||
META_ACTION_TITLEBAR_LOWER,
|
||||
@@ -263,9 +265,11 @@ struct _MetaButtonLayout
|
||||
{
|
||||
/* buttons in the group on the left side */
|
||||
MetaButtonFunction left_buttons[MAX_BUTTONS_PER_CORNER];
|
||||
|
||||
gboolean left_buttons_has_spacer[MAX_BUTTONS_PER_CORNER];
|
||||
|
||||
/* buttons in the group on the right side */
|
||||
MetaButtonFunction right_buttons[MAX_BUTTONS_PER_CORNER];
|
||||
gboolean right_buttons_has_spacer[MAX_BUTTONS_PER_CORNER];
|
||||
};
|
||||
|
||||
/* should investigate changing these to whatever most apps use */
|
||||
|
@@ -1,10 +1,8 @@
|
||||
/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */
|
||||
|
||||
/* Metacity compositing manager */
|
||||
|
||||
/*
|
||||
* Copyright (C) 2003 Red Hat, Inc.
|
||||
*
|
||||
/*
|
||||
* Copyright (C) 2008 Iain Holmes
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License as
|
||||
* published by the Free Software Foundation; either version 2 of the
|
||||
@@ -14,7 +12,7 @@
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
||||
@@ -24,46 +22,55 @@
|
||||
#ifndef META_COMPOSITOR_H
|
||||
#define META_COMPOSITOR_H
|
||||
|
||||
#include "util.h"
|
||||
#include "display.h"
|
||||
#include "spring-model.h"
|
||||
#include <glib.h>
|
||||
#include <X11/Xlib.h>
|
||||
|
||||
MetaCompositor* meta_compositor_new (MetaDisplay *display);
|
||||
void meta_compositor_process_event (MetaCompositor *compositor,
|
||||
XEvent *xevent,
|
||||
MetaWindow *window);
|
||||
void meta_compositor_add_window (MetaCompositor *compositor,
|
||||
MetaWindow *window,
|
||||
Window xwindow,
|
||||
XWindowAttributes *attrs);
|
||||
void meta_compositor_remove_window (MetaCompositor *compositor,
|
||||
Window xwindow);
|
||||
void meta_compositor_set_debug_updates (MetaCompositor *compositor,
|
||||
gboolean debug_updates);
|
||||
#include "types.h"
|
||||
#include "boxes.h"
|
||||
|
||||
void meta_compositor_manage_screen (MetaCompositor *compositor,
|
||||
MetaScreen *screen);
|
||||
MetaCompositor *meta_compositor_new (MetaDisplay *display);
|
||||
void meta_compositor_destroy (MetaCompositor *compositor);
|
||||
|
||||
void meta_compositor_manage_screen (MetaCompositor *compositor,
|
||||
MetaScreen *screen);
|
||||
void meta_compositor_unmanage_screen (MetaCompositor *compositor,
|
||||
MetaScreen *screen);
|
||||
|
||||
void meta_compositor_add_window (MetaCompositor *compositor,
|
||||
MetaWindow *window,
|
||||
Window xwindow,
|
||||
XWindowAttributes *attrs);
|
||||
void meta_compositor_remove_window (MetaCompositor *compositor,
|
||||
Window xwindow);
|
||||
|
||||
void meta_compositor_set_updates (MetaCompositor *compositor,
|
||||
MetaWindow *window,
|
||||
gboolean updates);
|
||||
|
||||
void meta_compositor_destroy (MetaCompositor *compositor);
|
||||
|
||||
void meta_compositor_begin_move (MetaCompositor *compositor,
|
||||
MetaWindow *window,
|
||||
MetaRectangle *initial,
|
||||
int grab_x, int grab_y);
|
||||
void meta_compositor_update_move (MetaCompositor *compositor,
|
||||
MetaWindow *window,
|
||||
int x, int y);
|
||||
void meta_compositor_end_move (MetaCompositor *compositor,
|
||||
MetaWindow *window);
|
||||
void meta_compositor_free_window (MetaCompositor *compositor,
|
||||
MetaWindow *window);
|
||||
void meta_compositor_process_event (MetaCompositor *compositor,
|
||||
XEvent *event,
|
||||
MetaWindow *window);
|
||||
Pixmap meta_compositor_get_window_pixmap (MetaCompositor *compositor,
|
||||
MetaWindow *window);
|
||||
void meta_compositor_set_active_window (MetaCompositor *compositor,
|
||||
MetaScreen *screen,
|
||||
MetaWindow *window);
|
||||
|
||||
void meta_compositor_begin_move (MetaCompositor *compositor,
|
||||
MetaWindow *window,
|
||||
MetaRectangle *initial,
|
||||
int grab_x, int grab_y);
|
||||
void meta_compositor_update_move (MetaCompositor *compositor,
|
||||
MetaWindow *window,
|
||||
int x, int y);
|
||||
void meta_compositor_end_move (MetaCompositor *compositor,
|
||||
MetaWindow *window);
|
||||
void meta_compositor_free_window (MetaCompositor *compositor,
|
||||
MetaWindow *window);
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
#endif /* META_COMPOSITOR_H */
|
@@ -120,6 +120,10 @@ void meta_core_minimize (Display *xdisplay,
|
||||
Window frame_xwindow);
|
||||
void meta_core_toggle_maximize (Display *xdisplay,
|
||||
Window frame_xwindow);
|
||||
void meta_core_toggle_maximize_horizontally (Display *xdisplay,
|
||||
Window frame_xwindow);
|
||||
void meta_core_toggle_maximize_vertically (Display *xdisplay,
|
||||
Window frame_xwindow);
|
||||
void meta_core_unmaximize (Display *xdisplay,
|
||||
Window frame_xwindow);
|
||||
void meta_core_maximize (Display *xdisplay,
|
||||
|
48
src/include/display.h
Normal file
48
src/include/display.h
Normal file
@@ -0,0 +1,48 @@
|
||||
/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */
|
||||
|
||||
/*
|
||||
* Copyright (C) 2008 Iain Holmes
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License as
|
||||
* published by the Free Software Foundation; either version 2 of the
|
||||
* License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
||||
* 02111-1307, USA.
|
||||
*/
|
||||
|
||||
#ifndef META_DISPLAY_H
|
||||
#define META_DISPLAY_H
|
||||
|
||||
#include <glib.h>
|
||||
#include <X11/Xlib.h>
|
||||
|
||||
#include "types.h"
|
||||
|
||||
#define meta_XFree(p) do { if ((p)) XFree ((p)); } while (0)
|
||||
|
||||
void meta_display_get_compositor_version (MetaDisplay *display,
|
||||
int *major,
|
||||
int *minor);
|
||||
Display *meta_display_get_xdisplay (MetaDisplay *display);
|
||||
MetaCompositor *meta_display_get_compositor (MetaDisplay *display);
|
||||
GSList *meta_display_get_screens (MetaDisplay *display);
|
||||
|
||||
gboolean meta_display_has_shape (MetaDisplay *display);
|
||||
|
||||
MetaScreen *meta_display_screen_for_root (MetaDisplay *display,
|
||||
Window xroot);
|
||||
MetaWindow *meta_display_get_focus_window (MetaDisplay *display);
|
||||
|
||||
int meta_display_get_damage_event_base (MetaDisplay *display);
|
||||
int meta_display_get_shape_event_base (MetaDisplay *display);
|
||||
|
||||
#endif
|
@@ -24,6 +24,8 @@
|
||||
#ifndef META_ERRORS_H
|
||||
#define META_ERRORS_H
|
||||
|
||||
#include <X11/Xlib.h>
|
||||
|
||||
#include "util.h"
|
||||
#include "display.h"
|
||||
|
31
src/include/frame.h
Normal file
31
src/include/frame.h
Normal file
@@ -0,0 +1,31 @@
|
||||
/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */
|
||||
|
||||
/*
|
||||
* Copyright (C) 2008 Iain Holmes
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License as
|
||||
* published by the Free Software Foundation; either version 2 of the
|
||||
* License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
||||
* 02111-1307, USA.
|
||||
*/
|
||||
|
||||
#ifndef META_FRAME_H
|
||||
#define META_FRAME_H
|
||||
|
||||
#include <X11/Xlib.h>
|
||||
|
||||
#include "types.h"
|
||||
|
||||
Window meta_frame_get_xwindow (MetaFrame *frame);
|
||||
|
||||
#endif
|
48
src/include/screen.h
Normal file
48
src/include/screen.h
Normal file
@@ -0,0 +1,48 @@
|
||||
/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */
|
||||
|
||||
/*
|
||||
* Copyright (C) 2008 Iain Holmes
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License as
|
||||
* published by the Free Software Foundation; either version 2 of the
|
||||
* License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
||||
* 02111-1307, USA.
|
||||
*/
|
||||
|
||||
#ifndef META_SCREEN_H
|
||||
#define META_SCREEN_H
|
||||
|
||||
#include <X11/Xlib.h>
|
||||
#include <glib.h>
|
||||
#include "types.h"
|
||||
|
||||
int meta_screen_get_screen_number (MetaScreen *screen);
|
||||
MetaDisplay *meta_screen_get_display (MetaScreen *screen);
|
||||
|
||||
Window meta_screen_get_xroot (MetaScreen *screen);
|
||||
void meta_screen_get_size (MetaScreen *screen,
|
||||
int *width,
|
||||
int *height);
|
||||
|
||||
gpointer meta_screen_get_compositor_data (MetaScreen *screen);
|
||||
void meta_screen_set_compositor_data (MetaScreen *screen,
|
||||
gpointer info);
|
||||
|
||||
MetaScreen *meta_screen_for_x_screen (Screen *xscreen);
|
||||
|
||||
#ifdef HAVE_COMPOSITE_EXTENSIONS
|
||||
void meta_screen_set_cm_selection (MetaScreen *screen);
|
||||
void meta_screen_unset_cm_selection (MetaScreen *screen);
|
||||
#endif
|
||||
|
||||
#endif
|
31
src/include/types.h
Normal file
31
src/include/types.h
Normal file
@@ -0,0 +1,31 @@
|
||||
/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */
|
||||
|
||||
/*
|
||||
* Copyright (C) 2008 Iain Holmes
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License as
|
||||
* published by the Free Software Foundation; either version 2 of the
|
||||
* License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
||||
* 02111-1307, USA.
|
||||
*/
|
||||
|
||||
#ifndef META_TYPES_H
|
||||
#define META_TYPES_H
|
||||
|
||||
typedef struct _MetaCompositor MetaCompositor;
|
||||
typedef struct _MetaDisplay MetaDisplay;
|
||||
typedef struct _MetaFrame MetaFrame;
|
||||
typedef struct _MetaScreen MetaScreen;
|
||||
typedef struct _MetaWindow MetaWindow;
|
||||
|
||||
#endif
|
39
src/include/window.h
Normal file
39
src/include/window.h
Normal file
@@ -0,0 +1,39 @@
|
||||
/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */
|
||||
|
||||
/*
|
||||
* Copyright (C) 2008 Iain Holmes
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License as
|
||||
* published by the Free Software Foundation; either version 2 of the
|
||||
* License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
||||
* 02111-1307, USA.
|
||||
*/
|
||||
|
||||
#ifndef META_WINDOW_H
|
||||
#define META_WINDOW_H
|
||||
|
||||
#include <glib.h>
|
||||
#include <X11/Xlib.h>
|
||||
|
||||
#include "boxes.h"
|
||||
#include "types.h"
|
||||
|
||||
MetaFrame *meta_window_get_frame (MetaWindow *window);
|
||||
gboolean meta_window_has_focus (MetaWindow *window);
|
||||
gboolean meta_window_is_shaded (MetaWindow *window);
|
||||
MetaRectangle *meta_window_get_rect (MetaWindow *window);
|
||||
MetaScreen *meta_window_get_screen (MetaWindow *window);
|
||||
MetaDisplay *meta_window_get_display (MetaWindow *window);
|
||||
Window meta_window_get_xwindow (MetaWindow *window);
|
||||
|
||||
#endif
|
@@ -25,9 +25,14 @@
|
||||
#define META_XPROPS_H
|
||||
|
||||
#include <config.h>
|
||||
|
||||
#include "display.h"
|
||||
#include <X11/Xutil.h>
|
||||
|
||||
#ifdef HAVE_XSYNC
|
||||
#include <X11/extensions/sync.h>
|
||||
#endif
|
||||
|
||||
/* Copied from Lesstif by way of GTK. Rudimentary docs can be
|
||||
* found in some Motif reference guides online.
|
||||
*/
|
@@ -1,4 +1,5 @@
|
||||
[Desktop Entry]
|
||||
Type=Application
|
||||
Encoding=UTF-8
|
||||
_Name=Metacity
|
||||
Exec=metacity
|
||||
@@ -11,6 +12,9 @@ X-GnomeWMSettingsLibrary=metacity
|
||||
X-GNOME-Bugzilla-Bugzilla=GNOME
|
||||
X-GNOME-Bugzilla-Product=metacity
|
||||
X-GNOME-Bugzilla-Component=general
|
||||
X-GNOME-Autostart-Phase=WindowManager
|
||||
X-GNOME-Provides=windowmanager
|
||||
X-GNOME-Autostart-Notify=true
|
||||
|
||||
[Window Manager]
|
||||
SessionManaged=true
|
||||
|
@@ -37,12 +37,14 @@
|
||||
<long>
|
||||
Arrangement of buttons on the titlebar. The
|
||||
value should be a string, such as
|
||||
"menu:minimize,maximize,close"; the colon separates the
|
||||
"menu:minimize,maximize,spacer,close"; the colon separates the
|
||||
left corner of the window from the right corner, and
|
||||
the button names are comma-separated. Duplicate buttons
|
||||
are not allowed. Unknown button names are silently ignored
|
||||
so that buttons can be added in future metacity versions
|
||||
without breaking older versions.
|
||||
A special spacer tag can be used to insert some space between
|
||||
two adjacent buttons.
|
||||
</long>
|
||||
</locale>
|
||||
</schema>
|
||||
@@ -112,10 +114,16 @@
|
||||
<short>Action on title bar double-click</short>
|
||||
<long>
|
||||
This option determines the effects of double-clicking on the
|
||||
title bar. Current valid options are 'toggle_shade', which will
|
||||
shade/unshade the window, 'toggle_maximize' which will
|
||||
maximize/unmaximize the window, 'minimize' which will minimize
|
||||
the window, and 'none' which will not do anything.
|
||||
title bar. Current valid options are
|
||||
'toggle_shade', which will shade/unshade the window,
|
||||
'toggle_maximize' which will maximize/unmaximize the window,
|
||||
'toggle_maximize_horizontally' and 'toggle_maximize_vertically'
|
||||
which will maximize/unmaximize the window in that direction only,
|
||||
'minimize' which will minimize the window,
|
||||
'shade' which will roll the window up,
|
||||
'menu' which will display the window menu,
|
||||
'lower' which will put the window behind all the others,
|
||||
and 'none' which will not do anything.
|
||||
</long>
|
||||
</locale>
|
||||
</schema>
|
||||
@@ -130,10 +138,16 @@
|
||||
<short>Action on title bar middle-click</short>
|
||||
<long>
|
||||
This option determines the effects of middle-clicking on the
|
||||
title bar. Current valid options are 'toggle_shade', which will
|
||||
shade/unshade the window, 'toggle_maximize' which will
|
||||
maximize/unmaximize the window, 'minimize' which will minimize
|
||||
the window, and 'none' which will not do anything.
|
||||
title bar. Current valid options are
|
||||
'toggle_shade', which will shade/unshade the window,
|
||||
'toggle_maximize' which will maximize/unmaximize the window,
|
||||
'toggle_maximize_horizontally' and 'toggle_maximize_vertically'
|
||||
which will maximize/unmaximize the window in that direction only,
|
||||
'minimize' which will minimize the window,
|
||||
'shade' which will roll the window up,
|
||||
'menu' which will display the window menu,
|
||||
'lower' which will put the window behind all the others,
|
||||
and 'none' which will not do anything.
|
||||
</long>
|
||||
</locale>
|
||||
</schema>
|
||||
@@ -148,10 +162,16 @@
|
||||
<short>Action on title bar right-click</short>
|
||||
<long>
|
||||
This option determines the effects of right-clicking on the
|
||||
title bar. Current valid options are 'toggle_shade', which will
|
||||
shade/unshade the window, 'toggle_maximize' which will
|
||||
maximize/unmaximize the window, 'minimize' which will minimize
|
||||
the window, and 'none' which will not do anything.
|
||||
title bar. Current valid options are
|
||||
'toggle_shade', which will shade/unshade the window,
|
||||
'toggle_maximize' which will maximize/unmaximize the window,
|
||||
'toggle_maximize_horizontally' and 'toggle_maximize_vertically'
|
||||
which will maximize/unmaximize the window in that direction only,
|
||||
'minimize' which will minimize the window,
|
||||
'shade' which will roll the window up,
|
||||
'menu' which will display the window menu,
|
||||
'lower' which will put the window behind all the others,
|
||||
and 'none' which will not do anything.
|
||||
</long>
|
||||
</locale>
|
||||
</schema>
|
||||
|
@@ -19,6 +19,9 @@
|
||||
* 02111-1307, USA.
|
||||
*/
|
||||
|
||||
#define _GNU_SOURCE
|
||||
#define _XOPEN_SOURCE 600 /* C99 -- for rint() */
|
||||
|
||||
#include <gtk/gtk.h>
|
||||
#include <gdk/gdkx.h>
|
||||
#include <gdk/gdkkeysyms.h>
|
||||
|
381
src/ui/colors.c
381
src/ui/colors.c
@@ -1,381 +0,0 @@
|
||||
/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */
|
||||
|
||||
/* Metacity RGB color stuff */
|
||||
|
||||
/*
|
||||
* Copyright (C) 2001 Havoc Pennington
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License as
|
||||
* published by the Free Software Foundation; either version 2 of the
|
||||
* License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
||||
* 02111-1307, USA.
|
||||
*/
|
||||
|
||||
#include "colors.h"
|
||||
|
||||
struct _MetaUIColors
|
||||
{
|
||||
PangoColor fg[5];
|
||||
PangoColor bg[5];
|
||||
PangoColor light[5];
|
||||
PangoColor dark[5];
|
||||
PangoColor mid[5];
|
||||
PangoColor text[5];
|
||||
PangoColor base[5];
|
||||
PangoColor text_aa[5];
|
||||
};
|
||||
|
||||
static void
|
||||
visual_decompose_mask (gulong mask,
|
||||
gint *shift,
|
||||
gint *prec)
|
||||
{
|
||||
/* This code is from GTK+, (C) GTK+ Team */
|
||||
*shift = 0;
|
||||
*prec = 0;
|
||||
|
||||
while (!(mask & 0x1))
|
||||
{
|
||||
(*shift)++;
|
||||
mask >>= 1;
|
||||
}
|
||||
|
||||
while (mask & 0x1)
|
||||
{
|
||||
(*prec)++;
|
||||
mask >>= 1;
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
meta_screen_init_visual_info (MetaScreen *screen)
|
||||
{
|
||||
Visual *xvisual;
|
||||
int nxvisuals;
|
||||
XVisualInfo *visual_list;
|
||||
XVisualInfo visual_template;
|
||||
|
||||
/* root window visual */
|
||||
xvisual = DefaultVisual (screen->display->xdisplay,
|
||||
screen->number);
|
||||
|
||||
visual_template.visualid = XVisualIDFromVisual (xvisual);
|
||||
visual_list = XGetVisualInfo (screen->display->xdisplay,
|
||||
VisualIDMask, &visual_template, &nxvisuals);
|
||||
|
||||
if (nxvisuals != 1)
|
||||
meta_warning ("Matched weird number of visuals %d\n", nxvisuals);
|
||||
|
||||
screen->visual_info = *visual_list;
|
||||
|
||||
meta_verbose ("Using visual class %d\n", screen->visual_info.class);
|
||||
|
||||
XFree (visual_list);
|
||||
}
|
||||
|
||||
gulong
|
||||
meta_screen_get_x_pixel (MetaScreen *screen,
|
||||
const PangoColor *color)
|
||||
{
|
||||
/* This code is derived from GTK+, (C) GTK+ Team */
|
||||
gulong pixel;
|
||||
|
||||
if (screen->visual_info.class == TrueColor ||
|
||||
screen->visual_info.class == DirectColor)
|
||||
{
|
||||
int red_prec, red_shift, green_prec, green_shift, blue_prec, blue_shift;
|
||||
|
||||
visual_decompose_mask (screen->visual_info.red_mask,
|
||||
&red_shift, &red_prec);
|
||||
visual_decompose_mask (screen->visual_info.green_mask,
|
||||
&green_shift, &green_prec);
|
||||
visual_decompose_mask (screen->visual_info.blue_mask,
|
||||
&blue_shift, &blue_prec);
|
||||
|
||||
pixel = (((color->red >> (16 - red_prec)) << red_shift) +
|
||||
((color->green >> (16 - green_prec)) << green_shift) +
|
||||
((color->blue >> (16 - blue_prec)) << blue_shift));
|
||||
}
|
||||
else
|
||||
{
|
||||
#define INTENSITY(r, g, b) ((r) * 0.30 + (g) * 0.59 + (b) * 0.11)
|
||||
double r, g, b;
|
||||
|
||||
r = color->red / (double) 0xffff;
|
||||
g = color->green / (double) 0xffff;
|
||||
b = color->blue / (double) 0xffff;
|
||||
|
||||
/* Now this is a low-bloat GdkRGB replacement! */
|
||||
if (INTENSITY (r, g, b) > 0.5)
|
||||
pixel = WhitePixel (screen->display->xdisplay, screen->number);
|
||||
else
|
||||
pixel = BlackPixel (screen->display->xdisplay, screen->number);
|
||||
#undef INTENSITY
|
||||
}
|
||||
|
||||
return pixel;
|
||||
}
|
||||
|
||||
void
|
||||
meta_screen_set_ui_colors (MetaScreen *screen,
|
||||
const MetaUIColors *colors)
|
||||
{
|
||||
screen->colors = *colors;
|
||||
meta_screen_queue_frame_redraws (screen);
|
||||
}
|
||||
|
||||
/* Straight out of gtkstyle.c */
|
||||
static PangoColor meta_default_normal_fg = { 0, 0, 0 };
|
||||
static PangoColor meta_default_active_fg = { 0, 0, 0 };
|
||||
static PangoColor meta_default_prelight_fg = { 0, 0, 0 };
|
||||
static PangoColor meta_default_selected_fg = { 0xffff, 0xffff, 0xffff };
|
||||
static PangoColor meta_default_insensitive_fg = { 0x7530, 0x7530, 0x7530 };
|
||||
|
||||
static PangoColor meta_default_normal_bg = { 0xd6d6, 0xd6d6, 0xd6d6 };
|
||||
static PangoColor meta_default_active_bg = { 0xc350, 0xc350, 0xc350 };
|
||||
static PangoColor meta_default_prelight_bg = { 0xea60, 0xea60, 0xea60 };
|
||||
static PangoColor meta_default_selected_bg = { 0, 0, 0x9c40 };
|
||||
static PangoColor meta_default_insensitive_bg = { 0xd6d6, 0xd6d6, 0xd6d6 };
|
||||
|
||||
static void
|
||||
rgb_to_hls (gdouble *r,
|
||||
gdouble *g,
|
||||
gdouble *b)
|
||||
{
|
||||
gdouble min;
|
||||
gdouble max;
|
||||
gdouble red;
|
||||
gdouble green;
|
||||
gdouble blue;
|
||||
gdouble h, l, s;
|
||||
gdouble delta;
|
||||
|
||||
red = *r;
|
||||
green = *g;
|
||||
blue = *b;
|
||||
|
||||
if (red > green)
|
||||
{
|
||||
if (red > blue)
|
||||
max = red;
|
||||
else
|
||||
max = blue;
|
||||
|
||||
if (green < blue)
|
||||
min = green;
|
||||
else
|
||||
min = blue;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (green > blue)
|
||||
max = green;
|
||||
else
|
||||
max = blue;
|
||||
|
||||
if (red < blue)
|
||||
min = red;
|
||||
else
|
||||
min = blue;
|
||||
}
|
||||
|
||||
l = (max + min) / 2;
|
||||
s = 0;
|
||||
h = 0;
|
||||
|
||||
if (max != min)
|
||||
{
|
||||
if (l <= 0.5)
|
||||
s = (max - min) / (max + min);
|
||||
else
|
||||
s = (max - min) / (2 - max - min);
|
||||
|
||||
delta = max -min;
|
||||
if (red == max)
|
||||
h = (green - blue) / delta;
|
||||
else if (green == max)
|
||||
h = 2 + (blue - red) / delta;
|
||||
else if (blue == max)
|
||||
h = 4 + (red - green) / delta;
|
||||
|
||||
h *= 60;
|
||||
if (h < 0.0)
|
||||
h += 360;
|
||||
}
|
||||
|
||||
*r = h;
|
||||
*g = l;
|
||||
*b = s;
|
||||
}
|
||||
|
||||
static void
|
||||
hls_to_rgb (gdouble *h,
|
||||
gdouble *l,
|
||||
gdouble *s)
|
||||
{
|
||||
gdouble hue;
|
||||
gdouble lightness;
|
||||
gdouble saturation;
|
||||
gdouble m1, m2;
|
||||
gdouble r, g, b;
|
||||
|
||||
lightness = *l;
|
||||
saturation = *s;
|
||||
|
||||
if (lightness <= 0.5)
|
||||
m2 = lightness * (1 + saturation);
|
||||
else
|
||||
m2 = lightness + saturation - lightness * saturation;
|
||||
m1 = 2 * lightness - m2;
|
||||
|
||||
if (saturation == 0)
|
||||
{
|
||||
*h = lightness;
|
||||
*l = lightness;
|
||||
*s = lightness;
|
||||
}
|
||||
else
|
||||
{
|
||||
hue = *h + 120;
|
||||
while (hue > 360)
|
||||
hue -= 360;
|
||||
while (hue < 0)
|
||||
hue += 360;
|
||||
|
||||
if (hue < 60)
|
||||
r = m1 + (m2 - m1) * hue / 60;
|
||||
else if (hue < 180)
|
||||
r = m2;
|
||||
else if (hue < 240)
|
||||
r = m1 + (m2 - m1) * (240 - hue) / 60;
|
||||
else
|
||||
r = m1;
|
||||
|
||||
hue = *h;
|
||||
while (hue > 360)
|
||||
hue -= 360;
|
||||
while (hue < 0)
|
||||
hue += 360;
|
||||
|
||||
if (hue < 60)
|
||||
g = m1 + (m2 - m1) * hue / 60;
|
||||
else if (hue < 180)
|
||||
g = m2;
|
||||
else if (hue < 240)
|
||||
g = m1 + (m2 - m1) * (240 - hue) / 60;
|
||||
else
|
||||
g = m1;
|
||||
|
||||
hue = *h - 120;
|
||||
while (hue > 360)
|
||||
hue -= 360;
|
||||
while (hue < 0)
|
||||
hue += 360;
|
||||
|
||||
if (hue < 60)
|
||||
b = m1 + (m2 - m1) * hue / 60;
|
||||
else if (hue < 180)
|
||||
b = m2;
|
||||
else if (hue < 240)
|
||||
b = m1 + (m2 - m1) * (240 - hue) / 60;
|
||||
else
|
||||
b = m1;
|
||||
|
||||
*h = r;
|
||||
*l = g;
|
||||
*s = b;
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
style_shade (PangoColor *a,
|
||||
PangoColor *b,
|
||||
gdouble k)
|
||||
{
|
||||
gdouble red;
|
||||
gdouble green;
|
||||
gdouble blue;
|
||||
|
||||
red = (gdouble) a->red / 65535.0;
|
||||
green = (gdouble) a->green / 65535.0;
|
||||
blue = (gdouble) a->blue / 65535.0;
|
||||
|
||||
rgb_to_hls (&red, &green, &blue);
|
||||
|
||||
green *= k;
|
||||
if (green > 1.0)
|
||||
green = 1.0;
|
||||
else if (green < 0.0)
|
||||
green = 0.0;
|
||||
|
||||
blue *= k;
|
||||
if (blue > 1.0)
|
||||
blue = 1.0;
|
||||
else if (blue < 0.0)
|
||||
blue = 0.0;
|
||||
|
||||
hls_to_rgb (&red, &green, &blue);
|
||||
|
||||
b->red = red * 65535.0;
|
||||
b->green = green * 65535.0;
|
||||
b->blue = blue * 65535.0;
|
||||
}
|
||||
|
||||
#define LIGHTNESS_MULT 1.3
|
||||
#define DARKNESS_MULT 0.7
|
||||
void
|
||||
meta_screen_init_ui_colors (MetaScreen *screen)
|
||||
{
|
||||
int i;
|
||||
MetaUIColors *colors;
|
||||
|
||||
colors = &screen->colors;
|
||||
|
||||
colors->fg[META_STATE_NORMAL] = meta_default_normal_fg;
|
||||
colors->fg[META_STATE_ACTIVE] = meta_default_active_fg;
|
||||
colors->fg[META_STATE_PRELIGHT] = meta_default_prelight_fg;
|
||||
colors->fg[META_STATE_SELECTED] = meta_default_selected_fg;
|
||||
colors->fg[META_STATE_INSENSITIVE] = meta_default_insensitive_fg;
|
||||
|
||||
colors->bg[META_STATE_NORMAL] = meta_default_normal_bg;
|
||||
colors->bg[META_STATE_ACTIVE] = meta_default_active_bg;
|
||||
colors->bg[META_STATE_PRELIGHT] = meta_default_prelight_bg;
|
||||
colors->bg[META_STATE_SELECTED] = meta_default_selected_bg;
|
||||
colors->bg[META_STATE_INSENSITIVE] = meta_default_insensitive_bg;
|
||||
|
||||
for (i = 0; i < 4; i++)
|
||||
{
|
||||
colors->text[i] = colors->fg[i];
|
||||
colors->base[i].red = G_MAXUSHORT;
|
||||
colors->base[i].green = G_MAXUSHORT;
|
||||
colors->base[i].blue = G_MAXUSHORT;
|
||||
}
|
||||
|
||||
colors->base[META_STATE_SELECTED] = meta_default_selected_bg;
|
||||
colors->base[META_STATE_INSENSITIVE] = meta_default_prelight_bg;
|
||||
colors->text[META_STATE_INSENSITIVE] = meta_default_insensitive_fg;
|
||||
|
||||
for (i = 0; i < 5; i++)
|
||||
{
|
||||
style_shade (&colors->bg[i], &colors->light[i], LIGHTNESS_MULT);
|
||||
style_shade (&colors->bg[i], &colors->dark[i], DARKNESS_MULT);
|
||||
|
||||
colors->mid[i].red = (colors->light[i].red + colors->dark[i].red) / 2;
|
||||
colors->mid[i].green = (colors->light[i].green + colors->dark[i].green) / 2;
|
||||
colors->mid[i].blue = (colors->light[i].blue + colors->dark[i].blue) / 2;
|
||||
|
||||
colors->text_aa[i].red = (colors->text[i].red + colors->base[i].red) / 2;
|
||||
colors->text_aa[i].green = (colors->text[i].green + colors->base[i].green) / 2;
|
||||
colors->text_aa[i].blue = (colors->text[i].blue + colors->base[i].blue) / 2;
|
||||
}
|
||||
}
|
@@ -25,9 +25,29 @@
|
||||
#include "fixedtip.h"
|
||||
#include "ui.h"
|
||||
|
||||
/**
|
||||
* The floating rectangle. This is a GtkWindow, and it contains
|
||||
* the "label" widget, below.
|
||||
*/
|
||||
static GtkWidget *tip = NULL;
|
||||
|
||||
/**
|
||||
* The actual text that gets displayed.
|
||||
*/
|
||||
static GtkWidget *label = NULL;
|
||||
/*
|
||||
* X coordinate of the right-hand edge of the screen.
|
||||
*
|
||||
* \bug This appears to be a bug; screen_right_edge is calculated only when
|
||||
* the window is redrawn. Actually we should never cache it because
|
||||
* different windows are different sizes.
|
||||
*/
|
||||
static int screen_right_edge = 0;
|
||||
/*
|
||||
* Y coordinate of the bottom edge of the screen.
|
||||
*
|
||||
* \bug As with screen_right_edge.
|
||||
*/
|
||||
static int screen_bottom_edge = 0;
|
||||
|
||||
static gint
|
||||
|
@@ -1,7 +1,5 @@
|
||||
/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */
|
||||
|
||||
/* Metacity fixed tooltip routine */
|
||||
|
||||
/*
|
||||
* Copyright (C) 2001 Havoc Pennington
|
||||
*
|
||||
@@ -21,15 +19,50 @@
|
||||
* 02111-1307, USA.
|
||||
*/
|
||||
|
||||
/**
|
||||
* \file fixedtip.h Metacity fixed tooltip routine
|
||||
*
|
||||
* Sometimes we want to display a small floating rectangle with helpful
|
||||
* text near the pointer. For example, if the user holds the mouse over
|
||||
* the maximise button, we can display a tooltip saying "Maximize".
|
||||
* The text is localised, of course.
|
||||
*
|
||||
* This file contains the functions to create and delete these tooltips.
|
||||
*
|
||||
* \todo Since we now consider MetaDisplay a singleton, there can be
|
||||
* only one tooltip per display; this might quite simply live in
|
||||
* display.c. Alternatively, it could move to frames.c, which
|
||||
* is the only place this business is called anyway.
|
||||
*
|
||||
* \todo Apparently some UI needs changing (check bugzilla)
|
||||
*/
|
||||
|
||||
#ifndef META_FIXED_TIP_H
|
||||
#define META_FIXED_TIP_H
|
||||
|
||||
#include <gtk/gtk.h>
|
||||
#include <gdk/gdkx.h>
|
||||
|
||||
/**
|
||||
* Displays a tooltip. There can be only one across the entire system.
|
||||
* This function behaves identically whether or not a tooltip is already
|
||||
* displayed, but if it is the window will be reused rather than destroyed
|
||||
* and recreated.
|
||||
*
|
||||
* \param xdisplay An X display.
|
||||
* \param screen_number The number of the screen.
|
||||
* \param root_x The X coordinate where the tooltip should appear
|
||||
* \param root_y The Y coordinate where the tooltip should appear
|
||||
* \param markup_text Text to display in the tooltip; can contain markup
|
||||
*/
|
||||
void meta_fixed_tip_show (Display *xdisplay, int screen_number,
|
||||
int root_x, int root_y,
|
||||
const char *markup_text);
|
||||
|
||||
/**
|
||||
* Removes the tooltip that was created by meta_fixed_tip_show(). If there
|
||||
* is no tooltip currently visible, this is a no-op.
|
||||
*/
|
||||
void meta_fixed_tip_hide (void);
|
||||
|
||||
|
||||
|
@@ -1249,6 +1249,32 @@ meta_frame_titlebar_event (MetaUIFrame *frame,
|
||||
}
|
||||
break;
|
||||
|
||||
case META_ACTION_TITLEBAR_TOGGLE_MAXIMIZE_HORIZONTALLY:
|
||||
{
|
||||
meta_core_get (gdk_display, frame->xwindow,
|
||||
META_CORE_GET_FRAME_FLAGS, &flags,
|
||||
META_CORE_GET_END);
|
||||
|
||||
if (flags & META_FRAME_ALLOWS_MAXIMIZE)
|
||||
{
|
||||
meta_core_toggle_maximize_horizontally (gdk_display, frame->xwindow);
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
case META_ACTION_TITLEBAR_TOGGLE_MAXIMIZE_VERTICALLY:
|
||||
{
|
||||
meta_core_get (gdk_display, frame->xwindow,
|
||||
META_CORE_GET_FRAME_FLAGS, &flags,
|
||||
META_CORE_GET_END);
|
||||
|
||||
if (flags & META_FRAME_ALLOWS_MAXIMIZE)
|
||||
{
|
||||
meta_core_toggle_maximize_vertically (gdk_display, frame->xwindow);
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
case META_ACTION_TITLEBAR_MINIMIZE:
|
||||
{
|
||||
meta_core_get (gdk_display, frame->xwindow,
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user