Compare commits

...

141 Commits

Author SHA1 Message Date
Thomas James Alexander Thurman
d341b8ea5e 2.23.34 release.
svn path=/trunk/; revision=3763
2008-06-16 23:49:56 +00:00
Thomas James Alexander Thurman
795d2caf8b 2.23.34 release.
svn path=/trunk/; revision=3762
2008-06-16 22:43:46 +00:00
Alexander Shopov
f6036b9860 Updated Bulgarian translation by Yavor Doganov <yavor@gnu.org>
2008-06-16  Alexander Shopov  <ash@contact.bg>

	* bg.po: Updated Bulgarian translation by
	Yavor Doganov <yavor@gnu.org>

svn path=/trunk/; revision=3761
2008-06-16 20:03:21 +00:00
Jorge Gonzalez Gonzalez
82cefd12ad Updated Spanish translation
svn path=/trunk/; revision=3759
2008-06-15 11:34:16 +00:00
Thomas Thurman
7ab715fa71 Some commenting.
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.


svn path=/trunk/; revision=3758
2008-06-13 23:10:32 +00:00
Theppitak Karoonboonyanan
163e236cd0 Updated Thai translation.
2008-06-12  Theppitak Karoonboonyanan  <thep@linux.thai.net>

	* th.po: Updated Thai translation.


svn path=/trunk/; revision=3757
2008-06-12 10:44:59 +00:00
Djihed Afifi
0107da404c Updated Arabic Translation by Khaled Hosny.
svn path=/trunk/; revision=3756
2008-06-11 21:41:19 +00:00
Yannig MARCHEGAY
c94c482283 Updated Occitan translation
svn path=/trunk/; revision=3755
2008-06-11 11:38:53 +00:00
Thomas Thurman
09501c9fab doubles are %f or %g, not %d re-created fair copy accordingly
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


svn path=/trunk/; revision=3754
2008-06-10 13:57:23 +00:00
Thomas Thurman
941e4bf967 A preliminary attempt at a test for the theme expression tokeniser.
2008-06-10  Thomas Thurman  <tthurman@gnome.org>

        * test/tokentest:  A preliminary attempt at a test for the
          theme expression tokeniser.


svn path=/trunk/; revision=3753
2008-06-10 13:46:41 +00:00
Kjartan Maraas
60d710a71f Updated Norwegian bokmål translation.
2008-06-08  Kjartan Maraas  <kmaraas@gnome.org>

	* nb.po: Updated Norwegian bokmål translation.

svn path=/trunk/; revision=3752
2008-06-08 09:54:58 +00:00
Thomas Thurman
5dbe941495 defensive programming; check meta_screen_get_compositor_data() throughout
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.


svn path=/trunk/; revision=3751
2008-06-05 01:54:25 +00:00
Thomas James Alexander Thurman
e9388f4345 2.23.34 release.
svn path=/trunk/; revision=3749
2008-06-02 22:32:14 +00:00
Thomas Thurman
a8c5c002fb make sure compositor things don't get compiled when we're not using the
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.


svn path=/trunk/; revision=3748
2008-06-02 22:27:54 +00:00
Thomas Thurman
327e3cb6b5 new test script, imported from branch.
2008-06-02  Thomas Thurman  <tthurman@gnome.org>

        * test/metacity-test: new test script, imported from
        branch.


svn path=/trunk/; revision=3747
2008-06-02 21:23:11 +00:00
Clytie Siddall
0bdfa0f494 Updated Vietnamese translation
svn path=/trunk/; revision=3745
2008-06-01 13:54:50 +00:00
Thomas Thurman
c500de4e38 fix comments (number)
2008-05-30  Thomas Thurman  <tthurman@gnome.org>

        * src/core/window-props.h: fix comments (number)


svn path=/trunk/; revision=3744
2008-05-30 22:30:20 +00:00
Thomas Thurman
b55dbe10bb commenting
2008-05-30  Thomas Thurman  <tthurman@gnome.org>

        * src/core/window-props.h: commenting


svn path=/trunk/; revision=3743
2008-05-30 22:27:43 +00:00
Thomas Thurman
01c0a95136 Make disabling gconf work again. Closes #530870.
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.


svn path=/trunk/; revision=3741
2008-05-28 04:10:08 +00:00
Thomas James Alexander Thurman
8fea7a4128 Post-release bump to 2.23.34.
svn path=/trunk/; revision=3731
2008-05-26 21:52:25 +00:00
Thomas James Alexander Thurman
4f93a1a273 2.23.21 release.
svn path=/trunk/; revision=3729
2008-05-26 21:48:14 +00:00
Thomas Thurman
c5c68fcbe8 added in two files needed for Iain's changes earlier to work in a 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


svn path=/trunk/; revision=3728
2008-05-26 21:45:43 +00:00
Thomas James Alexander Thurman
0c7be52675 2.23.21 release.
svn path=/trunk/; revision=3727
2008-05-26 21:06:44 +00:00
Thomas James Alexander Thurman
fff75cd9ae 2.23.21 release.
svn path=/trunk/; revision=3726
2008-05-26 20:23:21 +00:00
Iain Holmes
76735c18a1 Add Dropdown menu atoms so we can add shadows to them. Fixes #517442
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


svn path=/trunk/; revision=3725
2008-05-24 20:40:12 +00:00
Iain Holmes
1f435cc1fc Check the compositor isn't NULL before dereferencing it. Fixes #534569
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


svn path=/trunk/; revision=3723
2008-05-24 11:00:17 +00:00
Djihed Afifi
a5d2bdea55 Updated Arabic Translation by Khaled Hosny.
svn path=/trunk/; revision=3722
2008-05-22 22:59:46 +00:00
Vincent van Adrighem
565a04793e Translation updated by Tino Meinen.
2008-05-20  Vincent van Adrighem  <adrighem@gnome.org>

	* nl.po: Translation updated by Tino Meinen.

svn path=/trunk/; revision=3720
2008-05-20 09:41:21 +00:00
Djihed Afifi
f167d55625 Updated Arabic Translation by Khaled Hosny.
svn path=/trunk/; revision=3717
2008-05-19 01:15:01 +00:00
Iain Holmes
3405f3d8c8 Applied patch from Ed Catmur to fix #528787
2008-05-19  Iain Holmes  <iain@gnome.org>

        * src/core/window.c: Applied patch from Ed Catmur to fix #528787



svn path=/trunk/; revision=3716
2008-05-19 00:14:09 +00:00
Iain Holmes
f141692ca2 src/include/frame.h src/include/display.h src/include/xprops.h
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



svn path=/trunk/; revision=3715
2008-05-19 00:00:09 +00:00
Theppitak Karoonboonyanan
fe292078fe Updated Thai translation.
2008-05-18  Theppitak Karoonboonyanan  <thep@linux.thai.net>

	* th.po: Updated Thai translation.


svn path=/trunk/; revision=3712
2008-05-18 04:11:29 +00:00
Kjartan Maraas
224040cd1a Updated Norwegian bokmål translation.
2008-05-14  Kjartan Maraas  <kmaraas@gnome.org>

	* nb.po: Updated Norwegian bokmål translation.

svn path=/trunk/; revision=3710
2008-05-14 13:15:58 +00:00
Vincent van Adrighem
4026ea7b42 Translation updated by Tino Meinen.
2008-05-13  Vincent van Adrighem  <adrighem@gnome.org>

	* nl.po: Translation updated by Tino Meinen.

svn path=/trunk/; revision=3709
2008-05-13 16:21:21 +00:00
Robert Escriva
53b9e49ca4 remove color_set flag remove check of color_set flag before rendering (we
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.


svn path=/trunk/; revision=3708
2008-05-13 12:53:36 +00:00
Thomas Thurman
8547d1e8ed Basic Python-based Xlib client for testing and building upon.
2008-05-12  Thomas Thurman  <tthurman@gnome.org>

        * tools/xlib.py: Basic Python-based Xlib client for testing
          and building upon.


svn path=/trunk/; revision=3707
2008-05-12 03:31:32 +00:00
Elijah Newren
b095ecc195 Remove src/ui/color.[ch] since they are not used anywhere
svn path=/trunk/; revision=3706
2008-05-11 22:42:02 +00:00
Kjartan Maraas
3bbf402684 Updated Norwegian bokmål translation.
2008-05-06  Kjartan Maraas  <kmaraas@gnome.org>

	* nb.po: Updated Norwegian bokmål translation.

svn path=/trunk/; revision=3705
2008-05-06 17:51:39 +00:00
Thomas Thurman
f8ff76efdd Added curly brackets in two places to keep -pedantic happy.
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)


svn path=/trunk/; revision=3704
2008-05-04 17:57:11 +00:00
Matt Krai
3673472cd7 fix type of "len" variable (refs #526049)
2008-05-03  Matt Krai  <mkraai@beckman.com>

        * src/core/delete.c (io_from_ping_dialog): fix type of "len" variable
          (refs #526049)

svn path=/trunk/; revision=3703
2008-05-03 17:12:15 +00:00
Thomas Thurman
b455ac62d2 All information should live in exactly one place. This means that the list
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


svn path=/trunk/; revision=3702
2008-05-02 18:49:01 +00:00
Gabor Keleman
4916fedc28 -meg
svn path=/trunk/; revision=3701
2008-05-01 19:51:36 +00:00
Gabor Kelemen
81eeb9c0d5 Translation updated.
2008-05-01  Gabor Kelemen  <kelemeng@gnome.org>

	* hu.po: Translation updated.

svn path=/trunk/; revision=3699
2008-05-01 19:40:16 +00:00
Chris Wang
2d895ce875 XGetWindowAttributes can return an error value, and if it does its other
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)


svn path=/trunk/; revision=3698
2008-04-29 13:33:39 +00:00
Thomas Thurman
eacd442787 documentation
2008-04-29  Thomas Thurman  <tthurman@gnome.org>

        * src/ui/fixedtip.[ch]: documentation


svn path=/trunk/; revision=3697
2008-04-29 02:54:56 +00:00
Thomas James Alexander Thurman
b8a9ed1d3a Post-release bump to 2.23.21.
svn path=/trunk/; revision=3696
2008-04-27 21:42:57 +00:00
Thomas James Alexander Thurman
117f0e5663 2.23.13 release.
svn path=/trunk/; revision=3694
2008-04-27 21:37:45 +00:00
Erwann Chenede
f13a8e6ab9 re-enable cascade code which was wrongly removed a year ago. Closes
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.


svn path=/trunk/; revision=3693
2008-04-27 20:09:47 +00:00
Carlos Garnacho
fa1195b7f1 Propagate opacity to frame window.
2008-04-22  Carlos Garnacho  <carlos@imendio.com>

        * src/core/compositor.c (process_property_notify,
        find_window_in_display): Propagate opacity to frame window.


svn path=/trunk/; revision=3692
2008-04-22 13:34:48 +00:00
Thomas James Alexander Thurman
3d9f2868fc Post-release bump to 2.23.13.
svn path=/trunk/; revision=3691
2008-04-22 12:35:31 +00:00
Thomas James Alexander Thurman
17bf5ea13a 2.23.8 release.
svn path=/trunk/; revision=3689
2008-04-22 12:30:12 +00:00
Thomas James Alexander Thurman
8d3432b8b7 sigh. I blame mornings
svn path=/trunk/; revision=3688
2008-04-22 12:29:21 +00:00
Thomas Thurman
3fcbbfbbd2 Thanks to Lucas Rocha, Iain Holmes, and Jens Granseuer for changes in this
2008-04-22  Thomas Thurman  <tthurman@gnome.org>

Thanks to Lucas Rocha, Iain Holmes, and Jens Granseuer for changes in
this release.

	* 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)


svn path=/trunk/; revision=3687
2008-04-22 12:28:35 +00:00
Thomas Thurman
2caa49bca8 Post-release bump to 2.21.8. (Which was seriously belated. Sorry, folks.)
2008-04-22  Thomas Thurman  <tthurman@gnome.org>

        * configure.in: Post-release bump to 2.21.8.
	(Which was seriously belated.  Sorry, folks.)


svn path=/trunk/; revision=3686
2008-04-22 12:21:22 +00:00
Thomas Thurman
a8912c4fb9 a few comments
2008-04-22  Thomas Thurman  <tthurman@gnome.org>

        * src/core/effects.c: a few comments


svn path=/trunk/; revision=3685
2008-04-22 12:15:05 +00:00
Yair Hershkovitz
7f8ad91af6 updated hebrew translation
svn path=/trunk/; revision=3683
2008-04-20 15:53:00 +00:00
Matej Urbančič
53a7cbe6af Updated Slovenian translation
svn path=/trunk/; revision=3682
2008-04-13 06:59:46 +00:00
Lucas Rocha
b9c6ba8536 no need to create a symlink to .desktop file in default-session directory
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.

svn path=/trunk/; revision=3681
2008-04-10 19:35:51 +00:00
Yair Hershkovitz
4e653cc49f updated hebrew translation
svn path=/trunk/; revision=3680
2008-04-10 10:00:07 +00:00
iain
c17d58237e Hide the overlay window (meta_compositor_unmanage_screen): Release the
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)


svn path=/trunk/; revision=3678
2008-04-07 22:32:35 +00:00
Jens Granseuer
48261330de reorder declarations so we don't break C89 compilers.
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.

svn path=/trunk/; revision=3677
2008-04-07 20:50:37 +00:00
Thomas James Alexander Thurman
300be6e03b 2.23.5 release.
svn path=/trunk/; revision=3676
2008-04-06 19:07:03 +00:00
Eskild Hustvedt
0c83442709 Updated the Norwegian Nynorsk translation
svn path=/trunk/; revision=3674
2008-04-04 11:59:57 +00:00
Thomas Thurman
d372cf598a preferences which have a null target don't get updated! (#526016)
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)


svn path=/trunk/; revision=3673
2008-04-03 17:36:32 +00:00
Baris Cicek
5fa7c76ba0 Updated turkish translation
svn path=/trunk/; revision=3671
2008-03-31 10:08:22 +00:00
Jorge Gonzalez Gonzalez
77644a32d7 Updated Spanish translation
svn path=/trunk/; revision=3670
2008-03-30 09:09:43 +00:00
Lucas Rocha
fb588c6075 make Metacity install its desktop files in the default session directory
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.)


svn path=/trunk/; revision=3669
2008-03-30 00:01:18 +00:00
Thomas Thurman
6a586e8929 prevent null dereference if the theme was invalid, which caused crashes in
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.


svn path=/trunk/; revision=3668
2008-03-29 21:29:57 +00:00
Owen Taylor
58ef1592a5 Don't immediately unminimize an initially iconic window (#491090)
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)


svn path=/trunk/; revision=3667
2008-03-28 18:44:59 +00:00
Thomas Thurman
9730f15411 files are saved in ~/.config/metacity/sessions and checked for there and
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.


svn path=/trunk/; revision=3666
2008-03-27 13:12:28 +00:00
Thomas Thurman
f3e64f181d fix regression where Metacity sometimes wouldn't quit when replaced
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


svn path=/trunk/; revision=3665
2008-03-27 12:32:50 +00:00
Thomas Thurman
0130c0d5b6 meta_display_screen_for_root is quite capable of returning NULL.
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.


svn path=/trunk/; revision=3664
2008-03-26 13:32:58 +00:00
Thomas Thurman
1e325bcbdf MetaDisplay becomes a singleton. The static variable which holds this
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.


svn path=/trunk/; revision=3663
2008-03-25 03:39:13 +00:00
Nguyễn Thái Ngọc Duy
941a9a9a7f Update Vietnamese translation
2008-03-23  Nguyễn Thái Ngọc Duy <pclouds@gmail.com>

	* vi.po: Update Vietnamese translation


svn path=/trunk/; revision=3661
2008-03-23 12:11:59 +00:00
Thomas James Alexander Thurman
38b4f08b2b Post-release bump to 2.23.5.
svn path=/trunk/; revision=3660
2008-03-21 04:12:42 +00:00
Thomas James Alexander Thurman
fe1ea6ac34 2.23.3 release.
svn path=/trunk/; revision=3658
2008-03-21 04:07:03 +00:00
Thomas Thurman
932fb56ea9 Workspaces whose name is the standard name plus a non-empty string are
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.


svn path=/trunk/; revision=3657
2008-03-21 02:56:52 +00:00
Kwok-Koon Cheung
18dfce2873 Typo fix for zh_HK and zh_TW
svn path=/trunk/; revision=3656
2008-03-20 10:00:18 +00:00
Iain Holmes
915192ca9f 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): 
Handle
        compositor being disabled and don't crash.


svn path=/trunk/; revision=3655
2008-03-19 11:51:10 +00:00
Iain Holmes
f2b400b82c Add a screen argument. (process_property_notify): Damage the whole screen
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.


svn path=/trunk/; revision=3654
2008-03-19 00:47:01 +00:00
Iain Holmes
e629364582 Allow shaped windows _with frames_ to have shadows.
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.


svn path=/trunk/; revision=3653
2008-03-18 23:42:20 +00:00
Gabor Kelemen
3299427097 Translation updated
2008-03-18  Gabor Kelemen  <kelemeng@gnome.hu>

	* hu.po: Translation updated


svn path=/trunk/; revision=3652
2008-03-18 22:11:01 +00:00
Marco Pesenti Gritti
7d239b0d45 newly created windows can't be considered to be above themselves; fixes
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.


svn path=/trunk/; revision=3650
2008-03-18 12:22:25 +00:00
Matthew Wilson
9836007f5e allow moving workspace while moving window with modifier remove the
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


svn path=/trunk/; revision=3649
2008-03-11 03:37:54 +00:00
Josh Lee
87cceaf992 Don't shadow shaped windows.
2008-03-10  Josh Lee  <jleedev@gmail.com>

        * src/core/compositor.c (window_has_shadow): Don't shadow
	shaped windows.


svn path=/trunk/; revision=3648
2008-03-10 13:52:55 +00:00
Kenneth Nielsen
f77dba7ac2 Updated Danish translation
svn path=/trunk/; revision=3646
2008-03-09 22:28:16 +00:00
Gabor Kelemen
d19de0c1ee Translation updated
2008-03-09  Gabor Kelemen  <kelemeng@gnome.hu>

	* hu.po: Translation updated


svn path=/trunk/; revision=3640
2008-03-09 21:41:30 +00:00
Daniel Nylander
142b64fff9 sv.po: Updated Swedish translation
svn path=/trunk/; revision=3638
2008-03-08 23:44:32 +00:00
Vasiliy Faronov
a9b20427a5 Updated Russian translation.
2008-03-09  Vasiliy Faronov  <qvvx@yandex.ru>

	* ru.po: Updated Russian translation.


svn path=/trunk/; revision=3636
2008-03-08 23:11:42 +00:00
Yannig MARCHEGAY
0e02cf9b07 Updated Occitan translation
svn path=/trunk/; revision=3635
2008-03-08 09:46:43 +00:00
Maxim Dziumanenko
5f4c3f817b Update Ukrainian translation.
2008-03-07 Maxim Dziumanenko <dziumanenko@gmail.com>

	* Update Ukrainian translation.

svn path=/trunk/; revision=3633
2008-03-07 14:29:27 +00:00
Thomas James Alexander Thurman
80e838aed5 Post-release bump to 2.23.3.
svn path=/trunk/; revision=3632
2008-03-07 03:12:35 +00:00
Thomas James Alexander Thurman
b4c369931d 2.23.2 release.
svn path=/trunk/; revision=3630
2008-03-07 03:05:10 +00:00
Thomas Thurman
1b00ca6158 remove debug statements (*blush*)
2008-03-07  Thomas Thurman  <tthurman@gnome.org>

        * src/core/prefs.c (mouse_button_mods_handler): remove
	debug statements (*blush*)


svn path=/trunk/; revision=3629
2008-03-07 03:02:44 +00:00
Thomas James Alexander Thurman
4b8a05b803 Post-release bump to 2.23.2.
svn path=/trunk/; revision=3628
2008-03-06 22:15:25 +00:00
Thomas James Alexander Thurman
fe816afa1d 2.23.1 release.
svn path=/trunk/; revision=3626
2008-03-06 22:01:27 +00:00
Thomas Thurman
b93a94506b basic md5 printing (not used yet); also print release announcements to
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)


svn path=/trunk/; revision=3625
2008-03-06 21:51:47 +00:00
Thomas Thurman
d1ef896c73 Part three of the great prefs refactor, this time dealing with string
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  


svn path=/trunk/; revision=3624
2008-03-06 17:59:20 +00:00
Thomas Thurman
ed5c34d335 added some spacing to see whether it helps Pulse
2008-03-04  Thomas Thurman  <tthurman@gnome.org>

        * MAINTAINERS: added some spacing to see whether it
	helps Pulse


svn path=/trunk/; revision=3623
2008-03-04 14:50:48 +00:00
Jorge Gonzalez Gonzalez
429a8ccd15 Updated Spanish translation
svn path=/trunk/; revision=3622
2008-03-03 22:56:40 +00:00
Cosimo Cecchi
a8c3d1614f Add ability to vertically and horizontally maximise using the mouse, by
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


svn path=/trunk/; revision=3619
2008-03-03 01:58:54 +00:00
Chao-Hsiung Liao
ac10c309ea Updated Traditional Chinese translation(Hong Kong). Updated Traditional
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).



svn path=/trunk/; revision=3616
2008-03-01 00:54:00 +00:00
Andrea Del Signore
e021e06178 Add support for "spacer" as a button type which adds some empty space.
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


svn path=/trunk/; revision=3615
2008-02-29 20:41:07 +00:00
Thomas Thurman
8c6f3853b0 removed unnecessary #include which should have been in Jim's patch (not
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!)


svn path=/trunk/; revision=3610
2008-02-28 00:25:36 +00:00
Stéphane Raimbault
e7196621bc Updated French translation (merged from gnome-2-22).
2008-02-27  Stéphane Raimbault  <stephane.raimbault@gmail.com>

	* fr.po: Updated French translation (merged from gnome-2-22).

svn path=/trunk/; revision=3609
2008-02-27 21:15:50 +00:00
Jim Huang
f8a5ef7c9f deleted as no longer used modified accordingly
2008-02-27  Jim Huang  <jserv.tw@gmail.com>

        * src/core/spring-model.[ch]: deleted as no longer used
        * src/Makefile.am: modified accordingly

svn path=/trunk/; revision=3607
2008-02-27 19:55:09 +00:00
Thomas Thurman
85631aec0f Lots of tiny fixes to make sure we compile with "gcc -ansi -Werror".
2008-02-27  Thomas Thurman  <tthurman@gnome.org>

	Lots of tiny fixes to make sure we compile with
	"gcc -ansi -Werror".


svn path=/trunk/; revision=3606
2008-02-27 04:39:10 +00:00
Jens Granseuer
401b716cf5 reorder declarations so we don't break C89 compilers. Closes #518917.
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.


svn path=/trunk/; revision=3605
2008-02-26 20:47:29 +00:00
Thomas James Alexander Thurman
3d4adc8be9 Post-release bump to 2.23.1.
svn path=/trunk/; revision=3604
2008-02-26 19:19:42 +00:00
Thomas James Alexander Thurman
210206b699 2.23.0 release.
svn path=/trunk/; revision=3602
2008-02-26 19:13:38 +00:00
Thomas Thurman
c0c05d51ea ANY post-release bump is now the most recent, not just the one that
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.


svn path=/trunk/; revision=3601
2008-02-26 18:57:57 +00:00
Thomas James Alexander Thurman
9d9576612b 2.23.0 release.
svn path=/trunk/; revision=3600
2008-02-26 18:44:15 +00:00
Thomas Wood
abdb3fd8b9 allow users of the preview widget to get a mask for windows in the correct
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.


svn path=/trunk/; revision=3596
2008-02-25 15:39:49 +00:00
Changwoo Ryu
b3f766c618 Updated Korean translation
svn path=/trunk/; revision=3594
2008-02-24 15:04:22 +00:00
Yang Zhang
41e93f71be Updated zh_CN translation from branch gnome-2-22
svn path=/trunk/; revision=3593
2008-02-24 13:49:33 +00:00
Ilkka Tuohela
79076b2997 Updated Finnish translation (bug #518255)
svn path=/trunk/; revision=3591
2008-02-24 03:09:38 +00:00
Thomas Thurman
3684bd2da4 Refactor handling of boolean preferences.
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.

svn path=/trunk/; revision=3590
2008-02-23 21:02:05 +00:00
Thomas Thurman
d0e22bf63d Print URL of changeset on success.
2008-02-23  Thomas Thurman  <tthurman@gnome.org>

        * tools/commit-wrangler.py: Print URL of changeset on success.


svn path=/trunk/; revision=3589
2008-02-23 20:54:49 +00:00
Ihar Hrachyshka
8450d97341 Updated Belarusian Latin translation.
svn path=/trunk/; revision=3587
2008-02-23 09:40:44 +00:00
Thomas Thurman
3043d2a2be Refactored handling of enumerated preferences.
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.



svn path=/trunk/; revision=3586
2008-02-23 06:16:03 +00:00
Mikkel Kamstrup Erlandsen
3ca31c7b04 Respect requested position on _NET_MOVERESIZE_WINDOW. Closes #448183
svn path=/trunk/; revision=3585
2008-02-21 10:00:10 +00:00
Ilkka Tuohela
8802ac2fe9 Updated Finnish translation
svn path=/trunk/; revision=3583
2008-02-20 04:59:03 +00:00
Yannig MARCHEGAY
61c7487172 Updated Occitan translation
svn path=/trunk/; revision=3582
2008-02-19 21:41:34 +00:00
Matthias Clasen
3782c482ef Make skip-taskbar windows appear in the Ctrl-Alt-Tab list. Closes #106249.
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.


svn path=/trunk/; revision=3580
2008-02-19 04:49:58 +00:00
Thomas Thurman
8c487ddbb2 if we have libSM and its headers, that means we did find it, not that we
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.


svn path=/trunk/; revision=3579
2008-02-18 01:29:27 +00:00
Thomas Thurman
07939f235f When resizing a window with the keyboard, stay one pixels from the edges
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.


svn path=/trunk/; revision=3578
2008-02-18 00:21:50 +00:00
Wouter Bolsterlee
abfccf5002 Updated Dutch translation by Wouter Bolsterlee.
2008-02-18  Wouter Bolsterlee  <wbolster@svn.gnome.org>

	* nl.po: Updated Dutch translation by Wouter Bolsterlee.

svn path=/trunk/; revision=3576
2008-02-17 23:08:12 +00:00
Ihar Hrachyshka
df83c15583 Updated Belarusian Latin translation.
svn path=/trunk/; revision=3575
2008-02-17 22:56:44 +00:00
Thomas Thurman
83010879f1 added new script to manage commits
2008-02-17  Thomas Thurman  <tthurman@gnome.org>

        * tools/commit-wrangler.py: added new script to manage commits


svn path=/trunk/; revision=3574
2008-02-17 22:46:30 +00:00
Jim Huang
c35fd86b3b Allow compilation when gconf mode is disabled. Closes #515019.
2008-02-17  Jim Huang  <jserv.tw@gmail.com>

        * src/core/prefs.c (update_binding): Allow compilation
	when gconf mode is disabled. Closes #515019.


svn path=/trunk/; revision=3573
2008-02-17 22:43:28 +00:00
Runa Bhattacharjee
932fd0dcff Added Entry for Kannada Translation addition and addition to LINGUAS
svn path=/trunk/; revision=3572
2008-02-15 14:37:07 +00:00
Runa Bhattacharjee
2a53302ab9 Added Kannada (kn) to the List of Languages
svn path=/trunk/; revision=3571
2008-02-15 14:36:50 +00:00
Runa Bhattacharjee
44a4c1c9fb Added Kannada Translations by Shankar Prasad
svn path=/trunk/; revision=3570
2008-02-15 14:36:31 +00:00
Jim Huang
04956ecf18 fixups to allow compilation in non-verbose mode. Closes #515152.
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.   

svn path=/trunk/; revision=3569
2008-02-15 04:37:39 +00:00
Ignacio Casal Quinteiro
2d41d65cf2 Updated Galician Translation.
svn path=/trunk/; revision=3568
2008-02-14 12:26:04 +00:00
Pawan Chitrakar
7e41ffdda5 Updated Nepali Translation
svn path=/trunk/; revision=3567
2008-02-14 09:20:54 +00:00
Ilkka Tuohela
54c15a2583 Updated Finnish translation
svn path=/trunk/; revision=3565
2008-02-14 04:24:58 +00:00
Ilkka Tuohela
8aae0a7723 Updated Finnish translation
svn path=/trunk/; revision=3564
2008-02-13 10:48:00 +00:00
Thomas Thurman
f23d8a3774 Correct help for verbose option name.
2008-02-12  Thomas Thurman  <tthurman@gnome.org>                                                                 
                                                                                                                 
        * configure.in: Correct help for verbose option name. 


svn path=/trunk/; revision=3563
2008-02-13 04:13:06 +00:00
Thomas Thurman
aad6f37f8a Post-branch bump to 2.23.0.
2008-02-12  Thomas Thurman  <tthurman@gnome.org>                                                                 
                                                                                                                 
        * configure.in: Post-branch bump to 2.23.0.


svn path=/trunk/; revision=3562
2008-02-12 14:45:42 +00:00
Thomas James Alexander Thurman
404a61b571 Post-release bump to 2.21.21.
svn path=/trunk/; revision=3560
2008-02-12 00:05:38 +00:00
115 changed files with 33110 additions and 25006 deletions

592
ChangeLog
View File

@@ -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.

View File

@@ -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
View File

@@ -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
=======

View File

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

View File

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

View File

@@ -38,6 +38,7 @@ is
it
ja
ka
kn
ko
ku
lt

332
po/ar.po
View File

@@ -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\" بالفعل"

View File

@@ -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"

1913
po/bg.po

File diff suppressed because it is too large Load Diff

1915
po/da.po

File diff suppressed because it is too large Load Diff

637
po/es.po

File diff suppressed because it is too large Load Diff

1888
po/fi.po

File diff suppressed because it is too large Load Diff

1851
po/fr.po

File diff suppressed because it is too large Load Diff

1799
po/gl.po

File diff suppressed because it is too large Load Diff

1790
po/he.po

File diff suppressed because it is too large Load Diff

2651
po/hu.po

File diff suppressed because it is too large Load Diff

3390
po/kn.po Normal file

File diff suppressed because it is too large Load Diff

1856
po/ko.po

File diff suppressed because it is too large Load Diff

723
po/nb.po

File diff suppressed because it is too large Load Diff

3247
po/ne.po

File diff suppressed because it is too large Load Diff

2952
po/nl.po

File diff suppressed because it is too large Load Diff

2455
po/nn.po

File diff suppressed because it is too large Load Diff

1775
po/oc.po

File diff suppressed because it is too large Load Diff

2827
po/ru.po

File diff suppressed because it is too large Load Diff

361
po/sl.po
View File

@@ -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 \"&lt;Control&gt;a\" ali \"&lt;Shift&gt;&lt;Alt&gt;F1. Razčlenilnik je precej popustljiv in dopušča različno velikost črk ter okrajšave kot npr. \"&lt;Ctl&gt;\" in \"&lt;Ctrl&gt;\". Č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
View File

@@ -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 \"&lt;Control&gt;a\" eller \"&lt;Shift&gt;&lt;Alt&gt;F1\". Tolken är ganska tillåtande och tillåter gemener och versaler och även förkortningar som \"&lt;Ctl&gt;\" och \"&lt;Ctrl&gt;\". 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
View File

@@ -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\" ถูกกำหนดไว้แล้ว"

730
po/tr.po

File diff suppressed because it is too large Load Diff

1894
po/uk.po

File diff suppressed because it is too large Load Diff

2512
po/vi.po

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

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

View 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

View File

@@ -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
View 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
View 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 */

View File

@@ -52,7 +52,7 @@
#include <config.h>
#include "bell.h"
#include "screen.h"
#include "screen-private.h"
#include "prefs.h"
/**

View File

@@ -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);

View File

@@ -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)
{

View File

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

View File

@@ -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
{

View File

@@ -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);
}

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -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;

View File

@@ -24,6 +24,7 @@
#include <config.h>
#include "errors.h"
#include "display-private.h"
#include <errno.h>
#include <stdlib.h>
#include <gdk/gdk.h>

View File

@@ -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;

View File

@@ -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;
}

View File

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

View File

@@ -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);

View File

@@ -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);

View File

@@ -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;

View File

@@ -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;

View File

@@ -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;

View File

@@ -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);

View File

@@ -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 ();

View File

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

View File

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

File diff suppressed because it is too large Load Diff

View File

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

View File

@@ -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,
&current_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)

View File

@@ -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 */

View File

@@ -24,7 +24,7 @@
#ifndef META_SESSION_H
#define META_SESSION_H
#include "window.h"
#include "window-private.h"
typedef struct _MetaWindowSessionInfo MetaWindowSessionInfo;

View File

@@ -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;
}

View File

@@ -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);

View File

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

View File

@@ -25,7 +25,7 @@
#ifndef META_STACK_H
#define META_STACK_H
#include "screen.h"
#include "screen-private.h"
/* Layers vs. stack positions
* ==========================

View File

@@ -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)];

View File

@@ -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);

View File

@@ -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))

View File

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

View File

@@ -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);

View File

@@ -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;
}

View File

@@ -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);

View File

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

View File

@@ -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:

View File

@@ -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 */

View File

@@ -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 */

View File

@@ -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
View 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

View File

@@ -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
View 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
View 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
View 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
View 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

View File

@@ -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.
*/

View File

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

View File

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

View File

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

View File

@@ -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;
}
}

View File

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

View File

@@ -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);

View File

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