Compare commits
97 Commits
METACITY_2
...
METACITY_2
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
0fd533eee1 | ||
|
|
dc7e1007b0 | ||
|
|
976968e07e | ||
|
|
d986898234 | ||
|
|
1d8db8825f | ||
|
|
7c377a0193 | ||
|
|
fe9e1cdb05 | ||
|
|
d6e8c6c3ed | ||
|
|
029e3fc0ae | ||
|
|
c27cdff29c | ||
|
|
cf2da99859 | ||
|
|
3fe42e647a | ||
|
|
1d06b1f5e8 | ||
|
|
20479df535 | ||
|
|
c585fa5036 | ||
|
|
1aed84c9d7 | ||
|
|
8cacb2afef | ||
|
|
2cfd418b03 | ||
|
|
e4c4d8b4d8 | ||
|
|
fc74911256 | ||
|
|
3d0535569d | ||
|
|
4dc7e6a4ed | ||
|
|
e84b5bfed0 | ||
|
|
c9366989a0 | ||
|
|
eb3c38e3ad | ||
|
|
5196fb1ec5 | ||
|
|
353408e30b | ||
|
|
cc6b0e03fb | ||
|
|
38cd0f28ef | ||
|
|
3d118513c5 | ||
|
|
d35c086240 | ||
|
|
27e7d0c529 | ||
|
|
a9294e2906 | ||
|
|
446cc65f5d | ||
|
|
0a94728234 | ||
|
|
aa87fe4140 | ||
|
|
5944e94710 | ||
|
|
2b468a45b3 | ||
|
|
d7cff41d1b | ||
|
|
b4d0db909b | ||
|
|
b595f1e99c | ||
|
|
ed467aad59 | ||
|
|
73224faec0 | ||
|
|
bd5436097e | ||
|
|
a462ba5798 | ||
|
|
b1ff50f45f | ||
|
|
5a6bbef8ac | ||
|
|
309e254b1d | ||
|
|
10dd09687b | ||
|
|
69bbbbc6ca | ||
|
|
1a6c98c79b | ||
|
|
952e883456 | ||
|
|
c652788542 | ||
|
|
696ef85e64 | ||
|
|
007e8c013c | ||
|
|
cd07c25706 | ||
|
|
3802f157b6 | ||
|
|
a871830927 | ||
|
|
5545e49581 | ||
|
|
e98e38d32e | ||
|
|
2d74cdc026 | ||
|
|
7c343fc22d | ||
|
|
1dc74bbc8c | ||
|
|
618a6b38c3 | ||
|
|
e8b016984b | ||
|
|
8bbccb91f7 | ||
|
|
9c2e546f53 | ||
|
|
12ac1d6a4b | ||
|
|
2ccb7f7bfa | ||
|
|
389eb410c7 | ||
|
|
f0c4d2c57b | ||
|
|
4c4943312a | ||
|
|
d616aeb828 | ||
|
|
92c63dfdc5 | ||
|
|
f9678266c7 | ||
|
|
e3db5a0be6 | ||
|
|
49e1802c7a | ||
|
|
eb4941d005 | ||
|
|
371f0b732f | ||
|
|
bdd9e28878 | ||
|
|
1f05ddcd0e | ||
|
|
78604b64bc | ||
|
|
7c4af65ec1 | ||
|
|
e6083f64fb | ||
|
|
b996cd03be | ||
|
|
36287b9417 | ||
|
|
6d8efc90e0 | ||
|
|
d53af7196c | ||
|
|
667c74bc4d | ||
|
|
c5c59b1761 | ||
|
|
5fb20624c4 | ||
|
|
8f2b9cb4a9 | ||
|
|
0418146249 | ||
|
|
6e70013412 | ||
|
|
ff33209e1f | ||
|
|
98791271e1 | ||
|
|
8eac4fa3ce |
231
ChangeLog
231
ChangeLog
@@ -1,3 +1,234 @@
|
||||
2007-09-15 Elijah Newren <newren gmail com>
|
||||
|
||||
* configure.in:
|
||||
* NEWS:
|
||||
2.20.0 release
|
||||
|
||||
2007-09-15 Elijah Newren <newren gmail com>
|
||||
|
||||
* src/session.c (warn_about_lame_clients_and_finish_interact):
|
||||
Patch from Alexey Rusakov to prevent a crash on logout with
|
||||
metacity subsequently not being restored in future sessions.
|
||||
Fixes #433253.
|
||||
|
||||
2007-09-01 Elijah Newren <newren gmail com>
|
||||
|
||||
* HACKING: update; cvs->svn & mention GConf needed
|
||||
* MAINTAINERS: Make it match idiotic format requirements (I love
|
||||
you Olav!)
|
||||
|
||||
2007-08-07 Thomas Thurman <thomas@thurman.org.uk>
|
||||
|
||||
* configure.in: post-release bump to 2.19.89.
|
||||
|
||||
2007-08-07 Thomas Thurman <thomas@thurman.org.uk>
|
||||
|
||||
* NEWS: 2.19.55 release.
|
||||
|
||||
2007-08-06 Thomas Thurman <thomas@thurman.org.uk>
|
||||
|
||||
If KEY_AUTO_RAISE_DELAY is undefined or non-integer, it is not treated
|
||||
as zero.
|
||||
|
||||
* src/prefs.c (meta_prefs_init): check type of key, and behave sensibly
|
||||
if it's unexpected.
|
||||
* src/prefs.c (find_and_update_list_binding): remove old comment.
|
||||
|
||||
2007-08-03 Frederic Crozat <fcrozat@mandriva.com>
|
||||
|
||||
* src/delete.c: Fix mangled window title in "Force Quit"
|
||||
dialog when using non-UTF8 locale. Close #462734.
|
||||
|
||||
2007-08-02 Thomas Thurman <thomas@thurman.org.uk>
|
||||
|
||||
Move "close" to bottom of window menu; allow workspace list to appear
|
||||
at any position in the menu. Closes #104026.
|
||||
|
||||
* src/menu.c (MetaMenuItemType): added new MENU_ITEM_WORKSPACE_LIST
|
||||
item.
|
||||
* src/menu.c (menuitems): reordered "close", added a workspace list.
|
||||
* src/menu.c (menu_item_new): return null for workspace lists.
|
||||
* src/menu.c (meta_window_menu_new): handle workspace lists.
|
||||
|
||||
2007-07-31 Thomas Thurman <thomas@thurman.org.uk>
|
||||
|
||||
* src/window.c (meta_window_show_menu): windows which are
|
||||
always on top have the "stick" menu option insensitive. (#460997).
|
||||
|
||||
2007-07-23 Thomas Thurman <thomas@thurman.org.uk>
|
||||
|
||||
* src/window.h (MetaWindow): Put all bitfields together to
|
||||
help with optimisation. Closes #450271 (for real this time).
|
||||
|
||||
2007-07-23 Matthias Clasen <mclasen@redhat.com>
|
||||
|
||||
* configure.in:
|
||||
* src/Makefile.am: Use the correct directory when
|
||||
installing keybindings. (#454055)
|
||||
|
||||
2007-07-22 Thomas Thurman <thomas@thurman.org.uk>
|
||||
|
||||
* configure.in: post-release bump to 2.19.55.
|
||||
|
||||
2007-07-22 Thomas Thurman <thomas@thurman.org.uk>
|
||||
|
||||
* NEWS: 2.19.34 release.
|
||||
|
||||
2007-07-22 Rob Bradford <rob@robster.org.uk>
|
||||
|
||||
Fix a bug where the window can be focused without being raised
|
||||
if the maximize is aborted. Fixes #459027.
|
||||
|
||||
* src/frames.c (meta_frames_button_press_event,
|
||||
meta_frames_button_release_event): When maximising only focus
|
||||
the window once the button press is released.
|
||||
|
||||
2007-07-22 Cosimo Cecchi <anarki@lilik.it>
|
||||
|
||||
Unset fullscreen is an allowed action where relevant. Fixes #449427.
|
||||
|
||||
* src/window.c (set_allowed_actions_hint): Separate FULLSCREEN action
|
||||
from RESIZE action.
|
||||
|
||||
2007-07-22 Yair Hershkovitz <yairhr@gmail.com>
|
||||
|
||||
Reverse window buttons and align them to the left for RTL locales.
|
||||
Fixed #92212.
|
||||
|
||||
* src/prefs.c (button_layout, init_button_layout, update_button_layout):
|
||||
Support reversing and left-aligning of buttons for both Gconf and
|
||||
NO-Gconf modes.
|
||||
* src/main.c (main): Call meta_ui_init() before meta_prefs_init().
|
||||
meta_prefs_init() check for RTL locales which is initialized in
|
||||
meta_ui_init().
|
||||
* src/theme.c (meta_frame_layout_calc_geometry): Fixed access to
|
||||
button_layout to stop iterating when getting to a
|
||||
META_BUTTON_FUNCTION_LAST value.
|
||||
|
||||
2007-06-23 Thomas Thurman <thomas@thurman.org.uk>
|
||||
|
||||
* src/window.c (MetaWindow): Put all bitfields together to
|
||||
help with optimisation. Closes #450271.
|
||||
|
||||
2007-06-18 Thomas Thurman <thomas@thurman.org.uk>
|
||||
|
||||
* src/main.c (version): Update copyright year because it was
|
||||
five years out of date.
|
||||
|
||||
2007-06-18 Thomas Thurman <thomas@thurman.org.uk>
|
||||
|
||||
* configure.in: post-release bump to 2.19.34.
|
||||
|
||||
2007-06-18 Thomas Thurman <thomas@thurman.org.uk>
|
||||
|
||||
* NEWS: 2.19.21 release.
|
||||
|
||||
2007-06-18 Thomas Thurman <thomas@thurman.org.uk>
|
||||
|
||||
* src/place.c (find_first_fit, meta_window_place): Only open new
|
||||
windows on the current xinerama. Closes #145503, for now.
|
||||
|
||||
2007-06-17 Thomas Thurman <thomas@thurman.org.uk>
|
||||
|
||||
* src/screen.[ch] (meta_screen_apply_startup_properties): return a
|
||||
boolean instead a void, to show whether startup properties were
|
||||
applied. Also some commenting.
|
||||
* src/window-props.c: (reload_net_startup_id): Only activate the
|
||||
window if the startup_id was actually changed. Closes #400167.
|
||||
|
||||
2007-06-16 Damien Carbery <damien.carbery@sun.com>
|
||||
|
||||
* effects.h: MetaCloseEffect and MetaFocusEffect, which were empty
|
||||
structs, #ifdeffed out because they broke the build on Solaris.
|
||||
Closes #397296.
|
||||
|
||||
2007-06-16 Damien Carbery <damien.carbery@sun.com>
|
||||
|
||||
* window.h: make prototype of meta_window_unqueue match
|
||||
implementation. Closes #446535.
|
||||
|
||||
2007-06-10 Thomas Thurman <thomas@thurman.org.uk>
|
||||
|
||||
* configure.in: post-release bump to 2.19.21.
|
||||
|
||||
2007-06-10 Thomas Thurman <thomas@thurman.org.uk>
|
||||
|
||||
* NEWS: 2.19.13 release.
|
||||
|
||||
2007-06-10 Thomas Thurman <thomas@thurman.org.uk>
|
||||
|
||||
Refactor thrice-duplicated queue code in window.c. Closes #376760.
|
||||
|
||||
* src/window.c (meta_window_queue, meta_window_unqueue):
|
||||
New functiortl.patchns.
|
||||
* src/window.[ch] (meta_window_unqueue_*, meta_window_queue_*):
|
||||
Removed functions.
|
||||
* src/window.c (meta_window_new_with_attrs, meta_window_free,
|
||||
meta_window_flush_calc_showing, queue_calc_showing_func,
|
||||
meta_window_minimize, meta_window_unminimize, meta_window_maximize,
|
||||
meta_window_make_fullscreen, meta_window_shade,
|
||||
meta_window_unshade, meta_window_move_resize_internal,
|
||||
window_stick_impl, window_unstick_impl,
|
||||
meta_window_client_message, process_property_notify): Modified to
|
||||
use new queueing functions.
|
||||
* src/window.c (idle_move_resize, idle_update_icon,
|
||||
idle_calc_showing): update to receive queue number from pointer.
|
||||
* src/window.h (MetaQueueType): new enum.
|
||||
* src/window.h (MetaWindow): *_queued replaced with is_in_queue
|
||||
bitfield.
|
||||
* src/core.c (meta_core_queue_frame_resize):
|
||||
* src/display.c (event_callback,
|
||||
meta_display_queue_retheme_all_windows): Using new queueing functions.
|
||||
* src/frame.c (meta_window_destroy_frame): Using new queueing functions.
|
||||
* src/screen.c (queue_resize, meta_screen_resize_func,
|
||||
queue_windows_showing): Using new queueing functions.
|
||||
* src/window-props.c (reload_mwm_hints, reload_wm_hints,
|
||||
reload_transient_for): Using new queueing functions.
|
||||
* src/workspace.c (meta_workspace_add_window,
|
||||
meta_workspace_remove_window, meta_workspace_queue_calc_showing,
|
||||
meta_workspace_invalidate_work_area): Using new queueing functions.
|
||||
|
||||
2007-06-09 Thomas Thurman <thomas@thurman.org.uk>
|
||||
|
||||
* src/50-metacity-key.xml.in: added switch_group; closes #444879.
|
||||
|
||||
2007-06-08 Elijah Newren <newren gmail com>
|
||||
|
||||
* src/metacity.schemas.in:
|
||||
Update the raise_on_click description to try to prevent misuses,
|
||||
to appropriately warn users, and to stop wasting the time of
|
||||
application developers. #445447, #389923
|
||||
|
||||
2007-06-06 Thomas Thurman <thomas@thurman.org.uk>
|
||||
|
||||
* frames.c, core.[ch]: changed all tabs to spaces.
|
||||
* core.[ch] (meta_core_get_client_size, meta_core_window_has_frame,
|
||||
meta_core_titlebar_is_onscreen, meta_core_get_client_xwindow,
|
||||
meta_core_get_frame_flags, meta_core_get_frame_type,
|
||||
meta_core_get_mini_icon, meta_core_get_icon, meta_core_get_position,
|
||||
meta_core_get_size, meta_core_get_frame_workspace,
|
||||
meta_core_get_frame_extents, meta_core_get_screen_size): Removed
|
||||
and replaced with meta_core_get().
|
||||
* core.[ch] (meta_core_get): New function.
|
||||
* core.h (MetaCoreGetType): New enum.
|
||||
* frames.c (meta_frames_ensure_layout, meta_frames_calc_geometry,
|
||||
meta_frames_get_geometry, meta_frames_apply_shapes,
|
||||
meta_frame_titlebar_event, meta_frames_button_press_event,
|
||||
populate_cache, clip_to_screen, meta_frames_paint_to_drawable,
|
||||
meta_frames_set_window_background, get_control): Replace use of
|
||||
removed functions in ui.c with meta_core_get().
|
||||
|
||||
All this should make things a little faster. Closes #377495.
|
||||
|
||||
2007-06-04 Thomas Thurman <thomas@thurman.org.uk>
|
||||
|
||||
* NEWS: Added translators' names from 2.19.8 (sorry, folks:
|
||||
I forgot to save NEWS with their names in it before shipping.)
|
||||
|
||||
2007-06-04 Thomas Thurman <thomas@thurman.org.uk>
|
||||
|
||||
* configure.in: post-release bump to 2.19.13.
|
||||
|
||||
2007-06-04 Thomas Thurman <thomas@thurman.org.uk>
|
||||
|
||||
* NEWS: 2.19.8 release.
|
||||
|
||||
21
HACKING
21
HACKING
@@ -42,18 +42,17 @@ Minimal Building/Testing Environment
|
||||
build a development version of Metacity -- odds are, you may be able
|
||||
to build metacity from CVS without building any other modules.
|
||||
|
||||
As long as you have gtk+ >= 2.10 with your distro (gtk+ >= 2.6 if
|
||||
you manually revert the change from bug 348633), you should be able
|
||||
to install your distro's development packages (e.g. gtk2-devel,
|
||||
GConf2-devel, startup-notification-devel on Fedora; also, remember
|
||||
to install the gnome-common package which is needed for building cvs
|
||||
versions of Gnome modules like Metacity) as well as the standard
|
||||
development tools (gcc, autoconf, automake, pkg-config, intltool,
|
||||
and libtool) and be ready to build and test Metacity. Steps to do
|
||||
so:
|
||||
As long as you have gtk+ >= 2.10 and GConf with your distro (gtk+ >=
|
||||
2.6 if you manually revert the change from bug 348633), you should
|
||||
be able to install your distro's development packages
|
||||
(e.g. gtk2-devel, GConf2-devel, startup-notification-devel on
|
||||
Fedora; also, remember to install the gnome-common package which is
|
||||
needed for building cvs versions of Gnome modules like Metacity) as
|
||||
well as the standard development tools (gcc, autoconf, automake,
|
||||
pkg-config, intltool, and libtool) and be ready to build and test
|
||||
Metacity. Steps to do so:
|
||||
|
||||
$ cvs -q -z3 -d :pserver:anonymous@anoncvs.gnome.org:/cvs/gnome \
|
||||
checkout metacity
|
||||
$ svn checkout http://svn.gnome.org/svn/metacity/trunk metacity
|
||||
$ cd metacity
|
||||
$ ./autogen.sh --prefix /usr
|
||||
$ make
|
||||
|
||||
12
MAINTAINERS
12
MAINTAINERS
@@ -1,13 +1,17 @@
|
||||
Currently active maintainers
|
||||
--------------------------------
|
||||
Elijah Newren (newren gmail com)
|
||||
Elijah Newren
|
||||
Email: newren gmail com
|
||||
Userid: newren
|
||||
- Usually won't touch the theme bugs (isn't interested) or the
|
||||
compositor (until open source nvidia drivers are up to snuff).
|
||||
Tends to be most interested in libwnck/gtk interactions, focus
|
||||
issues, constraints problems, and raising/stacking, but works on
|
||||
just about anything other than themes and the compositor.
|
||||
|
||||
Thomas Thurman (thomas thurman org uk)
|
||||
Thomas Thurman
|
||||
Email: thomas thurman org uk
|
||||
Userid: tthurman
|
||||
- Responsible for all theme bugs and the compositor (thank goodness
|
||||
Thomas got involved, eh?). I'm sure he'll replace this sentence
|
||||
with his interests when he reads it. ;-)
|
||||
@@ -15,7 +19,9 @@ Thomas Thurman (thomas thurman org uk)
|
||||
|
||||
Semi-active maintainers
|
||||
--------------------------------
|
||||
Havoc Pennington (hp redhat com)
|
||||
Havoc Pennington
|
||||
Email: hp redhat com
|
||||
Userid: hp
|
||||
- Original author. Doesn't patch metacity anymore, but is active in
|
||||
answering questions, responding to bugs, providing very helpful
|
||||
suggestions and insight, and even assisting with debugging.
|
||||
|
||||
92
NEWS
92
NEWS
@@ -1,3 +1,88 @@
|
||||
2.20.0
|
||||
======
|
||||
|
||||
Thanks to Alexey Rusakov for the fix in this release.
|
||||
|
||||
- prevent a crash on logout with metacity subsequently not being
|
||||
restored in future sessions (Alexey) [#433253]
|
||||
|
||||
Translations
|
||||
Khaled Hosny (ar), Ihar Hrachyshka (be@latin), Ask Hjorth Larsen (da),
|
||||
Adam Weinberger (en_CA), Iñaki Larrañaga Murgoitio (eu), Ilkka
|
||||
Tuohela (fi), Vincent Untz (fr), Ankit Patel (gu), Gabor Kelemen (hu),
|
||||
Luca Ferretti (it), Takeshi AIHANA (ja), Žygimantas Beručka (lt), Jovan
|
||||
Naumovski (mk), Ani Peter (ml), Og Maciel (pt_BR), Duarte Loreto (pt),
|
||||
Mugurel Tudor (ro), Nickolay V. Shmyrev (ru), Peter Tuhársky (sk), Горан
|
||||
Ракић (sr), Daniel Nylander (sv), Dr.T.Vasudevan (ta), Maxim
|
||||
Dziumanenko (uk), Clytie Siddall (vi)
|
||||
|
||||
2.19.55
|
||||
=======
|
||||
|
||||
Thanks to Frederic Crozat, Matthias Clasen, and Thomas Thurman for improvements
|
||||
in this release.
|
||||
|
||||
- Noninteger auto-raise delay is not assumed to be zero (Thomas) (#377491)
|
||||
- Fix mangled window title in "Force Quit" (Frederic) (#462734)
|
||||
- "Close" can appear at any point in the window menu, and now appears
|
||||
at the bottom (Thomas) (#104026)
|
||||
- Windows which are always on top have "stick" insensitive (Thomas) (#460997)
|
||||
- All bitfields in window structure are together for optimisation (Thomas)
|
||||
(#450271)
|
||||
- Use the correct directory when installing keybindings (Matthias) (#454055)
|
||||
|
||||
Translations
|
||||
Alexander Shopov (bg), Jorge González (es), Iñaki Larrañaga Murgoitio (eu),
|
||||
Ilkka Tuohela (fi), Theppitak Karoonboonyanan (th)
|
||||
|
||||
2.19.34
|
||||
=======
|
||||
|
||||
Thanks to Rob Bradford, Cosimo Cecchi, Yair Hershkovitz and Thomas Thurman
|
||||
for improvements in this release.
|
||||
|
||||
- Fix a bug where the window can be focused without being raised
|
||||
if the maximize is aborted. (Rob) [#459027]
|
||||
- Unset fullscreen is an allowed action where relevant. (Cosimo) [#449427]
|
||||
- Reverse window buttons and align them to the left for RTL locales.
|
||||
(Yair) [#92212]
|
||||
- Put all bitfields in window data together to help with optimisation.
|
||||
(Thomas) [#450271]
|
||||
|
||||
Translations
|
||||
Jorge Gonzalez (es), Ilkka Tyohela (fi), Gabor Kelemen (hu),
|
||||
Takeshi AIHANA (ja), Kjartan Maraas (nb), Vincent van Adrighem (nl),
|
||||
Daniel Nylander (sv), Theppitak Karoonbooyana (th),
|
||||
Nguyễn Thái Ngọc Duy (vi)
|
||||
|
||||
2.19.21
|
||||
=======
|
||||
|
||||
Thanks to Damien Carbery and Thomas Thurman for improvements in
|
||||
this release.
|
||||
|
||||
- Fixed build on Solaris (Damien) [#397296, #446535]
|
||||
- Only activate windows which change their startup ID if the
|
||||
new ID differs from the old. (This fixes the bug where KDE
|
||||
apps gained the attention hint when switching workspaces.)
|
||||
(Thomas) [#400167]
|
||||
- Open new windows on the current xinerama. (Thomas) [#145503].
|
||||
|
||||
Translations
|
||||
Tshewang Norbu (dz), Jorge González (es), Funda Wang (zh_CN)
|
||||
|
||||
2.19.13
|
||||
=======
|
||||
|
||||
Thanks to Elijah Newren and Thomas Thurman for improvements in
|
||||
this release.
|
||||
|
||||
- Updated the description of raise_on_click (Elijah) [#445447,
|
||||
#389923]
|
||||
- Refactor queueing code in window.c (Thomas) [#376760]
|
||||
- Added switch_group to the keybindings file (Thomas) [#444879]
|
||||
- New window information accessor function (Thomas) [#377495]
|
||||
|
||||
2.19.8
|
||||
======
|
||||
|
||||
@@ -12,6 +97,13 @@ improvements in this release.
|
||||
[#433400]
|
||||
- Fix window menu layout for RTL scripts (Thomas) [#433400]
|
||||
|
||||
Translations
|
||||
Khaled Hosny (ar), Ihar Hrachyshka (be@latin), Jovan Naumovski (mk),
|
||||
Theppitak Karoonboonyanan (th)
|
||||
|
||||
[ Apologies to these translators who didn't get credited in the
|
||||
version of 2.19.8 that shipped. ]
|
||||
|
||||
2.19.5
|
||||
======
|
||||
|
||||
|
||||
11
configure.in
11
configure.in
@@ -1,10 +1,10 @@
|
||||
AC_PREREQ(2.50)
|
||||
|
||||
m4_define([metacity_major_version], [2])
|
||||
m4_define([metacity_minor_version], [19])
|
||||
m4_define([metacity_minor_version], [20])
|
||||
# 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], [8])
|
||||
m4_define([metacity_micro_version], [0])
|
||||
|
||||
m4_define([metacity_version],
|
||||
[metacity_major_version.metacity_minor_version.metacity_micro_version])
|
||||
@@ -176,6 +176,13 @@ else
|
||||
AC_MSG_ERROR("Pango 1.2.0 or greater based on Xft2 is required")
|
||||
fi
|
||||
|
||||
if $PKG_CONFIG --exists gnome-keybindings; then
|
||||
GNOME_KEYBINDINGS_KEYSDIR=$($PKG_CONFIG --variable keysdir gnome-keybindings)
|
||||
else
|
||||
GNOME_KEYBINDINGS_KEYSDIR="${datadir}/gnome-control-center/keybindings"
|
||||
fi
|
||||
AC_SUBST(GNOME_KEYBINDINGS_KEYSDIR)
|
||||
|
||||
STARTUP_NOTIFICATION_VERSION=0.7
|
||||
AC_MSG_CHECKING([Startup notification library >= $STARTUP_NOTIFICATION_VERSION])
|
||||
if $PKG_CONFIG --atleast-version $STARTUP_NOTIFICATION_VERSION libstartup-notification-1.0; then
|
||||
|
||||
205
po/ChangeLog
205
po/ChangeLog
@@ -1,3 +1,208 @@
|
||||
2007-09-16 Takeshi AIHANA <takeshi.aihana@gmail.com>
|
||||
|
||||
* ja.po: Translation improved.
|
||||
|
||||
2007-09-16 Mugurel Tudor <mugurelu@gnome.ro>
|
||||
|
||||
* ro.po: Updated Romanian translation
|
||||
|
||||
2007-09-15 Nickolay V. Shmyrev <nshmyrev@yandex.ru>
|
||||
|
||||
* ru.po: Updated Russian translation.
|
||||
|
||||
2007-09-15 Stéphane Raimbault <stephane.raimbault@gmail.com>
|
||||
|
||||
* fr.po: Fixed French translation by Vincent Untz and Stéphane
|
||||
Raimbault.
|
||||
|
||||
2007-09-15 Andre Klapper <a9016009@gmx.de>
|
||||
|
||||
* sk.po: Updated Slovak translation on behalf of Peter Tuharsky
|
||||
<tuharsky@misbb.sk>.
|
||||
|
||||
2007-09-14 Clytie Siddall <clytie@riverland.net.au>
|
||||
|
||||
* vi.po: Updated Vietnamese translation.
|
||||
|
||||
2007-09-14 Luca Ferretti <elle.uca@libero.it>
|
||||
|
||||
* it.po: Updated Italian translation.
|
||||
|
||||
2007-09-13 Djihed Afifi <djihed@gmail.com>
|
||||
|
||||
* ar.po: Updated Arabic Translation by Khaled Hosny.
|
||||
|
||||
2007-09-14 Gabor Kelemen <kelemeng@gnome.hu>
|
||||
|
||||
* hu.po: Translation updated.
|
||||
|
||||
2007-09-13 Ihar Hrachyshka <ihar.hrachyshka@gmail.com>
|
||||
|
||||
* be@latin.po: Updated Belarusian Latin translation.
|
||||
|
||||
2007-09-12 Maxim Dziumanenko <dziumanenko@gmail.com>
|
||||
|
||||
* uk.po: Update Ukrainian translation.
|
||||
|
||||
2007-09-12 Goran Rakić <grakic@devbase.net>
|
||||
|
||||
* sr.po, sr@Latn.po: Updated Serbian translation.
|
||||
|
||||
2007-09-09 Kenneth Nielsen <k.nielsen81@gmail.com>
|
||||
|
||||
* da.po: Updated Danish translation
|
||||
|
||||
2007-09-08 Inaki Larranaga Murgoitio <dooteo@zundan.com>
|
||||
|
||||
* eu.po: Fixed some typos in Basque translation.
|
||||
|
||||
2007-09-05 Jovan Naumovski <jovan@lugola.net>
|
||||
|
||||
* mk.po: Updated Macedonian translation.
|
||||
|
||||
2007-09-03 Clytie Siddall <clytie@riverland.net.au>
|
||||
|
||||
* vi.po: Updated Vietnamese translation.
|
||||
|
||||
2007-09-03 Duarte Loreto <happyguy_pt@hotmail.com>
|
||||
|
||||
* pt.po: Updated Portuguese translation.
|
||||
|
||||
2007-09-03 Jovan Naumovski <jovan@lugola.net>
|
||||
|
||||
* mk.po: Updated Macedonian translation.
|
||||
|
||||
2007-09-01 Jovan Naumovski <jovan@lugola.net>
|
||||
|
||||
* mk.po: Updated Macedonian translation.
|
||||
|
||||
2007-09-01 Stéphane Raimbault <stephane.raimbault@gmail.com>
|
||||
|
||||
* fr.po: Updated French translation.
|
||||
|
||||
2007-08-30 Ani Peter <peter.ani@gmail.com>
|
||||
|
||||
* ml.po: Updated Malayalam Translation
|
||||
|
||||
2007-08-29 I. Felix <ifelix@svn.gnome.org>
|
||||
|
||||
* ta.po: Tamil Translation updated by Tirumurthi Vasudevan
|
||||
|
||||
2007-08-26 Raphael Higino <raphaelh@svn.gnome.org>
|
||||
|
||||
* pt_BR.po: Updated Brazilian Portuguese translation
|
||||
by Og Maciel <ogmaciel@ubuntu.com>.
|
||||
|
||||
2007-08-15 Adam Weinberger <adamw@gnome.org>
|
||||
|
||||
* en_CA.po: Updated Canadian English translation.
|
||||
|
||||
2007-08-13 Takeshi AIHANA <takeshi.aihana@gmail.com>
|
||||
|
||||
* ja.po: Updated Japanese translation.
|
||||
|
||||
2007-08-13 Žygimantas Beručka <zygis@gnome.org>
|
||||
|
||||
* lt.po: Updated Lithuanian translation.
|
||||
|
||||
2007-08-11 Daniel Nylander <po@danielnylander.se>
|
||||
|
||||
* sv.po: Updated Swedish translation.
|
||||
|
||||
2007-08-10 I. Felix <ifelix@svn.gnome.org>
|
||||
|
||||
* ta.po: Tamil Translation updated by Tirumurthi Vasudevan
|
||||
|
||||
2007-08-10 Ankit Patel <ankit644@yahoo.com>
|
||||
|
||||
* gu.po: Updated Gujarati Translation.
|
||||
|
||||
2007-08-09 Ilkka Tuohela <hile@iki.fi>
|
||||
|
||||
* fi.po: Updated Finnish translation.
|
||||
|
||||
2007-08-08 Ankit Patel <ankit644@yahoo.com>
|
||||
|
||||
* gu.po: Updated Gujarati Translation.
|
||||
|
||||
2007-08-07 Jorge Gonzalez <jorgegonz@svn.gnome.org>
|
||||
|
||||
* es.po: Updated Spanish translation
|
||||
|
||||
2007-08-07 Theppitak Karoonboonyanan <thep@linux.thai.net>
|
||||
|
||||
* th.po: Updated Thai translation.
|
||||
|
||||
2007-08-06 Ilkka Tuohela <hile@iki.fi>
|
||||
|
||||
* fi.po: Updated Finnish translation.
|
||||
|
||||
2007-08-05 Inaki Laranaga Murgoitio <dooteo@zundan.com>
|
||||
|
||||
* eu.po: Updated Basque translation.
|
||||
|
||||
2007-07-25 Alexander Shopov <ash@contact.bg>
|
||||
|
||||
* bg.po: Updated Bulgarian translation by
|
||||
Alexander Shopov <ash@contact.bg>
|
||||
|
||||
2007-07-21 Gabor Kelemen <kelemeng@gnome.hu>
|
||||
|
||||
* hu.po: Translation updated.
|
||||
|
||||
2007-07-18 Vincent van Adrighem <adrighem@gnome.org>
|
||||
|
||||
* nl.po: Translation updated.
|
||||
|
||||
2007-07-17 Daniel Nylander <po@danielnylander.se>
|
||||
|
||||
* sv.po: Updated Swedish translation.
|
||||
|
||||
2007-07-16 Ilkka Tuohela <hile@iki.fi>
|
||||
|
||||
* fi.po: Updated Finnish translation.
|
||||
|
||||
2007-07-10 Theppitak Karoonboonyanan <thep@linux.thai.net>
|
||||
|
||||
* th.po: Updated Thai translation.
|
||||
|
||||
2007-07-08 Takeshi AIHANA <takeshi.aihana@gmail.com>
|
||||
|
||||
* ja.po: Updated Japanese translation.
|
||||
|
||||
2007-07-02 Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
|
||||
|
||||
* vi.po: Updated Vietnamese translation.
|
||||
|
||||
2007-06-27 Clytie Siddall <clytie@riverland.net.au>
|
||||
|
||||
* vi.po: Updated Vietnamese translation.
|
||||
|
||||
2007-06-25 Jorge Gonzalez <jorgegonz@svn.gnome.org>
|
||||
|
||||
* es.po: Updated Spanish translation
|
||||
|
||||
2007-06-24 Kjartan Maraas <kmaraas@gnome.org>
|
||||
|
||||
* POTFILES.in: Add src/core.c
|
||||
* nb.po: Updated Norwegian bokmål translation.
|
||||
|
||||
2007-06-19 Jorge Gonzalez <jorgegonz@svn.gnome.org>
|
||||
|
||||
* es.po: Updated Spanish translation
|
||||
|
||||
2007-06-16 Funda Wang <fundawang@gmail.com>
|
||||
|
||||
* zh_CN.po: Updated Simplified Chinese translation
|
||||
|
||||
2007-06-15 Jorge Gonzalez <jorgegonz@svn.gnome.org>
|
||||
|
||||
* es.po: Updated Spanish translation
|
||||
|
||||
2007-06-13 Pema Geyleg <pema.geyleg@gmail.com>
|
||||
|
||||
* dz.po: Updated dzongkha translation
|
||||
|
||||
2007-05-18 Theppitak Karoonboonyanan <thep@linux.thai.net>
|
||||
|
||||
* th.po: Updated Thai translation.
|
||||
|
||||
@@ -60,6 +60,7 @@ pt_BR
|
||||
ro
|
||||
ru
|
||||
rw
|
||||
si
|
||||
sk
|
||||
sl
|
||||
sq
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
src/50-metacity-desktop-key.xml.in
|
||||
src/50-metacity-key.xml.in
|
||||
src/tools/metacity-message.c
|
||||
src/core.c
|
||||
src/delete.c
|
||||
src/display.c
|
||||
src/errors.c
|
||||
|
||||
2500
po/be@latin.po
2500
po/be@latin.po
File diff suppressed because it is too large
Load Diff
2814
po/en_CA.po
2814
po/en_CA.po
File diff suppressed because it is too large
Load Diff
320
po/nb.po
320
po/nb.po
@@ -6,8 +6,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: metacity 2.15.x\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2007-04-10 01:42+0200\n"
|
||||
"PO-Revision-Date: 2007-04-10 01:43+0200\n"
|
||||
"POT-Creation-Date: 2007-06-24 14:47+0200\n"
|
||||
"PO-Revision-Date: 2007-06-24 14:48+0200\n"
|
||||
"Last-Translator: Kjartan Maraas <kmaraas@gnome.org>\n"
|
||||
"Language-Team: Norwegian (bokmål) <i18n-no@lister.ping.uio.no>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
@@ -31,6 +31,11 @@ msgstr " Bruk: %s\n"
|
||||
msgid "Metacity was compiled without support for verbose mode\n"
|
||||
msgstr "Metacity er kompilert uten støtte for «verbose» modus\n"
|
||||
|
||||
#: ../src/core.c:206
|
||||
#, c-format
|
||||
msgid "Unknown window information request: %d"
|
||||
msgstr "Ukjent forespørsel om vindusinformasjon: %d"
|
||||
|
||||
#: ../src/delete.c:67 ../src/delete.c:94 ../src/metacity-dialog.c:50
|
||||
#: ../src/theme-parser.c:484
|
||||
#, c-format
|
||||
@@ -66,7 +71,7 @@ msgstr ""
|
||||
msgid "Failed to get hostname: %s\n"
|
||||
msgstr "Feil under henting av vertsnavn: %s\n"
|
||||
|
||||
#: ../src/display.c:347
|
||||
#: ../src/display.c:349
|
||||
#, c-format
|
||||
msgid "Failed to open X Window System display '%s'\n"
|
||||
msgstr "Feil under åpning av X Window System skjerm «%s»\n"
|
||||
@@ -87,47 +92,47 @@ msgstr ""
|
||||
msgid "Fatal IO error %d (%s) on display '%s'.\n"
|
||||
msgstr "Fatal IU-feil %d (%s) på skjerm «%s».\n"
|
||||
|
||||
#: ../src/frames.c:1066
|
||||
#: ../src/frames.c:1078
|
||||
msgid "Close Window"
|
||||
msgstr "Lukk vindu"
|
||||
|
||||
#: ../src/frames.c:1069
|
||||
#: ../src/frames.c:1081
|
||||
msgid "Window Menu"
|
||||
msgstr "Vindumeny"
|
||||
|
||||
#: ../src/frames.c:1072
|
||||
#: ../src/frames.c:1084
|
||||
msgid "Minimize Window"
|
||||
msgstr "Minimer vindu"
|
||||
|
||||
#: ../src/frames.c:1075
|
||||
#: ../src/frames.c:1087
|
||||
msgid "Maximize Window"
|
||||
msgstr "Maksimer vindu"
|
||||
|
||||
#: ../src/frames.c:1078
|
||||
#: ../src/frames.c:1090
|
||||
msgid "Unmaximize Window"
|
||||
msgstr "Gjenopprett vindu"
|
||||
|
||||
#: ../src/frames.c:1081
|
||||
#: ../src/frames.c:1093
|
||||
msgid "Roll Up Window"
|
||||
msgstr "Rull opp vindu"
|
||||
|
||||
#: ../src/frames.c:1084
|
||||
#: ../src/frames.c:1096
|
||||
msgid "Unroll Window"
|
||||
msgstr "Rull ned vindu"
|
||||
|
||||
#: ../src/frames.c:1087
|
||||
#: ../src/frames.c:1099
|
||||
msgid "Keep Window On Top"
|
||||
msgstr "Plasser vindu i forgrunnen"
|
||||
|
||||
#: ../src/frames.c:1090
|
||||
#: ../src/frames.c:1102
|
||||
msgid "Remove Window From Top"
|
||||
msgstr "Fjern vindu fra forgrunnen"
|
||||
|
||||
#: ../src/frames.c:1093
|
||||
#: ../src/frames.c:1105
|
||||
msgid "Always On Visible Workspace"
|
||||
msgstr "Alltid på synlig arbeidsområde"
|
||||
|
||||
#: ../src/frames.c:1096
|
||||
#: ../src/frames.c:1108
|
||||
msgid "Put Window On Only One Workspace"
|
||||
msgstr "Plasser vindu kun på ett arbeidsområde"
|
||||
|
||||
@@ -152,7 +157,7 @@ msgstr ""
|
||||
msgid "No command %d has been defined.\n"
|
||||
msgstr "Ingen kommando %d er definert\n"
|
||||
|
||||
#: ../src/keybindings.c:3846
|
||||
#: ../src/keybindings.c:3849
|
||||
msgid "No terminal command has been defined.\n"
|
||||
msgstr "Ingen terminalkommando er definert\n"
|
||||
|
||||
@@ -160,13 +165,13 @@ msgstr "Ingen terminalkommando er definert\n"
|
||||
#, c-format
|
||||
msgid ""
|
||||
"metacity %s\n"
|
||||
"Copyright (C) 2001-2002 Havoc Pennington, Red Hat, Inc., and others\n"
|
||||
"Copyright (C) 2001-2007 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"
|
||||
"Opphavsrett © 2001-2002 Havoc Pennington, Red Hat, Inc, og andre\n"
|
||||
"Opphavsrett © 2001-2007 Havoc Pennington, Red Hat, Inc, og andre\n"
|
||||
"Dette er fri programvare; se i kildekoden for kopibetingelser.\n"
|
||||
"Det gis INGEN garanti.\n"
|
||||
|
||||
@@ -213,102 +218,102 @@ msgid "Failed to restart: %s\n"
|
||||
msgstr "Feil under omstart: %s\n"
|
||||
|
||||
#. Translators: Translate this string the same way as you do in libwnck!
|
||||
#: ../src/menu.c:68
|
||||
#: ../src/menu.c:69
|
||||
msgid "Mi_nimize"
|
||||
msgstr "Mi_nimer"
|
||||
|
||||
#. Translators: Translate this string the same way as you do in libwnck!
|
||||
#: ../src/menu.c:70
|
||||
#: ../src/menu.c:71
|
||||
msgid "Ma_ximize"
|
||||
msgstr "Ma_ksimer"
|
||||
|
||||
#. Translators: Translate this string the same way as you do in libwnck!
|
||||
#: ../src/menu.c:72
|
||||
#: ../src/menu.c:73
|
||||
msgid "Unma_ximize"
|
||||
msgstr "G_jenopprett"
|
||||
|
||||
#. Translators: Translate this string the same way as you do in libwnck!
|
||||
#: ../src/menu.c:74
|
||||
#: ../src/menu.c:75
|
||||
msgid "Roll _Up"
|
||||
msgstr "Rull _opp"
|
||||
|
||||
#. Translators: Translate this string the same way as you do in libwnck!
|
||||
#: ../src/menu.c:76
|
||||
#: ../src/menu.c:77
|
||||
msgid "_Unroll"
|
||||
msgstr "R_ull ned"
|
||||
|
||||
#. Translators: Translate this string the same way as you do in libwnck!
|
||||
#: ../src/menu.c:78
|
||||
#: ../src/menu.c:79
|
||||
msgid "_Move"
|
||||
msgstr "_Flytt"
|
||||
|
||||
#. Translators: Translate this string the same way as you do in libwnck!
|
||||
#: ../src/menu.c:80
|
||||
#: ../src/menu.c:81
|
||||
msgid "_Resize"
|
||||
msgstr "End_re størrelse"
|
||||
|
||||
#. Translators: Translate this string the same way as you do in libwnck!
|
||||
#: ../src/menu.c:82
|
||||
#: ../src/menu.c:83
|
||||
msgid "Move Titlebar On_screen"
|
||||
msgstr "Flytt tittellinje på _skjermen"
|
||||
|
||||
#. separator
|
||||
#. Translators: Translate this string the same way as you do in libwnck!
|
||||
#: ../src/menu.c:85
|
||||
#: ../src/menu.c:86
|
||||
msgid "_Close"
|
||||
msgstr "_Lukk"
|
||||
|
||||
#. separator
|
||||
#. Translators: Translate this string the same way as you do in libwnck!
|
||||
#: ../src/menu.c:88
|
||||
#: ../src/menu.c:89 ../src/menu.c:91
|
||||
msgid "Always on _Top"
|
||||
msgstr "All_tid øverst"
|
||||
|
||||
#. Translators: Translate this string the same way as you do in libwnck!
|
||||
#: ../src/menu.c:90
|
||||
#: ../src/menu.c:93
|
||||
msgid "_Always on Visible Workspace"
|
||||
msgstr "_Alltid på synlig arbeidsområde"
|
||||
|
||||
#. Translators: Translate this string the same way as you do in libwnck!
|
||||
#: ../src/menu.c:92
|
||||
#: ../src/menu.c:95
|
||||
msgid "_Only on This Workspace"
|
||||
msgstr "K_un på dette arbeidsområdet"
|
||||
|
||||
#. Translators: Translate this string the same way as you do in libwnck!
|
||||
#: ../src/menu.c:94
|
||||
#: ../src/menu.c:97
|
||||
msgid "Move to Workspace _Left"
|
||||
msgstr "Flytt til arbeidsområdet ti_l venstre"
|
||||
|
||||
#. Translators: Translate this string the same way as you do in libwnck!
|
||||
#: ../src/menu.c:96
|
||||
#: ../src/menu.c:99
|
||||
msgid "Move to Workspace R_ight"
|
||||
msgstr "Flytt til a_rbeidsområdet til høyre"
|
||||
|
||||
#. Translators: Translate this string the same way as you do in libwnck!
|
||||
#: ../src/menu.c:98
|
||||
#: ../src/menu.c:101
|
||||
msgid "Move to Workspace _Up"
|
||||
msgstr "Flytt til arbeidsområdet _over"
|
||||
|
||||
#. Translators: Translate this string the same way as you do in libwnck!
|
||||
#: ../src/menu.c:100
|
||||
#: ../src/menu.c:103
|
||||
msgid "Move to Workspace _Down"
|
||||
msgstr "Flytt til arbeidsområdet ne_denfor"
|
||||
|
||||
#: ../src/menu.c:191 ../src/prefs.c:2202 ../src/prefs.c:2737
|
||||
#: ../src/menu.c:197 ../src/prefs.c:2238 ../src/prefs.c:2773
|
||||
#, c-format
|
||||
msgid "Workspace %d"
|
||||
msgstr "Arbeidsområde %d"
|
||||
|
||||
#: ../src/menu.c:200
|
||||
#: ../src/menu.c:206
|
||||
msgid "Workspace 1_0"
|
||||
msgstr "Arbeidsområde 1_0"
|
||||
|
||||
#: ../src/menu.c:202
|
||||
#: ../src/menu.c:208
|
||||
#, c-format
|
||||
msgid "Workspace %s%d"
|
||||
msgstr "Arbeidsområde %s%d"
|
||||
|
||||
#: ../src/menu.c:407
|
||||
#: ../src/menu.c:411
|
||||
msgid "Move to Another _Workspace"
|
||||
msgstr "Flytt til et annet ar_beidsområde"
|
||||
|
||||
@@ -626,202 +631,183 @@ msgid "Lower window below other windows"
|
||||
msgstr "Senk vinduet under andre vinduer"
|
||||
|
||||
#: ../src/metacity.schemas.in.h:28
|
||||
msgid ""
|
||||
"Many actions (e.g. clicking in the client area, moving or resizing the "
|
||||
"window) normally raise the window as a side-effect. Set this option to false "
|
||||
"to decouple raising from other user actions. Even when this option is false, "
|
||||
"windows can still be raised by an alt-left-click anywhere on the window, a "
|
||||
"normal click on the window decorations, or by special messages, such as "
|
||||
"activation requests from pagers. This option is currently disabled in click-"
|
||||
"to-focus mode."
|
||||
msgstr ""
|
||||
"Mange handlinger (f.eks klikk i klientområdet, flytting av eller endring av "
|
||||
"størrelse på vinduer) hever normalt sett vinduet som en sideeffekt. Sett "
|
||||
"dette alternativet til «false» for å fjerne koblingen mellom heving av "
|
||||
"vinduer og andre handlinger. Når denne er satt til «false» kan vinduer "
|
||||
"fremdeles heves av alt-venstreklikk hvor som helst på vinduet eller et "
|
||||
"normalt klikk på vindudekorasjonene eller spesielle meldinger slik som "
|
||||
"aktiveringsforespørsler fra skrivebordshåndterere. Dette alternativet er "
|
||||
"deaktivert i klikk-for-fokus modus."
|
||||
|
||||
#: ../src/metacity.schemas.in.h:29
|
||||
msgid "Maximize window"
|
||||
msgstr "Maksimer vindu"
|
||||
|
||||
#: ../src/metacity.schemas.in.h:30
|
||||
#: ../src/metacity.schemas.in.h:29
|
||||
msgid "Maximize window horizontally"
|
||||
msgstr "Maksimer vinduet horisontalt"
|
||||
|
||||
#: ../src/metacity.schemas.in.h:31
|
||||
#: ../src/metacity.schemas.in.h:30
|
||||
msgid "Maximize window vertically"
|
||||
msgstr "Maksimer vinduet vertikalt"
|
||||
|
||||
#: ../src/metacity.schemas.in.h:32
|
||||
#: ../src/metacity.schemas.in.h:31
|
||||
msgid "Minimize window"
|
||||
msgstr "Minimer vindu"
|
||||
|
||||
#: ../src/metacity.schemas.in.h:33
|
||||
#: ../src/metacity.schemas.in.h:32
|
||||
msgid "Modifier to use for modified window click actions"
|
||||
msgstr ""
|
||||
"Endringstast som skal brukes for modifiserte handlinger ved klikk i vinduet"
|
||||
|
||||
#: ../src/metacity.schemas.in.h:34
|
||||
#: ../src/metacity.schemas.in.h:33
|
||||
msgid "Move backward between panels and the desktop immediately"
|
||||
msgstr "Bla bakover gjennom paneler og skrivebordet med en gang"
|
||||
|
||||
#: ../src/metacity.schemas.in.h:35
|
||||
#: ../src/metacity.schemas.in.h:34
|
||||
msgid "Move backwards between panels and the desktop with popup"
|
||||
msgstr "Bla bakover gjennom paneler og skrivebordet med bruk av dialog"
|
||||
|
||||
#: ../src/metacity.schemas.in.h:36
|
||||
#: ../src/metacity.schemas.in.h:35
|
||||
msgid "Move backwards between windows immediately"
|
||||
msgstr "Bla bakover gjennom vinduer med en gang"
|
||||
|
||||
#: ../src/metacity.schemas.in.h:37
|
||||
#: ../src/metacity.schemas.in.h:36
|
||||
msgid "Move backwards between windows of an application immediately"
|
||||
msgstr "Bla bakover gjennom et programs vinduer med en gang"
|
||||
|
||||
#: ../src/metacity.schemas.in.h:38
|
||||
#: ../src/metacity.schemas.in.h:37
|
||||
msgid "Move backwards between windows of an application with popup"
|
||||
msgstr "Bla bakover gjennom vinduer fra et program med oppsprettvindu"
|
||||
|
||||
#: ../src/metacity.schemas.in.h:39
|
||||
#: ../src/metacity.schemas.in.h:38
|
||||
msgid "Move between panels and the desktop immediately"
|
||||
msgstr "Bla gjennom paneler og skrivebordet med en gang"
|
||||
|
||||
#: ../src/metacity.schemas.in.h:40
|
||||
#: ../src/metacity.schemas.in.h:39
|
||||
msgid "Move between panels and the desktop with popup"
|
||||
msgstr "Bla gjennom paneler og skrivebordet med oppsprettvindu"
|
||||
|
||||
#: ../src/metacity.schemas.in.h:41
|
||||
#: ../src/metacity.schemas.in.h:40
|
||||
msgid "Move between windows immediately"
|
||||
msgstr "Flytt fokus mellom vinduer med en gang"
|
||||
|
||||
#: ../src/metacity.schemas.in.h:42
|
||||
#: ../src/metacity.schemas.in.h:41
|
||||
msgid "Move between windows of an application immediately"
|
||||
msgstr "Bla gjennom et programs vinduer med en gang"
|
||||
|
||||
#: ../src/metacity.schemas.in.h:43
|
||||
#: ../src/metacity.schemas.in.h:42
|
||||
msgid "Move between windows of an application with popup"
|
||||
msgstr "Bla gjennom et programs vinduer med oppsprettvindu"
|
||||
|
||||
#: ../src/metacity.schemas.in.h:44
|
||||
#: ../src/metacity.schemas.in.h:43
|
||||
msgid "Move between windows with popup"
|
||||
msgstr "Flytt mellom vinduer med dialog"
|
||||
|
||||
#: ../src/metacity.schemas.in.h:45
|
||||
#: ../src/metacity.schemas.in.h:44
|
||||
msgid "Move focus backwards between windows using popup display"
|
||||
msgstr "Bytt fokus baklengs mellom vinduer med dialog"
|
||||
|
||||
#: ../src/metacity.schemas.in.h:46
|
||||
#: ../src/metacity.schemas.in.h:45
|
||||
msgid "Move window"
|
||||
msgstr "Flytt vindu"
|
||||
|
||||
#: ../src/metacity.schemas.in.h:47
|
||||
#: ../src/metacity.schemas.in.h:46
|
||||
msgid "Move window one workspace down"
|
||||
msgstr "Flytt vindu ett arbeidsområde ned"
|
||||
|
||||
#: ../src/metacity.schemas.in.h:48
|
||||
#: ../src/metacity.schemas.in.h:47
|
||||
msgid "Move window one workspace to the left"
|
||||
msgstr "Flytt vindu et arbeidsområde til venstre"
|
||||
|
||||
#: ../src/metacity.schemas.in.h:49
|
||||
#: ../src/metacity.schemas.in.h:48
|
||||
msgid "Move window one workspace to the right"
|
||||
msgstr "Flytt vindu ett arbeidsområde til høyre"
|
||||
|
||||
#: ../src/metacity.schemas.in.h:50
|
||||
#: ../src/metacity.schemas.in.h:49
|
||||
msgid "Move window one workspace up"
|
||||
msgstr "Flytt vindu ett arbeidsområde opp"
|
||||
|
||||
#: ../src/metacity.schemas.in.h:51
|
||||
#: ../src/metacity.schemas.in.h:50
|
||||
msgid "Move window to east side of screen"
|
||||
msgstr "Flytt vindu til østsiden av skjermen"
|
||||
|
||||
#: ../src/metacity.schemas.in.h:52
|
||||
#: ../src/metacity.schemas.in.h:51
|
||||
msgid "Move window to north side of screen"
|
||||
msgstr "Flytt vindu til nordsiden av skjermen"
|
||||
|
||||
#: ../src/metacity.schemas.in.h:53
|
||||
#: ../src/metacity.schemas.in.h:52
|
||||
msgid "Move window to north-east corner"
|
||||
msgstr "Flytt vindu til nord-østlig hjørne"
|
||||
|
||||
#: ../src/metacity.schemas.in.h:54
|
||||
#: ../src/metacity.schemas.in.h:53
|
||||
msgid "Move window to north-west corner"
|
||||
msgstr "Flytt vindu til nord-vestlig hjørne"
|
||||
|
||||
#: ../src/metacity.schemas.in.h:55
|
||||
#: ../src/metacity.schemas.in.h:54
|
||||
msgid "Move window to south side of screen"
|
||||
msgstr "Flytt vindu til sydsiden av skjermen"
|
||||
|
||||
#: ../src/metacity.schemas.in.h:56
|
||||
#: ../src/metacity.schemas.in.h:55
|
||||
msgid "Move window to south-east corner"
|
||||
msgstr "Flytt vindu til syd-østlig hjørne"
|
||||
|
||||
#: ../src/metacity.schemas.in.h:57
|
||||
#: ../src/metacity.schemas.in.h:56
|
||||
msgid "Move window to south-west corner"
|
||||
msgstr "Flytt vindu til syd-østlig hjørne"
|
||||
|
||||
#: ../src/metacity.schemas.in.h:58
|
||||
#: ../src/metacity.schemas.in.h:57
|
||||
msgid "Move window to west side of screen"
|
||||
msgstr "Flytt vindu til vestsiden av skjermen"
|
||||
|
||||
#: ../src/metacity.schemas.in.h:59
|
||||
#: ../src/metacity.schemas.in.h:58
|
||||
msgid "Move window to workspace 1"
|
||||
msgstr "Flytt vindu til arbeidsområde 1"
|
||||
|
||||
#: ../src/metacity.schemas.in.h:60
|
||||
#: ../src/metacity.schemas.in.h:59
|
||||
msgid "Move window to workspace 10"
|
||||
msgstr "Flytt vindu til arbeidsområde 10"
|
||||
|
||||
#: ../src/metacity.schemas.in.h:61
|
||||
#: ../src/metacity.schemas.in.h:60
|
||||
msgid "Move window to workspace 11"
|
||||
msgstr "Flytt vindu til arbeidsområde 11"
|
||||
|
||||
#: ../src/metacity.schemas.in.h:62
|
||||
#: ../src/metacity.schemas.in.h:61
|
||||
msgid "Move window to workspace 12"
|
||||
msgstr "Flytt vindu til arbeidsområde 12"
|
||||
|
||||
#: ../src/metacity.schemas.in.h:63
|
||||
#: ../src/metacity.schemas.in.h:62
|
||||
msgid "Move window to workspace 2"
|
||||
msgstr "Flytt vindu til arbeidsområde 2"
|
||||
|
||||
#: ../src/metacity.schemas.in.h:64
|
||||
#: ../src/metacity.schemas.in.h:63
|
||||
msgid "Move window to workspace 3"
|
||||
msgstr "Flytt vindu til arbeidsområde 3"
|
||||
|
||||
#: ../src/metacity.schemas.in.h:65
|
||||
#: ../src/metacity.schemas.in.h:64
|
||||
msgid "Move window to workspace 4"
|
||||
msgstr "Flytt vindu til arbeidsområde 4"
|
||||
|
||||
#: ../src/metacity.schemas.in.h:66
|
||||
#: ../src/metacity.schemas.in.h:65
|
||||
msgid "Move window to workspace 5"
|
||||
msgstr "Flytt vindu til arbeidsområde 5"
|
||||
|
||||
#: ../src/metacity.schemas.in.h:67
|
||||
#: ../src/metacity.schemas.in.h:66
|
||||
msgid "Move window to workspace 6"
|
||||
msgstr "Flytt vindu til arbeidsområde 6"
|
||||
|
||||
#: ../src/metacity.schemas.in.h:68
|
||||
#: ../src/metacity.schemas.in.h:67
|
||||
msgid "Move window to workspace 7"
|
||||
msgstr "Flytt vindu til arbeidsområde 7"
|
||||
|
||||
#: ../src/metacity.schemas.in.h:69
|
||||
#: ../src/metacity.schemas.in.h:68
|
||||
msgid "Move window to workspace 8"
|
||||
msgstr "Flytt vindu til arbeidsområde 8"
|
||||
|
||||
#: ../src/metacity.schemas.in.h:70
|
||||
#: ../src/metacity.schemas.in.h:69
|
||||
msgid "Move window to workspace 9"
|
||||
msgstr "Flytt vindu til arbeidsområde 9"
|
||||
|
||||
#: ../src/metacity.schemas.in.h:71
|
||||
#: ../src/metacity.schemas.in.h:70
|
||||
msgid "Name of workspace"
|
||||
msgstr "Navn på arbeidsområde"
|
||||
|
||||
#: ../src/metacity.schemas.in.h:72
|
||||
#: ../src/metacity.schemas.in.h:71
|
||||
msgid "Number of workspaces"
|
||||
msgstr "Antall arbeidsområder"
|
||||
|
||||
#: ../src/metacity.schemas.in.h:73
|
||||
#: ../src/metacity.schemas.in.h:72
|
||||
msgid ""
|
||||
"Number of workspaces. Must be more than zero, and has a fixed maximum to "
|
||||
"prevent making the desktop unusable by accidentally asking for too many "
|
||||
@@ -831,26 +817,46 @@ msgstr ""
|
||||
"hindre at noen ødelegger skrivebordet ved å be om for mange arbeidsområder "
|
||||
"ved en feiltagelse."
|
||||
|
||||
#: ../src/metacity.schemas.in.h:74
|
||||
#: ../src/metacity.schemas.in.h:73
|
||||
msgid "Raise obscured window, otherwise lower"
|
||||
msgstr "Hev vindu hvis skjult, senk det ellers"
|
||||
|
||||
#: ../src/metacity.schemas.in.h:75
|
||||
#: ../src/metacity.schemas.in.h:74
|
||||
msgid "Raise window above other windows"
|
||||
msgstr "Hev vinduet over andre vinduer"
|
||||
|
||||
#: ../src/metacity.schemas.in.h:76
|
||||
#: ../src/metacity.schemas.in.h:75
|
||||
msgid "Resize window"
|
||||
msgstr "Endre størrelse på vindu"
|
||||
|
||||
#: ../src/metacity.schemas.in.h:77
|
||||
#: ../src/metacity.schemas.in.h:76
|
||||
msgid "Run a defined command"
|
||||
msgstr "Kjør en definert kommando"
|
||||
|
||||
#: ../src/metacity.schemas.in.h:78
|
||||
#: ../src/metacity.schemas.in.h:77
|
||||
msgid "Run a terminal"
|
||||
msgstr "Kjør en terminal"
|
||||
|
||||
#: ../src/metacity.schemas.in.h:78
|
||||
msgid ""
|
||||
"Setting this option to false can lead to buggy behavior, so users are "
|
||||
"strongly discouraged from changing it from the default of true. Many actions "
|
||||
"(e.g. clicking in the client area, moving or resizing the window) normally "
|
||||
"raise the window as a side-effect. Set this option to false to decouple "
|
||||
"raising from other user actions. Even when this option is false, windows can "
|
||||
"still be raised by an alt-left-click anywhere on the window, a normal click "
|
||||
"on the window decorations, or by special messages from pagers, such as "
|
||||
"activation requests from tasklist applets. This option is currently disabled "
|
||||
"in click-to-focus mode. Note that the list of ways to raise windows when "
|
||||
"raise_on_click is false does not include programmatic requests from "
|
||||
"applications to raise windows; such requests will be ignored regardless of "
|
||||
"the reason for the request. If you are an application developer and have a "
|
||||
"user complaining that your application does not work with this setting "
|
||||
"disabled, tell them it is _their_ fault for breaking their window manager "
|
||||
"and that they need to change this option back to true or live with the bug "
|
||||
"they requested. See also http://bugzilla.gnome.org/show_bug.cgi?id=445447#c6."
|
||||
msgstr ""
|
||||
|
||||
#: ../src/metacity.schemas.in.h:79
|
||||
msgid "Show the panel menu"
|
||||
msgstr "Vis panelmenyen"
|
||||
@@ -2295,15 +2301,11 @@ msgid "Toggle window on all workspaces"
|
||||
msgstr "Bytt mellom vising av vindu på alle arbeidsområder"
|
||||
|
||||
#: ../src/metacity.schemas.in.h:196
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
"Turns on a visual indication when an application or the system issues a "
|
||||
"'bell' or 'beep'; useful for the hard-of-hearing and for use in noisy "
|
||||
"environments."
|
||||
msgstr ""
|
||||
"Aktiverer en synlig indikator når et program eller systemet lager et pip; "
|
||||
"nyttig for hørselsskadde og for bruk i støyende miljøer, eller når hørbart "
|
||||
"pip er slått av."
|
||||
msgstr "Aktiverer en synlig indikator når et program eller systemet lager et pip; nyttig for hørselsskadde og for bruk i støyende miljøer."
|
||||
|
||||
#: ../src/metacity.schemas.in.h:197
|
||||
msgid "Unmaximize window"
|
||||
@@ -2329,19 +2331,19 @@ msgstr "Fokuseringsmodus for vindu"
|
||||
msgid "Window title font"
|
||||
msgstr "Skrift for vindutittel"
|
||||
|
||||
#: ../src/prefs.c:579 ../src/prefs.c:595 ../src/prefs.c:611 ../src/prefs.c:627
|
||||
#: ../src/prefs.c:643 ../src/prefs.c:659 ../src/prefs.c:675 ../src/prefs.c:695
|
||||
#: ../src/prefs.c:711 ../src/prefs.c:727 ../src/prefs.c:745 ../src/prefs.c:761
|
||||
#: ../src/prefs.c:780 ../src/prefs.c:796 ../src/prefs.c:813 ../src/prefs.c:829
|
||||
#: ../src/prefs.c:845 ../src/prefs.c:862 ../src/prefs.c:878 ../src/prefs.c:894
|
||||
#: ../src/prefs.c:910 ../src/prefs.c:926 ../src/prefs.c:941 ../src/prefs.c:956
|
||||
#: ../src/prefs.c:971 ../src/prefs.c:987 ../src/prefs.c:1003
|
||||
#: ../src/prefs.c:1019 ../src/prefs.c:1035
|
||||
#: ../src/prefs.c:579 ../src/prefs.c:607 ../src/prefs.c:623 ../src/prefs.c:639
|
||||
#: ../src/prefs.c:655 ../src/prefs.c:671 ../src/prefs.c:687 ../src/prefs.c:703
|
||||
#: ../src/prefs.c:723 ../src/prefs.c:739 ../src/prefs.c:755 ../src/prefs.c:773
|
||||
#: ../src/prefs.c:789 ../src/prefs.c:808 ../src/prefs.c:824 ../src/prefs.c:859
|
||||
#: ../src/prefs.c:875 ../src/prefs.c:892 ../src/prefs.c:908 ../src/prefs.c:924
|
||||
#: ../src/prefs.c:940 ../src/prefs.c:956 ../src/prefs.c:971 ../src/prefs.c:986
|
||||
#: ../src/prefs.c:1001 ../src/prefs.c:1017 ../src/prefs.c:1033
|
||||
#: ../src/prefs.c:1049 ../src/prefs.c:1065
|
||||
#, c-format
|
||||
msgid "GConf key \"%s\" is set to an invalid type\n"
|
||||
msgstr "GConf-nøkkel «%s» er satt til en ugyldig type\n"
|
||||
|
||||
#: ../src/prefs.c:1080
|
||||
#: ../src/prefs.c:1110
|
||||
#, c-format
|
||||
msgid ""
|
||||
"\"%s\" found in configuration database is not a valid value for mouse button "
|
||||
@@ -2350,12 +2352,12 @@ msgstr ""
|
||||
"«%s» funnet i konfigurasjonsdatabasen er ikke en gyldig verdi for endring av "
|
||||
"musknapp\n"
|
||||
|
||||
#: ../src/prefs.c:1104 ../src/prefs.c:1125 ../src/prefs.c:1667
|
||||
#: ../src/prefs.c:1134 ../src/prefs.c:1155 ../src/prefs.c:1697
|
||||
#, c-format
|
||||
msgid "GConf key '%s' is set to an invalid value\n"
|
||||
msgstr "GConf-nøkkel «%s» er satt til en ugyldig verdi\n"
|
||||
|
||||
#: ../src/prefs.c:1254
|
||||
#: ../src/prefs.c:1284
|
||||
#, c-format
|
||||
msgid ""
|
||||
"%d stored in GConf key %s is not a reasonable cursor_size; must be in the "
|
||||
@@ -2364,12 +2366,12 @@ msgstr ""
|
||||
"%d lagret i GConf-nøkkel %s er ikke en fornuftig verdi for cursor_size. Må "
|
||||
"være i området 1..128\n"
|
||||
|
||||
#: ../src/prefs.c:1334
|
||||
#: ../src/prefs.c:1364
|
||||
#, c-format
|
||||
msgid "Could not parse font description \"%s\" from GConf key %s\n"
|
||||
msgstr "Kunne ikke tolke skriftbeskrivelsen «%s» fra GConf-nøkkel %s\n"
|
||||
|
||||
#: ../src/prefs.c:1561
|
||||
#: ../src/prefs.c:1591
|
||||
#, c-format
|
||||
msgid ""
|
||||
"%d stored in GConf key %s is not a reasonable number of workspaces, current "
|
||||
@@ -2378,7 +2380,7 @@ msgstr ""
|
||||
"%d lagret i GConf-nøkkel %s er ikke et lesbart antall arbeidsområder, aktivt "
|
||||
"maksimum er %d\n"
|
||||
|
||||
#: ../src/prefs.c:1621
|
||||
#: ../src/prefs.c:1651
|
||||
msgid ""
|
||||
"Workarounds for broken applications disabled. Some applications may not "
|
||||
"behave properly.\n"
|
||||
@@ -2386,17 +2388,17 @@ msgstr ""
|
||||
"Funksjonalitet for å gå rundt ødelagte programmer er deaktivert. Noen "
|
||||
"programmer vil kanskje ikke oppføre seg korrekt.\n"
|
||||
|
||||
#: ../src/prefs.c:1694
|
||||
#: ../src/prefs.c:1724
|
||||
#, c-format
|
||||
msgid "%d stored in GConf key %s is out of range 0 to %d\n"
|
||||
msgstr "%d lagret i GConf-nøkkel %s er utenfor området 0 til %d\n"
|
||||
|
||||
#: ../src/prefs.c:1837
|
||||
#: ../src/prefs.c:1873
|
||||
#, c-format
|
||||
msgid "Error setting number of workspaces to %d: %s\n"
|
||||
msgstr "Feil under spesifisering av antall arbeidsområder til %d: %s\n"
|
||||
|
||||
#: ../src/prefs.c:2232 ../src/prefs.c:2402
|
||||
#: ../src/prefs.c:2268 ../src/prefs.c:2438
|
||||
#, c-format
|
||||
msgid ""
|
||||
"\"%s\" found in configuration database is not a valid value for keybinding "
|
||||
@@ -2405,7 +2407,7 @@ msgstr ""
|
||||
"«%s» funnet i konfigurasjonsdatabasen er ikke en gyldig verdi for "
|
||||
"tastaturbinding «%s»\n"
|
||||
|
||||
#: ../src/prefs.c:2818
|
||||
#: ../src/prefs.c:2854
|
||||
#, c-format
|
||||
msgid "Error setting name for workspace %d to \"%s\": %s\n"
|
||||
msgstr "Feil under setting av navn på arbeidsområde %d til «%s»: %s\n"
|
||||
@@ -2415,12 +2417,12 @@ msgstr "Feil under setting av navn på arbeidsområde %d til «%s»: %s\n"
|
||||
msgid "%d x %d"
|
||||
msgstr "%d x %d"
|
||||
|
||||
#: ../src/screen.c:408
|
||||
#: ../src/screen.c:410
|
||||
#, c-format
|
||||
msgid "Screen %d on display '%s' is invalid\n"
|
||||
msgstr "Skjerm %d på display «%s» er ugyldig\n"
|
||||
|
||||
#: ../src/screen.c:424
|
||||
#: ../src/screen.c:426
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Screen %d on display \"%s\" already has a window manager; try using the --"
|
||||
@@ -2429,87 +2431,87 @@ msgstr ""
|
||||
"Skjerm %d på display «%s» har allerede en vindushåndterer; prøv å bruke "
|
||||
"flagget --replace for å erstatte aktiv vindushåndterer.\n"
|
||||
|
||||
#: ../src/screen.c:451
|
||||
#: ../src/screen.c:453
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Could not acquire window manager selection on screen %d display \"%s\"\n"
|
||||
msgstr ""
|
||||
"Kunne ikke hente utvalg fra vinduhåndterer på skjerm %d, display «%s»\n"
|
||||
|
||||
#: ../src/screen.c:509
|
||||
#: ../src/screen.c:511
|
||||
#, c-format
|
||||
msgid "Screen %d on display \"%s\" already has a window manager\n"
|
||||
msgstr "Skjerm %d på display «%s» har allerede en vinduhåndterer\n"
|
||||
|
||||
#: ../src/screen.c:714
|
||||
#: ../src/screen.c:716
|
||||
#, c-format
|
||||
msgid "Could not release screen %d on display \"%s\"\n"
|
||||
msgstr "Kunne ikke slippe skjerm %d på display «%s»\n"
|
||||
|
||||
#: ../src/session.c:844 ../src/session.c:851
|
||||
#: ../src/session.c:826 ../src/session.c:833
|
||||
#, c-format
|
||||
msgid "Could not create directory '%s': %s\n"
|
||||
msgstr "Kunne ikke opprette katalog «%s»: %s\n"
|
||||
|
||||
#: ../src/session.c:861
|
||||
#: ../src/session.c:843
|
||||
#, c-format
|
||||
msgid "Could not open session file '%s' for writing: %s\n"
|
||||
msgstr "Kunne ikke åpne sesjonsfil «%s» for skriving: %s\n"
|
||||
|
||||
#: ../src/session.c:1013
|
||||
#: ../src/session.c:995
|
||||
#, c-format
|
||||
msgid "Error writing session file '%s': %s\n"
|
||||
msgstr "Feil under skriving av sesjonsfil «%s»: %s\n"
|
||||
|
||||
#: ../src/session.c:1018
|
||||
#: ../src/session.c:1000
|
||||
#, c-format
|
||||
msgid "Error closing session file '%s': %s\n"
|
||||
msgstr "Feil under lukking av sesjonsfil «%s»: %s\n"
|
||||
|
||||
#: ../src/session.c:1093
|
||||
#: ../src/session.c:1075
|
||||
#, c-format
|
||||
msgid "Failed to read saved session file %s: %s\n"
|
||||
msgstr "Feil under lesing av lagret sesjonsfil %s: %s\n"
|
||||
|
||||
#: ../src/session.c:1128
|
||||
#: ../src/session.c:1110
|
||||
#, c-format
|
||||
msgid "Failed to parse saved session file: %s\n"
|
||||
msgstr "Feil under tolking av lagret sesjonsfil: %s\n"
|
||||
|
||||
#: ../src/session.c:1177
|
||||
#: ../src/session.c:1159
|
||||
msgid "<metacity_session> attribute seen but we already have the session ID"
|
||||
msgstr "<metacity_session>-attributt sett men vi har allerede sesjons-ID"
|
||||
|
||||
#: ../src/session.c:1190
|
||||
#: ../src/session.c:1172
|
||||
#, c-format
|
||||
msgid "Unknown attribute %s on <metacity_session> element"
|
||||
msgstr "Ukjent attributt %s på <metacity_session>-element"
|
||||
|
||||
#: ../src/session.c:1207
|
||||
#: ../src/session.c:1189
|
||||
msgid "nested <window> tag"
|
||||
msgstr "<window> tag med flere nivåer"
|
||||
|
||||
#: ../src/session.c:1265 ../src/session.c:1297
|
||||
#: ../src/session.c:1247 ../src/session.c:1279
|
||||
#, c-format
|
||||
msgid "Unknown attribute %s on <window> element"
|
||||
msgstr "Ukjent attributt %s på <window>-element"
|
||||
|
||||
#: ../src/session.c:1369
|
||||
#: ../src/session.c:1351
|
||||
#, c-format
|
||||
msgid "Unknown attribute %s on <maximized> element"
|
||||
msgstr "Ukjent attributt %s på <maximized>-element"
|
||||
|
||||
#: ../src/session.c:1429
|
||||
#: ../src/session.c:1411
|
||||
#, c-format
|
||||
msgid "Unknown attribute %s on <geometry> element"
|
||||
msgstr "Ukjent attributt %s på <geometry>-element"
|
||||
|
||||
#: ../src/session.c:1449
|
||||
#: ../src/session.c:1431
|
||||
#, c-format
|
||||
msgid "Unknown element %s"
|
||||
msgstr "Ukjent element %s"
|
||||
|
||||
#: ../src/session.c:1886
|
||||
#: ../src/session.c:1868
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Error launching metacity-dialog to warn about apps that don't support "
|
||||
@@ -3550,13 +3552,13 @@ msgstr "Programmet satte en feil _NET_WM_PID %lu\n"
|
||||
msgid "%s (on %s)"
|
||||
msgstr "%s (på %s)"
|
||||
|
||||
#: ../src/window-props.c:1405
|
||||
#: ../src/window-props.c:1406
|
||||
#, c-format
|
||||
msgid "Invalid WM_TRANSIENT_FOR window 0x%lx specified for %s.\n"
|
||||
msgstr "Ugyldig WM_TRANSIENT_FOR vindu 0x%lx oppgitt for %s.\n"
|
||||
|
||||
#. first time through
|
||||
#: ../src/window.c:5541
|
||||
#: ../src/window.c:5539
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Window %s sets SM_CLIENT_ID on itself, instead of on the WM_CLIENT_LEADER "
|
||||
@@ -3572,7 +3574,7 @@ msgstr ""
|
||||
#. * MWM but not WM_NORMAL_HINTS are basically broken. We complain
|
||||
#. * about these apps but make them work.
|
||||
#.
|
||||
#: ../src/window.c:6144
|
||||
#: ../src/window.c:6101
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Window %s sets an MWM hint indicating it isn't resizable, but sets min size %"
|
||||
@@ -3609,3 +3611,21 @@ msgid ""
|
||||
msgstr ""
|
||||
"Egenskap %s på vindu 0x%lx inneholdt ugyldig UTF-8 for oppføring %d i "
|
||||
"listen\n"
|
||||
|
||||
#~ msgid ""
|
||||
#~ "Many actions (e.g. clicking in the client area, moving or resizing the "
|
||||
#~ "window) normally raise the window as a side-effect. Set this option to "
|
||||
#~ "false to decouple raising from other user actions. Even when this option "
|
||||
#~ "is false, windows can still be raised by an alt-left-click anywhere on "
|
||||
#~ "the window, a normal click on the window decorations, or by special "
|
||||
#~ "messages, such as activation requests from pagers. This option is "
|
||||
#~ "currently disabled in click-to-focus mode."
|
||||
#~ msgstr ""
|
||||
#~ "Mange handlinger (f.eks klikk i klientområdet, flytting av eller endring "
|
||||
#~ "av størrelse på vinduer) hever normalt sett vinduet som en sideeffekt. "
|
||||
#~ "Sett dette alternativet til «false» for å fjerne koblingen mellom heving "
|
||||
#~ "av vinduer og andre handlinger. Når denne er satt til «false» kan vinduer "
|
||||
#~ "fremdeles heves av alt-venstreklikk hvor som helst på vinduet eller et "
|
||||
#~ "normalt klikk på vindudekorasjonene eller spesielle meldinger slik som "
|
||||
#~ "aktiveringsforespørsler fra skrivebordshåndterere. Dette alternativet er "
|
||||
#~ "deaktivert i klikk-for-fokus modus."
|
||||
|
||||
2776
po/pt_BR.po
2776
po/pt_BR.po
File diff suppressed because it is too large
Load Diff
441
po/sr@Latn.po
441
po/sr@Latn.po
File diff suppressed because it is too large
Load Diff
401
po/th.po
401
po/th.po
@@ -11,10 +11,10 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: metacity\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2007-05-18 17:36+0700\n"
|
||||
"PO-Revision-Date: 2007-05-18 17:41+0700\n"
|
||||
"POT-Creation-Date: 2007-08-07 11:49+0700\n"
|
||||
"PO-Revision-Date: 2007-08-07 11:51+0700\n"
|
||||
"Last-Translator: Theppitak Karoonboonyanan <thep@linux.thai.net>\n"
|
||||
"Language-Team: Thai <L10n@opentle.org>\n"
|
||||
"Language-Team: Thai <thai-l10n@googlegroups.com>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
@@ -34,9 +34,15 @@ msgid "Usage: %s\n"
|
||||
msgstr "วิธีใช้: %s\n"
|
||||
|
||||
#: ../src/tools/metacity-message.c:176 ../src/util.c:133
|
||||
#, c-format
|
||||
msgid "Metacity was compiled without support for verbose mode\n"
|
||||
msgstr "Metacity ถูกคอมไพล์โดยไม่ได้เลือกรองรับโหมด verbose\n"
|
||||
|
||||
#: ../src/core.c:206
|
||||
#, c-format
|
||||
msgid "Unknown window information request: %d"
|
||||
msgstr "คำร้องขอข้อมูลหน้าต่างที่ไม่รู้จัก: %d"
|
||||
|
||||
#: ../src/delete.c:67 ../src/delete.c:94 ../src/metacity-dialog.c:50
|
||||
#: ../src/theme-parser.c:484
|
||||
#, c-format
|
||||
@@ -59,13 +65,13 @@ msgstr "ไม่เข้าใจข้อความ \"%s\" จากโพ
|
||||
msgid "Error reading from dialog display process: %s\n"
|
||||
msgstr "เกิดข้อผิดพลาดขณะอ่านจากโพรเซสกล่องโต้ตอบ: %s\n"
|
||||
|
||||
#: ../src/delete.c:348
|
||||
#: ../src/delete.c:350
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Error launching metacity-dialog to ask about killing an application: %s\n"
|
||||
msgstr "เกิดข้อผิดพลาด ขณะเปิดหน้าต่าง ถามการฆ่าโปรแกรม: %s\n"
|
||||
|
||||
#: ../src/delete.c:456
|
||||
#: ../src/delete.c:459
|
||||
#, c-format
|
||||
msgid "Failed to get hostname: %s\n"
|
||||
msgstr "ไม่สามารถอ่านชื่อโฮสต์: %s\n"
|
||||
@@ -90,47 +96,47 @@ msgstr ""
|
||||
msgid "Fatal IO error %d (%s) on display '%s'.\n"
|
||||
msgstr "เกิดข้อผิดพลาดร้ายแรง %d (%s) ในการอ่านเขียนข้อมูลจากดิสเพลย์'%s'\n"
|
||||
|
||||
#: ../src/frames.c:1069
|
||||
#: ../src/frames.c:1078
|
||||
msgid "Close Window"
|
||||
msgstr "ปิดหน้าต่าง"
|
||||
|
||||
#: ../src/frames.c:1072
|
||||
#: ../src/frames.c:1081
|
||||
msgid "Window Menu"
|
||||
msgstr "เมนูหน้าต่าง"
|
||||
|
||||
#: ../src/frames.c:1075
|
||||
#: ../src/frames.c:1084
|
||||
msgid "Minimize Window"
|
||||
msgstr "ย่อหน้าต่างหาย"
|
||||
|
||||
#: ../src/frames.c:1078
|
||||
#: ../src/frames.c:1087
|
||||
msgid "Maximize Window"
|
||||
msgstr "ขยายหน้าต่างเต็ม"
|
||||
|
||||
#: ../src/frames.c:1081
|
||||
#: ../src/frames.c:1090
|
||||
msgid "Unmaximize Window"
|
||||
msgstr "เลิกขยายหน้าต่างเต็ม"
|
||||
|
||||
#: ../src/frames.c:1084
|
||||
#: ../src/frames.c:1093
|
||||
msgid "Roll Up Window"
|
||||
msgstr "_ม้วนหน้าต่างขึ้น"
|
||||
|
||||
#: ../src/frames.c:1087
|
||||
#: ../src/frames.c:1096
|
||||
msgid "Unroll Window"
|
||||
msgstr "คลี่หน้าต่างกลับ"
|
||||
|
||||
#: ../src/frames.c:1090
|
||||
#: ../src/frames.c:1099
|
||||
msgid "Keep Window On Top"
|
||||
msgstr "วางหน้าต่างไว้บนสุด"
|
||||
|
||||
#: ../src/frames.c:1093
|
||||
#: ../src/frames.c:1102
|
||||
msgid "Remove Window From Top"
|
||||
msgstr "เลิกวางหน้าต่างไว้บนสุด"
|
||||
|
||||
#: ../src/frames.c:1096
|
||||
#: ../src/frames.c:1105
|
||||
msgid "Always On Visible Workspace"
|
||||
msgstr "แสดงบนพื้นที่ทำงานเสมอ"
|
||||
|
||||
#: ../src/frames.c:1099
|
||||
#: ../src/frames.c:1108
|
||||
msgid "Put Window On Only One Workspace"
|
||||
msgstr "วางหน้าต่างบนพื้นที่ทำงานเดียวเท่านั้น"
|
||||
|
||||
@@ -151,7 +157,8 @@ msgstr "ไม่สามารถเปิดกล่องโต้ตอบ
|
||||
msgid "No command %d has been defined.\n"
|
||||
msgstr "คำสั่ง %d ยังไม่ได้ถูกกำหนด\n"
|
||||
|
||||
#: ../src/keybindings.c:3846
|
||||
#: ../src/keybindings.c:3849
|
||||
#, c-format
|
||||
msgid "No terminal command has been defined.\n"
|
||||
msgstr "คำสั่งเปิดเทอร์มินัลยังไม่ได้ถูกกำหนด\n"
|
||||
|
||||
@@ -160,13 +167,13 @@ msgstr "คำสั่งเปิดเทอร์มินัลยังไ
|
||||
#, c-format
|
||||
msgid ""
|
||||
"metacity %s\n"
|
||||
"Copyright (C) 2001-2002 Havoc Pennington, Red Hat, Inc., and others\n"
|
||||
"Copyright (C) 2001-2007 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"
|
||||
"สงวนลิขสิทธิ์ (C) 2001-2002 Havoc Pennington, Red Hat, Inc., และอื่นๆ\n"
|
||||
"สงวนลิขสิทธิ์ (C) 2001-2007 Havoc Pennington, Red Hat, Inc., และอื่นๆ\n"
|
||||
"นี่เป็นซอฟต์แวร์เสรี อ่านเงื่อนไขลิขสิทธิ์ได้ในโค้ดต้นฉบับ\n"
|
||||
"ไม่รับผิดชอบข้อเสียหายใดๆ "
|
||||
"ไม่รับประกันความเหมาะสมในเชิงพาณิชย์หรือการใช้งานเฉพาะทางอย่างหนึ่งอย่างใด\n"
|
||||
@@ -195,119 +202,120 @@ msgstr "ใช้ค่าเริ่มต้นของวาระจาก
|
||||
msgid "Print version"
|
||||
msgstr "แสดงเลขรุ่น"
|
||||
|
||||
#: ../src/main.c:352
|
||||
#: ../src/main.c:353
|
||||
#, c-format
|
||||
msgid "Failed to scan themes directory: %s\n"
|
||||
msgstr "ไม่สามารถอ่านโฟลเดอร์ชุดตกแต่ง: %s\n"
|
||||
|
||||
#: ../src/main.c:368
|
||||
#: ../src/main.c:369
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Could not find a theme! Be sure %s exists and contains the usual themes.\n"
|
||||
msgstr "ไม่พบชุดตกแต่ง โปรดตรวจดูว่า %s มีอยู่จริง และบรรจุชุดตกแต่งที่ควรจะมี\n"
|
||||
|
||||
#: ../src/main.c:428
|
||||
#: ../src/main.c:429
|
||||
#, c-format
|
||||
msgid "Failed to restart: %s\n"
|
||||
msgstr "ไม่สามารถเริ่มการทำงานใหม่ของ: %s\n"
|
||||
|
||||
#. Translators: Translate this string the same way as you do in libwnck!
|
||||
#: ../src/menu.c:68
|
||||
#: ../src/menu.c:70
|
||||
msgid "Mi_nimize"
|
||||
msgstr "ย่_อหาย"
|
||||
|
||||
#. Translators: Translate this string the same way as you do in libwnck!
|
||||
#: ../src/menu.c:70
|
||||
#: ../src/menu.c:72
|
||||
msgid "Ma_ximize"
|
||||
msgstr "ขย_ายเต็ม"
|
||||
|
||||
#. Translators: Translate this string the same way as you do in libwnck!
|
||||
#: ../src/menu.c:72
|
||||
#: ../src/menu.c:74
|
||||
msgid "Unma_ximize"
|
||||
msgstr "เลิกขย_ายเต็ม"
|
||||
|
||||
#. Translators: Translate this string the same way as you do in libwnck!
|
||||
#: ../src/menu.c:74
|
||||
#: ../src/menu.c:76
|
||||
msgid "Roll _Up"
|
||||
msgstr "_ม้วนขึ้น"
|
||||
|
||||
#. Translators: Translate this string the same way as you do in libwnck!
|
||||
#: ../src/menu.c:76
|
||||
#: ../src/menu.c:78
|
||||
msgid "_Unroll"
|
||||
msgstr "_คลี่กลับ"
|
||||
|
||||
#. Translators: Translate this string the same way as you do in libwnck!
|
||||
#: ../src/menu.c:78
|
||||
#: ../src/menu.c:80
|
||||
msgid "_Move"
|
||||
msgstr "_ย้าย"
|
||||
|
||||
#. Translators: Translate this string the same way as you do in libwnck!
|
||||
#: ../src/menu.c:80
|
||||
#: ../src/menu.c:82
|
||||
msgid "_Resize"
|
||||
msgstr "_ปรับขนาด"
|
||||
|
||||
#. Translators: Translate this string the same way as you do in libwnck!
|
||||
#: ../src/menu.c:82
|
||||
#: ../src/menu.c:84
|
||||
msgid "Move Titlebar On_screen"
|
||||
msgstr "ย้ายแถบหัวเรื่องกลับเข้า_จอ"
|
||||
|
||||
#. separator
|
||||
#. Translators: Translate this string the same way as you do in libwnck!
|
||||
#: ../src/menu.c:85
|
||||
msgid "_Close"
|
||||
msgstr "ปิ_ด"
|
||||
|
||||
#. separator
|
||||
#. Translators: Translate this string the same way as you do in libwnck!
|
||||
#: ../src/menu.c:88 ../src/menu.c:90
|
||||
#: ../src/menu.c:87 ../src/menu.c:89
|
||||
msgid "Always on _Top"
|
||||
msgstr "อยู่_บนสุด"
|
||||
|
||||
#. Translators: Translate this string the same way as you do in libwnck!
|
||||
#: ../src/menu.c:92
|
||||
#: ../src/menu.c:91
|
||||
msgid "_Always on Visible Workspace"
|
||||
msgstr "แสดงบนพื้นที่ทำงานเ_สมอ"
|
||||
|
||||
#. Translators: Translate this string the same way as you do in libwnck!
|
||||
#: ../src/menu.c:94
|
||||
#: ../src/menu.c:93
|
||||
msgid "_Only on This Workspace"
|
||||
msgstr "แสดงบนพื้นที่ทำงาน_นี้เท่านั้น"
|
||||
|
||||
#. Translators: Translate this string the same way as you do in libwnck!
|
||||
#: ../src/menu.c:96
|
||||
#: ../src/menu.c:95
|
||||
msgid "Move to Workspace _Left"
|
||||
msgstr "ย้ายไปพื้นที่ทำงานซ้_าย"
|
||||
|
||||
#. Translators: Translate this string the same way as you do in libwnck!
|
||||
#: ../src/menu.c:98
|
||||
#: ../src/menu.c:97
|
||||
msgid "Move to Workspace R_ight"
|
||||
msgstr "ย้ายไปพื้นที่ทำงานข_วา"
|
||||
|
||||
#. Translators: Translate this string the same way as you do in libwnck!
|
||||
#: ../src/menu.c:100
|
||||
#: ../src/menu.c:99
|
||||
msgid "Move to Workspace _Up"
|
||||
msgstr "ย้ายไปพื้นที่ทำงาน_บน"
|
||||
|
||||
#. Translators: Translate this string the same way as you do in libwnck!
|
||||
#: ../src/menu.c:102
|
||||
#: ../src/menu.c:101
|
||||
msgid "Move to Workspace _Down"
|
||||
msgstr "ย้ายไปพื้นที่ทำงาน_ล่าง"
|
||||
|
||||
#: ../src/menu.c:193 ../src/prefs.c:2238 ../src/prefs.c:2773
|
||||
#. separator
|
||||
#. Translators: Translate this string the same way as you do in libwnck!
|
||||
#: ../src/menu.c:105
|
||||
msgid "_Close"
|
||||
msgstr "ปิ_ด"
|
||||
|
||||
#: ../src/menu.c:199 ../src/prefs.c:2246 ../src/prefs.c:2780
|
||||
#, c-format
|
||||
msgid "Workspace %d"
|
||||
msgstr "พื้นที่ทำงาน %d"
|
||||
|
||||
#: ../src/menu.c:202
|
||||
#: ../src/menu.c:208
|
||||
#, c-format
|
||||
msgid "Workspace 1_0"
|
||||
msgstr "พื้นที่ทำงาน 1_0"
|
||||
|
||||
#: ../src/menu.c:204
|
||||
#: ../src/menu.c:210
|
||||
#, c-format
|
||||
msgid "Workspace %s%d"
|
||||
msgstr "พื้นที่ทำงาน %s%d"
|
||||
|
||||
#: ../src/menu.c:407
|
||||
#: ../src/menu.c:390
|
||||
msgid "Move to Another _Workspace"
|
||||
msgstr "ย้ายไป_พื้นที่ทำงานอื่น"
|
||||
|
||||
@@ -620,198 +628,182 @@ msgid "Lower window below other windows"
|
||||
msgstr "ถอยหน้าต่างลงไปใว้หลังหน้าต่างอื่น"
|
||||
|
||||
#: ../src/metacity.schemas.in.h:28
|
||||
msgid ""
|
||||
"Many actions (e.g. clicking in the client area, moving or resizing the "
|
||||
"window) normally raise the window as a side-effect. Set this option to false "
|
||||
"to decouple raising from other user actions. Even when this option is false, "
|
||||
"windows can still be raised by an alt-left-click anywhere on the window, a "
|
||||
"normal click on the window decorations, or by special messages, such as "
|
||||
"activation requests from pagers. This option is currently disabled in click-"
|
||||
"to-focus mode."
|
||||
msgstr ""
|
||||
"โดยปกติ ปฏิบัติการหลายอย่าง (เช่น การคลิกบนพื้นที่ภายในหน้าต่าง การย้ายหรือปรับขนาดหน้าต่าง) "
|
||||
"จะยกหน้าต่างขึ้นด้วย ถ้ากำหนดตัวเลือกนี้เป็นเท็จ จะไม่ยกหน้าต่างเมื่อมีปฏิสัมพันธ์กับผู้ใช้ "
|
||||
"แต่ยังสามารถยกขึ้นได้โดย alt-คลิกซ้าย ภายในพื้นที่หน้าต่าง หรือคลิกแบบธรรมดาที่กรอบหน้าต่าง "
|
||||
"หรือโดยข้อความพิเศษ เช่นการร้องขอกระตุ้นหน้าต่างจากโปรแกรมจัดหน้าพื้นโต๊ะ ขณะนี้ "
|
||||
"ตัวเลือกนี้จะไม่มีผลถ้าอยู่ในโหมดโฟกัสด้วยการคลิก"
|
||||
|
||||
#: ../src/metacity.schemas.in.h:29
|
||||
msgid "Maximize window"
|
||||
msgstr "ขยายหน้าต่างเต็มจอ"
|
||||
|
||||
#: ../src/metacity.schemas.in.h:30
|
||||
#: ../src/metacity.schemas.in.h:29
|
||||
msgid "Maximize window horizontally"
|
||||
msgstr "ขยายหน้าต่างเต็มด้านกว้าง"
|
||||
|
||||
#: ../src/metacity.schemas.in.h:31
|
||||
#: ../src/metacity.schemas.in.h:30
|
||||
msgid "Maximize window vertically"
|
||||
msgstr "ขยายหน้าต่างเต็มด้านสูง"
|
||||
|
||||
#: ../src/metacity.schemas.in.h:32
|
||||
#: ../src/metacity.schemas.in.h:31
|
||||
msgid "Minimize window"
|
||||
msgstr "ย่อหน้าต่างหาย"
|
||||
|
||||
#: ../src/metacity.schemas.in.h:33
|
||||
#: ../src/metacity.schemas.in.h:32
|
||||
msgid "Modifier to use for modified window click actions"
|
||||
msgstr "ปุ่ม modifier เพื่อเปลี่ยนพฤติกรรมการคลิกหน้าต่าง"
|
||||
|
||||
#: ../src/metacity.schemas.in.h:34
|
||||
#: ../src/metacity.schemas.in.h:33
|
||||
msgid "Move backward between panels and the desktop immediately"
|
||||
msgstr "ย้ายโฟกัสย้อนหลังระหว่างพาเนลและพื้นโต๊ะโดยทันที"
|
||||
|
||||
#: ../src/metacity.schemas.in.h:35
|
||||
#: ../src/metacity.schemas.in.h:34
|
||||
msgid "Move backwards between panels and the desktop with popup"
|
||||
msgstr "ย้ายโฟกัสย้อนหลังระหว่างพาเนลและพื้นโต๊ะผ่านป๊อบอัพ"
|
||||
|
||||
#: ../src/metacity.schemas.in.h:36
|
||||
#: ../src/metacity.schemas.in.h:35
|
||||
msgid "Move backwards between windows immediately"
|
||||
msgstr "ย้ายโฟกัสย้อนหลังระหว่างหน้าต่างโดยทันที"
|
||||
|
||||
#: ../src/metacity.schemas.in.h:37
|
||||
#: ../src/metacity.schemas.in.h:36
|
||||
msgid "Move backwards between windows of an application immediately"
|
||||
msgstr "ย้ายโฟกัสย้อนหลังระหว่างหน้าต่างทั้งหลายของโปรแกรมประยุกต์โดยทันที"
|
||||
|
||||
#: ../src/metacity.schemas.in.h:38
|
||||
#: ../src/metacity.schemas.in.h:37
|
||||
msgid "Move backwards between windows of an application with popup"
|
||||
msgstr "ย้ายโฟกัสย้อนหลังระหว่างหน้าต่างทั้งหลายของโปรแกรมประยุกต์ผ่านป๊อบอัพ"
|
||||
|
||||
#: ../src/metacity.schemas.in.h:39
|
||||
#: ../src/metacity.schemas.in.h:38
|
||||
msgid "Move between panels and the desktop immediately"
|
||||
msgstr "ย้ายโฟกัสระหว่างพาเนลและพื้นโต๊ะโดยทันที"
|
||||
|
||||
#: ../src/metacity.schemas.in.h:40
|
||||
#: ../src/metacity.schemas.in.h:39
|
||||
msgid "Move between panels and the desktop with popup"
|
||||
msgstr "ย้ายโฟกัสระหว่างพาเนลและพื้นโต๊ะผ่านป๊อบอัพ"
|
||||
|
||||
#: ../src/metacity.schemas.in.h:41
|
||||
#: ../src/metacity.schemas.in.h:40
|
||||
msgid "Move between windows immediately"
|
||||
msgstr "ย้ายโฟกัสระหว่างหน้าต่างโดยทันที"
|
||||
|
||||
#: ../src/metacity.schemas.in.h:42
|
||||
#: ../src/metacity.schemas.in.h:41
|
||||
msgid "Move between windows of an application immediately"
|
||||
msgstr "ย้ายโฟกัสระหว่างหน้าต่างทั้งหลายของโปรแกรมประยุกต์โดยทันที"
|
||||
|
||||
#: ../src/metacity.schemas.in.h:43
|
||||
#: ../src/metacity.schemas.in.h:42
|
||||
msgid "Move between windows of an application with popup"
|
||||
msgstr "ย้ายโฟกัสระหว่างหน้าต่างทั้งหลายของโปรแกรมประยุกต์ผ่านป๊อบอัพ"
|
||||
|
||||
#: ../src/metacity.schemas.in.h:44
|
||||
#: ../src/metacity.schemas.in.h:43
|
||||
msgid "Move between windows with popup"
|
||||
msgstr "ย้ายโฟกัสระหว่างหน้าต่างผ่านป๊อบอัพ"
|
||||
|
||||
#: ../src/metacity.schemas.in.h:45
|
||||
#: ../src/metacity.schemas.in.h:44
|
||||
msgid "Move focus backwards between windows using popup display"
|
||||
msgstr "ย้ายโฟกัสย้อนหลังระหว่างหน้าต่างผ่านป๊อบอัพ"
|
||||
|
||||
#: ../src/metacity.schemas.in.h:46
|
||||
#: ../src/metacity.schemas.in.h:45
|
||||
msgid "Move window"
|
||||
msgstr "ย้ายหน้าต่าง"
|
||||
|
||||
#: ../src/metacity.schemas.in.h:47
|
||||
#: ../src/metacity.schemas.in.h:46
|
||||
msgid "Move window one workspace down"
|
||||
msgstr "ย้ายหน้าต่างไปพื้นที่ทำงานด้านล่าง"
|
||||
|
||||
#: ../src/metacity.schemas.in.h:48
|
||||
#: ../src/metacity.schemas.in.h:47
|
||||
msgid "Move window one workspace to the left"
|
||||
msgstr "ย้ายหน้าต่างไปพื้นที่ทำงานด้านซ้าย"
|
||||
|
||||
#: ../src/metacity.schemas.in.h:49
|
||||
#: ../src/metacity.schemas.in.h:48
|
||||
msgid "Move window one workspace to the right"
|
||||
msgstr "ย้ายหน้าต่างไปพื้นที่ทำงานด้านขวา"
|
||||
|
||||
#: ../src/metacity.schemas.in.h:50
|
||||
#: ../src/metacity.schemas.in.h:49
|
||||
msgid "Move window one workspace up"
|
||||
msgstr "ย้ายหน้าต่างไปพื้นที่ทำงานด้านบน"
|
||||
|
||||
#: ../src/metacity.schemas.in.h:51
|
||||
#: ../src/metacity.schemas.in.h:50
|
||||
msgid "Move window to east side of screen"
|
||||
msgstr "ย้ายหน้าต่างไปที่ขอบด้านตะวันออกของหน้าจอ"
|
||||
|
||||
#: ../src/metacity.schemas.in.h:52
|
||||
#: ../src/metacity.schemas.in.h:51
|
||||
msgid "Move window to north side of screen"
|
||||
msgstr "ย้ายหน้าต่างไปที่ขอบด้านเหนือของหน้าจอ"
|
||||
|
||||
#: ../src/metacity.schemas.in.h:53
|
||||
#: ../src/metacity.schemas.in.h:52
|
||||
msgid "Move window to north-east corner"
|
||||
msgstr "ย้ายหน้าต่างไปที่มุมตะวันออกเฉียงเหนือของหน้าจอ"
|
||||
|
||||
#: ../src/metacity.schemas.in.h:54
|
||||
#: ../src/metacity.schemas.in.h:53
|
||||
msgid "Move window to north-west corner"
|
||||
msgstr "ย้ายหน้าต่างไปที่มุมตะวันตกเฉียงเหนือของหน้าจอ"
|
||||
|
||||
#: ../src/metacity.schemas.in.h:55
|
||||
#: ../src/metacity.schemas.in.h:54
|
||||
msgid "Move window to south side of screen"
|
||||
msgstr "ย้ายหน้าต่างไปที่ขอบด้านใต้ของหน้าจอ"
|
||||
|
||||
#: ../src/metacity.schemas.in.h:56
|
||||
#: ../src/metacity.schemas.in.h:55
|
||||
msgid "Move window to south-east corner"
|
||||
msgstr "ย้ายหน้าต่างไปที่มุมตะวันออกเฉียงใต้ของหน้าจอ"
|
||||
|
||||
#: ../src/metacity.schemas.in.h:57
|
||||
#: ../src/metacity.schemas.in.h:56
|
||||
msgid "Move window to south-west corner"
|
||||
msgstr "ย้ายหน้าต่างไปที่มุมตะวันตกเฉียงใต้ของหน้าจอ"
|
||||
|
||||
#: ../src/metacity.schemas.in.h:58
|
||||
#: ../src/metacity.schemas.in.h:57
|
||||
msgid "Move window to west side of screen"
|
||||
msgstr "ย้ายหน้าต่างไปที่ขอบด้านตะวันตกของหน้าจอ"
|
||||
|
||||
#: ../src/metacity.schemas.in.h:59
|
||||
#: ../src/metacity.schemas.in.h:58
|
||||
msgid "Move window to workspace 1"
|
||||
msgstr "ย้ายหน้าต่างไปพื้นที่ทำงาน 1"
|
||||
|
||||
#: ../src/metacity.schemas.in.h:60
|
||||
#: ../src/metacity.schemas.in.h:59
|
||||
msgid "Move window to workspace 10"
|
||||
msgstr "ย้ายหน้าต่างไปพื้นที่ทำงาน 10"
|
||||
|
||||
#: ../src/metacity.schemas.in.h:61
|
||||
#: ../src/metacity.schemas.in.h:60
|
||||
msgid "Move window to workspace 11"
|
||||
msgstr "ย้ายหน้าต่างไปพื้นที่ทำงาน 11"
|
||||
|
||||
#: ../src/metacity.schemas.in.h:62
|
||||
#: ../src/metacity.schemas.in.h:61
|
||||
msgid "Move window to workspace 12"
|
||||
msgstr "ย้ายหน้าต่างไปพื้นที่ทำงาน 12"
|
||||
|
||||
#: ../src/metacity.schemas.in.h:63
|
||||
#: ../src/metacity.schemas.in.h:62
|
||||
msgid "Move window to workspace 2"
|
||||
msgstr "ย้ายหน้าต่างไปพื้นที่ทำงาน 2"
|
||||
|
||||
#: ../src/metacity.schemas.in.h:64
|
||||
#: ../src/metacity.schemas.in.h:63
|
||||
msgid "Move window to workspace 3"
|
||||
msgstr "ย้ายหน้าต่างไปพื้นที่ทำงาน 3"
|
||||
|
||||
#: ../src/metacity.schemas.in.h:65
|
||||
#: ../src/metacity.schemas.in.h:64
|
||||
msgid "Move window to workspace 4"
|
||||
msgstr "ย้ายหน้าต่างไปพื้นที่ทำงาน 4"
|
||||
|
||||
#: ../src/metacity.schemas.in.h:66
|
||||
#: ../src/metacity.schemas.in.h:65
|
||||
msgid "Move window to workspace 5"
|
||||
msgstr "ย้ายหน้าต่างไปพื้นที่ทำงาน 5"
|
||||
|
||||
#: ../src/metacity.schemas.in.h:67
|
||||
#: ../src/metacity.schemas.in.h:66
|
||||
msgid "Move window to workspace 6"
|
||||
msgstr "ย้ายหน้าต่างไปพื้นที่ทำงาน 6"
|
||||
|
||||
#: ../src/metacity.schemas.in.h:68
|
||||
#: ../src/metacity.schemas.in.h:67
|
||||
msgid "Move window to workspace 7"
|
||||
msgstr "ย้ายหน้าต่างไปพื้นที่ทำงาน 7"
|
||||
|
||||
#: ../src/metacity.schemas.in.h:69
|
||||
#: ../src/metacity.schemas.in.h:68
|
||||
msgid "Move window to workspace 8"
|
||||
msgstr "ย้ายหน้าต่างไปพื้นที่ทำงาน 8"
|
||||
|
||||
#: ../src/metacity.schemas.in.h:70
|
||||
#: ../src/metacity.schemas.in.h:69
|
||||
msgid "Move window to workspace 9"
|
||||
msgstr "ย้ายหน้าต่างไปพื้นที่ทำงาน 9"
|
||||
|
||||
#: ../src/metacity.schemas.in.h:71
|
||||
#: ../src/metacity.schemas.in.h:70
|
||||
msgid "Name of workspace"
|
||||
msgstr "ชื่อของพื้นที่ทำงาน"
|
||||
|
||||
#: ../src/metacity.schemas.in.h:72
|
||||
#: ../src/metacity.schemas.in.h:71
|
||||
msgid "Number of workspaces"
|
||||
msgstr "จำนวนพื้นที่ทำงาน"
|
||||
|
||||
#: ../src/metacity.schemas.in.h:73
|
||||
#: ../src/metacity.schemas.in.h:72
|
||||
msgid ""
|
||||
"Number of workspaces. Must be more than zero, and has a fixed maximum to "
|
||||
"prevent making the desktop unusable by accidentally asking for too many "
|
||||
@@ -825,26 +817,60 @@ msgstr ""
|
||||
# dialog out too wide.
|
||||
#
|
||||
# The next entry in the list will make this entry clear.
|
||||
#: ../src/metacity.schemas.in.h:74
|
||||
#: ../src/metacity.schemas.in.h:73
|
||||
msgid "Raise obscured window, otherwise lower"
|
||||
msgstr "ยกหน้าต่างขึ้นถ้าถูกบัง ไม่งั้นเอาลงด้านหลัง"
|
||||
|
||||
#: ../src/metacity.schemas.in.h:75
|
||||
#: ../src/metacity.schemas.in.h:74
|
||||
msgid "Raise window above other windows"
|
||||
msgstr "ยกหน้าต่างขึ้นมาไว้หน้าหน้าต่างอื่นๆ"
|
||||
|
||||
#: ../src/metacity.schemas.in.h:76
|
||||
#: ../src/metacity.schemas.in.h:75
|
||||
msgid "Resize window"
|
||||
msgstr "ปรับขนาดหน้าต่าง"
|
||||
|
||||
#: ../src/metacity.schemas.in.h:77
|
||||
#: ../src/metacity.schemas.in.h:76
|
||||
msgid "Run a defined command"
|
||||
msgstr "เรียกใช้คำสั่งที่กำหนดไว้"
|
||||
|
||||
#: ../src/metacity.schemas.in.h:78
|
||||
#: ../src/metacity.schemas.in.h:77
|
||||
msgid "Run a terminal"
|
||||
msgstr "เปิดเทอร์มินัล"
|
||||
|
||||
#: ../src/metacity.schemas.in.h:78
|
||||
msgid ""
|
||||
"Setting this option to false can lead to buggy behavior, so users are "
|
||||
"strongly discouraged from changing it from the default of true. Many actions "
|
||||
"(e.g. clicking in the client area, moving or resizing the window) normally "
|
||||
"raise the window as a side-effect. Set this option to false to decouple "
|
||||
"raising from other user actions. Even when this option is false, windows can "
|
||||
"still be raised by an alt-left-click anywhere on the window, a normal click "
|
||||
"on the window decorations, or by special messages from pagers, such as "
|
||||
"activation requests from tasklist applets. This option is currently disabled "
|
||||
"in click-to-focus mode. Note that the list of ways to raise windows when "
|
||||
"raise_on_click is false does not include programmatic requests from "
|
||||
"applications to raise windows; such requests will be ignored regardless of "
|
||||
"the reason for the request. If you are an application developer and have a "
|
||||
"user complaining that your application does not work with this setting "
|
||||
"disabled, tell them it is _their_ fault for breaking their window manager "
|
||||
"and that they need to change this option back to true or live with the bug "
|
||||
"they requested. See also http://bugzilla.gnome.org/show_bug.cgi?id=445447#c6."
|
||||
msgstr ""
|
||||
"การกำหนดตัวเลือกนี้เป็นเท็จ อาจทำให้การทำงานผิดพลาด ดังนั้น "
|
||||
"จึงไม่ขอแนะนำให้เปลี่ยนค่าจากค่าปกติที่เป็นค่าจริง โดยปกติ ปฏิบัติการหลายอย่าง (เช่น "
|
||||
"การคลิกบนพื้นที่ภายในหน้าต่าง การย้ายหรือปรับขนาดหน้าต่าง) จะยกหน้าต่างขึ้นด้วย "
|
||||
"ถ้ากำหนดตัวเลือกนี้เป็นเท็จ จะไม่ยกหน้าต่างเมื่อมีปฏิสัมพันธ์กับผู้ใช้ แต่ยังสามารถยกขึ้นได้โดย alt-"
|
||||
"คลิกซ้าย ภายในพื้นที่หน้าต่าง หรือคลิกแบบธรรมดาที่กรอบหน้าต่าง "
|
||||
"หรือโดยข้อความพิเศษจากโปรแกรมจัดหน้าพื้นโต๊ะ เช่น "
|
||||
"การร้องขอกระตุ้นหน้าต่างจากแอพเพล็ตรายการงาน ขณะนี้ "
|
||||
"ตัวเลือกนี้จะไม่มีผลถ้าอยู่ในโหมดโฟกัสด้วยการคลิก สังเกตว่า วิธีการต่างๆ ที่จะยกหน้าต่างขึ้นเมื่อ "
|
||||
"raise_on_click เป็นเท็จนี้ ไม่นับรวมการร้องขอจากโปรแกรมเพื่อขอยกหน้าต่างขึ้น "
|
||||
"การร้องขอดังกล่าวจะถูกปฏิเสธไม่ว่ากรณีใดๆ ถ้าคุณเป็นนักพัฒนาโปรแกรม "
|
||||
"และมีผู้ใช้บ่นว่าโปรแกรมของคุณทำงานผิดพลาดเมื่อปิดค่านี้ ก็บอกเขาได้เลย ว่าเป็นความผิด "
|
||||
"_ของเขาเอง_ ที่ทำให้โปรแกรมจัดการหน้าต่างรวน และเขาต้องเปลี่ยนตัวเลือกนี้กลับเป็นค่าจริง "
|
||||
"มิฉะนั้น ก็จะต้องอยู่กับบั๊กที่เขาเรียกร้องต่อไป กรุณาอ่าน http://bugzilla.gnome.org/show_bug."
|
||||
"cgi?id=445447#c6 เพิ่มเติม"
|
||||
|
||||
#: ../src/metacity.schemas.in.h:79
|
||||
msgid "Show the panel menu"
|
||||
msgstr "แสดงเมนูพาเนล"
|
||||
@@ -2189,31 +2215,36 @@ msgstr "โหมดโฟกัสหน้าต่าง"
|
||||
msgid "Window title font"
|
||||
msgstr "แบบอักษรหัวหน้าต่าง"
|
||||
|
||||
#: ../src/prefs.c:579 ../src/prefs.c:607 ../src/prefs.c:623 ../src/prefs.c:639
|
||||
#: ../src/prefs.c:655 ../src/prefs.c:671 ../src/prefs.c:687 ../src/prefs.c:703
|
||||
#: ../src/prefs.c:723 ../src/prefs.c:739 ../src/prefs.c:755 ../src/prefs.c:773
|
||||
#: ../src/prefs.c:789 ../src/prefs.c:808 ../src/prefs.c:824 ../src/prefs.c:859
|
||||
#: ../src/prefs.c:875 ../src/prefs.c:892 ../src/prefs.c:908 ../src/prefs.c:924
|
||||
#: ../src/prefs.c:940 ../src/prefs.c:956 ../src/prefs.c:971 ../src/prefs.c:986
|
||||
#: ../src/prefs.c:1001 ../src/prefs.c:1017 ../src/prefs.c:1033
|
||||
#: ../src/prefs.c:1049 ../src/prefs.c:1065
|
||||
#: ../src/prefs.c:434
|
||||
#, c-format
|
||||
msgid "Type of %s was not integer"
|
||||
msgstr "ชนิดของ %s ไม่ใช่จำนวนเต็ม"
|
||||
|
||||
#: ../src/prefs.c:572 ../src/prefs.c:600 ../src/prefs.c:616 ../src/prefs.c:632
|
||||
#: ../src/prefs.c:648 ../src/prefs.c:664 ../src/prefs.c:680 ../src/prefs.c:696
|
||||
#: ../src/prefs.c:716 ../src/prefs.c:732 ../src/prefs.c:748 ../src/prefs.c:766
|
||||
#: ../src/prefs.c:782 ../src/prefs.c:801 ../src/prefs.c:817 ../src/prefs.c:852
|
||||
#: ../src/prefs.c:868 ../src/prefs.c:885 ../src/prefs.c:901 ../src/prefs.c:917
|
||||
#: ../src/prefs.c:933 ../src/prefs.c:949 ../src/prefs.c:964 ../src/prefs.c:979
|
||||
#: ../src/prefs.c:994 ../src/prefs.c:1010 ../src/prefs.c:1026
|
||||
#: ../src/prefs.c:1042 ../src/prefs.c:1058
|
||||
#, c-format
|
||||
msgid "GConf key \"%s\" is set to an invalid type\n"
|
||||
msgstr "GConf คีย์ \"%s\" ถูกตั้งค่าเป็นชนิดที่ใช้ไม่ได้\n"
|
||||
|
||||
#: ../src/prefs.c:1110
|
||||
#: ../src/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/prefs.c:1134 ../src/prefs.c:1155 ../src/prefs.c:1697
|
||||
#: ../src/prefs.c:1127 ../src/prefs.c:1148 ../src/prefs.c:1705
|
||||
#, c-format
|
||||
msgid "GConf key '%s' is set to an invalid value\n"
|
||||
msgstr "GConf คีย์ '%s' ถูกตั้งค่าเป็นค่าที่ใช้ไม่ได้\n"
|
||||
|
||||
#: ../src/prefs.c:1284
|
||||
#: ../src/prefs.c:1277
|
||||
#, c-format
|
||||
msgid ""
|
||||
"%d stored in GConf key %s is not a reasonable cursor_size; must be in the "
|
||||
@@ -2221,19 +2252,19 @@ msgid ""
|
||||
msgstr ""
|
||||
"%d ใน GConf คีย์ %s ไม่ใช่ขนาดเคอร์เซอร์ที่สมเหตุสมผล ค่าดังกล่าวควรอยู่ในช่วง 1..128\n"
|
||||
|
||||
#: ../src/prefs.c:1364
|
||||
#: ../src/prefs.c:1357
|
||||
#, c-format
|
||||
msgid "Could not parse font description \"%s\" from GConf key %s\n"
|
||||
msgstr "ไม่เข้าใจคำบรรยายแบบตัวอักษร \"%s\" จาก GConf คีย์ %s\n"
|
||||
|
||||
#: ../src/prefs.c:1591
|
||||
#: ../src/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/prefs.c:1651
|
||||
#: ../src/prefs.c:1659
|
||||
msgid ""
|
||||
"Workarounds for broken applications disabled. Some applications may not "
|
||||
"behave properly.\n"
|
||||
@@ -2241,24 +2272,24 @@ msgstr ""
|
||||
"ปิดการแก้ขัดที่เตรียมไว้สำหรับโปรแกรมเสียๆ บางโปรแกรมแล้ว "
|
||||
"ซึ่งอาจทำให้โปรแกรมเหล่านี้ทำงานไม่ปกติ\n"
|
||||
|
||||
#: ../src/prefs.c:1724
|
||||
#: ../src/prefs.c:1732
|
||||
#, 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/prefs.c:1873
|
||||
#: ../src/prefs.c:1881
|
||||
#, c-format
|
||||
msgid "Error setting number of workspaces to %d: %s\n"
|
||||
msgstr "ไม่สามารถตั้งจำนวนพื้นที่ทำงานเป็น %d: %s\n"
|
||||
|
||||
#: ../src/prefs.c:2268 ../src/prefs.c:2438
|
||||
#: ../src/prefs.c:2276 ../src/prefs.c:2446
|
||||
#, c-format
|
||||
msgid ""
|
||||
"\"%s\" found in configuration database is not a valid value for keybinding "
|
||||
"\"%s\"\n"
|
||||
msgstr "\"%s\" ที่พบในฐานข้อมูลค่าปรับแต่ง ไม่สามารถใช้เป็นปุ่มลัด \"%s\"\n"
|
||||
|
||||
#: ../src/prefs.c:2854
|
||||
#: ../src/prefs.c:2861
|
||||
#, c-format
|
||||
msgid "Error setting name for workspace %d to \"%s\": %s\n"
|
||||
msgstr "ไม่สามารถตั้งชื่อพื้นที่ทำงาน %d เป็น %s: %s\n"
|
||||
@@ -2329,6 +2360,7 @@ msgid "Failed to parse saved session file: %s\n"
|
||||
msgstr "ไม่เข้าใจแฟ้มวาระที่บันทึกไว้: %s\n"
|
||||
|
||||
#: ../src/session.c:1159
|
||||
#, c-format
|
||||
msgid "<metacity_session> attribute seen but we already have the session ID"
|
||||
msgstr "พบแอตทริบิวต์ <metacity_session> แต่ว่ามี ID วาระอยู่แล้ว"
|
||||
|
||||
@@ -2338,6 +2370,7 @@ msgid "Unknown attribute %s on <metacity_session> element"
|
||||
msgstr "ไม่รู้จักแอตทริบิวต์ %s ในอีลิเมนต์ <metacity_session>"
|
||||
|
||||
#: ../src/session.c:1189
|
||||
#, c-format
|
||||
msgid "nested <window> tag"
|
||||
msgstr "มีแท็ก <window> ซ้อนด้านใน"
|
||||
|
||||
@@ -3020,6 +3053,7 @@ msgid "%g milliseconds to draw one window frame"
|
||||
msgstr "ใช้เวลา %g มิลลิวินาทีในการวาดหนึ่งเฟรมหน้าต่าง"
|
||||
|
||||
#: ../src/theme-viewer.c:797
|
||||
#, c-format
|
||||
msgid "Usage: metacity-theme-viewer [THEMENAME]\n"
|
||||
msgstr "วิธีใช้: metacity-theme-viewer [ชื่อชุดตกแต่ง]\n"
|
||||
|
||||
@@ -3136,14 +3170,16 @@ msgid "Button aspect ratio %g is not reasonable"
|
||||
msgstr "ค่า aspect ratio %g ของปุ่มไม่สมเหตุสมผล"
|
||||
|
||||
#: ../src/theme.c:294
|
||||
#, c-format
|
||||
msgid "Frame geometry does not specify size of buttons"
|
||||
msgstr "ค่าเรขาคณิตของเฟรมไม่ได้ระบุขนาดของปุ่ม"
|
||||
|
||||
#: ../src/theme.c:928
|
||||
#: ../src/theme.c:925
|
||||
#, c-format
|
||||
msgid "Gradients should have at least two colors"
|
||||
msgstr "การไล่สีควรใช้อย่างน้อยสองสี"
|
||||
|
||||
#: ../src/theme.c:1054
|
||||
#: ../src/theme.c:1051
|
||||
#, c-format
|
||||
msgid ""
|
||||
"GTK color specification must have the state in brackets, e.g. gtk:fg[NORMAL] "
|
||||
@@ -3152,7 +3188,7 @@ msgstr ""
|
||||
"การกำหนดสี GTK ต้องเขียนสถานะในวงเล็บเหลี่ยม เช่น gtk:fg[NORMAL] เมื่อ NORMAL "
|
||||
"เป็นสถานะ; ไม่สามารถแจงค่า \"%s\""
|
||||
|
||||
#: ../src/theme.c:1068
|
||||
#: ../src/theme.c:1065
|
||||
#, c-format
|
||||
msgid ""
|
||||
"GTK color specification must have a close bracket after the state, e.g. gtk:"
|
||||
@@ -3161,17 +3197,17 @@ msgstr ""
|
||||
"การกำหนดสี·GTK·ต้องมีวงเล็บเหลี่ยมปิดหลังสถานะด้วย·เช่น·gtk:fg[NORMAL]"
|
||||
"·เมื่อ·NORMAL·เป็นสถานะ;·ไม่สามารถแจงค่า·\"%s\""
|
||||
|
||||
#: ../src/theme.c:1079
|
||||
#: ../src/theme.c:1076
|
||||
#, c-format
|
||||
msgid "Did not understand state \"%s\" in color specification"
|
||||
msgstr "ไม่เข้าใจสถานะ \"%s\" ในการระบุสี"
|
||||
|
||||
#: ../src/theme.c:1092
|
||||
#: ../src/theme.c:1089
|
||||
#, c-format
|
||||
msgid "Did not understand color component \"%s\" in color specification"
|
||||
msgstr "ไม่เข้าใจองค์ประกอบ \"%s\" ในการระบุสี"
|
||||
|
||||
#: ../src/theme.c:1122
|
||||
#: ../src/theme.c:1119
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Blend format is \"blend/bg_color/fg_color/alpha\", \"%s\" does not fit the "
|
||||
@@ -3179,89 +3215,94 @@ msgid ""
|
||||
msgstr ""
|
||||
"รูปแบบการเกลี่ยสีคือ \"blend/bg_color/fg_color/alpha\", ค่า \"%s\" ไม่ตรงกับรูปแบบ"
|
||||
|
||||
#: ../src/theme.c:1133
|
||||
#: ../src/theme.c:1130
|
||||
#, c-format
|
||||
msgid "Could not parse alpha value \"%s\" in blended color"
|
||||
msgstr "ไม่สามารถแจงค่าอัลฟา \"%s\" ในการเกลี่ยสี"
|
||||
|
||||
#: ../src/theme.c:1143
|
||||
#: ../src/theme.c:1140
|
||||
#, c-format
|
||||
msgid "Alpha value \"%s\" in blended color is not between 0.0 and 1.0"
|
||||
msgstr "ค่าอัลฟา \"%s\" ในการเกลี่ยสีไม่อยู่ระหว่าง 0.0 และ 1.0"
|
||||
|
||||
#: ../src/theme.c:1190
|
||||
#: ../src/theme.c:1187
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Shade format is \"shade/base_color/factor\", \"%s\" does not fit the format"
|
||||
msgstr "รูปแบบของเฉดสีคือ \"shade/base_color/factor \", \"%s\" ไม่ตรงกับรูปแบบ"
|
||||
|
||||
#: ../src/theme.c:1201
|
||||
#: ../src/theme.c:1198
|
||||
#, c-format
|
||||
msgid "Could not parse shade factor \"%s\" in shaded color"
|
||||
msgstr "ไม่สามารถแจงค่าตัวคูณของเฉด \"%s\" ในเฉดสี"
|
||||
|
||||
#: ../src/theme.c:1211
|
||||
#: ../src/theme.c:1208
|
||||
#, c-format
|
||||
msgid "Shade factor \"%s\" in shaded color is negative"
|
||||
msgstr "ตัวคูณเฉดสี \"%s\" ในเฉดสีเป็นค่าลบ"
|
||||
|
||||
#: ../src/theme.c:1240
|
||||
#: ../src/theme.c:1237
|
||||
#, c-format
|
||||
msgid "Could not parse color \"%s\""
|
||||
msgstr "ไม่เข้าใจสี \"%s\""
|
||||
|
||||
#: ../src/theme.c:1499
|
||||
#: ../src/theme.c:1496
|
||||
#, c-format
|
||||
msgid "Coordinate expression contains character '%s' which is not allowed"
|
||||
msgstr "นิพจน์พิกัดมีอักขระ'%s' ซึ่งไม่อนุญาตให้ใช้"
|
||||
|
||||
#: ../src/theme.c:1526
|
||||
#: ../src/theme.c:1523
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Coordinate expression contains floating point number '%s' which could not be "
|
||||
"parsed"
|
||||
msgstr "นิพจน์พิกัดมีเลขจุดทศนิยม '%s'·ที่แจงค่าไม่ได้"
|
||||
|
||||
#: ../src/theme.c:1540
|
||||
#: ../src/theme.c:1537
|
||||
#, c-format
|
||||
msgid "Coordinate expression contains integer '%s' which could not be parsed"
|
||||
msgstr "นิพจน์พิกัดมีเลขจำนวนเต็ม·'%s' ที่แจงค่าไม่ได้"
|
||||
|
||||
#: ../src/theme.c:1607
|
||||
#: ../src/theme.c:1604
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Coordinate expression contained unknown operator at the start of this text: "
|
||||
"\"%s\""
|
||||
msgstr "นิพจน์พิกัดมีเครื่องหมายดำเนินการที่ไม่รู้จัก เริ่มจากตำแหน่ง·\"%s\""
|
||||
|
||||
#: ../src/theme.c:1664
|
||||
#: ../src/theme.c:1661
|
||||
#, c-format
|
||||
msgid "Coordinate expression was empty or not understood"
|
||||
msgstr "นิพจน์พิกัดว่างเปล่าหรือไม่สามารถเข้าใจ"
|
||||
|
||||
#: ../src/theme.c:1801 ../src/theme.c:1811 ../src/theme.c:1845
|
||||
#: ../src/theme.c:1798 ../src/theme.c:1808 ../src/theme.c:1842
|
||||
#, c-format
|
||||
msgid "Coordinate expression results in division by zero"
|
||||
msgstr "นิพจน์พิกัดมีผลลัพธ์ที่เป็นการหารด้วยศูนย์"
|
||||
|
||||
#: ../src/theme.c:1853
|
||||
#: ../src/theme.c:1850
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Coordinate expression tries to use mod operator on a floating-point number"
|
||||
msgstr "นิพจน์พิกัดพยายามใช้ตัวดำเนินการ mod กับตัวเลขจุดทศนิยม"
|
||||
|
||||
#: ../src/theme.c:1909
|
||||
#: ../src/theme.c:1906
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Coordinate expression has an operator \"%s\" where an operand was expected"
|
||||
msgstr "นิพจน์พิกัดมีตัวดำเนินการ\"%s\" ในที่ที่ควรจะเป็นตัวถูกดำเนินการ"
|
||||
|
||||
#: ../src/theme.c:1918
|
||||
#: ../src/theme.c:1915
|
||||
#, c-format
|
||||
msgid "Coordinate expression had an operand where an operator was expected"
|
||||
msgstr "นิพจน์พิกัดมีตัวถูกดำเนินการในที่ที่ควรจะเป็นตัวดำเนินการ"
|
||||
|
||||
#: ../src/theme.c:1926
|
||||
#: ../src/theme.c:1923
|
||||
#, c-format
|
||||
msgid "Coordinate expression ended with an operator instead of an operand"
|
||||
msgstr "นิพจน์พิกัดจบด้วยตัวดำเนินการแทนที่จะเป็นตัวถูกดำเนินการ"
|
||||
|
||||
#: ../src/theme.c:1936
|
||||
#: ../src/theme.c:1933
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Coordinate expression has operator \"%c\" following operator \"%c\" with no "
|
||||
@@ -3269,33 +3310,37 @@ msgid ""
|
||||
msgstr ""
|
||||
"นิพจน์พิกัดมีตัวดำเนินการ\"%c\" ตามหลังตัวดำเนินการ \"%c\" โดยไม่มีตัวถูกดำเนินการคั่นกลาง"
|
||||
|
||||
#: ../src/theme.c:2054
|
||||
#: ../src/theme.c:2051
|
||||
#, c-format
|
||||
msgid "Coordinate expression parser overflowed its buffer."
|
||||
msgstr "ตัวแจงค่านิพจน์พิกัดทำข้อมูลล้น"
|
||||
|
||||
#: ../src/theme.c:2083
|
||||
#: ../src/theme.c:2080
|
||||
#, c-format
|
||||
msgid "Coordinate expression had a close parenthesis with no open parenthesis"
|
||||
msgstr "นิพจน์พิกัดมีวงเล็บปิดโดยไม่มีวงเล็บเปิด"
|
||||
|
||||
#: ../src/theme.c:2145
|
||||
#: ../src/theme.c:2142
|
||||
#, c-format
|
||||
msgid "Coordinate expression had unknown variable or constant \"%s\""
|
||||
msgstr "นิพจน์พิกัดมีตัวแปรหรือค่าคงที่ \"%s\" ที่ไม่รู้จัก"
|
||||
|
||||
#: ../src/theme.c:2200
|
||||
#: ../src/theme.c:2197
|
||||
#, c-format
|
||||
msgid "Coordinate expression had an open parenthesis with no close parenthesis"
|
||||
msgstr "นิพจน์พิกัดมีวงเล็บเปิดโดยไม่มีวงเล็บปิด"
|
||||
|
||||
#: ../src/theme.c:2211
|
||||
#: ../src/theme.c:2208
|
||||
#, c-format
|
||||
msgid "Coordinate expression doesn't seem to have any operators or operands"
|
||||
msgstr "นิพจน์พิกัดท่าทางจะไม่มีตัวดำเนินการหรือตัวถูกดำเนินการเลย"
|
||||
|
||||
#: ../src/theme.c:2452 ../src/theme.c:2474 ../src/theme.c:2495
|
||||
#: ../src/theme.c:2449 ../src/theme.c:2471 ../src/theme.c:2492
|
||||
#, c-format
|
||||
msgid "Theme contained an expression \"%s\" that resulted in an error: %s\n"
|
||||
msgstr "ชุดตกแต่งมีนิพจน์ \"%s\" ซึ่งทำให้เกิดข้อผิดพลาด: %s\n"
|
||||
|
||||
#: ../src/theme.c:3949
|
||||
#: ../src/theme.c:3946
|
||||
#, c-format
|
||||
msgid ""
|
||||
"<button function=\"%s\" state=\"%s\" draw_ops=\"whatever\"/> must be "
|
||||
@@ -3304,25 +3349,25 @@ msgstr ""
|
||||
"ต้องระบุ <button function =\"%s\" state=\"%s\" draw_ops=\"อะไรก็ตามแต่\"/> "
|
||||
"สำหรับรูปแบบเฟรมด้วย"
|
||||
|
||||
#: ../src/theme.c:4425 ../src/theme.c:4450
|
||||
#: ../src/theme.c:4422 ../src/theme.c:4447
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Missing <frame state=\"%s\" resize=\"%s\" focus=\"%s\" style=\"whatever\"/>"
|
||||
msgstr ""
|
||||
"ขาด <frame state=\"%s\" resize=\"%s\" focus=\"%s\" style=\"อะไรก็ตามแต่\"/>"
|
||||
|
||||
#: ../src/theme.c:4496
|
||||
#: ../src/theme.c:4493
|
||||
#, c-format
|
||||
msgid "Failed to load theme \"%s\": %s\n"
|
||||
msgstr "โหลดชุดตกแต่ง \"%s\" ล้มเหลว: %s\n"
|
||||
|
||||
#: ../src/theme.c:4606 ../src/theme.c:4613 ../src/theme.c:4620
|
||||
#: ../src/theme.c:4627 ../src/theme.c:4634
|
||||
#: ../src/theme.c:4603 ../src/theme.c:4610 ../src/theme.c:4617
|
||||
#: ../src/theme.c:4624 ../src/theme.c:4631
|
||||
#, c-format
|
||||
msgid "No <%s> set for theme \"%s\""
|
||||
msgstr "ไม่ได้กำหนดค่า <%s> สำหรับชุดตกแต่ง \"%s\""
|
||||
|
||||
#: ../src/theme.c:4642
|
||||
#: ../src/theme.c:4639
|
||||
#, c-format
|
||||
msgid ""
|
||||
"No frame style set for window type \"%s\" in theme \"%s\", add a <window "
|
||||
@@ -3331,13 +3376,13 @@ msgstr ""
|
||||
"ไม่ได้กำหนดรูปแบบเฟรมสำหรับชนิดหน้าต่าง \"%s\" ในชุดตกแต่ง \"%s\", กรุณาเพิ่มอีลิเมนต์ "
|
||||
"<window type=\"%s\" style_set=\"อะไรก็ตามแต่\"/>"
|
||||
|
||||
#: ../src/theme.c:5009 ../src/theme.c:5071 ../src/theme.c:5134
|
||||
#: ../src/theme.c:5006 ../src/theme.c:5068 ../src/theme.c:5131
|
||||
#, c-format
|
||||
msgid ""
|
||||
"User-defined constants must begin with a capital letter; \"%s\" does not"
|
||||
msgstr "ค่าคงที่ที่ผู้ใช้กำหนดเองต้องเริ่มต้นด้วยอักษรตัวใหญ่; แต่ \"%s\" ไม่ได้เป็นตามนั้น"
|
||||
|
||||
#: ../src/theme.c:5017 ../src/theme.c:5079 ../src/theme.c:5142
|
||||
#: ../src/theme.c:5014 ../src/theme.c:5076 ../src/theme.c:5139
|
||||
#, c-format
|
||||
msgid "Constant \"%s\" has already been defined"
|
||||
msgstr "ค่าคงที่ \"%s\" ถูกกำหนดไว้แล้ว"
|
||||
@@ -3383,13 +3428,13 @@ msgstr "โปรแกรมประยุกต์ตั้งค่า _NET_
|
||||
msgid "%s (on %s)"
|
||||
msgstr "%s (ที่เครื่อง %s)"
|
||||
|
||||
#: ../src/window-props.c:1405
|
||||
#: ../src/window-props.c:1406
|
||||
#, 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/window.c:5532
|
||||
#: ../src/window.c:5540
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Window %s sets SM_CLIENT_ID on itself, instead of on the WM_CLIENT_LEADER "
|
||||
@@ -3405,7 +3450,7 @@ msgstr ""
|
||||
#. * MWM but not WM_NORMAL_HINTS are basically broken. We complain
|
||||
#. * about these apps but make them work.
|
||||
#.
|
||||
#: ../src/window.c:6141
|
||||
#: ../src/window.c:6105
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Window %s sets an MWM hint indicating it isn't resizable, but sets min size %"
|
||||
@@ -3441,6 +3486,22 @@ msgid ""
|
||||
msgstr ""
|
||||
"คุณสมบัติ %s ของหน้าต่าง 0x%lx มีค่าที่ไม่ใช่ UTF-8 ที่ถูกต้องสำหรับหัวข้อที่ %d ในรายการ\n"
|
||||
|
||||
#~ msgid ""
|
||||
#~ "Many actions (e.g. clicking in the client area, moving or resizing the "
|
||||
#~ "window) normally raise the window as a side-effect. Set this option to "
|
||||
#~ "false to decouple raising from other user actions. Even when this option "
|
||||
#~ "is false, windows can still be raised by an alt-left-click anywhere on "
|
||||
#~ "the window, a normal click on the window decorations, or by special "
|
||||
#~ "messages, such as activation requests from pagers. This option is "
|
||||
#~ "currently disabled in click-to-focus mode."
|
||||
#~ msgstr ""
|
||||
#~ "โดยปกติ ปฏิบัติการหลายอย่าง (เช่น การคลิกบนพื้นที่ภายในหน้าต่าง "
|
||||
#~ "การย้ายหรือปรับขนาดหน้าต่าง) จะยกหน้าต่างขึ้นด้วย ถ้ากำหนดตัวเลือกนี้เป็นเท็จ "
|
||||
#~ "จะไม่ยกหน้าต่างเมื่อมีปฏิสัมพันธ์กับผู้ใช้ แต่ยังสามารถยกขึ้นได้โดย alt-คลิกซ้าย "
|
||||
#~ "ภายในพื้นที่หน้าต่าง หรือคลิกแบบธรรมดาที่กรอบหน้าต่าง หรือโดยข้อความพิเศษ "
|
||||
#~ "เช่นการร้องขอกระตุ้นหน้าต่างจากโปรแกรมจัดหน้าพื้นโต๊ะ ขณะนี้ "
|
||||
#~ "ตัวเลือกนี้จะไม่มีผลถ้าอยู่ในโหมดโฟกัสด้วยการคลิก"
|
||||
|
||||
#~ msgid "On _Top"
|
||||
#~ msgstr "_บนสุด"
|
||||
|
||||
|
||||
760
po/zh_CN.po
760
po/zh_CN.po
File diff suppressed because it is too large
Load Diff
@@ -151,6 +151,9 @@
|
||||
<KeyListEntry
|
||||
name="/apps/metacity/global_keybindings/switch_windows" />
|
||||
|
||||
<KeyListEntry
|
||||
name="/apps/metacity/global_keybindings/switch_group" />
|
||||
|
||||
<KeyListEntry
|
||||
name="/apps/metacity/global_keybindings/switch_panels" />
|
||||
|
||||
|
||||
@@ -163,7 +163,7 @@ schema_DATA = $(schema_in_files:.schemas.in=.schemas)
|
||||
|
||||
@INTLTOOL_XML_NOMERGE_RULE@
|
||||
|
||||
xmldir = $(datadir)/control-center/keybindings
|
||||
xmldir = @GNOME_KEYBINDINGS_KEYSDIR@
|
||||
xml_in_files = 50-metacity-desktop-key.xml.in 50-metacity-key.xml.in
|
||||
xml_DATA = $(xml_in_files:.xml.in=.xml)
|
||||
|
||||
|
||||
313
src/core.c
313
src/core.c
@@ -42,7 +42,7 @@
|
||||
*/
|
||||
static MetaWindow *
|
||||
get_window (Display *xdisplay,
|
||||
Window frame_xwindow)
|
||||
Window frame_xwindow)
|
||||
{
|
||||
MetaDisplay *display;
|
||||
MetaWindow *window;
|
||||
@@ -60,125 +60,156 @@ get_window (Display *xdisplay,
|
||||
}
|
||||
|
||||
void
|
||||
meta_core_get_client_size (Display *xdisplay,
|
||||
Window frame_xwindow,
|
||||
int *width,
|
||||
int *height)
|
||||
meta_core_get (Display *xdisplay,
|
||||
Window xwindow,
|
||||
...)
|
||||
{
|
||||
MetaWindow *window = get_window (xdisplay, frame_xwindow);
|
||||
|
||||
if (width)
|
||||
*width = window->rect.width;
|
||||
if (height)
|
||||
*height = window->rect.height;
|
||||
}
|
||||
va_list args;
|
||||
MetaCoreGetType request;
|
||||
|
||||
gboolean
|
||||
meta_core_window_has_frame (Display *xdisplay,
|
||||
Window frame_xwindow)
|
||||
{
|
||||
MetaDisplay *display;
|
||||
MetaWindow *window;
|
||||
|
||||
display = meta_display_for_x_display (xdisplay);
|
||||
window = meta_display_lookup_x_window (display, frame_xwindow);
|
||||
MetaDisplay *display = meta_display_for_x_display (xdisplay);
|
||||
MetaWindow *window = meta_display_lookup_x_window (display, xwindow);
|
||||
|
||||
return window != NULL && window->frame != NULL;
|
||||
}
|
||||
va_start (args, xwindow);
|
||||
|
||||
gboolean
|
||||
meta_core_titlebar_is_onscreen (Display *xdisplay,
|
||||
Window frame_xwindow)
|
||||
{
|
||||
MetaWindow *window = get_window (xdisplay, frame_xwindow);
|
||||
request = va_arg (args, MetaCoreGetType);
|
||||
|
||||
return meta_window_titlebar_is_onscreen (window);
|
||||
}
|
||||
/* Now, we special-case the first request slightly. Mostly, requests
|
||||
* for information on windows which have no frame are errors.
|
||||
* But sometimes we may want to know *whether* a window has a frame.
|
||||
* In this case, pass the key META_CORE_WINDOW_HAS_FRAME
|
||||
* as the *first* request, with a pointer to a boolean; if the window
|
||||
* has no frame, this will be set to False and meta_core_get will
|
||||
* exit immediately (so the values of any other requests will be
|
||||
* undefined). Otherwise it will be set to True and meta_core_get will
|
||||
* continue happily on its way.
|
||||
*/
|
||||
|
||||
Window
|
||||
meta_core_get_client_xwindow (Display *xdisplay,
|
||||
Window frame_xwindow)
|
||||
{
|
||||
MetaWindow *window = get_window (xdisplay, frame_xwindow);
|
||||
if (request != META_CORE_WINDOW_HAS_FRAME &&
|
||||
(window == NULL || window->frame == NULL)) {
|
||||
meta_bug ("No such frame window 0x%lx!\n", xwindow);
|
||||
return;
|
||||
}
|
||||
|
||||
return window->xwindow;
|
||||
}
|
||||
while (request != META_CORE_GET_END) {
|
||||
|
||||
gpointer answer = va_arg (args, gpointer);
|
||||
|
||||
MetaFrameFlags
|
||||
meta_core_get_frame_flags (Display *xdisplay,
|
||||
Window frame_xwindow)
|
||||
{
|
||||
MetaWindow *window = get_window (xdisplay, frame_xwindow);
|
||||
|
||||
return meta_frame_get_flags (window->frame);
|
||||
}
|
||||
switch (request) {
|
||||
case META_CORE_WINDOW_HAS_FRAME:
|
||||
*((gboolean*)answer) = window != NULL && window->frame != NULL;
|
||||
if (!*((gboolean*)answer)) return; /* see above */
|
||||
break;
|
||||
case META_CORE_GET_CLIENT_WIDTH:
|
||||
*((gint*)answer) = window->rect.width;
|
||||
break;
|
||||
case META_CORE_GET_CLIENT_HEIGHT:
|
||||
*((gint*)answer) = window->rect.height;
|
||||
break;
|
||||
case META_CORE_IS_TITLEBAR_ONSCREEN:
|
||||
*((gboolean*)answer) = meta_window_titlebar_is_onscreen (window);
|
||||
break;
|
||||
case META_CORE_GET_CLIENT_XWINDOW:
|
||||
*((Window*)answer) = window->xwindow;
|
||||
break;
|
||||
case META_CORE_GET_FRAME_FLAGS:
|
||||
*((MetaFrameFlags*)answer) = meta_frame_get_flags (window->frame);
|
||||
break;
|
||||
case META_CORE_GET_FRAME_TYPE:
|
||||
{
|
||||
MetaFrameType base_type = META_FRAME_TYPE_LAST;
|
||||
|
||||
MetaFrameType
|
||||
meta_core_get_frame_type (Display *xdisplay,
|
||||
Window frame_xwindow)
|
||||
{
|
||||
MetaWindow *window;
|
||||
MetaFrameType base_type;
|
||||
switch (window->type)
|
||||
{
|
||||
case META_WINDOW_NORMAL:
|
||||
base_type = META_FRAME_TYPE_NORMAL;
|
||||
break;
|
||||
|
||||
window = get_window (xdisplay, frame_xwindow);
|
||||
case META_WINDOW_DIALOG:
|
||||
base_type = META_FRAME_TYPE_DIALOG;
|
||||
break;
|
||||
|
||||
base_type = META_FRAME_TYPE_LAST;
|
||||
|
||||
switch (window->type)
|
||||
{
|
||||
case META_WINDOW_NORMAL:
|
||||
base_type = META_FRAME_TYPE_NORMAL;
|
||||
break;
|
||||
|
||||
case META_WINDOW_DIALOG:
|
||||
base_type = META_FRAME_TYPE_DIALOG;
|
||||
break;
|
||||
|
||||
case META_WINDOW_MODAL_DIALOG:
|
||||
base_type = META_FRAME_TYPE_MODAL_DIALOG;
|
||||
break;
|
||||
|
||||
case META_WINDOW_MENU:
|
||||
base_type = META_FRAME_TYPE_MENU;
|
||||
break;
|
||||
case META_WINDOW_MODAL_DIALOG:
|
||||
base_type = META_FRAME_TYPE_MODAL_DIALOG;
|
||||
break;
|
||||
|
||||
case META_WINDOW_UTILITY:
|
||||
base_type = META_FRAME_TYPE_UTILITY;
|
||||
break;
|
||||
|
||||
case META_WINDOW_DESKTOP:
|
||||
case META_WINDOW_DOCK:
|
||||
case META_WINDOW_TOOLBAR:
|
||||
case META_WINDOW_SPLASHSCREEN:
|
||||
/* No frame */
|
||||
base_type = META_FRAME_TYPE_LAST;
|
||||
break;
|
||||
case META_WINDOW_MENU:
|
||||
base_type = META_FRAME_TYPE_MENU;
|
||||
break;
|
||||
|
||||
case META_WINDOW_UTILITY:
|
||||
base_type = META_FRAME_TYPE_UTILITY;
|
||||
break;
|
||||
|
||||
case META_WINDOW_DESKTOP:
|
||||
case META_WINDOW_DOCK:
|
||||
case META_WINDOW_TOOLBAR:
|
||||
case META_WINDOW_SPLASHSCREEN:
|
||||
/* No frame */
|
||||
base_type = META_FRAME_TYPE_LAST;
|
||||
break;
|
||||
|
||||
}
|
||||
|
||||
if (base_type == META_FRAME_TYPE_LAST)
|
||||
{
|
||||
/* can't add border if undecorated */
|
||||
*((MetaFrameType*)answer) = META_FRAME_TYPE_LAST;
|
||||
}
|
||||
else if (window->border_only)
|
||||
{
|
||||
/* override base frame type */
|
||||
*((MetaFrameType*)answer) = META_FRAME_TYPE_BORDER;
|
||||
}
|
||||
else
|
||||
{
|
||||
*((MetaFrameType*)answer) = base_type;
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
case META_CORE_GET_MINI_ICON:
|
||||
*((GdkPixbuf**)answer) = window->mini_icon;
|
||||
break;
|
||||
case META_CORE_GET_ICON:
|
||||
*((GdkPixbuf**)answer) = window->icon;
|
||||
break;
|
||||
case META_CORE_GET_X:
|
||||
meta_window_get_position (window, (int*)answer, NULL);
|
||||
break;
|
||||
case META_CORE_GET_Y:
|
||||
meta_window_get_position (window, NULL, (int*)answer);
|
||||
break;
|
||||
case META_CORE_GET_FRAME_WORKSPACE:
|
||||
*((gint*)answer) = meta_window_get_net_wm_desktop (window);
|
||||
break;
|
||||
case META_CORE_GET_FRAME_X:
|
||||
*((gint*)answer) = window->frame->rect.x;
|
||||
break;
|
||||
case META_CORE_GET_FRAME_Y:
|
||||
*((gint*)answer) = window->frame->rect.y;
|
||||
break;
|
||||
case META_CORE_GET_FRAME_WIDTH:
|
||||
*((gint*)answer) = window->frame->rect.width;
|
||||
break;
|
||||
case META_CORE_GET_FRAME_HEIGHT:
|
||||
*((gint*)answer) = window->frame->rect.height;
|
||||
break;
|
||||
case META_CORE_GET_SCREEN_WIDTH:
|
||||
*((gint*)answer) = window->screen->rect.width;
|
||||
break;
|
||||
case META_CORE_GET_SCREEN_HEIGHT:
|
||||
*((gint*)answer) = window->screen->rect.height;
|
||||
break;
|
||||
|
||||
default:
|
||||
meta_warning(_("Unknown window information request: %d"), request);
|
||||
}
|
||||
|
||||
if (base_type == META_FRAME_TYPE_LAST)
|
||||
return META_FRAME_TYPE_LAST; /* can't add border if undecorated */
|
||||
else if (window->border_only)
|
||||
return META_FRAME_TYPE_BORDER; /* override base frame type */
|
||||
else
|
||||
return base_type;
|
||||
}
|
||||
request = va_arg (args, MetaCoreGetType);
|
||||
}
|
||||
|
||||
GdkPixbuf*
|
||||
meta_core_get_mini_icon (Display *xdisplay,
|
||||
Window frame_xwindow)
|
||||
{
|
||||
MetaWindow *window = get_window (xdisplay, frame_xwindow);
|
||||
|
||||
return window->mini_icon;
|
||||
}
|
||||
|
||||
GdkPixbuf*
|
||||
meta_core_get_icon (Display *xdisplay,
|
||||
Window frame_xwindow)
|
||||
{
|
||||
MetaWindow *window = get_window (xdisplay, frame_xwindow);
|
||||
|
||||
return window->icon;
|
||||
va_end (args);
|
||||
}
|
||||
|
||||
void
|
||||
@@ -187,7 +218,7 @@ meta_core_queue_frame_resize (Display *xdisplay,
|
||||
{
|
||||
MetaWindow *window = get_window (xdisplay, frame_xwindow);
|
||||
|
||||
meta_window_queue_move_resize (window);
|
||||
meta_window_queue (window, META_QUEUE_MOVE_RESIZE);
|
||||
}
|
||||
|
||||
void
|
||||
@@ -275,32 +306,6 @@ meta_core_user_focus (Display *xdisplay,
|
||||
meta_window_focus (window, timestamp);
|
||||
}
|
||||
|
||||
void
|
||||
meta_core_get_position (Display *xdisplay,
|
||||
Window frame_xwindow,
|
||||
int *x,
|
||||
int *y)
|
||||
{
|
||||
MetaWindow *window = get_window (xdisplay, frame_xwindow);
|
||||
|
||||
meta_window_get_position (window, x, y);
|
||||
}
|
||||
|
||||
void
|
||||
meta_core_get_size (Display *xdisplay,
|
||||
Window frame_xwindow,
|
||||
int *width,
|
||||
int *height)
|
||||
{
|
||||
MetaWindow *window = get_window (xdisplay, frame_xwindow);
|
||||
|
||||
if (width)
|
||||
*width = window->rect.width;
|
||||
if (height)
|
||||
*height = window->rect.height;
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
meta_core_minimize (Display *xdisplay,
|
||||
Window frame_xwindow)
|
||||
@@ -451,36 +456,6 @@ meta_core_get_active_workspace (Screen *xscreen)
|
||||
return meta_workspace_index (screen->active_workspace);
|
||||
}
|
||||
|
||||
int
|
||||
meta_core_get_frame_workspace (Display *xdisplay,
|
||||
Window frame_xwindow)
|
||||
{
|
||||
MetaWindow *window = get_window (xdisplay, frame_xwindow);
|
||||
|
||||
return meta_window_get_net_wm_desktop (window);
|
||||
}
|
||||
|
||||
void
|
||||
meta_core_get_frame_extents (Display *xdisplay,
|
||||
Window frame_xwindow,
|
||||
int *x,
|
||||
int *y,
|
||||
int *width,
|
||||
int *height)
|
||||
{
|
||||
MetaWindow *window = get_window (xdisplay, frame_xwindow);
|
||||
|
||||
if (x)
|
||||
*x = window->frame->rect.x;
|
||||
if (y)
|
||||
*y = window->frame->rect.y;
|
||||
if (width)
|
||||
*width = window->frame->rect.width;
|
||||
if (height)
|
||||
*height = window->frame->rect.height;
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
meta_core_show_window_menu (Display *xdisplay,
|
||||
Window frame_xwindow,
|
||||
@@ -730,20 +705,6 @@ meta_core_set_screen_cursor (Display *xdisplay,
|
||||
meta_frame_set_screen_cursor (window->frame, cursor);
|
||||
}
|
||||
|
||||
void
|
||||
meta_core_get_screen_size (Display *xdisplay,
|
||||
Window frame_on_screen,
|
||||
int *width,
|
||||
int *height)
|
||||
{
|
||||
MetaWindow *window = get_window (xdisplay, frame_on_screen);
|
||||
|
||||
if (width)
|
||||
*width = window->screen->rect.width;
|
||||
if (height)
|
||||
*height = window->screen->rect.height;
|
||||
}
|
||||
|
||||
void
|
||||
meta_core_increment_event_serial (Display *xdisplay)
|
||||
{
|
||||
|
||||
108
src/core.h
108
src/core.h
@@ -29,30 +29,68 @@
|
||||
#include <gdk/gdkx.h>
|
||||
#include "common.h"
|
||||
|
||||
void meta_core_get_client_size (Display *xdisplay,
|
||||
Window frame_xwindow,
|
||||
int *width,
|
||||
int *height);
|
||||
typedef enum
|
||||
{
|
||||
META_CORE_GET_END = 0,
|
||||
META_CORE_WINDOW_HAS_FRAME,
|
||||
META_CORE_GET_CLIENT_WIDTH,
|
||||
META_CORE_GET_CLIENT_HEIGHT,
|
||||
META_CORE_IS_TITLEBAR_ONSCREEN,
|
||||
META_CORE_GET_CLIENT_XWINDOW,
|
||||
META_CORE_GET_FRAME_FLAGS,
|
||||
META_CORE_GET_FRAME_TYPE,
|
||||
META_CORE_GET_MINI_ICON,
|
||||
META_CORE_GET_ICON,
|
||||
META_CORE_GET_X,
|
||||
META_CORE_GET_Y,
|
||||
META_CORE_GET_FRAME_WORKSPACE,
|
||||
META_CORE_GET_FRAME_X,
|
||||
META_CORE_GET_FRAME_Y,
|
||||
META_CORE_GET_FRAME_WIDTH,
|
||||
META_CORE_GET_FRAME_HEIGHT,
|
||||
META_CORE_GET_SCREEN_WIDTH,
|
||||
META_CORE_GET_SCREEN_HEIGHT,
|
||||
} MetaCoreGetType;
|
||||
|
||||
gboolean meta_core_titlebar_is_onscreen (Display *xdisplay,
|
||||
Window frame_xwindow);
|
||||
|
||||
gboolean meta_core_window_has_frame (Display *xdisplay,
|
||||
Window frame_xwindow);
|
||||
|
||||
|
||||
Window meta_core_get_client_xwindow (Display *xdisplay,
|
||||
Window frame_xwindow);
|
||||
|
||||
MetaFrameFlags meta_core_get_frame_flags (Display *xdisplay,
|
||||
Window frame_xwindow);
|
||||
MetaFrameType meta_core_get_frame_type (Display *xdisplay,
|
||||
Window frame_xwindow);
|
||||
|
||||
GdkPixbuf* meta_core_get_mini_icon (Display *xdisplay,
|
||||
Window frame_xwindow);
|
||||
GdkPixbuf* meta_core_get_icon (Display *xdisplay,
|
||||
Window frame_xwindow);
|
||||
/* General information function about the given window. Pass in a sequence of
|
||||
* pairs of MetaCoreGetTypes and pointers to variables; the variables will be
|
||||
* filled with the requested values. End the list with META_CORE_GET_END.
|
||||
* For example:
|
||||
*
|
||||
* meta_core_get (my_display, my_window,
|
||||
* META_CORE_GET_X, &x,
|
||||
* META_CORE_GET_Y, &y,
|
||||
* META_CORE_GET_END);
|
||||
*
|
||||
* If the window doesn't have a frame, this will raise a meta_bug. To suppress
|
||||
* this behaviour, ask META_CORE_WINDOW_HAS_FRAME as the *first* question in
|
||||
* the list. If the window has no frame, the answer to this question will be
|
||||
* False, and anything else you asked will be undefined. Otherwise, the answer
|
||||
* will be True. The answer will necessarily be True if you ask the question
|
||||
* in any other position. The positions of all other questions don't matter.
|
||||
*
|
||||
* The reason for this function is that some parts of the program don't know
|
||||
* about MetaWindows. But they *can* see core.h. So we used to have a whole
|
||||
* load of functions which took a display and an X window, looked up the
|
||||
* relevant MetaWindow, and returned information about it. The trouble with
|
||||
* that is that looking up the MetaWindow is a nontrivial operation, and
|
||||
* consolidating the calls in this way makes (for example) frame exposes
|
||||
* 33% faster, according to valgrind.
|
||||
*
|
||||
* This function would perhaps be slightly better if the questions were
|
||||
* represented by pointers, perhaps gchar*s, because then we could take
|
||||
* advantage of gcc's automatic sentinel checking. On the other hand, this
|
||||
* immediately suggests string comparison, and that's slow.
|
||||
*
|
||||
* Another possible improvement is that core.h still has a bunch of
|
||||
* functions which can't be described by the formula "give a display and
|
||||
* an X window, get a single value" (meta_core_user_move, for example), but
|
||||
* which could theoretically be handled by this function if we relaxed the
|
||||
* requirement that all questions should have exactly one argument.
|
||||
*/
|
||||
void meta_core_get (Display *xdisplay,
|
||||
Window window,
|
||||
...);
|
||||
|
||||
void meta_core_queue_frame_resize (Display *xdisplay,
|
||||
Window frame_xwindow);
|
||||
@@ -78,17 +116,6 @@ void meta_core_user_focus (Display *xdisplay,
|
||||
Window frame_xwindow,
|
||||
guint32 timestamp);
|
||||
|
||||
/* get position of client, same coord space expected by move */
|
||||
void meta_core_get_position (Display *xdisplay,
|
||||
Window frame_xwindow,
|
||||
int *x,
|
||||
int *y);
|
||||
|
||||
void meta_core_get_size (Display *xdisplay,
|
||||
Window frame_xwindow,
|
||||
int *width,
|
||||
int *height);
|
||||
|
||||
void meta_core_minimize (Display *xdisplay,
|
||||
Window frame_xwindow);
|
||||
void meta_core_toggle_maximize (Display *xdisplay,
|
||||
@@ -126,14 +153,6 @@ const char* meta_core_get_workspace_name_with_index (Display *xdisplay,
|
||||
Window xroot,
|
||||
int index);
|
||||
|
||||
void meta_core_get_frame_extents (Display *xdisplay,
|
||||
Window frame_xwindow,
|
||||
int *x,
|
||||
int *y,
|
||||
int *width,
|
||||
int *height);
|
||||
|
||||
|
||||
void meta_core_show_window_menu (Display *xdisplay,
|
||||
Window frame_xwindow,
|
||||
int root_x,
|
||||
@@ -170,11 +189,6 @@ void meta_core_set_screen_cursor (Display *xdisplay,
|
||||
Window frame_on_screen,
|
||||
MetaCursor cursor);
|
||||
|
||||
void meta_core_get_screen_size (Display *xdisplay,
|
||||
Window frame_on_screen,
|
||||
int *width,
|
||||
int *height);
|
||||
|
||||
/* Used because we ignore EnterNotify when a window is unmapped that
|
||||
* really shouldn't cause focus changes, by comparing the event serial
|
||||
* of the EnterNotify and the UnmapNotify.
|
||||
|
||||
@@ -306,6 +306,7 @@ delete_ping_timeout_func (MetaDisplay *display,
|
||||
char numbuf[32];
|
||||
char timestampbuf[32];
|
||||
char *window_id_str;
|
||||
char *window_title;
|
||||
GIOChannel *channel;
|
||||
|
||||
meta_topic (META_DEBUG_PING,
|
||||
@@ -319,6 +320,7 @@ delete_ping_timeout_func (MetaDisplay *display,
|
||||
}
|
||||
|
||||
window_id_str = g_strdup_printf ("0x%lx", window->xwindow);
|
||||
window_title = g_locale_from_utf8 (window->title, -1, NULL, NULL, NULL);
|
||||
|
||||
sprintf (numbuf, "%d", window->screen->number);
|
||||
sprintf (timestampbuf, "%u", timestamp);
|
||||
@@ -329,7 +331,7 @@ delete_ping_timeout_func (MetaDisplay *display,
|
||||
argv[3] = "--timestamp";
|
||||
argv[4] = timestampbuf;
|
||||
argv[5] = "--kill-window-question";
|
||||
argv[6] = window->title;
|
||||
argv[6] = window_title;
|
||||
argv[7] = window_id_str;
|
||||
argv[8] = NULL;
|
||||
|
||||
@@ -362,6 +364,7 @@ delete_ping_timeout_func (MetaDisplay *display,
|
||||
g_io_channel_unref (channel);
|
||||
|
||||
out:
|
||||
g_free (window_title);
|
||||
g_free (window_id_str);
|
||||
}
|
||||
|
||||
|
||||
@@ -1542,7 +1542,7 @@ event_callback (XEvent *event,
|
||||
{
|
||||
window->frame->need_reapply_frame_shape = TRUE;
|
||||
meta_warning("from event callback\n");
|
||||
meta_window_queue_move_resize (window);
|
||||
meta_window_queue (window, META_QUEUE_MOVE_RESIZE);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -3905,7 +3905,7 @@ meta_display_queue_retheme_all_windows (MetaDisplay *display)
|
||||
{
|
||||
MetaWindow *window = tmp->data;
|
||||
|
||||
meta_window_queue_move_resize (window);
|
||||
meta_window_queue (window, META_QUEUE_MOVE_RESIZE);
|
||||
if (window->frame)
|
||||
{
|
||||
window->frame->need_reapply_frame_shape = TRUE;
|
||||
|
||||
@@ -69,6 +69,8 @@ typedef struct
|
||||
MetaRectangle icon_rect;
|
||||
} MetaMinimizeEffect, MetaUnminimizeEffect;
|
||||
|
||||
#if 0
|
||||
/* Solaris abhors an empty struct. #397296. */
|
||||
typedef struct
|
||||
{
|
||||
|
||||
@@ -77,6 +79,7 @@ typedef struct
|
||||
typedef struct
|
||||
{
|
||||
} MetaFocusEffect;
|
||||
#endif
|
||||
|
||||
struct MetaEffect
|
||||
{
|
||||
@@ -88,8 +91,11 @@ struct MetaEffect
|
||||
{
|
||||
MetaMinimizeEffect minimize;
|
||||
MetaUnminimizeEffect unminimize;
|
||||
#if 0
|
||||
/* These don't currently exist, so we aren't using them. #397296. */
|
||||
MetaCloseEffect close;
|
||||
MetaFocusEffect focus;
|
||||
#endif
|
||||
} u;
|
||||
|
||||
MetaEffectPriv *priv;
|
||||
|
||||
@@ -223,7 +223,7 @@ meta_window_destroy_frame (MetaWindow *window)
|
||||
g_free (frame);
|
||||
|
||||
/* Put our state back where it should be */
|
||||
meta_window_queue_calc_showing (window);
|
||||
meta_window_queue (window, META_QUEUE_CALC_SHOWING);
|
||||
}
|
||||
|
||||
|
||||
|
||||
232
src/frames.c
232
src/frames.c
@@ -73,8 +73,8 @@ static void meta_frames_paint_to_drawable (MetaFrames *frames,
|
||||
MetaUIFrame *frame,
|
||||
GdkDrawable *drawable,
|
||||
GdkRegion *region,
|
||||
int x_offset,
|
||||
int y_offset);
|
||||
int x_offset,
|
||||
int y_offset);
|
||||
|
||||
static void meta_frames_set_window_background (MetaFrames *frames,
|
||||
MetaUIFrame *frame);
|
||||
@@ -102,7 +102,7 @@ static MetaFrameControl get_control (MetaFrames *frames,
|
||||
static void clear_tip (MetaFrames *frames);
|
||||
static void invalidate_all_caches (MetaFrames *frames);
|
||||
static void invalidate_whole_window (MetaFrames *frames,
|
||||
MetaUIFrame *frame);
|
||||
MetaUIFrame *frame);
|
||||
|
||||
static GtkWidgetClass *parent_class = NULL;
|
||||
|
||||
@@ -115,12 +115,12 @@ meta_frames_get_type (void)
|
||||
{
|
||||
static const GtkTypeInfo frames_info =
|
||||
{
|
||||
"MetaFrames",
|
||||
sizeof (MetaFrames),
|
||||
sizeof (MetaFramesClass),
|
||||
(GtkClassInitFunc) meta_frames_class_init,
|
||||
(GtkObjectInitFunc) meta_frames_init,
|
||||
/* reserved_1 */ NULL,
|
||||
"MetaFrames",
|
||||
sizeof (MetaFrames),
|
||||
sizeof (MetaFramesClass),
|
||||
(GtkClassInitFunc) meta_frames_class_init,
|
||||
(GtkObjectInitFunc) meta_frames_init,
|
||||
/* reserved_1 */ NULL,
|
||||
/* reserved_2 */ NULL,
|
||||
(GtkClassInitFunc) NULL,
|
||||
};
|
||||
@@ -295,7 +295,7 @@ typedef struct
|
||||
|
||||
static CachedPixels *
|
||||
get_cache (MetaFrames *frames,
|
||||
MetaUIFrame *frame)
|
||||
MetaUIFrame *frame)
|
||||
{
|
||||
CachedPixels *pixels;
|
||||
|
||||
@@ -312,7 +312,7 @@ get_cache (MetaFrames *frames,
|
||||
|
||||
static void
|
||||
invalidate_cache (MetaFrames *frames,
|
||||
MetaUIFrame *frame)
|
||||
MetaUIFrame *frame)
|
||||
{
|
||||
CachedPixels *pixels = get_cache (frames, frame);
|
||||
int i;
|
||||
@@ -447,8 +447,10 @@ meta_frames_ensure_layout (MetaFrames *frames,
|
||||
|
||||
widget = GTK_WIDGET (frames);
|
||||
|
||||
flags = meta_core_get_frame_flags (gdk_display, frame->xwindow);
|
||||
type = meta_core_get_frame_type (gdk_display, frame->xwindow);
|
||||
meta_core_get (gdk_display, frame->xwindow,
|
||||
META_CORE_GET_FRAME_FLAGS, &flags,
|
||||
META_CORE_GET_FRAME_TYPE, &type,
|
||||
META_CORE_GET_END);
|
||||
|
||||
style = meta_theme_get_frame_style (meta_theme_get_current (),
|
||||
type, flags);
|
||||
@@ -485,7 +487,7 @@ meta_frames_ensure_layout (MetaFrames *frames,
|
||||
pango_layout_set_auto_dir (frame->layout, FALSE);
|
||||
|
||||
font_desc = meta_gtk_widget_get_font_desc (widget, scale,
|
||||
meta_prefs_get_titlebar_font ());
|
||||
meta_prefs_get_titlebar_font ());
|
||||
|
||||
size = pango_font_description_get_size (font_desc);
|
||||
|
||||
@@ -507,7 +509,7 @@ meta_frames_ensure_layout (MetaFrames *frames,
|
||||
}
|
||||
|
||||
pango_layout_set_font_description (frame->layout,
|
||||
font_desc);
|
||||
font_desc);
|
||||
|
||||
pango_font_description_free (font_desc);
|
||||
|
||||
@@ -527,11 +529,12 @@ meta_frames_calc_geometry (MetaFrames *frames,
|
||||
MetaFrameType type;
|
||||
MetaButtonLayout button_layout;
|
||||
|
||||
meta_core_get_client_size (gdk_display, frame->xwindow,
|
||||
&width, &height);
|
||||
|
||||
flags = meta_core_get_frame_flags (gdk_display, frame->xwindow);
|
||||
type = meta_core_get_frame_type (gdk_display, frame->xwindow);
|
||||
meta_core_get (gdk_display, frame->xwindow,
|
||||
META_CORE_GET_CLIENT_WIDTH, &width,
|
||||
META_CORE_GET_CLIENT_HEIGHT, &height,
|
||||
META_CORE_GET_FRAME_FLAGS, &flags,
|
||||
META_CORE_GET_FRAME_TYPE, &type,
|
||||
META_CORE_GET_END);
|
||||
|
||||
meta_frames_ensure_layout (frames, frame);
|
||||
|
||||
@@ -552,17 +555,17 @@ meta_frames_new (int screen_number)
|
||||
GdkScreen *screen;
|
||||
|
||||
screen = gdk_display_get_screen (gdk_display_get_default (),
|
||||
screen_number);
|
||||
screen_number);
|
||||
|
||||
return g_object_new (META_TYPE_FRAMES,
|
||||
"screen", screen,
|
||||
NULL);
|
||||
"screen", screen,
|
||||
NULL);
|
||||
}
|
||||
|
||||
void
|
||||
meta_frames_manage_window (MetaFrames *frames,
|
||||
Window xwindow,
|
||||
GdkWindow *window)
|
||||
GdkWindow *window)
|
||||
{
|
||||
MetaUIFrame *frame;
|
||||
|
||||
@@ -614,8 +617,8 @@ meta_frames_unmanage_window (MetaFrames *frames,
|
||||
|
||||
/* restore the cursor */
|
||||
meta_core_set_screen_cursor (gdk_display,
|
||||
frame->xwindow,
|
||||
META_CURSOR_DEFAULT);
|
||||
frame->xwindow,
|
||||
META_CURSOR_DEFAULT);
|
||||
|
||||
gdk_window_set_user_data (frame->window, NULL);
|
||||
|
||||
@@ -678,8 +681,10 @@ meta_frames_get_geometry (MetaFrames *frames,
|
||||
if (frame == NULL)
|
||||
meta_bug ("No such frame 0x%lx\n", xwindow);
|
||||
|
||||
flags = meta_core_get_frame_flags (gdk_display, frame->xwindow);
|
||||
type = meta_core_get_frame_type (gdk_display, frame->xwindow);
|
||||
meta_core_get (gdk_display, frame->xwindow,
|
||||
META_CORE_GET_FRAME_FLAGS, &flags,
|
||||
META_CORE_GET_FRAME_TYPE, &type,
|
||||
META_CORE_GET_END);
|
||||
|
||||
g_return_if_fail (type < META_FRAME_TYPE_LAST);
|
||||
|
||||
@@ -914,8 +919,9 @@ meta_frames_apply_shapes (MetaFrames *frames,
|
||||
&attrs);
|
||||
|
||||
/* Copy the client's shape to the temporary shape_window */
|
||||
client_window = meta_core_get_client_xwindow (gdk_display,
|
||||
frame->xwindow);
|
||||
meta_core_get (gdk_display, frame->xwindow,
|
||||
META_CORE_GET_CLIENT_XWINDOW, &client_window,
|
||||
META_CORE_GET_END);
|
||||
|
||||
XShapeCombineShape (gdk_display, shape_window, ShapeBounding,
|
||||
fgeom.left_width,
|
||||
@@ -972,11 +978,11 @@ meta_frames_apply_shapes (MetaFrames *frames,
|
||||
|
||||
void
|
||||
meta_frames_move_resize_frame (MetaFrames *frames,
|
||||
Window xwindow,
|
||||
int x,
|
||||
int y,
|
||||
int width,
|
||||
int height)
|
||||
Window xwindow,
|
||||
int x,
|
||||
int y,
|
||||
int width,
|
||||
int height)
|
||||
{
|
||||
MetaUIFrame *frame = meta_frames_lookup_window (frames, xwindow);
|
||||
int old_x, old_y, old_width, old_height;
|
||||
@@ -1145,7 +1151,7 @@ show_tip_now (MetaFrames *frames)
|
||||
screen_number = gdk_screen_get_number (gtk_widget_get_screen (GTK_WIDGET (frames)));
|
||||
|
||||
meta_fixed_tip_show (gdk_display,
|
||||
screen_number,
|
||||
screen_number,
|
||||
rect->x + dx,
|
||||
rect->y + rect->height + 2 + dy,
|
||||
tiptext);
|
||||
@@ -1213,7 +1219,9 @@ meta_frame_titlebar_event (MetaUIFrame *frame,
|
||||
{
|
||||
case META_ACTION_TITLEBAR_TOGGLE_SHADE:
|
||||
{
|
||||
flags = meta_core_get_frame_flags (gdk_display, frame->xwindow);
|
||||
meta_core_get (gdk_display, frame->xwindow,
|
||||
META_CORE_GET_FRAME_FLAGS, &flags,
|
||||
META_CORE_GET_END);
|
||||
|
||||
if (flags & META_FRAME_ALLOWS_SHADE)
|
||||
{
|
||||
@@ -1231,7 +1239,9 @@ meta_frame_titlebar_event (MetaUIFrame *frame,
|
||||
|
||||
case META_ACTION_TITLEBAR_TOGGLE_MAXIMIZE:
|
||||
{
|
||||
flags = meta_core_get_frame_flags (gdk_display, frame->xwindow);
|
||||
meta_core_get (gdk_display, frame->xwindow,
|
||||
META_CORE_GET_FRAME_FLAGS, &flags,
|
||||
META_CORE_GET_END);
|
||||
|
||||
if (flags & META_FRAME_ALLOWS_MAXIMIZE)
|
||||
{
|
||||
@@ -1242,7 +1252,9 @@ meta_frame_titlebar_event (MetaUIFrame *frame,
|
||||
|
||||
case META_ACTION_TITLEBAR_MINIMIZE:
|
||||
{
|
||||
flags = meta_core_get_frame_flags (gdk_display, frame->xwindow);
|
||||
meta_core_get (gdk_display, frame->xwindow,
|
||||
META_CORE_GET_FRAME_FLAGS, &flags,
|
||||
META_CORE_GET_END);
|
||||
|
||||
if (flags & META_FRAME_ALLOWS_MINIMIZE)
|
||||
{
|
||||
@@ -1329,7 +1341,8 @@ meta_frames_button_press_event (GtkWidget *widget,
|
||||
/* focus on click, even if click was on client area */
|
||||
if (event->button == 1 &&
|
||||
!(control == META_FRAME_CONTROL_MINIMIZE ||
|
||||
control == META_FRAME_CONTROL_DELETE))
|
||||
control == META_FRAME_CONTROL_DELETE ||
|
||||
control == META_FRAME_CONTROL_MAXIMIZE))
|
||||
{
|
||||
meta_topic (META_DEBUG_FOCUS,
|
||||
"Focusing window with frame 0x%lx due to button 1 press\n",
|
||||
@@ -1440,9 +1453,9 @@ meta_frames_button_press_event (GtkWidget *widget,
|
||||
dx = event->x_root - event->x;
|
||||
dy = event->y_root - event->y;
|
||||
|
||||
/* Align to the right end of the menu rectangle if RTL */
|
||||
if (meta_ui_get_direction() == META_UI_DIRECTION_RTL)
|
||||
dx += rect->width;
|
||||
/* Align to the right end of the menu rectangle if RTL */
|
||||
if (meta_ui_get_direction() == META_UI_DIRECTION_RTL)
|
||||
dx += rect->width;
|
||||
|
||||
meta_core_show_window_menu (gdk_display,
|
||||
frame->xwindow,
|
||||
@@ -1463,6 +1476,7 @@ meta_frames_button_press_event (GtkWidget *widget,
|
||||
control == META_FRAME_CONTROL_RESIZE_W))
|
||||
{
|
||||
MetaGrabOp op;
|
||||
gboolean titlebar_is_onscreen;
|
||||
|
||||
op = META_GRAB_OP_NONE;
|
||||
|
||||
@@ -1497,8 +1511,11 @@ meta_frames_button_press_event (GtkWidget *widget,
|
||||
break;
|
||||
}
|
||||
|
||||
if (!meta_core_titlebar_is_onscreen (gdk_display,
|
||||
frame->xwindow))
|
||||
meta_core_get (gdk_display, frame->xwindow,
|
||||
META_CORE_IS_TITLEBAR_ONSCREEN, &titlebar_is_onscreen,
|
||||
META_CORE_GET_END);
|
||||
|
||||
if (!titlebar_is_onscreen)
|
||||
meta_core_show_window_menu (gdk_display,
|
||||
frame->xwindow,
|
||||
event->x_root,
|
||||
@@ -1521,9 +1538,11 @@ meta_frames_button_press_event (GtkWidget *widget,
|
||||
event->button == 1)
|
||||
{
|
||||
MetaFrameFlags flags;
|
||||
|
||||
flags = meta_core_get_frame_flags (gdk_display, frame->xwindow);
|
||||
|
||||
|
||||
meta_core_get (gdk_display, frame->xwindow,
|
||||
META_CORE_GET_FRAME_FLAGS, &flags,
|
||||
META_CORE_GET_END);
|
||||
|
||||
if (flags & META_FRAME_ALLOWS_MOVE)
|
||||
{
|
||||
meta_core_begin_grab_op (gdk_display,
|
||||
@@ -1619,8 +1638,13 @@ meta_frames_button_release_event (GtkWidget *widget,
|
||||
|
||||
case META_GRAB_OP_CLICKING_MAXIMIZE:
|
||||
if (control == META_FRAME_CONTROL_MAXIMIZE)
|
||||
{
|
||||
/* Focus the window on the maximize */
|
||||
meta_core_user_focus (gdk_display,
|
||||
frame->xwindow,
|
||||
event->time);
|
||||
meta_core_maximize (gdk_display, frame->xwindow);
|
||||
|
||||
}
|
||||
meta_core_end_grab_op (gdk_display, event->time);
|
||||
break;
|
||||
|
||||
@@ -1701,8 +1725,8 @@ meta_frames_button_release_event (GtkWidget *widget,
|
||||
|
||||
static void
|
||||
meta_frames_update_prelit_control (MetaFrames *frames,
|
||||
MetaUIFrame *frame,
|
||||
MetaFrameControl control)
|
||||
MetaUIFrame *frame,
|
||||
MetaFrameControl control)
|
||||
{
|
||||
MetaFrameControl old_control;
|
||||
MetaCursor cursor;
|
||||
@@ -1875,7 +1899,7 @@ meta_frames_motion_notify_event (GtkWidget *widget,
|
||||
control = META_FRAME_CONTROL_NONE;
|
||||
|
||||
/* Update prelit control and cursor */
|
||||
meta_frames_update_prelit_control (frames, frame, control);
|
||||
meta_frames_update_prelit_control (frames, frame, control);
|
||||
|
||||
/* No tooltip while in the process of clicking */
|
||||
}
|
||||
@@ -1890,7 +1914,7 @@ meta_frames_motion_notify_event (GtkWidget *widget,
|
||||
control = get_control (frames, frame, x, y);
|
||||
|
||||
/* Update prelit control and cursor */
|
||||
meta_frames_update_prelit_control (frames, frame, control);
|
||||
meta_frames_update_prelit_control (frames, frame, control);
|
||||
|
||||
queue_tip (frames);
|
||||
}
|
||||
@@ -1930,8 +1954,8 @@ get_bg_gc (GdkWindow *window, int x_offset, int y_offset)
|
||||
if (private->bg_pixmap == GDK_PARENT_RELATIVE_BG && private->parent)
|
||||
{
|
||||
return get_bg_gc (GDK_WINDOW (private->parent),
|
||||
x_offset + private->x,
|
||||
y_offset + private->y);
|
||||
x_offset + private->x,
|
||||
y_offset + private->y);
|
||||
}
|
||||
else if (private->bg_pixmap &&
|
||||
private->bg_pixmap != GDK_PARENT_RELATIVE_BG &&
|
||||
@@ -1958,13 +1982,13 @@ get_bg_gc (GdkWindow *window, int x_offset, int y_offset)
|
||||
|
||||
static void
|
||||
clear_backing (GdkPixmap *pixmap,
|
||||
GdkWindow *window,
|
||||
int xoffset, int yoffset)
|
||||
GdkWindow *window,
|
||||
int xoffset, int yoffset)
|
||||
{
|
||||
GdkGC *tmp_gc = get_bg_gc (window, xoffset, yoffset);
|
||||
|
||||
gdk_draw_rectangle (pixmap, tmp_gc, TRUE,
|
||||
0, 0, -1, -1);
|
||||
0, 0, -1, -1);
|
||||
|
||||
g_object_unref (tmp_gc);
|
||||
}
|
||||
@@ -1974,7 +1998,7 @@ clear_backing (GdkPixmap *pixmap,
|
||||
|
||||
static GdkPixmap *
|
||||
generate_pixmap (MetaFrames *frames,
|
||||
MetaUIFrame *frame,
|
||||
MetaUIFrame *frame,
|
||||
MetaRectangle rect)
|
||||
{
|
||||
GdkRectangle rectangle;
|
||||
@@ -1994,7 +2018,7 @@ generate_pixmap (MetaFrames *frames,
|
||||
region = gdk_region_rectangle (&rectangle);
|
||||
|
||||
meta_frames_paint_to_drawable (frames, frame, result, region,
|
||||
- rectangle.x, - rectangle.y);
|
||||
-rectangle.x, -rectangle.y);
|
||||
|
||||
gdk_region_destroy (region);
|
||||
|
||||
@@ -2004,22 +2028,26 @@ generate_pixmap (MetaFrames *frames,
|
||||
|
||||
static void
|
||||
populate_cache (MetaFrames *frames,
|
||||
MetaUIFrame *frame)
|
||||
MetaUIFrame *frame)
|
||||
{
|
||||
int top, bottom, left, right;
|
||||
int width, height;
|
||||
int frame_width, frame_height, screen_width, screen_height;
|
||||
CachedPixels *pixels;
|
||||
MetaFrameType frame_type;
|
||||
MetaFrameFlags frame_flags;
|
||||
int i;
|
||||
|
||||
meta_core_get_frame_extents (gdk_display,
|
||||
frame->xwindow,
|
||||
NULL, NULL,
|
||||
&frame_width, &frame_height);
|
||||
|
||||
meta_core_get_screen_size (gdk_display,
|
||||
frame->xwindow,
|
||||
&screen_width, &screen_height);
|
||||
meta_core_get (gdk_display, frame->xwindow,
|
||||
META_CORE_GET_FRAME_WIDTH, &frame_width,
|
||||
META_CORE_GET_FRAME_HEIGHT, &frame_height,
|
||||
META_CORE_GET_SCREEN_WIDTH, &screen_width,
|
||||
META_CORE_GET_SCREEN_HEIGHT, &screen_height,
|
||||
META_CORE_GET_CLIENT_WIDTH, &width,
|
||||
META_CORE_GET_CLIENT_HEIGHT, &height,
|
||||
META_CORE_GET_FRAME_TYPE, &frame_type,
|
||||
META_CORE_GET_FRAME_FLAGS, &frame_flags,
|
||||
META_CORE_GET_END);
|
||||
|
||||
/* don't cache extremely large windows */
|
||||
if (frame_width > 2 * screen_width ||
|
||||
@@ -2029,13 +2057,11 @@ populate_cache (MetaFrames *frames,
|
||||
}
|
||||
|
||||
meta_theme_get_frame_borders (meta_theme_get_current (),
|
||||
meta_core_get_frame_type (gdk_display, frame->xwindow),
|
||||
frame->text_height,
|
||||
meta_core_get_frame_flags (gdk_display, frame->xwindow),
|
||||
frame_type,
|
||||
frame->text_height,
|
||||
frame_flags,
|
||||
&top, &bottom, &left, &right);
|
||||
|
||||
meta_core_get_client_size (gdk_display, frame->xwindow, &width, &height);
|
||||
|
||||
pixels = get_cache (frames, frame);
|
||||
|
||||
/* Setup the rectangles for the four frame borders. First top, then
|
||||
@@ -2088,14 +2114,14 @@ clip_to_screen (GdkRegion *region, MetaUIFrame *frame)
|
||||
* is crucial to handle huge client windows,
|
||||
* like "xterm -geometry 1000x1000"
|
||||
*/
|
||||
meta_core_get_frame_extents (gdk_display,
|
||||
frame->xwindow,
|
||||
&frame_area.x, &frame_area.y,
|
||||
&frame_area.width, &frame_area.height);
|
||||
|
||||
meta_core_get_screen_size (gdk_display,
|
||||
frame->xwindow,
|
||||
&screen_area.width, &screen_area.height);
|
||||
meta_core_get (gdk_display, frame->xwindow,
|
||||
META_CORE_GET_FRAME_X, &frame_area.x,
|
||||
META_CORE_GET_FRAME_Y, &frame_area.y,
|
||||
META_CORE_GET_FRAME_WIDTH, &frame_area.width,
|
||||
META_CORE_GET_FRAME_HEIGHT, &frame_area.height,
|
||||
META_CORE_GET_SCREEN_WIDTH, &screen_area.height,
|
||||
META_CORE_GET_SCREEN_HEIGHT, &screen_area.height,
|
||||
META_CORE_GET_END);
|
||||
|
||||
gdk_region_offset (region, frame_area.x, frame_area.y);
|
||||
|
||||
@@ -2108,7 +2134,7 @@ clip_to_screen (GdkRegion *region, MetaUIFrame *frame)
|
||||
|
||||
static void
|
||||
subtract_from_region (GdkRegion *region, GdkDrawable *drawable,
|
||||
gint x, gint y)
|
||||
gint x, gint y)
|
||||
{
|
||||
GdkRectangle rect;
|
||||
GdkRegion *reg_rect;
|
||||
@@ -2199,8 +2225,8 @@ meta_frames_paint_to_drawable (MetaFrames *frames,
|
||||
MetaUIFrame *frame,
|
||||
GdkDrawable *drawable,
|
||||
GdkRegion *region,
|
||||
int x_offset,
|
||||
int y_offset)
|
||||
int x_offset,
|
||||
int y_offset)
|
||||
{
|
||||
GtkWidget *widget;
|
||||
MetaFrameFlags flags;
|
||||
@@ -2311,13 +2337,14 @@ meta_frames_paint_to_drawable (MetaFrames *frames,
|
||||
button_states[META_BUTTON_TYPE_RIGHT_RIGHT_BACKGROUND] =
|
||||
button_states[META_BUTTON_TYPE_CLOSE];
|
||||
|
||||
flags = meta_core_get_frame_flags (gdk_display, frame->xwindow);
|
||||
type = meta_core_get_frame_type (gdk_display, frame->xwindow);
|
||||
mini_icon = meta_core_get_mini_icon (gdk_display, frame->xwindow);
|
||||
icon = meta_core_get_icon (gdk_display, frame->xwindow);
|
||||
|
||||
meta_core_get_client_size (gdk_display, frame->xwindow,
|
||||
&w, &h);
|
||||
meta_core_get (gdk_display, frame->xwindow,
|
||||
META_CORE_GET_FRAME_FLAGS, &flags,
|
||||
META_CORE_GET_FRAME_TYPE, &type,
|
||||
META_CORE_GET_MINI_ICON, &mini_icon,
|
||||
META_CORE_GET_ICON, &icon,
|
||||
META_CORE_GET_CLIENT_WIDTH, &w,
|
||||
META_CORE_GET_CLIENT_HEIGHT, &h,
|
||||
META_CORE_GET_END);
|
||||
|
||||
meta_frames_ensure_layout (frames, frame);
|
||||
|
||||
@@ -2339,9 +2366,10 @@ meta_frames_paint_to_drawable (MetaFrames *frames,
|
||||
type, frame->text_height, flags,
|
||||
&top, &bottom, &left, &right);
|
||||
|
||||
meta_core_get_screen_size (gdk_display,
|
||||
frame->xwindow,
|
||||
&screen_width, &screen_height);
|
||||
meta_core_get (gdk_display, frame->xwindow,
|
||||
META_CORE_GET_SCREEN_WIDTH, &screen_width,
|
||||
META_CORE_GET_SCREEN_HEIGHT, &screen_height,
|
||||
META_CORE_GET_END);
|
||||
|
||||
edges = gdk_region_copy (region);
|
||||
|
||||
@@ -2432,12 +2460,14 @@ meta_frames_set_window_background (MetaFrames *frames,
|
||||
MetaFrameStyle *style;
|
||||
gboolean frame_exists;
|
||||
|
||||
frame_exists = meta_core_window_has_frame (gdk_display, frame->xwindow);
|
||||
meta_core_get (gdk_display, frame->xwindow,
|
||||
META_CORE_WINDOW_HAS_FRAME, &frame_exists,
|
||||
META_CORE_GET_FRAME_FLAGS, &flags,
|
||||
META_CORE_GET_FRAME_TYPE, &type,
|
||||
META_CORE_GET_END);
|
||||
|
||||
if (frame_exists)
|
||||
{
|
||||
flags = meta_core_get_frame_flags (gdk_display, frame->xwindow);
|
||||
type = meta_core_get_frame_type (gdk_display, frame->xwindow);
|
||||
style = meta_theme_get_frame_style (meta_theme_get_current (),
|
||||
type, flags);
|
||||
}
|
||||
@@ -2613,7 +2643,9 @@ get_control (MetaFrames *frames,
|
||||
if (POINT_IN_RECT (x, y, fgeom.menu_rect.clickable))
|
||||
return META_FRAME_CONTROL_MENU;
|
||||
|
||||
flags = meta_core_get_frame_flags (gdk_display, frame->xwindow);
|
||||
meta_core_get (gdk_display, frame->xwindow,
|
||||
META_CORE_GET_FRAME_FLAGS, &flags,
|
||||
META_CORE_GET_END);
|
||||
|
||||
has_vert = (flags & META_FRAME_ALLOWS_VERTICAL_RESIZE) != 0;
|
||||
has_horiz = (flags & META_FRAME_ALLOWS_HORIZONTAL_RESIZE) != 0;
|
||||
@@ -2783,7 +2815,7 @@ meta_frames_pop_delay_exposes (MetaFrames *frames)
|
||||
|
||||
static void
|
||||
invalidate_whole_window (MetaFrames *frames,
|
||||
MetaUIFrame *frame)
|
||||
MetaUIFrame *frame)
|
||||
{
|
||||
gdk_window_invalidate_rect (frame->window, NULL, FALSE);
|
||||
invalidate_cache (frames, frame);
|
||||
|
||||
11
src/main.c
11
src/main.c
@@ -65,7 +65,7 @@ static void
|
||||
version (void)
|
||||
{
|
||||
g_print (_("metacity %s\n"
|
||||
"Copyright (C) 2001-2002 Havoc Pennington, Red Hat, Inc., and others\n"
|
||||
"Copyright (C) 2001-2007 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"),
|
||||
VERSION);
|
||||
@@ -293,15 +293,16 @@ main (int argc, char **argv)
|
||||
|
||||
g_type_init ();
|
||||
|
||||
/* Load prefs */
|
||||
meta_prefs_init ();
|
||||
meta_prefs_add_listener (prefs_changed_callback, NULL);
|
||||
|
||||
meta_ui_init (&argc, &argv);
|
||||
|
||||
/* must be after UI init so we can override GDK handlers */
|
||||
meta_errors_init ();
|
||||
|
||||
/* Load prefs */
|
||||
meta_prefs_init ();
|
||||
meta_prefs_add_listener (prefs_changed_callback, NULL);
|
||||
|
||||
|
||||
#if 1
|
||||
g_log_set_handler (NULL,
|
||||
G_LOG_LEVEL_MASK | G_LOG_FLAG_FATAL | G_LOG_FLAG_RECURSION,
|
||||
|
||||
174
src/menu.c
174
src/menu.c
@@ -44,6 +44,7 @@ typedef enum
|
||||
MENU_ITEM_IMAGE,
|
||||
MENU_ITEM_CHECKBOX,
|
||||
MENU_ITEM_RADIOBUTTON,
|
||||
MENU_ITEM_WORKSPACE_LIST,
|
||||
} MetaMenuItemType;
|
||||
|
||||
struct _MenuItem
|
||||
@@ -81,9 +82,6 @@ static MenuItem menuitems[] = {
|
||||
{ META_MENU_OP_RESIZE, MENU_ITEM_NORMAL, NULL, FALSE, N_("_Resize") },
|
||||
/* Translators: Translate this string the same way as you do in libwnck! */
|
||||
{ META_MENU_OP_RECOVER, MENU_ITEM_NORMAL, NULL, FALSE, N_("Move Titlebar On_screen") },
|
||||
{ 0, MENU_ITEM_SEPARATOR, NULL, FALSE, NULL }, /* separator */
|
||||
/* Translators: Translate this string the same way as you do in libwnck! */
|
||||
{ META_MENU_OP_DELETE, MENU_ITEM_IMAGE, METACITY_STOCK_DELETE, FALSE, N_("_Close") },
|
||||
{ META_MENU_OP_WORKSPACES, MENU_ITEM_SEPARATOR, NULL, FALSE, NULL }, /* separator */
|
||||
/* Translators: Translate this string the same way as you do in libwnck! */
|
||||
{ META_MENU_OP_ABOVE, MENU_ITEM_CHECKBOX, NULL, FALSE, N_("Always on _Top") },
|
||||
@@ -100,7 +98,11 @@ static MenuItem menuitems[] = {
|
||||
/* Translators: Translate this string the same way as you do in libwnck! */
|
||||
{ META_MENU_OP_MOVE_UP, MENU_ITEM_NORMAL, NULL, FALSE, N_("Move to Workspace _Up") },
|
||||
/* Translators: Translate this string the same way as you do in libwnck! */
|
||||
{ META_MENU_OP_MOVE_DOWN, MENU_ITEM_NORMAL, NULL, FALSE, N_("Move to Workspace _Down") }
|
||||
{ META_MENU_OP_MOVE_DOWN, MENU_ITEM_NORMAL, NULL, FALSE, N_("Move to Workspace _Down") },
|
||||
{ 0, MENU_ITEM_WORKSPACE_LIST, NULL, FALSE, NULL },
|
||||
{ 0, MENU_ITEM_SEPARATOR, NULL, FALSE, NULL }, /* separator */
|
||||
/* Translators: Translate this string the same way as you do in libwnck! */
|
||||
{ META_MENU_OP_DELETE, MENU_ITEM_IMAGE, METACITY_STOCK_DELETE, FALSE, N_("_Close") }
|
||||
};
|
||||
|
||||
static void
|
||||
@@ -292,6 +294,8 @@ menu_item_new (MenuItem *menuitem, int workspace_id)
|
||||
gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (mi),
|
||||
menuitem->checked);
|
||||
}
|
||||
else if (menuitem->type == MENU_ITEM_WORKSPACE_LIST)
|
||||
return NULL;
|
||||
else
|
||||
return gtk_separator_menu_item_new ();
|
||||
|
||||
@@ -370,7 +374,86 @@ meta_window_menu_new (MetaFrames *frames,
|
||||
break;
|
||||
}
|
||||
|
||||
if (menuitem.type != MENU_ITEM_SEPARATOR)
|
||||
if (menuitem.type == MENU_ITEM_WORKSPACE_LIST)
|
||||
{
|
||||
if (ops & META_MENU_OP_WORKSPACES)
|
||||
{
|
||||
Display *display;
|
||||
Window xroot;
|
||||
GdkScreen *screen;
|
||||
GtkWidget *submenu;
|
||||
int j;
|
||||
|
||||
MenuItem to_another_workspace = {
|
||||
0, MENU_ITEM_NORMAL,
|
||||
NULL, FALSE,
|
||||
N_("Move to Another _Workspace")
|
||||
};
|
||||
|
||||
meta_verbose ("Creating %d-workspace menu current space %lu\n",
|
||||
n_workspaces, active_workspace);
|
||||
|
||||
display = gdk_x11_drawable_get_xdisplay (GTK_WIDGET (frames)->window);
|
||||
|
||||
screen = gdk_drawable_get_screen (GTK_WIDGET (frames)->window);
|
||||
xroot = GDK_DRAWABLE_XID (gdk_screen_get_root_window (screen));
|
||||
|
||||
submenu = gtk_menu_new ();
|
||||
|
||||
g_assert (mi==NULL);
|
||||
mi = menu_item_new (&to_another_workspace, -1);
|
||||
gtk_menu_item_set_submenu (GTK_MENU_ITEM (mi), submenu);
|
||||
|
||||
for (j = 0; j < n_workspaces; j++)
|
||||
{
|
||||
char *label;
|
||||
MenuData *md;
|
||||
unsigned int key;
|
||||
MetaVirtualModifier mods;
|
||||
MenuItem moveitem;
|
||||
GtkWidget *submi;
|
||||
|
||||
meta_core_get_menu_accelerator (META_MENU_OP_WORKSPACES,
|
||||
j + 1,
|
||||
&key, &mods);
|
||||
|
||||
label = get_workspace_name_with_accel (display, xroot, j);
|
||||
|
||||
moveitem.type = MENU_ITEM_NORMAL;
|
||||
moveitem.op = META_MENU_OP_WORKSPACES;
|
||||
moveitem.label = label;
|
||||
submi = menu_item_new (&moveitem, j + 1);
|
||||
|
||||
g_free (label);
|
||||
|
||||
if ((active_workspace == (unsigned)j) && (ops & META_MENU_OP_UNSTICK))
|
||||
gtk_widget_set_sensitive (submi, FALSE);
|
||||
|
||||
md = g_new (MenuData, 1);
|
||||
|
||||
md->menu = menu;
|
||||
md->op = META_MENU_OP_WORKSPACES;
|
||||
|
||||
g_object_set_data (G_OBJECT (submi),
|
||||
"workspace",
|
||||
GINT_TO_POINTER (j));
|
||||
|
||||
gtk_signal_connect_full (GTK_OBJECT (submi),
|
||||
"activate",
|
||||
GTK_SIGNAL_FUNC (activate_cb),
|
||||
NULL,
|
||||
md,
|
||||
g_free, FALSE, FALSE);
|
||||
|
||||
gtk_menu_shell_append (GTK_MENU_SHELL (submenu), submi);
|
||||
|
||||
gtk_widget_show (submi);
|
||||
}
|
||||
}
|
||||
else
|
||||
meta_verbose ("not creating workspace menu\n");
|
||||
}
|
||||
else if (menuitem.type != MENU_ITEM_SEPARATOR)
|
||||
{
|
||||
meta_core_get_menu_accelerator (menuitems[i].op, -1,
|
||||
&key, &mods);
|
||||
@@ -390,90 +473,15 @@ meta_window_menu_new (MetaFrames *frames,
|
||||
md,
|
||||
g_free, FALSE, FALSE);
|
||||
}
|
||||
|
||||
|
||||
|
||||
gtk_menu_shell_append (GTK_MENU_SHELL (menu->menu), mi);
|
||||
|
||||
gtk_widget_show (mi);
|
||||
}
|
||||
}
|
||||
|
||||
if (ops & META_MENU_OP_WORKSPACES)
|
||||
{
|
||||
Display *display;
|
||||
Window xroot;
|
||||
GdkScreen *screen;
|
||||
GtkWidget *submenu;
|
||||
GtkWidget *submenuitem;
|
||||
|
||||
MenuItem to_another_workspace = {
|
||||
0, MENU_ITEM_NORMAL,
|
||||
NULL, FALSE,
|
||||
N_("Move to Another _Workspace")
|
||||
};
|
||||
|
||||
meta_verbose ("Creating %d-workspace menu current space %lu\n",
|
||||
n_workspaces, active_workspace);
|
||||
|
||||
display = gdk_x11_drawable_get_xdisplay (GTK_WIDGET (frames)->window);
|
||||
|
||||
screen = gdk_drawable_get_screen (GTK_WIDGET (frames)->window);
|
||||
xroot = GDK_DRAWABLE_XID (gdk_screen_get_root_window (screen));
|
||||
|
||||
submenu = gtk_menu_new ();
|
||||
submenuitem = menu_item_new (&to_another_workspace, -1);
|
||||
gtk_menu_item_set_submenu (GTK_MENU_ITEM (submenuitem), submenu);
|
||||
gtk_menu_shell_append (GTK_MENU_SHELL (menu->menu), submenuitem);
|
||||
gtk_widget_show (submenuitem);
|
||||
|
||||
for (i = 0; i < n_workspaces; i++)
|
||||
{
|
||||
char *label;
|
||||
MenuData *md;
|
||||
unsigned int key;
|
||||
MetaVirtualModifier mods;
|
||||
MenuItem moveitem;
|
||||
GtkWidget *mi;
|
||||
|
||||
meta_core_get_menu_accelerator (META_MENU_OP_WORKSPACES,
|
||||
i + 1,
|
||||
&key, &mods);
|
||||
|
||||
label = get_workspace_name_with_accel (display, xroot, i);
|
||||
|
||||
moveitem.type = MENU_ITEM_NORMAL;
|
||||
moveitem.op = META_MENU_OP_WORKSPACES;
|
||||
moveitem.label = label;
|
||||
mi = menu_item_new (&moveitem, i + 1);
|
||||
|
||||
g_free (label);
|
||||
|
||||
if ((active_workspace == (unsigned)i) && (ops & META_MENU_OP_UNSTICK))
|
||||
gtk_widget_set_sensitive (mi, FALSE);
|
||||
|
||||
md = g_new (MenuData, 1);
|
||||
|
||||
md->menu = menu;
|
||||
md->op = META_MENU_OP_WORKSPACES;
|
||||
|
||||
g_object_set_data (G_OBJECT (mi),
|
||||
"workspace",
|
||||
GINT_TO_POINTER (i));
|
||||
|
||||
gtk_signal_connect_full (GTK_OBJECT (mi),
|
||||
"activate",
|
||||
GTK_SIGNAL_FUNC (activate_cb),
|
||||
NULL,
|
||||
md,
|
||||
g_free, FALSE, FALSE);
|
||||
|
||||
gtk_menu_shell_append (GTK_MENU_SHELL (submenu), mi);
|
||||
|
||||
gtk_widget_show (mi);
|
||||
}
|
||||
}
|
||||
else
|
||||
meta_verbose ("not creating workspace menu\n");
|
||||
|
||||
|
||||
g_signal_connect (menu->menu, "selection_done",
|
||||
G_CALLBACK (menu_closed), menu);
|
||||
|
||||
|
||||
@@ -93,14 +93,29 @@
|
||||
<short>Whether raising should be a side-effect of other user
|
||||
interactions</short>
|
||||
<long>
|
||||
Setting this option to false can lead to buggy behavior, so
|
||||
users are strongly discouraged from changing it from the default
|
||||
of true.
|
||||
|
||||
Many actions (e.g. clicking in the client area, moving or
|
||||
resizing the window) normally raise the window as a
|
||||
side-effect. Set this option to false to decouple raising from
|
||||
other user actions. Even when this option is false, windows can
|
||||
still be raised by an alt-left-click anywhere on the window, a
|
||||
normal click on the window decorations, or by special messages,
|
||||
such as activation requests from pagers. This option is
|
||||
currently disabled in click-to-focus mode.
|
||||
normal click on the window decorations, or by special messages
|
||||
from pagers, such as activation requests from tasklist applets.
|
||||
This option is currently disabled in click-to-focus mode.
|
||||
|
||||
Note that the list of ways to raise windows when raise_on_click
|
||||
is false does not include programmatic requests from
|
||||
applications to raise windows; such requests will be ignored
|
||||
regardless of the reason for the request. If you are an
|
||||
application developer and have a user complaining that your
|
||||
application does not work with this setting disabled, tell them
|
||||
it is _their_ fault for breaking their window manager and that
|
||||
they need to change this option back to true or live with the
|
||||
bug they requested. See also
|
||||
http://bugzilla.gnome.org/show_bug.cgi?id=445447#c6.
|
||||
</long>
|
||||
</locale>
|
||||
</schema>
|
||||
|
||||
226
src/place.c
226
src/place.c
@@ -500,8 +500,7 @@ find_first_fit (MetaWindow *window,
|
||||
MetaFrameGeometry *fgeom,
|
||||
/* visible windows on relevant workspaces */
|
||||
GList *windows,
|
||||
int* xineramas_list,
|
||||
int n_xineramas,
|
||||
int xinerama,
|
||||
int x,
|
||||
int y,
|
||||
int *new_x,
|
||||
@@ -520,7 +519,6 @@ find_first_fit (MetaWindow *window,
|
||||
GList *tmp;
|
||||
MetaRectangle rect;
|
||||
MetaRectangle work_area;
|
||||
int i;
|
||||
|
||||
retval = FALSE;
|
||||
|
||||
@@ -543,108 +541,99 @@ find_first_fit (MetaWindow *window,
|
||||
rect.height += fgeom->top_height + fgeom->bottom_height;
|
||||
}
|
||||
|
||||
for (i = 0; i < n_xineramas; i++)
|
||||
{
|
||||
#ifdef WITH_VERBOSE_MODE
|
||||
{
|
||||
char xinerama_location_string[RECT_LENGTH];
|
||||
meta_rectangle_to_string (&window->screen->xinerama_infos[xineramas_list[i]].rect,
|
||||
meta_rectangle_to_string (&window->screen->xinerama_infos[xinerama].rect,
|
||||
xinerama_location_string);
|
||||
meta_topic (META_DEBUG_XINERAMA,
|
||||
"Natural xinerama %d is %s\n",
|
||||
i,
|
||||
"Natural xinerama is %s\n",
|
||||
xinerama_location_string);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
/* try each xinerama in the natural ordering in turn */
|
||||
i = 0;
|
||||
while (i < n_xineramas)
|
||||
{
|
||||
meta_window_get_work_area_for_xinerama (window, xineramas_list[i], &work_area);
|
||||
meta_window_get_work_area_for_xinerama (window, xinerama, &work_area);
|
||||
|
||||
center_tile_rect_in_area (&rect, &work_area);
|
||||
center_tile_rect_in_area (&rect, &work_area);
|
||||
|
||||
if (meta_rectangle_contains_rect (&work_area, &rect) &&
|
||||
!rectangle_overlaps_some_window (&rect, windows))
|
||||
{
|
||||
*new_x = rect.x;
|
||||
*new_y = rect.y;
|
||||
if (fgeom)
|
||||
{
|
||||
*new_x += fgeom->left_width;
|
||||
*new_y += fgeom->top_height;
|
||||
}
|
||||
if (meta_rectangle_contains_rect (&work_area, &rect) &&
|
||||
!rectangle_overlaps_some_window (&rect, windows))
|
||||
{
|
||||
*new_x = rect.x;
|
||||
*new_y = rect.y;
|
||||
if (fgeom)
|
||||
{
|
||||
*new_x += fgeom->left_width;
|
||||
*new_y += fgeom->top_height;
|
||||
}
|
||||
|
||||
retval = TRUE;
|
||||
|
||||
goto out;
|
||||
}
|
||||
|
||||
/* try below each window */
|
||||
tmp = below_sorted;
|
||||
while (tmp != NULL)
|
||||
{
|
||||
MetaWindow *w = tmp->data;
|
||||
MetaRectangle outer_rect;
|
||||
|
||||
meta_window_get_outer_rect (w, &outer_rect);
|
||||
|
||||
retval = TRUE;
|
||||
rect.x = outer_rect.x;
|
||||
rect.y = outer_rect.y + outer_rect.height;
|
||||
|
||||
if (meta_rectangle_contains_rect (&work_area, &rect) &&
|
||||
!rectangle_overlaps_some_window (&rect, below_sorted))
|
||||
{
|
||||
*new_x = rect.x;
|
||||
*new_y = rect.y;
|
||||
if (fgeom)
|
||||
{
|
||||
*new_x += fgeom->left_width;
|
||||
*new_y += fgeom->top_height;
|
||||
}
|
||||
|
||||
goto out;
|
||||
}
|
||||
|
||||
/* try below each window */
|
||||
tmp = below_sorted;
|
||||
while (tmp != NULL)
|
||||
{
|
||||
MetaWindow *w = tmp->data;
|
||||
MetaRectangle outer_rect;
|
||||
|
||||
meta_window_get_outer_rect (w, &outer_rect);
|
||||
|
||||
rect.x = outer_rect.x;
|
||||
rect.y = outer_rect.y + outer_rect.height;
|
||||
|
||||
if (meta_rectangle_contains_rect (&work_area, &rect) &&
|
||||
!rectangle_overlaps_some_window (&rect, below_sorted))
|
||||
{
|
||||
*new_x = rect.x;
|
||||
*new_y = rect.y;
|
||||
if (fgeom)
|
||||
{
|
||||
*new_x += fgeom->left_width;
|
||||
*new_y += fgeom->top_height;
|
||||
}
|
||||
retval = TRUE;
|
||||
|
||||
retval = TRUE;
|
||||
|
||||
goto out;
|
||||
}
|
||||
goto out;
|
||||
}
|
||||
|
||||
tmp = tmp->next;
|
||||
}
|
||||
tmp = tmp->next;
|
||||
}
|
||||
|
||||
/* try to the right of each window */
|
||||
tmp = right_sorted;
|
||||
while (tmp != NULL)
|
||||
{
|
||||
MetaWindow *w = tmp->data;
|
||||
MetaRectangle outer_rect;
|
||||
/* try to the right of each window */
|
||||
tmp = right_sorted;
|
||||
while (tmp != NULL)
|
||||
{
|
||||
MetaWindow *w = tmp->data;
|
||||
MetaRectangle outer_rect;
|
||||
|
||||
meta_window_get_outer_rect (w, &outer_rect);
|
||||
|
||||
meta_window_get_outer_rect (w, &outer_rect);
|
||||
|
||||
rect.x = outer_rect.x + outer_rect.width;
|
||||
rect.y = outer_rect.y;
|
||||
|
||||
if (meta_rectangle_contains_rect (&work_area, &rect) &&
|
||||
!rectangle_overlaps_some_window (&rect, right_sorted))
|
||||
{
|
||||
*new_x = rect.x;
|
||||
*new_y = rect.y;
|
||||
if (fgeom)
|
||||
{
|
||||
*new_x += fgeom->left_width;
|
||||
*new_y += fgeom->top_height;
|
||||
}
|
||||
|
||||
retval = TRUE;
|
||||
|
||||
goto out;
|
||||
}
|
||||
rect.x = outer_rect.x + outer_rect.width;
|
||||
rect.y = outer_rect.y;
|
||||
|
||||
if (meta_rectangle_contains_rect (&work_area, &rect) &&
|
||||
!rectangle_overlaps_some_window (&rect, right_sorted))
|
||||
{
|
||||
*new_x = rect.x;
|
||||
*new_y = rect.y;
|
||||
if (fgeom)
|
||||
{
|
||||
*new_x += fgeom->left_width;
|
||||
*new_y += fgeom->top_height;
|
||||
}
|
||||
|
||||
retval = TRUE;
|
||||
|
||||
goto out;
|
||||
}
|
||||
|
||||
tmp = tmp->next;
|
||||
}
|
||||
tmp = tmp->next;
|
||||
}
|
||||
|
||||
++i;
|
||||
}
|
||||
|
||||
out:
|
||||
|
||||
g_list_free (below_sorted);
|
||||
@@ -662,11 +651,7 @@ meta_window_place (MetaWindow *window,
|
||||
{
|
||||
GList *windows;
|
||||
const MetaXineramaScreenInfo *xi;
|
||||
int* xineramas_list = NULL;
|
||||
int n_xineramas;
|
||||
int i;
|
||||
int placed_on = -1;
|
||||
|
||||
|
||||
/* frame member variables should NEVER be used in here, only
|
||||
* MetaFrameGeometry. But remember fgeom == NULL
|
||||
* for undecorated windows. Also, this function should
|
||||
@@ -793,10 +778,6 @@ meta_window_place (MetaWindow *window,
|
||||
}
|
||||
}
|
||||
|
||||
meta_screen_get_natural_xinerama_list (window->screen,
|
||||
&xineramas_list,
|
||||
&n_xineramas);
|
||||
|
||||
/* FIXME UTILITY with transient set should be stacked up
|
||||
* on the sides of the parent window or something.
|
||||
*/
|
||||
@@ -861,54 +842,10 @@ meta_window_place (MetaWindow *window,
|
||||
y = xi->rect.y;
|
||||
|
||||
if (find_first_fit (window, fgeom, windows,
|
||||
xineramas_list, n_xineramas,
|
||||
xi->number,
|
||||
x, y, &x, &y))
|
||||
goto done_check_denied_focus;
|
||||
|
||||
/* This is a special-case origin-cascade so that windows that are
|
||||
* too large to fit onto a workspace (and which will be
|
||||
* automaximized later) will go onto an empty xinerama if one is
|
||||
* available.
|
||||
*/
|
||||
if (window->has_maximize_func && window->decorated &&
|
||||
!window->fullscreen)
|
||||
{
|
||||
if (window->frame)
|
||||
{
|
||||
x = fgeom->left_width;
|
||||
y = fgeom->top_height;
|
||||
}
|
||||
else
|
||||
{
|
||||
x = 0;
|
||||
y = 0;
|
||||
}
|
||||
|
||||
for (i = 0; i < n_xineramas; i++)
|
||||
{
|
||||
MetaRectangle work_area;
|
||||
|
||||
meta_window_get_work_area_for_xinerama (window, xineramas_list[i], &work_area);
|
||||
|
||||
if (!rectangle_overlaps_some_window (&work_area, windows))
|
||||
{
|
||||
x += work_area.x;
|
||||
y += work_area.y;
|
||||
placed_on = i;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* if the window wasn't placed at the origin of an empty xinerama,
|
||||
* cascade it onto the current xinerama
|
||||
*/
|
||||
if (placed_on == -1)
|
||||
{
|
||||
find_next_cascade (window, fgeom, windows, x, y, &x, &y);
|
||||
placed_on = window->screen->last_xinerama_index;
|
||||
}
|
||||
|
||||
/* Maximize windows if they are too big for their work area (bit of
|
||||
* a hack here). Assume undecorated windows probably don't intend to
|
||||
* be maximized.
|
||||
@@ -920,7 +857,7 @@ meta_window_place (MetaWindow *window,
|
||||
MetaRectangle outer;
|
||||
|
||||
meta_window_get_work_area_for_xinerama (window,
|
||||
xineramas_list[placed_on],
|
||||
xi->number,
|
||||
&workarea);
|
||||
meta_window_get_outer_rect (window, &outer);
|
||||
|
||||
@@ -967,7 +904,7 @@ meta_window_place (MetaWindow *window,
|
||||
y = xi->rect.y;
|
||||
|
||||
found_fit = find_first_fit (window, fgeom, focus_window_list,
|
||||
xineramas_list, n_xineramas,
|
||||
xi->number,
|
||||
x, y, &x, &y);
|
||||
g_list_free (focus_window_list);
|
||||
}
|
||||
@@ -980,7 +917,6 @@ meta_window_place (MetaWindow *window,
|
||||
}
|
||||
|
||||
done:
|
||||
g_free (xineramas_list);
|
||||
g_list_free (windows);
|
||||
|
||||
done_no_constraints:
|
||||
|
||||
105
src/prefs.c
105
src/prefs.c
@@ -109,20 +109,7 @@ static int cursor_size = 24;
|
||||
static gboolean compositing_manager = FALSE;
|
||||
|
||||
static MetaVisualBellType visual_bell_type = META_VISUAL_BELL_FULLSCREEN_FLASH;
|
||||
static MetaButtonLayout button_layout = {
|
||||
{
|
||||
META_BUTTON_FUNCTION_MENU,
|
||||
META_BUTTON_FUNCTION_LAST,
|
||||
META_BUTTON_FUNCTION_LAST,
|
||||
META_BUTTON_FUNCTION_LAST
|
||||
},
|
||||
{
|
||||
META_BUTTON_FUNCTION_MINIMIZE,
|
||||
META_BUTTON_FUNCTION_MAXIMIZE,
|
||||
META_BUTTON_FUNCTION_CLOSE,
|
||||
META_BUTTON_FUNCTION_LAST
|
||||
}
|
||||
};
|
||||
static MetaButtonLayout button_layout;
|
||||
|
||||
/* The screenshot commands are at the end */
|
||||
static char *commands[MAX_COMMANDS] = { NULL, };
|
||||
@@ -195,6 +182,7 @@ static gboolean update_list_binding (MetaKeyPref *binding,
|
||||
static void init_bindings (void);
|
||||
static void init_commands (void);
|
||||
static void init_workspace_names (void);
|
||||
static void init_button_layout (void);
|
||||
|
||||
|
||||
typedef struct
|
||||
@@ -376,6 +364,7 @@ meta_prefs_init (void)
|
||||
GError *err = NULL;
|
||||
char *str_val;
|
||||
int int_val;
|
||||
GConfValue *gconf_val;
|
||||
gboolean bool_val, bool_val_2;
|
||||
gboolean update_visual;
|
||||
gboolean update_audible;
|
||||
@@ -434,16 +423,18 @@ meta_prefs_init (void)
|
||||
if (get_bool (KEY_AUTO_RAISE, &bool_val))
|
||||
update_auto_raise (bool_val);
|
||||
|
||||
/* FIXME: Since auto_raise_delay of 0 is valid and gconf_client_get_int
|
||||
* silently returns that value when KEY_AUTO_RAISE_DELAY doesn't exist,
|
||||
* we should be using gconf_client_get() instead if we cared about
|
||||
* careful error checking of the key-doesn't-exist case. Since this
|
||||
* setting is crap, though, I'm adding a FIXME instead of fixing it. ;-)
|
||||
*/
|
||||
int_val = gconf_client_get_int (default_client, KEY_AUTO_RAISE_DELAY,
|
||||
gconf_val = gconf_client_get (default_client, KEY_AUTO_RAISE_DELAY,
|
||||
&err);
|
||||
cleanup_error (&err);
|
||||
update_auto_raise_delay (int_val);
|
||||
if (gconf_val)
|
||||
{
|
||||
if (gconf_val->type == GCONF_VALUE_INT)
|
||||
update_auto_raise_delay (gconf_value_get_int (gconf_val));
|
||||
else
|
||||
meta_warning(_("Type of %s was not integer"), KEY_AUTO_RAISE_DELAY);
|
||||
|
||||
gconf_value_free (gconf_val);
|
||||
}
|
||||
|
||||
|
||||
str_val = gconf_client_get_string (default_client, KEY_THEME,
|
||||
@@ -530,6 +521,8 @@ meta_prefs_init (void)
|
||||
*/
|
||||
titlebar_font = pango_font_description_from_string ("Sans Bold 10");
|
||||
current_theme = g_strdup ("Atlanta");
|
||||
|
||||
init_button_layout();
|
||||
#endif /* HAVE_GCONF */
|
||||
|
||||
/* Load keybindings prefs */
|
||||
@@ -1461,14 +1454,6 @@ update_button_layout (const char *value)
|
||||
if (value == NULL)
|
||||
return FALSE;
|
||||
|
||||
i = 0;
|
||||
while (i < MAX_BUTTONS_PER_CORNER)
|
||||
{
|
||||
new_layout.left_buttons[i] = META_BUTTON_FUNCTION_LAST;
|
||||
new_layout.right_buttons[i] = META_BUTTON_FUNCTION_LAST;
|
||||
++i;
|
||||
}
|
||||
|
||||
/* We need to ignore unknown button functions, for
|
||||
* compat with future versions
|
||||
*/
|
||||
@@ -1515,6 +1500,8 @@ update_button_layout (const char *value)
|
||||
++b;
|
||||
}
|
||||
|
||||
new_layout.left_buttons[i] = META_BUTTON_FUNCTION_LAST;
|
||||
|
||||
g_strfreev (buttons);
|
||||
}
|
||||
|
||||
@@ -1558,11 +1545,32 @@ update_button_layout (const char *value)
|
||||
++b;
|
||||
}
|
||||
|
||||
new_layout.right_buttons[i] = META_BUTTON_FUNCTION_LAST;
|
||||
|
||||
g_strfreev (buttons);
|
||||
}
|
||||
|
||||
g_strfreev (sides);
|
||||
|
||||
/* Invert the button layout for RTL languages */
|
||||
if (meta_ui_get_direction() == META_UI_DIRECTION_RTL)
|
||||
{
|
||||
MetaButtonLayout rtl_layout;
|
||||
int j;
|
||||
|
||||
for (i = 0; new_layout.left_buttons[i] != META_BUTTON_FUNCTION_LAST; i++);
|
||||
for (j = 0; j < i; j++)
|
||||
rtl_layout.right_buttons[j] = new_layout.left_buttons[i - j - 1];
|
||||
rtl_layout.right_buttons[j] = META_BUTTON_FUNCTION_LAST;
|
||||
|
||||
for (i = 0; new_layout.right_buttons[i] != META_BUTTON_FUNCTION_LAST; i++);
|
||||
for (j = 0; j < i; j++)
|
||||
rtl_layout.left_buttons[j] = new_layout.right_buttons[i - j - 1];
|
||||
rtl_layout.left_buttons[j] = META_BUTTON_FUNCTION_LAST;
|
||||
|
||||
new_layout = rtl_layout;
|
||||
}
|
||||
|
||||
changed = !button_layout_equal (&button_layout, &new_layout);
|
||||
|
||||
button_layout = new_layout;
|
||||
@@ -2544,7 +2552,6 @@ find_and_update_list_binding (MetaKeyPref *bindings,
|
||||
|
||||
name_without_suffix[strlen(name_without_suffix) - strlen(KEY_LIST_BINDINGS_SUFFIX)] = 0;
|
||||
|
||||
/* FIXME factor out dupld code */
|
||||
if (*name_without_suffix == '/')
|
||||
key = relative_key (name_without_suffix);
|
||||
else
|
||||
@@ -3036,3 +3043,39 @@ meta_prefs_get_compositing_manager (void)
|
||||
{
|
||||
return compositing_manager;
|
||||
}
|
||||
|
||||
static void
|
||||
init_button_layout(void)
|
||||
{
|
||||
MetaButtonLayout button_layout_ltr = {
|
||||
{
|
||||
/* buttons in the group on the left side */
|
||||
META_BUTTON_FUNCTION_MENU,
|
||||
META_BUTTON_FUNCTION_LAST
|
||||
},
|
||||
{
|
||||
/* buttons in the group on the right side */
|
||||
META_BUTTON_FUNCTION_MINIMIZE,
|
||||
META_BUTTON_FUNCTION_MAXIMIZE,
|
||||
META_BUTTON_FUNCTION_CLOSE,
|
||||
META_BUTTON_FUNCTION_LAST
|
||||
}
|
||||
};
|
||||
MetaButtonLayout button_layout_rtl = {
|
||||
{
|
||||
/* buttons in the group on the left side */
|
||||
META_BUTTON_FUNCTION_CLOSE,
|
||||
META_BUTTON_FUNCTION_MAXIMIZE,
|
||||
META_BUTTON_FUNCTION_MINIMIZE,
|
||||
META_BUTTON_FUNCTION_LAST
|
||||
},
|
||||
{
|
||||
/* buttons in the group on the right side */
|
||||
META_BUTTON_FUNCTION_MENU,
|
||||
META_BUTTON_FUNCTION_LAST
|
||||
}
|
||||
};
|
||||
|
||||
button_layout = meta_ui_get_direction() == META_UI_DIRECTION_LTR ?
|
||||
button_layout_ltr : button_layout_rtl;
|
||||
};
|
||||
|
||||
41
src/screen.c
41
src/screen.c
@@ -990,7 +990,7 @@ meta_screen_queue_frame_redraws (MetaScreen *screen)
|
||||
static void
|
||||
queue_resize (MetaScreen *screen, MetaWindow *window, gpointer data)
|
||||
{
|
||||
meta_window_queue_move_resize (window);
|
||||
meta_window_queue (window, META_QUEUE_MOVE_RESIZE);
|
||||
}
|
||||
|
||||
void
|
||||
@@ -2219,7 +2219,7 @@ meta_screen_resize_func (MetaScreen *screen,
|
||||
{
|
||||
meta_window_update_struts (window);
|
||||
}
|
||||
meta_window_queue_move_resize (window);
|
||||
meta_window_queue (window, META_QUEUE_MOVE_RESIZE);
|
||||
|
||||
meta_window_recalc_features (window);
|
||||
}
|
||||
@@ -2272,7 +2272,7 @@ queue_windows_showing (MetaScreen *screen)
|
||||
MetaWindow *w = tmp->data;
|
||||
|
||||
if (w->screen == screen)
|
||||
meta_window_queue_calc_showing (w);
|
||||
meta_window_queue (w, META_QUEUE_CALC_SHOWING);
|
||||
|
||||
tmp = tmp->next;
|
||||
}
|
||||
@@ -2546,7 +2546,15 @@ meta_screen_sn_event (SnMonitorEvent *event,
|
||||
}
|
||||
#endif
|
||||
|
||||
void
|
||||
/* Sets the initial_timestamp and initial_workspace properties
|
||||
* of a window according to information given us by the
|
||||
* startup-notification library.
|
||||
*
|
||||
* Returns TRUE if startup properties have been applied, and
|
||||
* FALSE if they have not (for example, if they had already
|
||||
* been applied.)
|
||||
*/
|
||||
gboolean
|
||||
meta_screen_apply_startup_properties (MetaScreen *screen,
|
||||
MetaWindow *window)
|
||||
{
|
||||
@@ -2555,6 +2563,7 @@ meta_screen_apply_startup_properties (MetaScreen *screen,
|
||||
GSList *tmp;
|
||||
SnStartupSequence *sequence;
|
||||
|
||||
/* Does the window have a startup ID stored? */
|
||||
startup_id = meta_window_get_startup_id (window);
|
||||
|
||||
meta_topic (META_DEBUG_STARTUP,
|
||||
@@ -2565,6 +2574,10 @@ meta_screen_apply_startup_properties (MetaScreen *screen,
|
||||
sequence = NULL;
|
||||
if (startup_id == NULL)
|
||||
{
|
||||
/* No startup ID stored for the window. Let's ask the
|
||||
* startup-notification library whether there's anything
|
||||
* stored for the resource name or resource class hints.
|
||||
*/
|
||||
tmp = screen->startup_sequences;
|
||||
while (tmp != NULL)
|
||||
{
|
||||
@@ -2597,9 +2610,14 @@ meta_screen_apply_startup_properties (MetaScreen *screen,
|
||||
}
|
||||
}
|
||||
|
||||
/* Still no startup ID? Bail. */
|
||||
if (startup_id == NULL)
|
||||
return;
|
||||
return FALSE;
|
||||
|
||||
/* We might get this far and not know the sequence ID (if the window
|
||||
* already had a startup ID stored), so let's look for one if we don't
|
||||
* already know it.
|
||||
*/
|
||||
if (sequence == NULL)
|
||||
{
|
||||
tmp = screen->startup_sequences;
|
||||
@@ -2621,8 +2639,7 @@ meta_screen_apply_startup_properties (MetaScreen *screen,
|
||||
|
||||
if (sequence != NULL)
|
||||
{
|
||||
int space;
|
||||
guint32 timestamp;
|
||||
gboolean changed_something = FALSE;
|
||||
|
||||
meta_topic (META_DEBUG_STARTUP,
|
||||
"Found startup sequence for window %s ID \"%s\"\n",
|
||||
@@ -2630,7 +2647,7 @@ meta_screen_apply_startup_properties (MetaScreen *screen,
|
||||
|
||||
if (!window->initial_workspace_set)
|
||||
{
|
||||
space = sn_startup_sequence_get_workspace (sequence);
|
||||
int space = sn_startup_sequence_get_workspace (sequence);
|
||||
if (space >= 0)
|
||||
{
|
||||
meta_topic (META_DEBUG_STARTUP,
|
||||
@@ -2639,21 +2656,23 @@ meta_screen_apply_startup_properties (MetaScreen *screen,
|
||||
|
||||
window->initial_workspace_set = TRUE;
|
||||
window->initial_workspace = space;
|
||||
changed_something = TRUE;
|
||||
}
|
||||
}
|
||||
|
||||
if (!window->initial_timestamp_set)
|
||||
{
|
||||
timestamp = sn_startup_sequence_get_timestamp (sequence);
|
||||
guint32 timestamp = sn_startup_sequence_get_timestamp (sequence);
|
||||
meta_topic (META_DEBUG_STARTUP,
|
||||
"Setting initial window timestamp to %u based on startup info\n",
|
||||
timestamp);
|
||||
|
||||
window->initial_timestamp_set = TRUE;
|
||||
window->initial_timestamp = timestamp;
|
||||
changed_something = TRUE;
|
||||
}
|
||||
|
||||
return;
|
||||
return changed_something;
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -2663,5 +2682,7 @@ meta_screen_apply_startup_properties (MetaScreen *screen,
|
||||
}
|
||||
|
||||
#endif /* HAVE_STARTUP_NOTIFICATION */
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
|
||||
@@ -207,7 +207,7 @@ void meta_screen_unshow_desktop (MetaScreen *screen);
|
||||
/* Update whether the destkop is being shown for the current active_workspace */
|
||||
void meta_screen_update_showing_desktop_hint (MetaScreen *screen);
|
||||
|
||||
void meta_screen_apply_startup_properties (MetaScreen *screen,
|
||||
gboolean meta_screen_apply_startup_properties (MetaScreen *screen,
|
||||
MetaWindow *window);
|
||||
void meta_screen_composite_all_windows (MetaScreen *screen);
|
||||
|
||||
|
||||
@@ -1804,9 +1804,6 @@ warn_about_lame_clients_and_finish_interact (gboolean shutdown)
|
||||
|
||||
display_iter = display_iter->next;
|
||||
}
|
||||
/* don't need to free displays */
|
||||
displays = NULL;
|
||||
|
||||
if (lame == NULL)
|
||||
{
|
||||
/* No lame apps. */
|
||||
@@ -1819,6 +1816,9 @@ warn_about_lame_clients_and_finish_interact (gboolean shutdown)
|
||||
timestamp = meta_display_get_current_time_roundtrip (displays->data);
|
||||
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 */
|
||||
|
||||
11
src/theme.c
11
src/theme.c
@@ -596,14 +596,11 @@ meta_frame_layout_calc_geometry (const MetaFrameLayout *layout,
|
||||
|
||||
n_left = 0;
|
||||
n_right = 0;
|
||||
for (i = 0; i < MAX_BUTTONS_PER_CORNER; i++)
|
||||
{
|
||||
/* NULL all unused */
|
||||
left_func_rects[i] = NULL;
|
||||
right_func_rects[i] = NULL;
|
||||
|
||||
if (!layout->hide_buttons)
|
||||
{
|
||||
/* Try to fill in rects */
|
||||
if (button_layout->left_buttons[i] != META_BUTTON_FUNCTION_LAST && !layout->hide_buttons)
|
||||
for (i = 0; i < MAX_BUTTONS_PER_CORNER && button_layout->left_buttons[i] != META_BUTTON_FUNCTION_LAST; i++)
|
||||
{
|
||||
left_func_rects[n_left] = rect_for_function (fgeom, flags,
|
||||
button_layout->left_buttons[i],
|
||||
@@ -612,7 +609,7 @@ meta_frame_layout_calc_geometry (const MetaFrameLayout *layout,
|
||||
++n_left;
|
||||
}
|
||||
|
||||
if (button_layout->right_buttons[i] != META_BUTTON_FUNCTION_LAST && !layout->hide_buttons)
|
||||
for (i = 0; i < MAX_BUTTONS_PER_CORNER && button_layout->right_buttons[i] != META_BUTTON_FUNCTION_LAST; i++)
|
||||
{
|
||||
right_func_rects[n_right] = rect_for_function (fgeom, flags,
|
||||
button_layout->right_buttons[i],
|
||||
|
||||
@@ -702,9 +702,10 @@ reload_mwm_hints (MetaWindow *window,
|
||||
else
|
||||
meta_window_destroy_frame (window);
|
||||
|
||||
meta_window_queue_move_resize (window);
|
||||
/* because ensure/destroy frame may unmap */
|
||||
meta_window_queue_calc_showing (window);
|
||||
meta_window_queue (window,
|
||||
META_QUEUE_MOVE_RESIZE |
|
||||
/* because ensure/destroy frame may unmap: */
|
||||
META_QUEUE_CALC_SHOWING);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -796,14 +797,16 @@ reload_net_startup_id (MetaWindow *window,
|
||||
window->initial_timestamp_set = 0;
|
||||
window->initial_workspace_set = 0;
|
||||
|
||||
meta_screen_apply_startup_properties (window->screen, window);
|
||||
if (meta_screen_apply_startup_properties (window->screen, window))
|
||||
{
|
||||
|
||||
if (window->initial_timestamp_set)
|
||||
timestamp = window->initial_timestamp;
|
||||
if (window->initial_workspace_set)
|
||||
workspace = meta_screen_get_workspace_by_index (window->screen, window->initial_workspace);
|
||||
if (window->initial_timestamp_set)
|
||||
timestamp = window->initial_timestamp;
|
||||
if (window->initial_workspace_set)
|
||||
workspace = meta_screen_get_workspace_by_index (window->screen, window->initial_workspace);
|
||||
|
||||
meta_window_activate_with_workspace (window, timestamp, workspace);
|
||||
meta_window_activate_with_workspace (window, timestamp, workspace);
|
||||
}
|
||||
}
|
||||
|
||||
meta_verbose ("New _NET_STARTUP_ID \"%s\" for %s\n",
|
||||
@@ -1374,9 +1377,7 @@ reload_wm_hints (MetaWindow *window,
|
||||
window->display,
|
||||
XA_WM_HINTS);
|
||||
|
||||
meta_window_queue_update_icon (window);
|
||||
|
||||
meta_window_queue_move_resize (window);
|
||||
meta_window_queue (window, META_QUEUE_UPDATE_ICON | META_QUEUE_MOVE_RESIZE);
|
||||
}
|
||||
|
||||
static void
|
||||
@@ -1433,7 +1434,7 @@ reload_transient_for (MetaWindow *window,
|
||||
meta_window_group_leader_changed (window);
|
||||
|
||||
if (!window->constructing)
|
||||
meta_window_queue_move_resize (window);
|
||||
meta_window_queue (window, META_QUEUE_MOVE_RESIZE);
|
||||
}
|
||||
|
||||
#define N_HOOKS 26
|
||||
|
||||
355
src/window.c
355
src/window.c
@@ -90,6 +90,8 @@ static void ensure_mru_position_after (MetaWindow *window,
|
||||
|
||||
static void meta_window_move_resize_now (MetaWindow *window);
|
||||
|
||||
static void meta_window_unqueue (MetaWindow *window, guint queuebits);
|
||||
|
||||
static void update_move (MetaWindow *window,
|
||||
gboolean snap,
|
||||
int x,
|
||||
@@ -103,15 +105,8 @@ static void update_resize (MetaWindow *window,
|
||||
static gboolean update_resize_timeout (gpointer data);
|
||||
|
||||
|
||||
/* FIXME we need an abstraction that covers all these queues. */
|
||||
|
||||
static void meta_window_unqueue_calc_showing (MetaWindow *window);
|
||||
static void meta_window_flush_calc_showing (MetaWindow *window);
|
||||
|
||||
static void meta_window_unqueue_move_resize (MetaWindow *window);
|
||||
|
||||
static void meta_window_unqueue_update_icon (MetaWindow *window);
|
||||
|
||||
static gboolean queue_calc_showing_func (MetaWindow *window,
|
||||
void *data);
|
||||
|
||||
@@ -121,6 +116,15 @@ static void meta_window_apply_session_info (MetaWindow *window,
|
||||
static void unmaximize_window_before_freeing (MetaWindow *window);
|
||||
static void unminimize_window_and_all_transient_parents (MetaWindow *window);
|
||||
|
||||
/* Idle handlers for the three queues. The "data" parameter in each case
|
||||
* will be a GINT_TO_POINTER of the index into the queue arrays to use.
|
||||
*
|
||||
* TODO: Possibly there is still some code duplication among these, which we
|
||||
* need to sort out at some point.
|
||||
*/
|
||||
static gboolean idle_calc_showing (gpointer data);
|
||||
static gboolean idle_move_resize (gpointer data);
|
||||
static gboolean idle_update_icon (gpointer data);
|
||||
|
||||
#ifdef WITH_VERBOSE_MODE
|
||||
static const char*
|
||||
@@ -467,8 +471,7 @@ meta_window_new_with_attrs (MetaDisplay *display,
|
||||
xwindow);
|
||||
window->denied_focus_and_not_transient = FALSE;
|
||||
window->unmanaging = FALSE;
|
||||
window->calc_showing_queued = FALSE;
|
||||
window->move_resize_queued = FALSE;
|
||||
window->is_in_queues = 0;
|
||||
window->keys_grabbed = FALSE;
|
||||
window->grab_on_frame = FALSE;
|
||||
window->all_keys_grabbed = FALSE;
|
||||
@@ -538,7 +541,6 @@ meta_window_new_with_attrs (MetaDisplay *display,
|
||||
window->using_net_wm_visible_icon_name = FALSE;
|
||||
|
||||
window->need_reread_icon = TRUE;
|
||||
window->update_icon_queued = FALSE;
|
||||
|
||||
window->layer = META_LAYER_LAST; /* invalid value */
|
||||
window->stack_position = -1;
|
||||
@@ -753,7 +755,7 @@ meta_window_new_with_attrs (MetaDisplay *display,
|
||||
/* disable show desktop mode unless we're a desktop component */
|
||||
maybe_leave_show_desktop_mode (window);
|
||||
|
||||
meta_window_queue_calc_showing (window);
|
||||
meta_window_queue (window, META_QUEUE_CALC_SHOWING);
|
||||
/* See bug 303284; a transient of the given window can already exist, in which
|
||||
* case we think it should probably be shown.
|
||||
*/
|
||||
@@ -1021,9 +1023,9 @@ meta_window_free (MetaWindow *window,
|
||||
*/
|
||||
send_configure_notify (window);
|
||||
|
||||
meta_window_unqueue_calc_showing (window);
|
||||
meta_window_unqueue_move_resize (window);
|
||||
meta_window_unqueue_update_icon (window);
|
||||
meta_window_unqueue (window, META_QUEUE_CALC_SHOWING |
|
||||
META_QUEUE_MOVE_RESIZE |
|
||||
META_QUEUE_UPDATE_ICON);
|
||||
meta_window_free_delete_dialog (window);
|
||||
|
||||
if (window->workspace)
|
||||
@@ -1450,8 +1452,8 @@ meta_window_calc_showing (MetaWindow *window)
|
||||
implement_showing (window, meta_window_should_be_showing (window));
|
||||
}
|
||||
|
||||
static guint calc_showing_idle = 0;
|
||||
static GSList *calc_showing_pending = NULL;
|
||||
static guint queue_idle[NUMBER_OF_QUEUES] = {0, 0, 0};
|
||||
static GSList *queue_pending[NUMBER_OF_QUEUES] = {NULL, NULL, NULL};
|
||||
|
||||
static int
|
||||
stackcmp (gconstpointer a, gconstpointer b)
|
||||
@@ -1476,6 +1478,7 @@ idle_calc_showing (gpointer data)
|
||||
GSList *unplaced;
|
||||
GSList *displays;
|
||||
MetaWindow *first_window;
|
||||
guint queue_index = GPOINTER_TO_INT (data);
|
||||
|
||||
meta_topic (META_DEBUG_WINDOW_STATE,
|
||||
"Clearing the calc_showing queue\n");
|
||||
@@ -1484,10 +1487,10 @@ idle_calc_showing (gpointer data)
|
||||
* complete; destroying a window while we're in here would result in
|
||||
* badness. But it's OK to queue/unqueue calc_showings.
|
||||
*/
|
||||
copy = g_slist_copy (calc_showing_pending);
|
||||
g_slist_free (calc_showing_pending);
|
||||
calc_showing_pending = NULL;
|
||||
calc_showing_idle = 0;
|
||||
copy = g_slist_copy (queue_pending[queue_index]);
|
||||
g_slist_free (queue_pending[queue_index]);
|
||||
queue_pending[queue_index] = NULL;
|
||||
queue_idle[queue_index] = 0;
|
||||
|
||||
destroying_windows_disallowed += 1;
|
||||
|
||||
@@ -1575,9 +1578,9 @@ idle_calc_showing (gpointer data)
|
||||
/* important to set this here for reentrancy -
|
||||
* if we queue a window again while it's in "copy",
|
||||
* then queue_calc_showing will just return since
|
||||
* calc_showing_queued = TRUE still
|
||||
* we are still in the calc_showing queue
|
||||
*/
|
||||
window->calc_showing_queued = FALSE;
|
||||
window->is_in_queues &= ~META_QUEUE_CALC_SHOWING;
|
||||
|
||||
tmp = tmp->next;
|
||||
}
|
||||
@@ -1615,62 +1618,123 @@ idle_calc_showing (gpointer data)
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static const gchar* meta_window_queue_names[NUMBER_OF_QUEUES] =
|
||||
{"calc_showing", "move_resize", "update_icon"};
|
||||
|
||||
static void
|
||||
meta_window_unqueue_calc_showing (MetaWindow *window)
|
||||
meta_window_unqueue (MetaWindow *window, guint queuebits)
|
||||
{
|
||||
if (!window->calc_showing_queued)
|
||||
return;
|
||||
gint queuenum;
|
||||
|
||||
meta_topic (META_DEBUG_WINDOW_STATE,
|
||||
"Removing %s from the calc_showing queue\n",
|
||||
window->desc);
|
||||
|
||||
/* Note that window may not actually be in move_resize_pending
|
||||
* because it may have been in "copy" inside the idle handler
|
||||
*/
|
||||
calc_showing_pending = g_slist_remove (calc_showing_pending, window);
|
||||
window->calc_showing_queued = FALSE;
|
||||
|
||||
if (calc_showing_pending == NULL &&
|
||||
calc_showing_idle != 0)
|
||||
for (queuenum=0; queuenum<NUMBER_OF_QUEUES; queuenum++)
|
||||
{
|
||||
g_source_remove (calc_showing_idle);
|
||||
calc_showing_idle = 0;
|
||||
if ((queuebits & 1<<queuenum) /* they have asked to unqueue */
|
||||
&&
|
||||
(window->is_in_queues & 1<<queuenum)) /* it's in the queue */
|
||||
{
|
||||
|
||||
meta_topic (META_DEBUG_WINDOW_STATE,
|
||||
"Removing %s from the %s queue\n",
|
||||
window->desc,
|
||||
meta_window_queue_names[queuenum]);
|
||||
|
||||
/* Note that window may not actually be in the queue
|
||||
* because it may have been in "copy" inside the idle handler
|
||||
*/
|
||||
queue_pending[queuenum] = g_slist_remove (queue_pending[queuenum], window);
|
||||
window->is_in_queues &= ~(1<<queuenum);
|
||||
|
||||
/* Okay, so maybe we've used up all the entries in the queue.
|
||||
* In that case, we should kill the function that deals with
|
||||
* the queue, because there's nothing left for it to do.
|
||||
*/
|
||||
if (queue_pending[queuenum] == NULL && queue_idle[queuenum] != 0)
|
||||
{
|
||||
g_source_remove (queue_idle[queuenum]);
|
||||
queue_idle[queuenum] = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
meta_window_flush_calc_showing (MetaWindow *window)
|
||||
{
|
||||
if (window->calc_showing_queued)
|
||||
if (window->is_in_queues & META_QUEUE_CALC_SHOWING)
|
||||
{
|
||||
meta_window_unqueue_calc_showing (window);
|
||||
meta_window_unqueue (window, META_QUEUE_CALC_SHOWING);
|
||||
meta_window_calc_showing (window);
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
meta_window_queue_calc_showing (MetaWindow *window)
|
||||
meta_window_queue (MetaWindow *window, guint queuebits)
|
||||
{
|
||||
/* if withdrawn = TRUE then unmanaging should also be TRUE,
|
||||
* really.
|
||||
*/
|
||||
if (window->unmanaging || window->withdrawn)
|
||||
return;
|
||||
guint queuenum;
|
||||
|
||||
if (window->calc_showing_queued)
|
||||
return;
|
||||
for (queuenum=0; queuenum<NUMBER_OF_QUEUES; queuenum++)
|
||||
{
|
||||
if (queuebits & 1<<queuenum)
|
||||
{
|
||||
/* Data which varies between queues.
|
||||
* Yes, these do look a lot like associative arrays:
|
||||
* I seem to be turning into a Perl programmer.
|
||||
*/
|
||||
|
||||
meta_topic (META_DEBUG_WINDOW_STATE,
|
||||
"Putting %s in the calc_showing queue\n",
|
||||
window->desc);
|
||||
|
||||
window->calc_showing_queued = TRUE;
|
||||
|
||||
if (calc_showing_idle == 0)
|
||||
calc_showing_idle = g_idle_add (idle_calc_showing, NULL);
|
||||
const gint window_queue_idle_priority[NUMBER_OF_QUEUES] =
|
||||
{
|
||||
G_PRIORITY_DEFAULT_IDLE, /* CALC_SHOWING */
|
||||
META_PRIORITY_RESIZE, /* MOVE_RESIZE */
|
||||
G_PRIORITY_DEFAULT_IDLE /* UPDATE_ICON */
|
||||
};
|
||||
|
||||
calc_showing_pending = g_slist_prepend (calc_showing_pending, window);
|
||||
const GSourceFunc window_queue_idle_handler[NUMBER_OF_QUEUES] =
|
||||
{
|
||||
idle_calc_showing,
|
||||
idle_move_resize,
|
||||
idle_update_icon,
|
||||
};
|
||||
|
||||
/* If we're about to drop the window, there's no point in putting
|
||||
* it on a queue.
|
||||
*/
|
||||
if (window->unmanaging)
|
||||
break;
|
||||
|
||||
/* If the window already claims to be in that queue, there's no
|
||||
* point putting it in the queue.
|
||||
*/
|
||||
if (window->is_in_queues & 1<<queuenum)
|
||||
break;
|
||||
|
||||
meta_topic (META_DEBUG_WINDOW_STATE,
|
||||
"Putting %s in the %s queue\n",
|
||||
window->desc,
|
||||
meta_window_queue_names[queuenum]);
|
||||
|
||||
/* So, mark it as being in this queue. */
|
||||
window->is_in_queues |= 1<<queuenum;
|
||||
|
||||
/* There's not a lot of point putting things into a queue if
|
||||
* nobody's on the other end pulling them out. Therefore,
|
||||
* let's check to see whether an idle handler exists to do
|
||||
* that. If not, we'll create one.
|
||||
*/
|
||||
|
||||
if (queue_idle[queuenum] == 0)
|
||||
queue_idle[queuenum] = g_idle_add_full
|
||||
(
|
||||
window_queue_idle_priority[queuenum],
|
||||
window_queue_idle_handler[queuenum],
|
||||
GUINT_TO_POINTER(queuenum),
|
||||
NULL
|
||||
);
|
||||
|
||||
/* And now we actually put it on the queue. */
|
||||
queue_pending[queuenum] = g_slist_prepend (queue_pending[queuenum],
|
||||
window);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static gboolean
|
||||
@@ -2191,7 +2255,7 @@ static gboolean
|
||||
queue_calc_showing_func (MetaWindow *window,
|
||||
void *data)
|
||||
{
|
||||
meta_window_queue_calc_showing (window);
|
||||
meta_window_queue(window, META_QUEUE_CALC_SHOWING);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
@@ -2201,7 +2265,7 @@ meta_window_minimize (MetaWindow *window)
|
||||
if (!window->minimized)
|
||||
{
|
||||
window->minimized = TRUE;
|
||||
meta_window_queue_calc_showing (window);
|
||||
meta_window_queue(window, META_QUEUE_CALC_SHOWING);
|
||||
|
||||
meta_window_foreach_transient (window,
|
||||
queue_calc_showing_func,
|
||||
@@ -2229,7 +2293,7 @@ meta_window_unminimize (MetaWindow *window)
|
||||
{
|
||||
window->minimized = FALSE;
|
||||
window->was_minimized = TRUE;
|
||||
meta_window_queue_calc_showing (window);
|
||||
meta_window_queue(window, META_QUEUE_CALC_SHOWING);
|
||||
|
||||
meta_window_foreach_transient (window,
|
||||
queue_calc_showing_func,
|
||||
@@ -2378,7 +2442,7 @@ meta_window_maximize (MetaWindow *window,
|
||||
|
||||
/* move_resize with new maximization constraints
|
||||
*/
|
||||
meta_window_queue_move_resize (window);
|
||||
meta_window_queue(window, META_QUEUE_MOVE_RESIZE);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2551,7 +2615,7 @@ meta_window_make_fullscreen (MetaWindow *window)
|
||||
meta_window_make_fullscreen_internal (window);
|
||||
/* move_resize with new constraints
|
||||
*/
|
||||
meta_window_queue_move_resize (window);
|
||||
meta_window_queue(window, META_QUEUE_MOVE_RESIZE);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2621,8 +2685,7 @@ meta_window_shade (MetaWindow *window,
|
||||
|
||||
window->shaded = TRUE;
|
||||
|
||||
meta_window_queue_move_resize (window);
|
||||
meta_window_queue_calc_showing (window);
|
||||
meta_window_queue(window, META_QUEUE_MOVE_RESIZE | META_QUEUE_CALC_SHOWING);
|
||||
|
||||
/* After queuing the calc showing, since _focus flushes it,
|
||||
* and we need to focus the frame
|
||||
@@ -2645,8 +2708,7 @@ meta_window_unshade (MetaWindow *window,
|
||||
if (window->shaded)
|
||||
{
|
||||
window->shaded = FALSE;
|
||||
meta_window_queue_move_resize (window);
|
||||
meta_window_queue_calc_showing (window);
|
||||
meta_window_queue(window, META_QUEUE_MOVE_RESIZE | META_QUEUE_CALC_SHOWING);
|
||||
|
||||
/* focus the window */
|
||||
meta_topic (META_DEBUG_FOCUS,
|
||||
@@ -3017,7 +3079,7 @@ meta_window_move_resize_internal (MetaWindow *window,
|
||||
g_assert (flags & (META_IS_MOVE_ACTION | META_IS_RESIZE_ACTION));
|
||||
|
||||
/* We don't need it in the idle queue anymore. */
|
||||
meta_window_unqueue_move_resize (window);
|
||||
meta_window_unqueue (window, META_QUEUE_MOVE_RESIZE);
|
||||
|
||||
meta_window_get_client_root_coords (window, &old_rect);
|
||||
|
||||
@@ -3485,14 +3547,12 @@ meta_window_move_resize_now (MetaWindow *window)
|
||||
window->user_rect.height);
|
||||
}
|
||||
|
||||
static guint move_resize_idle = 0;
|
||||
static GSList *move_resize_pending = NULL;
|
||||
|
||||
static gboolean
|
||||
idle_move_resize (gpointer data)
|
||||
{
|
||||
GSList *tmp;
|
||||
GSList *copy;
|
||||
guint queue_index = GPOINTER_TO_INT (data);
|
||||
|
||||
meta_topic (META_DEBUG_GEOMETRY, "Clearing the move_resize queue\n");
|
||||
|
||||
@@ -3500,10 +3560,10 @@ idle_move_resize (gpointer data)
|
||||
* complete; destroying a window while we're in here would result in
|
||||
* badness. But it's OK to queue/unqueue move_resizes.
|
||||
*/
|
||||
copy = g_slist_copy (move_resize_pending);
|
||||
g_slist_free (move_resize_pending);
|
||||
move_resize_pending = NULL;
|
||||
move_resize_idle = 0;
|
||||
copy = g_slist_copy (queue_pending[queue_index]);
|
||||
g_slist_free (queue_pending[queue_index]);
|
||||
queue_pending[queue_index] = NULL;
|
||||
queue_idle[queue_index] = 0;
|
||||
|
||||
destroying_windows_disallowed += 1;
|
||||
|
||||
@@ -3527,58 +3587,6 @@ idle_move_resize (gpointer data)
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static void
|
||||
meta_window_unqueue_move_resize (MetaWindow *window)
|
||||
{
|
||||
if (!window->move_resize_queued)
|
||||
return;
|
||||
|
||||
meta_topic (META_DEBUG_GEOMETRY,
|
||||
"Removing %s from the move_resize queue\n",
|
||||
window->desc);
|
||||
|
||||
/* Note that window may not actually be in move_resize_pending
|
||||
* because it may have been in "copy" inside the idle handler
|
||||
*/
|
||||
move_resize_pending = g_slist_remove (move_resize_pending, window);
|
||||
window->move_resize_queued = FALSE;
|
||||
|
||||
if (move_resize_pending == NULL &&
|
||||
move_resize_idle != 0)
|
||||
{
|
||||
g_source_remove (move_resize_idle);
|
||||
move_resize_idle = 0;
|
||||
}
|
||||
}
|
||||
|
||||
/* The move/resize queue is only used when we need to
|
||||
* recheck the constraints on the window, e.g. when
|
||||
* maximizing or when changing struts. Configure requests
|
||||
* and such always have to be handled synchronously,
|
||||
* they can't be done via a queue.
|
||||
*/
|
||||
void
|
||||
meta_window_queue_move_resize (MetaWindow *window)
|
||||
{
|
||||
if (window->unmanaging)
|
||||
return;
|
||||
|
||||
if (window->move_resize_queued)
|
||||
return;
|
||||
|
||||
meta_topic (META_DEBUG_GEOMETRY,
|
||||
"Putting %s in the move_resize queue\n",
|
||||
window->desc);
|
||||
|
||||
window->move_resize_queued = TRUE;
|
||||
|
||||
if (move_resize_idle == 0)
|
||||
move_resize_idle = g_idle_add_full (META_PRIORITY_RESIZE,
|
||||
idle_move_resize, NULL, NULL);
|
||||
|
||||
move_resize_pending = g_slist_prepend (move_resize_pending, window);
|
||||
}
|
||||
|
||||
void
|
||||
meta_window_get_position (MetaWindow *window,
|
||||
int *x,
|
||||
@@ -4058,7 +4066,7 @@ window_stick_impl (MetaWindow *window)
|
||||
|
||||
meta_window_set_current_workspace_hint (window);
|
||||
|
||||
meta_window_queue_calc_showing (window);
|
||||
meta_window_queue(window, META_QUEUE_CALC_SHOWING);
|
||||
}
|
||||
|
||||
static void
|
||||
@@ -4094,7 +4102,7 @@ window_unstick_impl (MetaWindow *window)
|
||||
|
||||
meta_window_set_current_workspace_hint (window);
|
||||
|
||||
meta_window_queue_calc_showing (window);
|
||||
meta_window_queue(window, META_QUEUE_CALC_SHOWING);
|
||||
}
|
||||
|
||||
static gboolean
|
||||
@@ -4757,7 +4765,7 @@ meta_window_client_message (MetaWindow *window,
|
||||
(action == _NET_WM_STATE_TOGGLE && !window->wm_state_modal);
|
||||
|
||||
recalc_window_type (window);
|
||||
meta_window_queue_move_resize (window);
|
||||
meta_window_queue(window, META_QUEUE_MOVE_RESIZE);
|
||||
}
|
||||
|
||||
if (first == display->atom_net_wm_state_skip_pager ||
|
||||
@@ -5135,8 +5143,18 @@ meta_window_notify_focus (MetaWindow *window,
|
||||
/* Ungrab click to focus button since the sync grab can interfere
|
||||
* with some things you might do inside the focused window, by
|
||||
* causing the client to get funky enter/leave events.
|
||||
*
|
||||
* The reason we usually have a passive grab on the window is
|
||||
* so that we can intercept clicks and raise the window in
|
||||
* response. For click-to-focus we don't need that since the
|
||||
* focused window is already raised. When raise_on_click is
|
||||
* FALSE we also don't need that since we don't do anything
|
||||
* when the window is clicked.
|
||||
*
|
||||
* There is dicussion in bugs 102209, 115072, and 461577
|
||||
*/
|
||||
if (meta_prefs_get_focus_mode () == META_FOCUS_MODE_CLICK)
|
||||
if (meta_prefs_get_focus_mode () == META_FOCUS_MODE_CLICK ||
|
||||
!meta_prefs_get_raise_on_click())
|
||||
meta_display_ungrab_focus_window_button (window->display, window);
|
||||
}
|
||||
}
|
||||
@@ -5175,8 +5193,9 @@ meta_window_notify_focus (MetaWindow *window,
|
||||
/* move out of FOCUSED_WINDOW layer */
|
||||
meta_window_update_layer (window);
|
||||
|
||||
/* Re-grab for click to focus, if necessary */
|
||||
if (meta_prefs_get_focus_mode () == META_FOCUS_MODE_CLICK)
|
||||
/* Re-grab for click to focus and raise-on-click, if necessary */
|
||||
if (meta_prefs_get_focus_mode () == META_FOCUS_MODE_CLICK ||
|
||||
!meta_prefs_get_raise_on_click ())
|
||||
meta_display_grab_focus_window_button (window->display, window);
|
||||
}
|
||||
}
|
||||
@@ -5248,7 +5267,7 @@ process_property_notify (MetaWindow *window,
|
||||
meta_window_reload_property (window, XA_WM_NORMAL_HINTS);
|
||||
|
||||
/* See if we need to constrain current size */
|
||||
meta_window_queue_move_resize (window);
|
||||
meta_window_queue(window, META_QUEUE_MOVE_RESIZE);
|
||||
}
|
||||
else if (event->atom == window->display->atom_wm_protocols)
|
||||
{
|
||||
@@ -5307,7 +5326,7 @@ process_property_notify (MetaWindow *window,
|
||||
meta_icon_cache_property_changed (&window->icon_cache,
|
||||
window->display,
|
||||
event->atom);
|
||||
meta_window_queue_update_icon (window);
|
||||
meta_window_queue(window, META_QUEUE_UPDATE_ICON);
|
||||
}
|
||||
else if (event->atom == window->display->atom_kwm_win_icon)
|
||||
{
|
||||
@@ -5316,7 +5335,7 @@ process_property_notify (MetaWindow *window,
|
||||
meta_icon_cache_property_changed (&window->icon_cache,
|
||||
window->display,
|
||||
event->atom);
|
||||
meta_window_queue_update_icon (window);
|
||||
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))
|
||||
@@ -5671,14 +5690,12 @@ meta_window_update_icon_now (MetaWindow *window)
|
||||
g_assert (window->mini_icon);
|
||||
}
|
||||
|
||||
static guint update_icon_idle = 0;
|
||||
static GSList *update_icon_pending = NULL;
|
||||
|
||||
static gboolean
|
||||
idle_update_icon (gpointer data)
|
||||
{
|
||||
GSList *tmp;
|
||||
GSList *copy;
|
||||
guint queue_index = GPOINTER_TO_INT (data);
|
||||
|
||||
meta_topic (META_DEBUG_GEOMETRY, "Clearing the update_icon queue\n");
|
||||
|
||||
@@ -5686,10 +5703,10 @@ idle_update_icon (gpointer data)
|
||||
* complete; destroying a window while we're in here would result in
|
||||
* badness. But it's OK to queue/unqueue update_icons.
|
||||
*/
|
||||
copy = g_slist_copy (update_icon_pending);
|
||||
g_slist_free (update_icon_pending);
|
||||
update_icon_pending = NULL;
|
||||
update_icon_idle = 0;
|
||||
copy = g_slist_copy (queue_pending[queue_index]);
|
||||
g_slist_free (queue_pending[queue_index]);
|
||||
queue_pending[queue_index] = NULL;
|
||||
queue_idle[queue_index] = 0;
|
||||
|
||||
destroying_windows_disallowed += 1;
|
||||
|
||||
@@ -5701,7 +5718,7 @@ idle_update_icon (gpointer data)
|
||||
window = tmp->data;
|
||||
|
||||
meta_window_update_icon_now (window);
|
||||
window->update_icon_queued = FALSE;
|
||||
window->is_in_queues &= ~META_QUEUE_UPDATE_ICON;
|
||||
|
||||
tmp = tmp->next;
|
||||
}
|
||||
@@ -5713,51 +5730,6 @@ idle_update_icon (gpointer data)
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static void
|
||||
meta_window_unqueue_update_icon (MetaWindow *window)
|
||||
{
|
||||
if (!window->update_icon_queued)
|
||||
return;
|
||||
|
||||
meta_topic (META_DEBUG_GEOMETRY,
|
||||
"Removing %s from the update_icon queue\n",
|
||||
window->desc);
|
||||
|
||||
/* Note that window may not actually be in update_icon_pending
|
||||
* because it may have been in "copy" inside the idle handler
|
||||
*/
|
||||
update_icon_pending = g_slist_remove (update_icon_pending, window);
|
||||
window->update_icon_queued = FALSE;
|
||||
|
||||
if (update_icon_pending == NULL &&
|
||||
update_icon_idle != 0)
|
||||
{
|
||||
g_source_remove (update_icon_idle);
|
||||
update_icon_idle = 0;
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
meta_window_queue_update_icon (MetaWindow *window)
|
||||
{
|
||||
if (window->unmanaging)
|
||||
return;
|
||||
|
||||
if (window->update_icon_queued)
|
||||
return;
|
||||
|
||||
meta_topic (META_DEBUG_GEOMETRY,
|
||||
"Putting %s in the update_icon queue\n",
|
||||
window->desc);
|
||||
|
||||
window->update_icon_queued = TRUE;
|
||||
|
||||
if (update_icon_idle == 0)
|
||||
update_icon_idle = g_idle_add (idle_update_icon, NULL);
|
||||
|
||||
update_icon_pending = g_slist_prepend (update_icon_pending, window);
|
||||
}
|
||||
|
||||
GList*
|
||||
meta_window_get_workspaces (MetaWindow *window)
|
||||
{
|
||||
@@ -6040,6 +6012,9 @@ set_allowed_actions_hint (MetaWindow *window)
|
||||
{
|
||||
data[i] = window->display->atom_net_wm_action_resize;
|
||||
++i;
|
||||
}
|
||||
if (window->has_fullscreen_func)
|
||||
{
|
||||
data[i] = window->display->atom_net_wm_action_fullscreen;
|
||||
++i;
|
||||
}
|
||||
@@ -6540,7 +6515,7 @@ meta_window_show_menu (MetaWindow *window,
|
||||
insensitive |= META_MENU_OP_RESIZE;
|
||||
|
||||
if (window->always_sticky)
|
||||
insensitive |= META_MENU_OP_UNSTICK | META_MENU_OP_WORKSPACES;
|
||||
insensitive |= META_MENU_OP_STICK | META_MENU_OP_UNSTICK | META_MENU_OP_WORKSPACES;
|
||||
|
||||
if ((window->type == META_WINDOW_DESKTOP) ||
|
||||
(window->type == META_WINDOW_DOCK) ||
|
||||
|
||||
37
src/window.h
37
src/window.h
@@ -36,6 +36,7 @@
|
||||
#include <gdk-pixbuf/gdk-pixbuf.h>
|
||||
|
||||
typedef struct _MetaGroup MetaGroup;
|
||||
typedef struct _MetaWindowQueue MetaWindowQueue;
|
||||
|
||||
typedef gboolean (*MetaWindowForeachFunc) (MetaWindow *window,
|
||||
void *data);
|
||||
@@ -66,6 +67,14 @@ typedef enum {
|
||||
META_CLIENT_TYPE_MAX_RECOGNIZED = 2
|
||||
} MetaClientType;
|
||||
|
||||
typedef enum {
|
||||
META_QUEUE_CALC_SHOWING = 1 << 0,
|
||||
META_QUEUE_MOVE_RESIZE = 1 << 1,
|
||||
META_QUEUE_UPDATE_ICON = 1 << 2,
|
||||
} MetaQueueType;
|
||||
|
||||
#define NUMBER_OF_QUEUES 3
|
||||
|
||||
struct _MetaWindow
|
||||
{
|
||||
MetaDisplay *display;
|
||||
@@ -236,15 +245,9 @@ struct _MetaWindow
|
||||
/* Are we in meta_window_new()? */
|
||||
guint constructing : 1;
|
||||
|
||||
/* Are we in the calc_showing queue? */
|
||||
guint calc_showing_queued : 1;
|
||||
|
||||
/* Are we in the move_resize queue? */
|
||||
guint move_resize_queued : 1;
|
||||
|
||||
/* Are we in the update_icon queue? */
|
||||
guint update_icon_queued : 1;
|
||||
|
||||
/* Are we in the various queues? (Bitfield: see META_WINDOW_IS_IN_QUEUE) */
|
||||
guint is_in_queues : NUMBER_OF_QUEUES;
|
||||
|
||||
/* Used by keybindings.c */
|
||||
guint keys_grabbed : 1; /* normal keybindings grabbed */
|
||||
guint grab_on_frame : 1; /* grabs are on the frame */
|
||||
@@ -260,9 +263,6 @@ struct _MetaWindow
|
||||
*/
|
||||
guint calc_placement : 1;
|
||||
|
||||
/* Note: can be NULL */
|
||||
GSList *struts;
|
||||
|
||||
/* Transient parent is a root window */
|
||||
guint transient_parent_is_root_window : 1;
|
||||
|
||||
@@ -287,6 +287,9 @@ struct _MetaWindow
|
||||
/* if TRUE, application is buggy and SYNC resizing is turned off */
|
||||
guint disable_sync : 1;
|
||||
|
||||
/* Note: can be NULL */
|
||||
GSList *struts;
|
||||
|
||||
#ifdef HAVE_XSYNC
|
||||
/* XSync update counter */
|
||||
XSyncCounter sync_request_counter;
|
||||
@@ -377,7 +380,8 @@ MetaWindow* meta_window_new_with_attrs (MetaDisplay *display,
|
||||
void meta_window_free (MetaWindow *window,
|
||||
guint32 timestamp);
|
||||
void meta_window_calc_showing (MetaWindow *window);
|
||||
void meta_window_queue_calc_showing (MetaWindow *window);
|
||||
void meta_window_queue (MetaWindow *window,
|
||||
guint queuebits);
|
||||
void meta_window_minimize (MetaWindow *window);
|
||||
void meta_window_unminimize (MetaWindow *window);
|
||||
void meta_window_maximize (MetaWindow *window,
|
||||
@@ -438,11 +442,6 @@ gboolean meta_window_should_be_showing (MetaWindow *window);
|
||||
/* See warning in window.c about this function */
|
||||
gboolean __window_is_terminal (MetaWindow *window);
|
||||
|
||||
/* This recalcs the window/frame size, and recalcs the frame
|
||||
* size/contents as well.
|
||||
*/
|
||||
void meta_window_queue_move_resize (MetaWindow *window);
|
||||
|
||||
void meta_window_update_struts (MetaWindow *window);
|
||||
|
||||
/* this gets root coords */
|
||||
@@ -597,8 +596,6 @@ const char* meta_window_get_startup_id (MetaWindow *window);
|
||||
void meta_window_recalc_features (MetaWindow *window);
|
||||
void meta_window_recalc_window_type (MetaWindow *window);
|
||||
|
||||
void meta_window_queue_update_icon (MetaWindow *window);
|
||||
|
||||
void meta_window_stack_just_below (MetaWindow *window,
|
||||
MetaWindow *below_this_one);
|
||||
|
||||
|
||||
@@ -168,7 +168,6 @@ meta_workspace_add_window (MetaWorkspace *workspace,
|
||||
|
||||
meta_window_set_current_workspace_hint (window);
|
||||
|
||||
meta_window_queue_calc_showing (window);
|
||||
if (window->struts)
|
||||
{
|
||||
meta_topic (META_DEBUG_WORKAREA,
|
||||
@@ -180,7 +179,7 @@ meta_workspace_add_window (MetaWorkspace *workspace,
|
||||
/* queue a move_resize since changing workspaces may change
|
||||
* the relevant struts
|
||||
*/
|
||||
meta_window_queue_move_resize (window);
|
||||
meta_window_queue (window, META_QUEUE_CALC_SHOWING|META_QUEUE_MOVE_RESIZE);
|
||||
}
|
||||
|
||||
void
|
||||
@@ -215,8 +214,6 @@ meta_workspace_remove_window (MetaWorkspace *workspace,
|
||||
|
||||
meta_window_set_current_workspace_hint (window);
|
||||
|
||||
meta_window_queue_calc_showing (window);
|
||||
|
||||
if (window->struts)
|
||||
{
|
||||
meta_topic (META_DEBUG_WORKAREA,
|
||||
@@ -228,7 +225,7 @@ meta_workspace_remove_window (MetaWorkspace *workspace,
|
||||
/* queue a move_resize since changing workspaces may change
|
||||
* the relevant struts
|
||||
*/
|
||||
meta_window_queue_move_resize (window);
|
||||
meta_window_queue (window, META_QUEUE_CALC_SHOWING|META_QUEUE_MOVE_RESIZE);
|
||||
}
|
||||
|
||||
void
|
||||
@@ -267,7 +264,7 @@ meta_workspace_queue_calc_showing (MetaWorkspace *workspace)
|
||||
tmp = workspace->windows;
|
||||
while (tmp != NULL)
|
||||
{
|
||||
meta_window_queue_calc_showing (tmp->data);
|
||||
meta_window_queue (tmp->data, META_QUEUE_CALC_SHOWING);
|
||||
|
||||
tmp = tmp->next;
|
||||
}
|
||||
@@ -480,7 +477,7 @@ meta_workspace_invalidate_work_area (MetaWorkspace *workspace)
|
||||
{
|
||||
MetaWindow *w = tmp->data;
|
||||
|
||||
meta_window_queue_move_resize (w);
|
||||
meta_window_queue (w, META_QUEUE_MOVE_RESIZE);
|
||||
|
||||
tmp = tmp->next;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user