Compare commits

...

343 Commits

Author SHA1 Message Date
Thomas James Alexander Thurman
1dc74bbc8c 2.19.34 =======
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)


svn path=/trunk/; revision=3274
2007-07-24 00:59:54 +00:00
Rob Bradford
618a6b38c3 Fix a bug where the window can be focused without being raised if the
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.       



svn path=/trunk/; revision=3273
2007-07-23 01:48:17 +00:00
Cosimo Cecchi
e8b016984b Unset fullscreen is an allowed action where relevant. Fixes #449427.
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.
                                                                                      

svn path=/trunk/; revision=3272
2007-07-23 00:46:03 +00:00
Yair Hershkovitz
8bbccb91f7 Reverse window buttons and align them to the left for RTL locales. (#92212)
svn path=/trunk/; revision=3271
2007-07-22 06:39:29 +00:00
Gabor Kelemen
9c2e546f53 Translation updated.
2007-07-21 Gabor Kelemen  <kelemeng@gnome.hu>

	* hu.po: Translation updated.


svn path=/trunk/; revision=3270
2007-07-21 11:05:06 +00:00
Vincent van Adrighem
12ac1d6a4b Translation updated.
2007-07-18  Vincent van Adrighem  <adrighem@gnome.org>

	* nl.po: Translation updated.

svn path=/trunk/; revision=3269
2007-07-18 13:45:57 +00:00
Daniel Nylander
2ccb7f7bfa sv.po: Updated Swedish translation
svn path=/trunk/; revision=3268
2007-07-17 12:02:36 +00:00
Ilkka Tuohela
389eb410c7 Updated Finnish translation
svn path=/trunk/; revision=3267
2007-07-16 16:10:22 +00:00
Theppitak Karoonboonyanan
f0c4d2c57b Updated Thai translation.
* th.po: Updated Thai translation.


svn path=/trunk/; revision=3266
2007-07-10 16:15:44 +00:00
Takeshi AIHANA
4c4943312a Updated Japanese translation.
2007-07-08  Takeshi AIHANA <takeshi.aihana@gmail.com>

        * ja.po: Updated Japanese translation.

svn path=/trunk/; revision=3264
2007-07-08 02:07:09 +00:00
Nguyen Thai Ngoc Duy
d616aeb828 updated vi.po
svn path=/trunk/; revision=3262
2007-07-03 00:18:03 +00:00
Clytie Siddall
92c63dfdc5 Updated Vietnamese translation.
svn path=/trunk/; revision=3260
2007-06-27 12:41:20 +00:00
Jorge Gonzalez Gonzalez
f9678266c7 Updated Spanish translation
svn path=/trunk/; revision=3259
2007-06-25 06:43:32 +00:00
Kjartan Maraas
e3db5a0be6 Add src/core.c Updated Norwegian bokmål translation.
2007-06-24  Kjartan Maraas  <kmaraas@gnome.org>

	* POTFILES.in: Add src/core.c
	* nb.po: Updated Norwegian bokmål translation.

svn path=/trunk/; revision=3258
2007-06-24 12:51:07 +00:00
Thomas Thurman
49e1802c7a Put all bitfields together to help with optimisation. Closes #450271.
2007-06-23  Thomas Thurman  <thomas@thurman.org.uk>

        * src/window.c (MetaWindow): Put all bitfields together to
        help with optimisation. Closes #450271.


svn path=/trunk/; revision=3257
2007-06-23 04:30:49 +00:00
Jorge Gonzalez Gonzalez
eb4941d005 Updated Spanish translation
svn path=/trunk/; revision=3256
2007-06-19 09:28:37 +00:00
Thomas James Alexander Thurman
371f0b732f I don't actually know what year it is most days
svn path=/trunk/; revision=3255
2007-06-18 17:32:09 +00:00
Thomas Thurman
bdd9e28878 Update copyright year because it was five years out of date.
2007-06-18  Thomas Thurman  <thomas@thurman.org.uk>

        * src/main.c (version): Update copyright year because it was
        five years out of date.


svn path=/trunk/; revision=3254
2007-06-18 17:30:28 +00:00
Thomas Thurman
1f05ddcd0e post-release bump to 2.19.34.
2007-06-18  Thomas Thurman  <thomas@thurman.org.uk>

        * configure.in: post-release bump to 2.19.34.


svn path=/trunk/; revision=3250
2007-06-18 12:10:48 +00:00
Thomas Thurman
78604b64bc 2.19.21 release.
2007-06-18  Thomas Thurman  <thomas@thurman.org.uk>

        * NEWS: 2.19.21 release.


svn path=/trunk/; revision=3248
2007-06-18 12:08:43 +00:00
Thomas Thurman
7c4af65ec1 Only open new windows on the current xinerama. Closes #145503, for now.
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.


svn path=/trunk/; revision=3247
2007-06-18 11:46:44 +00:00
Thomas Thurman
e6083f64fb return a boolean instead a void, to show whether startup properties were
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.


svn path=/trunk/; revision=3245
2007-06-18 02:37:14 +00:00
Damien Carbery
b996cd03be MetaCloseEffect and MetaFocusEffect, which were empty structs, #ifdeffed
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.



svn path=/trunk/; revision=3244
2007-06-17 02:55:07 +00:00
Damien Carbery
36287b9417 make prototype of meta_window_unqueue match implementation. Closes
2007-06-16  Damien Carbery  <damien.carbery@sun.com>

        * window.h: make prototype of meta_window_unqueue match
        implementation. Closes #446535.



svn path=/trunk/; revision=3243
2007-06-17 02:15:07 +00:00
Funda Wang
6d8efc90e0 Updated metacity zh_CN translation
svn path=/trunk/; revision=3242
2007-06-16 09:40:15 +00:00
Jorge Gonzalez Gonzalez
d53af7196c Updated Spanish translation
svn path=/trunk/; revision=3241
2007-06-15 10:13:49 +00:00
Pema Geyleg
667c74bc4d updated dzongkha translation
svn path=/trunk/; revision=3240
2007-06-13 09:11:51 +00:00
Thomas Thurman
c5c59b1761 post-release bump to 2.19.21.
2007-06-10  Thomas Thurman  <thomas@thurman.org.uk>

        * configure.in: post-release bump to 2.19.21.


svn path=/trunk/; revision=3239
2007-06-11 03:39:20 +00:00
Thomas James Alexander Thurman
5fb20624c4 2.19.13 release
svn path=/trunk/; revision=3237
2007-06-11 03:22:40 +00:00
Thomas Thurman
8f2b9cb4a9 Refactor thrice-duplicated queue code in window.c. Closes #376760.
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 functions.
        * 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.


svn path=/trunk/; revision=3236
2007-06-11 01:15:33 +00:00
Thomas Thuramn
0418146249 added switch_group; closes #444879.
2007-06-09  Thomas Thuramn  <thomas@thurman.org.uk>

        * src/50-metacity-key.xml.in: added switch_group; closes #444879.


svn path=/trunk/; revision=3235
2007-06-09 21:11:57 +00:00
Elijah Newren
6e70013412 Update the raise_on_click description to try to prevent misuses, to
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

svn path=/trunk/; revision=3234
2007-06-08 15:28:48 +00:00
Thomas Thurman
ff33209e1f changed all tabs to spaces. Removed and replaced with meta_core_get(). New
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.


svn path=/trunk/; revision=3233
2007-06-07 03:31:17 +00:00
Thomas Thurman
98791271e1 Added translators' names from 2.19.8 (sorry, folks: I forgot to save NEWS
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.)  


svn path=/trunk/; revision=3232
2007-06-04 19:34:01 +00:00
Thomas James Alexander Thurman
8eac4fa3ce post-release bump to .13
svn path=/trunk/; revision=3231
2007-06-04 19:05:26 +00:00
Thomas James Alexander Thurman
0666e2c038 =================================================
metacity-2.19.8 archives ready for distribution: 
metacity-2.19.8.tar.gz
=================================================


svn path=/trunk/; revision=3229
2007-06-04 19:03:10 +00:00
Thomas Thurman
1004bd8b60 fix label layout for RTL languages. Closes #433400.
2007-06-04  Thomas Thurman  <thomas@thurman.org.uk>

        * src/metaaccellabel.c (meta_accel_label_expose_event): fix
        label layout for RTL languages. Closes #433400.


svn path=/trunk/; revision=3228
2007-06-04 12:50:50 +00:00
Thomas Thurman
45966f581b Pango layout for titlebars should take LTR/RTL-ness from the underlying
2007-06-03  Thomas Thurman  <thomas@thurman.org.uk>

        * src/frames.c (meta_frames_ensure_layout): Pango layout for
        titlebars should take LTR/RTL-ness from the underlying widget
        and not from sniffing the content. Closes #438944.



svn path=/trunk/; revision=3227
2007-06-03 06:26:29 +00:00
Yair Hershkovitz
5194df842c Add support for RTL languages so that alt-tab, etc., go the other way. In
2007-05-25  Yair Hershkovitz  <yairhr@yahoo.com>

        * src/workspace.c (meta_workspace_get_neighbor): Add support
        for RTL languages so that alt-tab, etc., go the other way.
        * src/keybindings.c (handle_activate_menu): In RTL locales,
        pop up the menu on the right-hand side when the menu keystroke
        is pressed.
        * src/fixedtip.c (meta_fixed_tip_show): right-justify tooltips
        in RTL locales.
        * src/menu.c (popup_position_func): popup menus in RTL locales
        are flush with the right-hand side of the window where possible.
        * src/frames.c (show_tip_now, meta_frames_button_press_event):
        tooltips are aligned with the right-hand side of buttons in
        RTL locales.
        * src/ui.[ch] (meta_ui_get_direction, enum MetaUIDirection):
        New content.
        * src/window.c (meta_window_show_menu): "move left" appears above
        "move right" in the window menu for LTR locales, and vice versa
        for RTL locales.

        This is all to close bug #387893.


svn path=/trunk/; revision=3222
2007-05-25 14:36:12 +00:00
Kenneth Nielsen
a7053d3d47 Updated Danish translation
svn path=/trunk/; revision=3221
2007-05-24 22:42:59 +00:00
Yannig MARCHEGAY
8ead622f8f Occitan translation update
svn path=/trunk/; revision=3220
2007-05-23 15:23:18 +00:00
Theppitak Karoonboonyanan
7759644304 Updated Thai translation.
* th.po: Updated Thai translation.


svn path=/trunk/; revision=3219
2007-05-18 10:45:19 +00:00
Yannig MARCHEGAY
526dd959ed + Occitan
svn path=/trunk/; revision=3218
2007-05-16 17:05:26 +00:00
Yannig MARCHEGAY
cb5c112166 svn path=/trunk/; revision=3217
svn path=/trunk/; revision=3217
2007-05-16 17:05:06 +00:00
Jovan Naumovski
fb3b32a2bd 2007-05-09 Jovan Naumovski <jovanna@svn.gnome.org> *mk.po: Updated Macedonian translation.
svn path=/trunk/; revision=3216
2007-05-09 15:17:18 +00:00
Djihed Afifi
0e25c6eff6 Updated Arabic Translation by Khaled Hosny.
svn path=/trunk/; revision=3215
2007-05-02 15:41:33 +00:00
Linus Torvalds
1724fa36f1 Add code to configure what happens when the titlebar is right or middle
2007-04-24  Linus Torvalds  <torvalds@woody.linux-foundation.org>

        * src/prefs.[ch] (init_action_meta_prefs, meta_prefs_init,
        action_change_titlebar, change_notify, update_action_titlebar,
        meta_preference_to_string): Add code to configure what happens
        when the titlebar is right or middle clicked as well as
        double clicked.

                                                                                                                                             

svn path=/trunk/; revision=3214
2007-04-25 03:30:17 +00:00
Ihar Hrachyshka
a50b3c7a2b Updated Belarusian Latin translation.
svn path=/trunk/; revision=3212
2007-04-23 23:52:08 +00:00
Elijah Newren
c8d33dc86b post-release bump to 2.19.8.
2007-04-23  Elijah Newren  <newren gmail com>

        * configure.in: post-release bump to 2.19.8.

svn path=/trunk/; revision=3211
2007-04-23 23:10:34 +00:00
Elijah Newren
aae4472a63 2.19.5 release.
2007-04-23  Elijah Newren  <newren gmail com>

        * NEWS: 2.19.5 release.

svn path=/trunk/; revision=3209
2007-04-23 23:06:30 +00:00
Elijah Newren
18c9101a4f Fix some uninitialized memory usage errors. #427385
2007-04-23  Elijah Newren  <newren gmail com>

        Fix some uninitialized memory usage errors.  #427385

        * src/frame.c (meta_window_ensure_frame):
        * src/frames.c (meta_frames_manage_window):
        Do not try to set the window background in
        meta_frames_manage_window() since the frame window is not yet
        created and not yet registered with the corresponding MetaWindow.
        Do it inside meta_window_ensure_frame() instead.

svn path=/trunk/; revision=3208
2007-04-23 22:44:01 +00:00
David Lodge
b10626c5d8 Updated British English translation
svn path=/trunk/; revision=3207
2007-04-23 06:07:42 +00:00
Ignacio Casal Quinteiro
50310c5870 Updated Galician Translation
svn path=/trunk/; revision=3206
2007-04-22 18:56:44 +00:00
Jorge Gonzalez Gonzalez
e03de727db Updated Spanish translation.
svn path=/trunk/; revision=3205
2007-04-22 10:30:56 +00:00
Daniel Nylander
7f6b23a90d sv.po: Updated Swedish translation
svn path=/trunk/; revision=3204
2007-04-21 11:40:17 +00:00
Elijah Newren
e66919510f Fix some fallout from #426519; update user_rect for all position changes
2007-04-17  Elijah Newren  <newren gmail com>

	Fix some fallout from #426519; update user_rect for all position
	changes prior to the window being marked as placed.  Prevents
	emacs in particular from flickering on start and always being
	shoved to the upper-left corner.

	* src/window.c (meta_window_move_resize_internal):
	Record position in user_rect if the window is not yet marked as
	placed too

	* src/window.c (struct MetaWindow, meta_window_new_with_attrs,
	  meta_window_move_resize_internal):
	Remove window->user_has_move_resized; it's not needed or used
	anymore.

	* src/window.[ch] (meta_window_get_user_position):
	Remove this function as it is no longer needed or used.

svn path=/trunk/; revision=3203
2007-04-18 05:43:42 +00:00
Elijah Newren
966e36b9f6 Prevent metacity from "forgetting" which machine a window is on. #418552
2007-04-16  Elijah Newren  <newren gmail com>

	Prevent metacity from "forgetting" which machine a window is on.
	#418552

	* src/window.c (meta_window_new_with_attrs): reorder the property
	loading so that we know the wm_client_machine when we load the
	name of the window and can modify the window name accordingly.

svn path=/trunk/; revision=3201
2007-04-16 16:23:12 +00:00
Elijah Newren
ee3ae1584f post-release bump to 2.19.5.
2007-04-16  Elijah Newren  <newren gmail com>

        * configure.in: post-release bump to 2.19.5.

svn path=/trunk/; revision=3200
2007-04-16 16:20:12 +00:00
Elijah Newren
128cda50bf 2.19.3 release.
2007-04-16  Elijah Newren  <newren gmail com>

        * NEWS: 2.19.3 release.

svn path=/trunk/; revision=3198
2007-04-16 16:17:47 +00:00
Elijah Newren
3f7d729978 Preserve stacking order across restarts.
2007-04-15  Elijah Newren  <newren gmail com>

	Preserve stacking order across restarts.

	* src/display.c (meta_display_unmanage_windows_for_screen):
	unmap windows in stacking order so that stacking is preserved upon
	shutdown

	* src/display.[ch] (meta_display_stack_cmp):
	* src/session.c (stack_cmp, save_state):
	rename stack_cmp() -> meta_display_stack_cmp() and move it to a
	different function so that it can be used in both
	session.c:save_state() and
	meta_display_unmanage_windows_for_screen()

svn path=/trunk/; revision=3197
2007-04-16 04:57:32 +00:00
Elijah Newren
6de7271ab6 Remove incorrect usage of window.h from menu.c. See #426791 & #382962.
2007-04-15  Elijah Newren  <newren gmail com>

	Remove incorrect usage of window.h from menu.c.  See #426791 &
	#382962.

	* src/menu.c (enum MetaMenuItemType, variable menuitems,
	  meta_menu_item_new):
	cleanup: add a MENU_ITEM_RADIOBUTTON for the sticky stuff

	* src/menu.c (variable menuitems):
	* src/core.c (meta_core_get_menu_accelerator):
	* src/window.c (menu_callback, meta_window_show_menu):
	* src/common.h (enum MetaMenuOp):
	reinstate META_MENU_OP_UNABOVE

	* src/menu.c (meta_window_menu_new):
	remove hacks (using inappropriate data) for STICK/UNSTICK/ABOVE
	and clean it up while just setting STICK/UNSTICK activeness as
	necessary

	* src/menu.[ch] (meta_window_menu_new):
	* src/ui.[ch] (meta_ui_window_menu_new):
	make the active_workspace parameter an unsigned long

2007-04-15  Bruno Boaventura <brunobol@gnome.org>

	* src/menu.c (meta_window_menu_new): don't show the current
	workspace as a possible workspace to switch to.  Fixes #426791.

svn path=/trunk/; revision=3196
2007-04-16 04:48:14 +00:00
Djihed Afifi
6fa4dee13e Updated Arabic Translation by Khaled Hosny.
svn path=/trunk/; revision=3195
2007-04-14 18:48:25 +00:00
Elijah Newren
bc6996b171 do not auto-maximize windows larger than the workarea in only a single
2007-04-12  Elijah Newren  <newren gmail com>

	* src/place.c (meta_window_place): do not auto-maximize windows
	larger than the workarea in only a single direction.  Fixes
	#419810.

svn path=/trunk/; revision=3194
2007-04-12 22:25:25 +00:00
Elijah Newren
9ec6dbd5ca Make sure apps have correct info about their coordinates, even on unmap.
2007-04-11  Elijah Newren  <newren gmail com>

	Make sure apps have correct info about their coordinates, even on
	unmap.  Fixes temporary hang with libXt (XtVaSetValues setting x &
	y coordinates).  #399552.

	* src/frame.c (meta_window_destroy_frame): Add a comment noting
	that the current choice causes the need for a ConfigureNotify
	event

	* src/window.c (meta_window_free): Send a configure notify event
	due to our XReparentWindow coordinate choices on withdrawal,
	(unmaximize_window_before_freeing): no need to send a configure
	notify from here since it is always done in meta_window_free new,
	(send_configure_notify): have to special case the coordinates used
	when withdrawing the window

svn path=/trunk/; revision=3192
2007-04-12 04:02:57 +00:00
Thomas Thurman
2034a309e5 Workaround for a gdk bug which dies with BadAlloc if you try to allocate
2007-04-11  Thomas Thurman  <thomas@thurman.org.uk>

        Workaround for a gdk bug which dies with BadAlloc if you try
        to allocate an insanely huge rectangle for an insanely huge
        window. Fixes #399529.



svn path=/trunk/; revision=3191
2007-04-12 03:48:50 +00:00
Elijah Newren
7626f74b85 Advertise support of Above and Below operations (assuming the proposed
2007-04-11  Elijah Newren  <newren gmail com>

	Advertise support of Above and Below operations (assuming the
	proposed EWMH additions of _NET_WM_ACTION_(ABOVE|BELOW) will be
	accepted, otherwise these changes will have to be modified).  Part
	of #115247.

	* src/display.[ch] (meta_display_open, struct MetaDisplay):
	* src/screen.c (set_wm_check_hint):
	Add support for _NET_WM_ACTION_ABOVE and _NET_WM_ACTION_BELOW

	* src/window.c (set_allowed_actions_hints):
	add active_above and action_below

svn path=/trunk/; revision=3190
2007-04-11 17:15:54 +00:00
Elijah Newren
eb639a4650 make sure to set _NET_WM_ALLOWED_ACTIONS so that libwnck menus don't have
2007-04-10  Elijah Newren  <newren gmail com>

	* src/window.c (recalc_window_features): make sure to set
	_NET_WM_ALLOWED_ACTIONS so that libwnck menus don't have sensitive
	but ineffective menu items.  The "On Top" item is now buggy, but
	due to the fact that _NET_WM_ACTION_ABOVE is not yet defined in
	the EWMH.  Fixes #115247.

svn path=/trunk/; revision=3189
2007-04-11 02:37:30 +00:00
Kjartan Maraas
dc9920b883 Updated Norwegian bokmål translation.
2007-04-10  Kjartan Maraas  <kmaraas@gnome.org>

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

svn path=/trunk/; revision=3187
2007-04-09 23:44:00 +00:00
Elijah Newren
b8f89db4d1 Add support for _NET_MOVERESIZE_WINDOW. #344521.
2007-04-09  Elijah Newren  <newren gmail com>

	Add support for _NET_MOVERESIZE_WINDOW.  #344521.

	* src/display.c (handle_net_moveresize_window, event_callback):
	Remove handle_net_moveresize_window() and the call to it; this
	code was highly buggy, though to be fair it was never tested and
	had simply been put into the code in commented out form.

	* src/screen.c (set_supported_hint):
	add atom_net_moveresize_window

	* src/window.[ch]:
	(meta_window_configure_request, meta_window_move_resize_request):
	Split out the moving/resize part of the configure request and put
	it into meta_window_move_resize_request

	(meta_window_client_message):
	check for NET_MOVERESIZE_WINDOW messages and call
	meta_window_move_resize_request() with the appropriate parameters
	to handle them

	(meta_window_move_resize_internal):
	fix some of the big comment at this function -- it wasn't quite
	right, use the passed in gravity instead of
	window->size_hints.win_gravity when calling adjust_for_gravity()
	to make sure the correct adjustments are used.

	(meta_window_get_gravity_position,
	 meta_window_get_geometry, meta_window_move_resize_request):
	add a gravity parameter to meta_window_get_gravity_position and
	have it use that gravity instead of window->size_hints.win_gravity

svn path=/trunk/; revision=3186
2007-04-09 23:00:55 +00:00
Elijah Newren
63ca4e8bde post-release bump to 2.19.3.
2007-04-09  Elijah Newren  <newren gmail com>

        * configure.in: post-release bump to 2.19.3.

svn path=/trunk/; revision=3185
2007-04-09 17:24:50 +00:00
Elijah Newren
4d8a7a2045 2.19.2 release.
2007-04-09  Elijah Newren  <newren gmail com>

        * NEWS: 2.19.2 release.

svn path=/trunk/; revision=3183
2007-04-09 17:20:55 +00:00
Elijah Newren
ebfbef86a0 Remove grab_start_serial, which we expect to be an ancient attempt to
2007-04-08  Elijah Newren  <newren gmail com>

	Remove grab_start_serial, which we expect to be an ancient attempt
	to workaround sloppy/mouse focus bugs that have since been
	correctly fixed.  May fix some race conditions.  May cause nasty
	bugs in sloppy/mouse focus modes.  We'll find out soon enough...
	See #304430.

	* src/display.c (event_callback):
	remove event->xany.serial >= display->grab_start_serial in several
	event callback handlers

	* src/display.[ch] (struct _MetaDisplay, meta_display_begin_grab_op):
	* src/keybindings.c (do_choose_window, handle_workspace_switch):
	* src/frames.c (meta_frames_button_press_event):
	* src/core.[ch] (meta_core_begin_grab_op):
	* src/window.c (meta_window_client_message, meta_window_begin_grab_op):
	don't require an event_serial to be passed to
	meta_display_begin_grab_op () and don't record it anymore.

	* src/ui.c (struct _EventFunc, filter_func,
	  meta_ui_get_last_event_serial)
	* src/core.h (meta_ui_get_last_event_serial):
	remove meta_ui_get_last_event_serial() function (don't ask me why
	it was declared in core.h) and the last_even_serial field of
	_EventFunc

svn path=/trunk/; revision=3182
2007-04-09 05:49:57 +00:00
Elijah Newren
addf369006 Fix move/resize events in relation to combinations of ConfigureRequest and
2007-04-08  Elijah Newren  <newren gmail com>

	Fix move/resize events in relation to combinations of
	ConfigureRequest and WM_NORMAL_HINTS change notifications (plus a
	few code cleanups).  Fixes #426519.

	* src/window.c (meta_window_move_resize_now):
	move to the user_rect position, not some weird combination of rect
	and user_rect

	* src/window.c (meta_window_configure_request):
        set user_rect in response to ConfigureRequest events (after the
	ConfigureRequest values have been constrained) and add a big
	comment explaining this change, remove unused only_resize variable
	and irrelevant huge FIXME comment about it

	* src/window.[ch] (meta_window_get_client_root_coords):
	new function

	* src/display.c (meta_display_begin_grab_op):
	* src/keybindings.c (process_keyboard_move_grab):
	* src/window.c (meta_window_unmaximize,
	  meta_window_move_resize_internal, meta_window_begin_wireframe,
	  update_move, meta_window_refresh_resize_popup,
	  warp_grab_pointer)
	combine multi-step client rect root coord setting into a single
	function call to meta_window_get_client_root_coords()

svn path=/trunk/; revision=3181
2007-04-09 03:43:55 +00:00
Thomas Thurman
82c56cb5d7 removed conflict line.
2007-04-08  Thomas Thurman  <thomas@thurman.org.uk>

        * ChangeLog: removed conflict line.



svn path=/trunk/; revision=3175
2007-04-08 18:17:38 +00:00
Elijah Newren
0a8bdcdcb3 Add an (unbound by default) keybinding for setting spew marks in verbose
2007-04-07  Elijah Newren  <newren gmail com>

	* src/prefs.[ch] (screen_bindings array,
	  META_KEYBINDING_SET_SPEW_MARK definition):
	* src/keybindings.c (handle_spew_mark, screen_handlers array):
	Add an (unbound by default) keybinding for setting spew marks in
	verbose debugging logs.  I'm not sure why this was ever removed;
	I've wanted it so many times.

	* HACKING:
	valgrind wants --log-file not --logfile.

svn path=/trunk/; revision=3174
2007-04-07 22:16:35 +00:00
Elijah Newren
745906b7db Fix memory bug (invalid free) introduced in 2007-04-02 strut cleanup
2007-04-07  Elijah Newren  <newren gmail com>

	* src/window.c (meta_window_free): Fix memory bug (invalid free)
	introduced in 2007-04-02 strut cleanup commit.  Part of #427385.

svn path=/trunk/; revision=3173
2007-04-07 21:42:05 +00:00
Thomas Thurman
8fe344db51 if theme is invalid and therefore got freed, don't attempt to read from
2007-04-05  Thomas Thurman  <thomas@thurman.org.uk>

        * src/theme_parser.c: if theme is invalid and therefore got
        freed, don't attempt to read from it. Closes #423855.



svn path=/trunk/; revision=3172
2007-04-05 18:45:03 +00:00
Bastien Nocera
f32712937b Add new control-center key bindings definitions (Closes: #420145)
2007-04-05  Bastien Nocera  <hadess@hadess.net>

	* src/50-metacity-desktop-key.xml.in:
	* src/50-metacity-key.xml.in:
	* src/Makefile.am:
	Add new control-center key bindings definitions (Closes: #420145)

2007-04-05  Bastien Nocera  <hadess@hadess.net>

	* POTFILES.in: add the XML keys definitions to the list


svn path=/trunk/; revision=3170
2007-04-05 09:22:19 +00:00
Raivis Dejus
43d4ea3f3b Updated Latvian Translation.
2007-04-05  Raivis Dejus <orvils@gmail.com>

        * lv.po: Updated Latvian Translation.

svn path=/trunk/; revision=3169
2007-04-05 06:55:35 +00:00
Raivis Dejus
8d00f13dc7 Updated Latvian Translation.
2007-04-05  Raivis Dejus <orvils@gmail.com>

        * lv.po: Updated Latvian Translation.

svn path=/trunk/; revision=3168
2007-04-05 06:50:57 +00:00
Elijah Newren
6753584e80 post-release bump to 2.19.2
2007-04-04  Elijah Newren  <newren gmail com>

        * configure.in: post-release bump to 2.19.2

svn path=/trunk/; revision=3167
2007-04-05 01:04:09 +00:00
Elijah Newren
9b85e7ee7f 2.19.1 release.
2007-04-04  Elijah Newren  <newren gmail com>

        * NEWS: 2.19.1 release.

svn path=/trunk/; revision=3165
2007-04-05 01:02:57 +00:00
Elijah Newren
dda3c2bee6 send synthetic configurenotify events also in response to MapRequest
2007-04-04  Elijah Newren  <newren gmail com>

	* src/window.c (meta_window_move_resize_internal): send synthetic
	configurenotify events also in response to MapRequest events when
	the window has a frame and the application specifies PPosition or
	UPosition hints.  I believe they are already sent for all other
	cases.  Should fix #322840.  Fixes the testcase at least.  :)

svn path=/trunk/; revision=3156
2007-04-04 23:52:21 +00:00
Elijah Newren
921661e91d Fix lots of little issues with min/max constraints and size increment
2004-04-04  Elijah Newren  <newren gmail com>

	Fix lots of little issues with min/max constraints and size
	increment constraints.  Fixes #329152, #418395, and possibly
	others.

	* src/window-props.c (meta_set_normal_hints):
	Do more checking to make sure application specified constraints
	are self-consistent, modifying the size_hints as necessary to
	achieve self-consistency.

	* src/constraints.c (setup_constraint_info): remove ugly
	copy-pasto, (constrain_size_increments): be careful that fixing
	violation of the constraints doesn't cause a violation of the
	minimum size constraints.

	* src/window.c (ensure_size_hints_satisfied): new function,
	(meta_window_unmaximize, meta_window_unmake_fullscreen): the
	saved_rect may no longer be valid (as in the case of #329152) so
	call ensure_size_hints_satisfied to fix it up.

	* doc/how-to-get-focus-right.txt: Some minor spacing and wording
	fixes completely unrelated to the rest of this commit

svn path=/trunk/; revision=3155
2007-04-04 21:54:56 +00:00
Elijah Newren
7a799b3a63 Only use saved_rect for determining the position to unmaximize to for the
2007-04-03  Elijah Newren  <newren gmail com>

	* src/window.c (meta_window_unmaximize):
	Only use saved_rect for determining the position to unmaximize to
	for the previously-maximized direction(s).  Fixes #355497.

svn path=/trunk/; revision=3154
2007-04-04 03:07:26 +00:00
Elijah Newren
b01dcaa338 Update. #412319.
2007-04-03  Elijah Newren  <newren gmail com>

	* MAINTAINERS: Update.  #412319.

svn path=/trunk/; revision=3153
2007-04-04 00:45:58 +00:00
Elijah Newren
9cae11fd9e _NET_ACTIVE_WINDOW is a single xwindow id, not two.
2007-04-03  Elijah Newren  <newren gmail com>

	* src/display.c (meta_display_update_active_window_hint):
	_NET_ACTIVE_WINDOW is a single xwindow id, not two.

svn path=/trunk/; revision=3152
2007-04-03 22:26:47 +00:00
Elijah Newren
da7d198757 turn mouse_mode off to prevent focus issues with the run application
2007-04-03  Elijah Newren  <newren gmail com>

	* src/keybindings.c (handle_panel_keybinding): turn mouse_mode off
	to prevent focus issues with the run application dialog.  Fixes
	#374752.

svn path=/trunk/; revision=3149
2007-04-03 20:19:12 +00:00
Elijah Newren
350225ea37 Avoid some crashes when dragging windows partially offscreen. Possible (or
2007-04-03  Elijah Newren  <newren gmail com>

	Avoid some crashes when dragging windows partially offscreen.
	Possible (or at least partial) fix for #353513.

	* src/edge-resistance.c (apply_edge_resistance): be more careful
	about calls to find_index_of_edge_near_position() returning
	possibly invalid indices.  Also, add a warning comment to
	find_index_of_edge_near_position().

svn path=/trunk/; revision=3147
2007-04-03 19:56:34 +00:00
Elijah Newren
930c7ea270 Um, fix the date in that last commit
svn path=/trunk/; revision=3146
2007-04-03 18:40:47 +00:00
Elijah Newren
ec51e41c62 Patch from Carlo Wood to do some miscellaneous code cleanups found while
2007-04-02  Elijah Newren  <newren gmail com>

	Patch from Carlo Wood to do some miscellaneous code cleanups found
	while working on #358311.

	* src/constraints.c (do_screen_and_xinerama_relative_constraints):
	nicer way of avoiding compilation warning

	* src/boxes.c (meta_rectangle_clamp_to_fit_into_region,
	  meta_rectangle_clip_to_region, meta_rectangle_shove_into_region):
	Much cleaner way of ignoring invalid boxes in comparisons

svn path=/trunk/; revision=3145
2007-04-03 18:40:00 +00:00
Elijah Newren
08f51fdf94 Patch from Carlo Wood to fix handling of unidirectional maximization and
2007-04-02  Elijah Newren  <newren gmail com>

	Patch from Carlo Wood to fix handling of unidirectional
	maximization and partial struts.  #358311.

	* src/constraints.c (constrain_maximization):
	determine target size for unidirectionally maximized windows by
	determining how far they can be maximized without hitting
	orthogonal struts.  Avoids weird "empty spaces".

	* src/boxes.[ch] (meta_rectangle_expand_to_avoiding_struts):
	new function

2007-04-02  Elijah Newren  <newren gmail com>

	Make the strut lists (stored in workspaces) record both the
	rectangle and the side that the strut is on.  Lots of code
	cleanups relating to struts.

	* src/boxes.h (struct MetaStrut):
	new struct for struts

	* src/window.[ch] (struct MetaStruts, struct MetaWindow,
	  meta_window_update_struts):
	overhaul to make window's struts remember their side as well as
	their rectangular location, and just use a list instead of several
	copies of near-identical code for left/right/top/bottom (allowing
	us to nuke MetaStruts struct as well)
	
	* src/testboxes.c (new_meta_strut, get_strut_list):
	* src/workspace.c (ensure_work_areas_validated):
	* src/boxes.c (meta_rectangle_get_minimal_spanning_set_for_region,
	  meta_rectangle_expand_to_avoiding_struts,
	  get_disjoint_strut_rect_list_in_region, fix_up_edges,
	  meta_rectangle_find_onscreen_edges,
	  meta_rectangle_find_nonintersected_xinerama_edges):
	modify to handle struts being rectangle + side instead of just rectangle

	* src/workspace.c (ensure_work_areas_validated):
	simplify strut list creation considerably given MetaWindow change,
	modify work_area computations to take advantage of region
	computations being done (makes the code shorter as well as more
	robust against pathological cases).

	* src/util.[ch] (meta_free_gslist_and_elements):
	new convenience function

	* src/common.h (enum MetaDirection):
	* src/edge-resistance.c (movement_towards_edge):
	* src/boxes.c (meta_rectangle_edge_aligns,
	  rectangle_and_edge_intersection, split_edge):
	Add more MetaDirection fields for convenience

	* src/boxes.h (enum FixedDirections):
	* src/constraints.c (setup_constraint_info, place_window_if_needed):
	add a FIXED_DIRECTION_NONE to the FixedDirections enum to make
	code more clear

svn path=/trunk/; revision=3144
2007-04-03 03:41:10 +00:00
Elijah Newren
e82ce26425 Fix Bruno's date typo
svn path=/trunk/; revision=3143
2007-04-03 02:35:33 +00:00
Alessio Frusciante
8a4c3c81a1 Fixed a typo in Italian translation.
svn path=/trunk/; revision=3142
2007-04-02 20:18:20 +00:00
Bruno Boaventura
0bb8bd4370 Fallback to NORMAL state after checking for the middle button. Fixes bug
2007-01-27  Bruno Boaventura <brunobol@gnome.org>

	* src/theme.c (kill_window_question): Fallback to NORMAL state after
	checking for the middle button. Fixes bug #419043.
	Patch from Benjamin Berg <benjamin@sipsolutions.net>.	


svn path=/trunk/; revision=3140
2007-04-01 15:31:24 +00:00
Elijah Newren
81e32cfa32 Clean up event mask handling and meta_create_offscreen_window, to prevent
2007-03-31  Elijah Newren  <newren gmail com>

	Clean up event mask handling and meta_create_offscreen_window, to
	prevent nasty metacity/gdk interactions causing hangs. See #354213.

	* src/screen.[ch] (meta_create_offscreen_window):
	* src/display.c (meta_display_open):
	* src/screen.c (meta_screen_new):
	Add a valuemask parameter to meta_create_offscreen_window
	
	* src/display.c (meta_display_open):
	make it explicit that we can't rely on PropertyNotify events for
	the leader_window due to nasty metacity/gdk interaction

	* src/session.c (warn_about_lame_clients_and_finish_interact):
	remove cut-and-paste code for timestamp pinging and just call
	meta_display_get_current_time_roundtrip

svn path=/trunk/; revision=3137
2007-03-31 23:34:36 +00:00
Elijah Newren
6e007baaa8 Add support for _NET_WM_USER_TIME_WINDOW in order to cut down on context
2007-03-30  Elijah Newren  <newren gmail com>

	Add support for _NET_WM_USER_TIME_WINDOW in order to cut down on
	context switches.

	* src/display.c (meta_display_open):
	* src/display.h (struct _MetaDisplay):
	* src/screen.c (set_supported_hint):
	new atom

	* src/display.c (meta_display_open,
	  meta_display_get_current_time_roundtrip):
	* src/display.h (struct _MetaDisplay):
	create a dedicated timestamp pinging window instead of reusing
	display->leader_window

	* src/display.c (event_callback):
	* src/window-props.c (reload_net_wm_user_time_window):
	* src/window.c (meta_window_new_with_attrs, meta_window_free,
	  process_property_notify):
	* src/window.h (struct _MetaWindow):
	monitor property notify events on _NET_WM_USER_TIME_WINDOW windows too
	
	* src/window-props.[ch]:
	new meta_window_reload_propert(y|ies)_from_xwindow() functions

	* src/window-props.[ch]
	  (init_net_wm_user_time_window, reload_net_wm_user_time_window,
	  meta_display_init_window_prop_hooks):
	* src/window.c (meta_window_new_with_attrs):
	new hooks to handle new atom

svn path=/trunk/; revision=3134
2007-03-31 05:19:41 +00:00
Ihar Hrachyshka
55899b5ab7 be@latin.po: Added Belarusian Latin translation by Ales Navicki.
svn path=/trunk/; revision=3132
2007-03-30 19:33:23 +00:00
Priit Laes
5c06f103ca Updated Estonian translation by Ivar Smolin <okul@linux.ee>.
2007-03-29  Priit Laes  <plaes@svn.gnome.org>

	* et.po: Updated Estonian translation by Ivar Smolin <okul@linux.ee>.

svn path=/trunk/; revision=3128
2007-03-29 18:06:40 +00:00
Gabor Kelemen
e6b1bd9922 Translation updated.
2007-03-27  Gabor Kelemen  <kelemeng@gnome.hu>

	* hu.po: Translation updated.


svn path=/trunk/; revision=3127
2007-03-27 11:14:02 +00:00
Josselin Mouette
44b86d468e if previous client ID was supplied, use it in filename. use --sm-client-id
2007-03-26  Josselin Mouette  <joss@malsain.org>

        * src/session.c (meta_session_init): if previous client ID
        was supplied, use it in filename.
        * src/session.c (set_clone_restart_commands): use --sm-client-id
        in command line to restore session, not original file name.
        * src/session.c (regenerate_save_file): generate filename using
        client ID and not original file name.
        * src/session.c (base_save_file): removed function.
        Closes GNOME 407981, Debian 391287, Debian 315169.


svn path=/trunk/; revision=3125
2007-03-26 21:38:19 +00:00
Elijah Newren
44ef3b3a51 bump version to 2.19.1; doesn't make sense to have the development version
2007-03-25  Elijah Newren  <newren gmail com>

	* configure.in: bump version to 2.19.1; doesn't make sense to have
	the development version have a version number less than the stable
	version.  ;-)

svn path=/trunk/; revision=3124
2007-03-26 01:31:11 +00:00
Arthur Taylor
11a90c53ed adjusted the rounded corners so that they fit nicely with the arcs around
2007-03-20  Arthur Taylor  <theycallhimart@gmail.com>

        * src/frames.c (meta_frames_apply_shapes): adjusted the rounded
          corners so that they fit nicely with the arcs around them.
          Fixes #399373.
                                                                                                                                           

svn path=/trunk/; revision=3120
2007-03-21 02:22:10 +00:00
Kjartan Maraas
88b91199d2 Remove #include <pango/pangox.h> since it's apparently not installed
2007-03-17  Kjartan Maraas  <kmaraas@gnome.org>

	* src/ui.c: Remove #include <pango/pangox.h> since it's
	apparently not installed anymore. Builds just fine without it too.

svn path=/trunk/; revision=3119
2007-03-17 08:40:02 +00:00
David Lodge
15d871023e Update en_GB translation
svn path=/trunk/; revision=3117
2007-03-15 07:00:54 +00:00
David Lodge
fc00da1099 Update en_GB translation
svn path=/trunk/; revision=3116
2007-03-15 07:00:35 +00:00
Jakub Friedl
db3d6725a2 Updated Czech translation.
2007-03-12  Jakub Friedl  <jfriedl@suse.cz>

  * cs.po: Updated Czech translation.


svn path=/trunk/; revision=3112
2007-03-12 14:16:22 +00:00
Goran Rakic
f94d12a991 Updated Serbian translation
svn path=/trunk/; revision=3110
2007-03-11 15:13:30 +00:00
Charlie Brej
c7cb503003 add action_{middle|right}_click_titlebar. Closes #408903.
2007-03-10  Charlie Brej  <cbrej@cs.man.ac.uk>

        * src/metacity.schemas.in: add action_{middle|right}_click_titlebar.
        Closes #408903.



svn path=/trunk/; revision=3107
2007-03-11 02:39:07 +00:00
Josep Puigdemont i Casamajó
dc9880ea7e Updated Catalan translation by Jordi Mallach.
svn path=/trunk/; revision=3106
2007-03-11 00:00:06 +00:00
Artur Flinta
7eb85e6e9c Updated Polish translation by GNOME PL Team.
2007-03-10  Artur Flinta  <aflinta@svn.gnome.org>

	* pl.po: Updated Polish translation by GNOME PL Team.


svn path=/trunk/; revision=3105
2007-03-10 18:53:11 +00:00
Linus Torvalds
6ab8fb150f honour preferences. new functions.
2007-03-09  Linus Torvalds  <torvalds@woody.linux-foundation.org>

        * src/frames.c (meta_frame_middle_click_event,
        meta_frame_right_click_event): honour preferences.
        * src/prefs.[ch] (meta_prefs_get_action_middle_click_titlebar,
        meta_prefs_get_action_right_click_titlebar): new functions.


svn path=/trunk/; revision=3102
2007-03-10 01:15:14 +00:00
Nickolay V. Shmyrev
e179b813f4 Updated Russian translation.
2007-03-09  Nickolay V. Shmyrev  <nshmyrev@yandex.ru>

	* ru.po: Updated Russian translation.



svn path=/trunk/; revision=3100
2007-03-09 20:24:53 +00:00
Artur Flinta
24a6a105e3 Updated Polish translation by GNOME PL Team.
2007-03-07  Artur Flinta  <aflinta@svn.gnome.org>

	* pl.po: Updated Polish translation by GNOME PL Team.


svn path=/trunk/; revision=3094
2007-03-06 23:36:05 +00:00
Takeshi AIHANA
9d6fed2aa0 Updated Japanese translation.
2007-03-06  Takeshi AIHANA <takeshi.aihana@gmail.com>

        * ja.po: Updated Japanese translation.

svn path=/trunk/; revision=3091
2007-03-06 14:31:32 +00:00
Jovan Naumovski
8090d192e3 2007-03-06 Jovan Naumovski <jovanna@svn.gnome.org> *mk.po: Updated Macedonian translation.
svn path=/trunk/; revision=3089
2007-03-06 11:27:44 +00:00
Vincent van Adrighem
36b9a3a974 Translation updated by Reinout van Schouwen.
2007-03-05  Vincent van Adrighem  <adrighem@gnome.org>

	* nl.po: Translation updated by Reinout van Schouwen.

svn path=/trunk/; revision=3086
2007-03-05 09:26:32 +00:00
Gintautas Miliauskas
f145337a8b Updated Lithuanian translation.
2007-03-04  Gintautas Miliauskas  <gintas@akl.lt>

	* lt.po: Updated Lithuanian translation.



svn path=/trunk/; revision=3085
2007-03-04 21:36:09 +00:00
Erdal Ronahi
0d7d821343 Updated Kurdish translation
svn path=/trunk/; revision=3084
2007-03-04 20:36:14 +00:00
Pema Geyleg
7211cc21c3 Updated Dzongkha Translation
svn path=/trunk/; revision=3083
2007-03-04 10:19:12 +00:00
Chao-Hsiung Liao
f4277e3235 Updated Traditional Chinese translation(Hong Kong). Updated Traditional
2007-03-04  Chao-Hsiung Liao  <j_h_liau@yahoo.com.tw>

	* zh_HK.po: Updated Traditional Chinese translation(Hong Kong).
	* zh_TW.po: Updated Traditional Chinese translation(Taiwan).


svn path=/trunk/; revision=3082
2007-03-04 03:31:43 +00:00
Leonardo Ferreira Fontenelle
47bb79adb2 Updated Brazilian Portuguese translation by Leonardo Ferreira Fontenelle
2007-03-02  Leonardo Ferreira Fontenelle  <leonardof@svn.gnome.org>

	* pt_BR.po: Updated Brazilian Portuguese translation by Leonardo
	Ferreira Fontenelle <leo.fontenelle@gmail.com> (me!) and Raul Pereira
	<contato@raulpereira.com>.

svn path=/trunk/; revision=3081
2007-03-02 20:52:10 +00:00
Gintautas Miliauskas
39a6707a06 Updated Lithuanian translation.
2007-02-27  Gintautas Miliauskas  <gintas@akl.lt>

	* lt.po: Updated Lithuanian translation.


svn path=/trunk/; revision=3080
2007-02-27 14:49:30 +00:00
Luca Ferretti
f6f968a545 Updated Italian translation.
2007-02-26  Luca Ferretti  <elle.uca@libero.it>

	* it.po: Updated Italian translation.


svn path=/trunk/; revision=3074
2007-02-26 12:51:34 +00:00
Gabor Kelemen
10ad03db76 Translation updated.
2007-02-25  Gabor Kelemen  <kelemeng@gnome.hu>

	* hu.po: Translation updated.

svn path=/trunk/; revision=3073
2007-02-25 14:30:54 +00:00
Amanpreet Singh Alam
ae441010b9 updating for Punjabi by alam
svn path=/trunk/; revision=3072
2007-02-25 14:19:52 +00:00
Raphael Higino
a877cbc80d Updated Brazilian Portuguese translation
svn path=/trunk/; revision=3071
2007-02-25 01:27:05 +00:00
Nguyen Thai Ngoc Duy
b40993fab9 updated vi.po
svn path=/trunk/; revision=3070
2007-02-24 11:35:20 +00:00
Kwok-Koon Cheung
b86d678c4c Help Funda Wang commit zh_CN translation
svn path=/trunk/; revision=3069
2007-02-22 04:18:31 +00:00
Maxim Dziumanenko
56b59faf87 Update Ukrainian translation.
2007-02-21 Maxim Dziumanenko <dziumanenko@gmail.com>

	* Update Ukrainian translation.


svn path=/trunk/; revision=3066
2007-02-21 09:19:51 +00:00
Artur Flinta
90e6198401 Updated Polish translation by GNOME PL Team.
2007-02-21  Artur Flinta  <aflinta@cvs.gnome.org>

	* pl.po: Updated Polish translation by GNOME PL Team.


svn path=/trunk/; revision=3065
2007-02-20 22:59:55 +00:00
Kjartan Maraas
cd748a2e97 Add MAINTAINERS to EXTRA_DIST so others can find out where to send
2007-02-20  Kjartan Maraas  <kmaraas@gnome.org>

	* Makefile.am: Add MAINTAINERS to EXTRA_DIST so others
	can find out where to send patches. Hi Linus :-)

svn path=/trunk/; revision=3064
2007-02-20 14:09:06 +00:00
Alexander Shopov
c73a198f94 Updated Bulgarian translation by Alexander Shopov <ash@contact.bg>
2007-02-20  Alexander Shopov  <ash@contact.bg>

	* bg.po: Updated Bulgarian translation by
	Alexander Shopov <ash@contact.bg>

svn path=/trunk/; revision=3063
2007-02-19 22:56:32 +00:00
Linus Torvalds
4e478159b6 renamed from MetaActionDoubleClickTitleBar; added _LOWER and _MENU.
2007-02-17  Linus Torvalds  <torvalds@woody.linux-foundation.org>

        * src/common.h (MetaActionTitleBar): renamed from
        MetaActionDoubleClickTitleBar; added _LOWER and _MENU.
        * src/frames.c (meta_frame_titlebar_event): renamed
        enums as above; added code to handle _LOWER and _MENU,
        which is moved in from meta_frame_{middle|right}_click_event.
        * src/frames.c (meta_frame_middle_click_event,
        meta_frame_right_click_event): rewrote in terms of
        meta_frame_titlebar_event.
        * src/prefs.c: removed "DoubleClick" from names as above.
        * src/prefs.c (action_titlebar_from_string): added cases
        for "lower" and "menu".
        Fixes #408902.


svn path=/trunk/; revision=3062
2007-02-17 21:34:00 +00:00
Linus Torvalds
85e43a402f Split out code for different kinds of click into separate functions. Fixes
2007-02-17  Linus Torvalds  <torvalds@woody.linux-foundation.org>

        * src/frames.c (meta_frames_button_press_event): Split out
        code for different kinds of click into separate functions.
        Fixes #408899.
        * src/frames.c (meta_frame_titlebar_event,
         meta_frame_double_click_event, meta_frame_middle_click_event,
         meta_frame_right_click_event): new functions.



svn path=/trunk/; revision=3061
2007-02-17 21:15:59 +00:00
Ilkka Tuohela
c1fcc4bb6b Updated Finnish translation
svn path=/trunk/; revision=3060
2007-02-16 17:01:57 +00:00
Changwoo Ryu
a850771e04 Updated Korean translation.
2007-02-15  Changwoo Ryu  <cwryu@debian.org>

	* ko.po: Updated Korean translation.

svn path=/trunk/; revision=3059
2007-02-15 06:18:57 +00:00
Duarte Loreto
6126940518 Updated Portuguese translation.
2007-02-15  Duarte Loreto <happyguy_pt@hotmail.com>

	* pt.po: Updated Portuguese translation.

svn path=/trunk/; revision=3058
2007-02-15 00:12:20 +00:00
Ilkka Tuohela
82267f5afb Updated Finnish translation
svn path=/trunk/; revision=3057
2007-02-14 12:24:56 +00:00
Changwoo Ryu
22e6c6f7c9 Updated Korean translation.
2007-02-09  Changwoo Ryu  <cwryu@debian.org>

	* ko.po: Updated Korean translation.

svn path=/trunk/; revision=3056
2007-02-08 21:51:03 +00:00
Stéphane Raimbault
fe75a334b1 Updated French translation by Robert-André Mauchin.
2007-01-31  Stéphane Raimbault  <stephane.raimbault@gmail.com>

        * fr.po: Updated French translation by Robert-André Mauchin.

svn path=/trunk/; revision=3055
2007-01-31 22:04:43 +00:00
Priit Laes
2774292561 Updated Estonian translation by Ivar Smolin <okul@linux.ee>.
2007-01-27  Priit Laes  <plaes@svn.gnome.org>

	* et.po: Updated Estonian translation by Ivar Smolin <okul@linux.ee>.

svn path=/trunk/; revision=3051
2007-01-27 16:02:54 +00:00
Bruno Boaventura
e9f578b511 Change dialog icon because gnome-icon-theme have no more
2007-01-27  Bruno Boaventura <brunobol@gnome.org>

        * src/metacity-dialog.c (kill_window_question): Change dialog
        icon because gnome-icon-theme have no more "panel-force-quit".
        Patch from Jaap A. Haitsma <jaap@haitsma.org>.


svn path=/trunk/; revision=3050
2007-01-27 04:18:15 +00:00
Jakub Friedl
2ee754ddaf Updated Czech translation.
2007-01-22  Jakub Friedl <jfriedl@suse.cz> 

  * cs.po: Updated Czech translation.


svn path=/trunk/; revision=3049
2007-01-23 12:10:56 +00:00
Hendrik Richter
f7a45f10ea Updated German translation.
2007-01-16  Hendrik Richter  <hendrikr@gnome.org>

	* de.po: Updated German translation.

svn path=/trunk/; revision=3048
2007-01-16 21:11:20 +00:00
Thomas James Alexander Thurman
9626780635 fix silly thinko.
* doc/compositor-control.txt: fix silly thinko.


svn path=/trunk/; revision=3047
2007-01-16 19:11:13 +00:00
Thomas James Alexander Thurman
e3249d6e1b post-release bump to 2.17.8.
* configure.in: post-release bump to 2.17.8.


svn path=/trunk/; revision=3046
2007-01-16 18:20:08 +00:00
Thomas James Alexander Thurman
419884a0cb =================================================
metacity-2.17.5 archives ready for distribution: 
metacity-2.17.5.tar.gz
=================================================


svn path=/trunk/; revision=3044
2007-01-16 18:17:14 +00:00
Thomas James Alexander Thurman
1b941ff508 New file.
* doc/compositor-control.txt: New file.

svn path=/trunk/; revision=3043
2007-01-16 17:45:18 +00:00
Thomas James Alexander Thurman
5d9ccfac37 Removed #ifdef SPIFFY_COMPOSITOR throughout the file. Replaced with check
* src/compositor.c (meta_compositor_new): Removed
        #ifdef SPIFFY_COMPOSITOR throughout the file. Replaced with check 
        for environment variable METACITY_BLING, which may be temporary.


svn path=/trunk/; revision=3042
2007-01-16 17:02:39 +00:00
Djihed Afifi
031b03513a Updated Arabic Translation by Khaled Hosny.
svn path=/trunk/; revision=3041
2007-01-15 14:25:06 +00:00
Bruno Boaventura
50c5bf4bf6 Unmaximize button must keep preesed appearence when clicked (hold down),
2007-01-13  Bruno Boaventura  <brunobol@gnome.org>

        * src/frames.c (meta_frames_motion_notify_event): Unmaximize
        button must keep preesed appearence when clicked (hold down),
        move off, and back over the button. Fixes #395560. Patch from
        Mad Alex <madalexonline@yahoo.co.uk>.


svn path=/trunk/; revision=3040
2007-01-13 13:27:20 +00:00
Daniel Nylander
c4a135aeee sv.po: Updated Swedish translation
svn path=/trunk/; revision=3039
2007-01-13 00:06:02 +00:00
Jakub Friedl
d97395ae52 Updated Czech translation.
2007-01-05  Jakub Friedl <jfriedl@suse.cz> 

  * cs.po: Updated Czech translation.


svn path=/trunk/; revision=3038
2007-01-05 12:49:19 +00:00
Djihed Afifi
d6be56358e Updated Arabic Translation.
svn path=/trunk/; revision=3037
2007-01-03 22:00:57 +00:00
Thomas James Alexander Thurman
4becc1e631 Remove double unref of stacker object. Fixes #387761.
* src/c-screen.c (meta_comp_screen_redirect): Remove double unref
        of stacker object. Fixes #387761.


svn path=/trunk/; revision=3036
2007-01-02 14:09:45 +00:00
David Lodge
1b9faba6c5 Updated English (British) translation
svn path=/trunk/; revision=3035
2007-01-01 22:41:58 +00:00
Kjartan Maraas
d20d537113 Updated Norwegian bokmål translation.
2006-12-29  Kjartan Maraas  <kmaraas@gnome.org>

	* nb.po: Updated Norwegian bokmål translation.
2006-12-29 11:39:51 +00:00
Theppitak Karoonboonyanan
28b48248a2 Updated Thai translation.
2006-12-29  Theppitak Karoonboonyanan  <thep@linux.thai.net>

	* th.po: Updated Thai translation.
2006-12-29 05:48:26 +00:00
Djihed Afifi
f665d54373 Updated Arabic Translation. 2006-12-27 22:51:00 +00:00
Bruno Boaventura
5ca9f43752 Move "On Top" option in menu. Fix #382962.
2006-12-27  Bruno Boaventura  <brunoboaventura@gmail.com>

        Move "On Top" option in menu. Fix #382962.

        * src/common.h, src/core.c: Remove META_MENU_OP_UNABOVE.
        * src/menu.c: remove unabove menu item and put above item
        next "Always on Visible Viewport".
        * src/window.c: remove handles of META_MENU_OP_UNABOVE.
2006-12-27 15:51:49 +00:00
Djihed Afifi
5eabc7c781 Updated Arabic Translation. 2006-12-24 21:52:38 +00:00
Raivis Dejus
0180c10092 Updated Latvian Translation.
2006-12-23  Raivis Dejus <orvils@gmail.com>

        * lv.po: Updated Latvian Translation.
2006-12-24 12:29:39 +00:00
Thomas James Alexander Thurman
5080b8fefb Disabled bling for now; added function for handling CirculateNotify
* src/compositor.c: Disabled bling for now; added function for
        handling CirculateNotify XEvent; some commenting.
        * src/compositor.h, src/c-window.c: fix function prototype visibility.
2006-12-21 05:12:34 +00:00
Amanpreet Singh Alam
34138ff44e update translation for Punjabi (Gurmukhi) by apbrar gmail com 2006-12-21 02:42:31 +00:00
Kjartan Maraas
a2d21149e4 Updated Norwegian bokmål translation.
2006-12-18  Kjartan Maraas  <kmaraas@gnome.org>

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

2006-12-18  Djihed Afifi <djihed@gmail.com>
2006-12-18 09:01:28 +00:00
Djihed Afifi
db4fa5c5fb Updated Arabic Translation. Sync for gnome-2-18 2006-12-18 01:43:38 +00:00
Ales Nyakhaychy
ff88d79062 Updated Belarusian Translation by Ihar Hrachyshka.
2006-12-18  Ales Nyakhaychy  <nab@mail.by>

	* be.po: Updated Belarusian Translation by Ihar Hrachyshka.
2006-12-18 00:13:29 +00:00
Theppitak Karoonboonyanan
15c7e2aed9 Updated Thai translation.
2006-12-15  Theppitak Karoonboonyanan  <thep@linux.thai.net>

	* th.po: Updated Thai translation.
2006-12-15 10:01:17 +00:00
Mugurel Tudor
09a48beaec Updated Romanian translation
2006-12-13  Mugurel Tudor  <mugurelu@gnome.ro>

	* ro.po: Updated Romanian translation
2006-12-13 19:17:26 +00:00
Thomas James Alexander Thurman
ea137d35f3 Sanity check to avoid dereferencing a null pointer.
* src/compositor.c (do_effect): Sanity check to avoid dereferencing
        a null pointer.
2006-12-12 18:30:27 +00:00
Jordi Mallach
54b0105ffa Updated Catalan translation. 2006-12-11 20:02:59 +00:00
Thomas James Alexander Thurman
01a282fdd3 bump 2006-12-11 04:11:04 +00:00
Thomas James Alexander Thurman
9d6d1c5fb6 2.17.3 2006-12-11 04:04:52 +00:00
Kjartan Maraas
fd4378d84f Updated Norwegian bokmål translation.
2006-12-11  Kjartan Maraas  <kmaraas@gnome.org>

	* nb.po: Updated Norwegian bokmål translation.
2006-12-11 01:07:39 +00:00
Christof Krüger
ceb54162b3 Fix flickering about when dragging maximised windows between xineramas.
2006-12-05  Christof Krüger  <mail@pop2wap.net>

        * src/window.c (update_move): Fix flickering about when dragging
        maximised windows between xineramas. Closes #358715.
2006-12-06 01:26:30 +00:00
Jakub Friedl
390ded3054 Updated Czech translation.
2006-12-04  Jakub Friedl  <jfriedl@suse.cz>

  * cs.po: Updated Czech translation.
2006-12-04 16:15:09 +00:00
Federico Mena Quintero
caf43a123f Fix http://bugzilla.gnome.org/show_bug.cgi?id=381127:
2006-12-03  Federico Mena Quintero  <federico@novell.com>

	Fix http://bugzilla.gnome.org/show_bug.cgi?id=381127:

	* src/window.c (idle_calc_showing): Grab the server while the
	windows are being shuffled.  First show the windows to be shown,
	and then hide the windows to be hidden, in order to minimize
	the number of expose events.
2006-12-03 20:05:23 +00:00
Yair Hershkovitz
106391a431 updated hebrew translation 2006-11-22 20:15:22 +00:00
Priit Laes
595465ad22 Translation updated by Ivar Smolin.
2006-11-19  Priit Laes  <plaes@cvs.gnome.org>

	* et.po: Translation updated by Ivar Smolin.
2006-11-19 20:25:56 +00:00
Duarte Loreto
0b3391a25c Partial updated Portuguese translation.
2006-11-19  Duarte Loreto <happyguy_pt@hotmail.com>

	* pt.po: Partial updated Portuguese translation.
2006-11-19 19:51:08 +00:00
Priit Laes
fcdd0fbd50 Translation updated by Ivar Smolin.
2006-11-19  Priit Laes  <plaes@cvs.gnome.org>

	* et.po: Translation updated by Ivar Smolin.
2006-11-19 09:55:49 +00:00
Priit Laes
9b701f520a Translation updated by Ivar Smolin.
2006-11-18  Priit Laes  <plaes@cvs.gnome.org>

	* et.po: Translation updated by Ivar Smolin.
2006-11-18 19:28:08 +00:00
Bruno Boaventura
a3e309bab8 2006-11-15 Björn Lindqvist <bjourne@gmail.com>
2006-11-15  Bruno Boaventura  <brunoboaventura@gmail.com>
2006-11-15  Björn Lindqvist   <bjourne@gmail.com>

        * src/menu.c: added MetaMenuItemType enum; added it
        to MenuItem; added values of this type to menuitems
        array.
        * src/menu.c (menu_item_new): rewrite to take a MenuItem
        instead of a set of parameters describing the menu item.
        * src/menu.c (meta_window_menu_new): use proper checkboxes
        or radio buttons on the window menu.
        * src/window.c (meta_window_show_menu): unstick and stick
        are always shown.
2006-11-15 13:16:32 +00:00
Francisco Javier F. Serrador
c065a5df5d Updated Spanish translation.
2006-11-07  Francisco Javier F. Serrador  <serrador@openshine.com>

	* es.po: Updated Spanish translation.
2006-11-07 11:26:51 +00:00
Thomas James Alexander Thurman
01030ac0df post-release bump to 2.17.3.
* configure.in: post-release bump to 2.17.3.
2006-11-06 18:35:39 +00:00
Thomas James Alexander Thurman
3e55c138f1 =================================================
metacity-2.17.2 archives ready for distribution:
metacity-2.17.2.tar.gz
=================================================
2006-11-06 18:32:51 +00:00
Priit Laes
81256ebe48 remove deprecated gtk stuff.
2006-11-05  Priit Laes  <amd@store20.com>

        * src/main.c, src/ui.c: remove deprecated gtk stuff.

2006-11-05  Bruno Boaventura  <brunoboaventura@gmail.com>

        * src/theme.c, src/testgradient.c: remove deprecated gtk stuff.
2006-11-05 23:03:36 +00:00
Thomas James Alexander Thurman
8722c60a28 add missing spaces to string. Fixes #363355.
* src/metacity-dialog.c: add missing spaces to string. Fixes
        #363355.
2006-11-05 22:34:37 +00:00
Thomas James Alexander Thurman
8f09a12069 use g_strdup to allocate a string, not strdup. Fixes #363354.
* src/ui.c: use g_strdup to allocate a string, not strdup. Fixes
        #363354.
2006-11-05 22:32:01 +00:00
Justin Mason
c68c26b7f8 implement handle_move_to_{side|corner}_* to allow the user to flip a
2006-11-05  Justin Mason  <jm@jmason.org>

        * src/keybindings.c: implement handle_move_to_{side|corner}_* to
        allow the user to flip a window to the side or corner of the
        screen. Fixes #317884.
        * src/prefs.h: keybindings for the above.
        * src/metacity.schemas.in: keybindings for the above.
2006-11-05 22:23:44 +00:00
Thomas James Alexander Thurman
d419955ddc improved rounding of rounded corners. Fixes #360542, mostly.
* src/frames.c: improved rounding of rounded corners. Fixes #360542,
        mostly.
2006-11-05 21:20:10 +00:00
Jakub Friedl
af593aa5c5 Updated Czech translation.
2006-11-03  Jakub Friedl  <jfriedl@suse.cz>

  * cs.po: Updated Czech translation.
2006-11-03 08:02:23 +00:00
Dan Mick
191baa3c76 Fix strict focus mode by picking up on res_class. Fixes #361054, strict
2006-10-30  Dan Mick  <dan.mick@sun.com>

	* src/window.c: (__window_is_terminal): Fix strict focus
        mode by picking up on res_class. Fixes #361054, strict focus
        mode still not working; should look for res_class, not res_name
2006-10-29 20:30:18 +00:00
Francisco Javier F. Serrador
c8c666f855 Updated SPanish translation.
2006-10-26  Francisco Javier F. Serrador  <serrador@openshine.com>

	* es.po: Updated SPanish translation.
2006-10-26 20:28:53 +00:00
Ilkka Tuohela
edea47d113 Updated Finnish translation 2006-10-26 15:30:51 +00:00
Ilkka Tuohela
b164d11b90 Updated Finnish translation 2006-10-26 06:11:35 +00:00
Christophe Merlet
0cc7e939ab Updated French translation. 2006-10-22 16:11:53 +00:00
Kjartan Maraas
2276f91162 Updated Norwegian bokmål translation.
2006-10-19  Kjartan Maraas  <kmaraas@gnome.org>

	* nb.po: Updated Norwegian bokmål translation.
2006-10-19 08:33:24 +00:00
Elijah Newren
63ea328ea8 2.17.1 release.
2006-10-16  Elijah Newren  <newren gmail com>

        * NEWS: 2.17.1 release.
2006-10-16 22:14:41 +00:00
Ilkka Tuohela
fe34523949 Updated Finnish translation 2006-10-15 15:15:28 +00:00
Carlo Wood
d79a571d0a Fix cases when titlebar is allowed offscreen and shouldn't be (and
2006-10-13  Carlo Wood <carlo@alinoe.com>

	Fix cases when titlebar is allowed offscreen and shouldn't be (and
	vice-versa).  #333995.

	* src/display.[ch] (struct _MetaDisplay): add grab_frame_action
	member

	* src/display.[ch] (meta_display_begin_grab_op):
	* src/window.[ch] (meta_window_begin_grab_op):
	* src/core.[ch] (meta_core_begin_grab_op):
	Add frame_action parameter (core & window versions pass it on to
	display)

	* src/display.c (event_callback):
	* src/window.c (meta_window_begin_grab_op,
	  meta_window_client_message, menu_callback):
	* frames.c (meta_frames_button_press_event):
	* keybindings.c (do_choose_window, handle_begin_move,
	  handle_begin_resize, handle_workspace_switch):
	Pass whether the action should be considered a 'frame_action',
	which will be used to determine whether to force the titlebar to
	remain onscreen, to meta_*_begin_grab_op

	* constraints.c (constrain_titlebar_visible):
	Replace previous ugly hack by using grab_frame_action (and whether
	the action is a user action) to determine whether to enforce the
	titlebar_visible constraint.
2006-10-13 00:28:34 +00:00
Elijah Newren
a34944d341 Patch from Bruno Boaventura to sync metacity workspace previews with
2006-10-10  Elijah Newren  <newren gmail com>

	* src/draw-workspace.c (draw_window, wnck_draw_workspace): Patch
	from Bruno Boaventura to sync metacity workspace previews with
	libwnck.  #341893
2006-10-10 18:19:32 +00:00
Thomas James Alexander Thurman
b569dddc17 post-release bump to 2.17.1.
* configure.in: post-release bump to 2.17.1.
2006-10-07 22:03:10 +00:00
Thomas James Alexander Thurman
5d33a1bbb8 =================================================
metacity-2.17.0 archives ready for distribution:
metacity-2.17.0.tar.gz
=================================================
2006-10-07 22:01:15 +00:00
Thomas James Alexander Thurman
9da34955f7 removed hide_buttons. Closes #360498.
* src/themes/Crux/metacity-theme-2.xml: removed hide_buttons.
        Closes #360498.
2006-10-07 21:19:40 +00:00
Thomas James Alexander Thurman
536bb240ef added myself.
* MAINTAINERS: added myself.
2006-10-07 21:11:47 +00:00
Thomas James Alexander Thurman
ef1c6e9214 described new theme format.
* doc/theme-format.txt: described new theme format.

        * src/themes/Bright, src/themes/Crux: added version 2 themes.
2006-10-07 17:21:05 +00:00
Thomas James Alexander Thurman
90359a5346 Added "above" to the list of flags a frame can have, so that we know when
* common.h: Added "above" to the list of flags a frame can have, so
	that we know when to mark it as always on top.  Added six grab ops,
	one to do and one to undo each of the three new titlebar buttons
	(shade, above, stick).  Added six new button functions, similarly.
	(#96229)

        * frame.c (meta_frame_get_flags): If a frame has the WM_STATE_ABOVE X
         attribute, set META_FRAME_ABOVE in its flags.

        * frames.c (meta_frames_apply_shapes): Allow variable amounts of
         rounding. (#113162)

        * frames.c (show_tip_now, meta_frames_paint_to_drawable, control_rect,
	 get_control): extend handling of existing buttons to the
         3*2 new kinds of button. (#96229)

        * frames.c (meta_frames_button_press_event): translate clicks on the 3*2
         new kinds of button to the new grab ops. (#96229)

        * frames.c (meta_frames_button_release_event): implement the various
        actions for the 3*2 new kinds of button. (#96229)

        * frames.c (meta_frames_update_prelit_control,
         meta_frames_motion_notify_event): extend existing motion
         notifications for buttons to the 3*2 new kinds of button. (#96229)

        * frames.c (meta_frames_set_window_background): handle specified
         background colours and alpha transparency. (#151261)

        * frames.h (MetaFrameControl): New control types for the 3*2 new kinds
	 of button.  (#96229)

        * iconcache.[ch] (meta_read_icons): use theme's fallback icons if a
	 window has no icon; use metacity's fallback icons only if the theme
         does not provide any. (#11363)

        * iconcache.[ch] (meta_invalidate_default_icons (new function)): clear
         icon cache on windows using default icons, and update them. (#11363)

        * main.c (main): added \n to error message.

        * prefs.c (button_function_from_string): extend for 3 new button
	 types. (#96229)

        * prefs.c (button_opposite_function (new function)): return a button
         function's inverse (shade -> unshade, etc) (#96229)

        * prefs.c (update_button_layout): allocate space for a button's
	 inverse, if it has one. (#96229)

        * theme-parser.c (ParseState): add state for fallback icons (#11363)

        * theme-parser.c (ParseInfo): add format_version; remove
         menu_icon_* (#114305)

        * theme-parser.c (parse_positive_integer): add lookup for integer
	 constants (#331356)

        * theme-parser.c (parse_rounding (new function)): parse window
	 rounding amount (#113162)

        * theme-parser.c (parse_alpha): don't set error if the number can't
	 be parsed since it'll already be set; change tolerance in comparison
	 from 1e6 to 1e-6

        * theme-parser.c (parse_color (new function)): parse colour, including
	 possible constant lookup.

        * theme-parser.c (parse_toplevel_element): allow defining of various
	new kinds of constant; allow
	hide_buttons (#121639) and more detailed rounding attributes on
	<frame_geometry> (#113162); allow background and alpha attributes on
	<frame_style>; (#151261) remove support for <menu_icon> except as
	stub; (#114305) add support for loading stock images (#113465); add
        support for <fallback>. (#11363))

        * theme-parser.c (parse_draw_op_element): add from and to attribute
         for arcs. (#121603)

        * theme-parser.c (parse_style_element): add check for theme version
         supporting a button function. (#96229)

        * theme-parser.c (parse_style_set_element): add ability for shaded
	 windows to be resizable (#114304)

        * theme-parser.c (meta_theme_load): add theme versioning routine.

        * theme.c ( meta_frame_layout_get_borders): return rectangles for
	 the new 3*2 kinds of button, except where they're
         inapplicable. (#96229)

        * theme.c (meta_frame_layout_calc_geometry): don't format buttons on
	windows with no buttons (#121639); strip the 3*2 new kinds of button
	correctly (#96229); allow variable amounts of rounding (#113162).

        * theme.c (meta_frame_style_new): set alpha to 255 by
        default. (#151261)

        * theme.c (meta_frame_style_unref): free colour spec if
        allocated. (#151261)

        * theme.c (meta_frame_style_validate): it's only an error not to
        include a button if that button is valid in the current
        theme. (#96229)

        * theme.c (button_rect): return rectangles for the new 3*2 kinds
	of button. (#96229)

        * theme.c (meta_frame_style_set_unref): free differently resizable
	shaded styles. (#114304)

        * theme.c (get_style): look up differently resizable styles
        for shaded windows. (#114304)

        * theme.c (free_menu_ops (removed function), get_menu_icon
	 (removed function), meta_theme_draw_menu_icon (removed function),
         meta_menu_icon_type_from_string (removed function),
         meta_menu_icon_type_to_string (removed function),
         meta_theme_free, meta_theme_validate): removed menu icon code. (#114305)

        * theme.c (meta_theme_load_image): add size_of_theme_icons
	parameter. (#113465)

        * theme.c (meta_theme_define_color_constant (new function),
        meta_theme_lookup_color_constant (new function)): allow
        definition of colour constants. (#129747)

        * theme.c (meta_button_type_from_string, meta_button_type_to_string):
        add the 3*2 new kinds of button. (#96229)

        * theme.c (meta_theme_earliest_version_with_button (new function)):
        return the theme version each button was introduced in. (#96229)

        * theme.h ( MetaFrameLayout): add "hide_buttons" flag (#121639) and
	corner radiuses. (#113162)

        * theme.h (MetaFrameGeometry): add rectangles for the 3*2 new
	buttons. (#96229)

        * theme.h (MetaButtonType): the 3*2 new buttons. (#96229)

        * theme.h (MetaFrameStyle): add window_background_color and
        window_background_alpha so that we can specify background on a
        <frame_style>. (#151261)

        * theme.h (MetaFrameStyleSet): shaded_styles gets resize
	dimension. (#114304)

        * theme.h (MetaTheme): added format_version, color_constants
        hash, (#129747) fallback_icon and fallback_mini_icon, (#11363)
        and removed menu_icons. (#114305)

        * theme.h (META_THEME_ALLOWS (new macro)): return whether a theme
        supports a given feature. Also, several macros representing
        new features in v2.

        * ui.c (meta_ui_set_current_theme)): also invalidate default
        icons. (#11363)

        * window.[ch] (meta_window_update_icon_now)): became
	non-static. (#11363)
2006-10-07 16:56:47 +00:00
Elijah Newren
9e341dd4d8 Be nice to translators; remove unnecessary markup from strings marked for
2006-10-06  Elijah Newren  <newren gmail com>

	* src/metacity-dialog.c (kill_window_question): Be nice to
	translators; remove unnecessary markup from strings marked for
	translation (oops, I missed this in my review before previous
	commit)
2006-10-07 00:10:35 +00:00
Elijah Newren
2168cd3eb7 Patch from Bruno Boaventura to improve the "Force Quit" dialog. #121936
2006-10-06  Elijah Newren  <newren gmail com>

	* src/metacity-dialog.c (kill_window_question): Patch from Bruno
	Boaventura to improve the "Force Quit" dialog.  #121936
2006-10-06 22:02:48 +00:00
Elijah Newren
25910508ae Ignore edge resistance for size-increment windows when resizing with the
2006-10-02  Elijah Newren  <newren gmail com>

	Ignore edge resistance for size-increment windows when resizing
	with the keyboard.  #346782.

	* src/edge-resistance.c (apply_edge_resistance_to_each_side):
	ignore edge resistance for size-increment windows when resizing
	with the keyboard, (apply_edge_resistance_to_each_side,
	meta_window_edge_resistance_for_move,
	meta_window_edge_resistance_for_resize): pass a is_resize
	parameter as well
2006-10-02 22:48:40 +00:00
Elijah Newren
c4fa0d118c Don't require a push/pop trap around
2006-10-01  Elijah Newren  <newren gmail com>

	* src/display.c (meta_display_set_input_focus_window):
	* src/window.c (meta_window_focus):
	Don't require a push/pop trap around
	meta_display_set_input_focus_window(), but rather move the
	push/pop into that function surrounding the XSetInputFocus() call
	directly.  Follow up to #358514.
2006-10-02 04:08:33 +00:00
Josep Puigdemont i Casamajó
ca3ed6a1eb Updated Catalan translation. 2006-10-02 01:19:53 +00:00
Elijah Newren
0201fcfc6c Stick an emacs comment directive at the beginning of all the code files so
2006-10-01  Elijah Newren  <newren gmail com>

	* src/*.[ch]: Stick an emacs comment directive at the beginning of
	all the code files so that people using emacs will be more likely
	to get coding style correct in their patches.  We still need a
	similar vi directive.  #358866
2006-10-01 22:30:10 +00:00
Elijah Newren
07e4cacf14 Patch from Carlo Wood to ensure that maximized and minimized properties
2006-10-01  Elijah Newren  <newren gmail com>

	Patch from Carlo Wood to ensure that maximized and minimized
	properties are maintained across restarts.  #358042.

	* src/constraints.c (place_window_if_needed): fix up partial
	maximization handling and add minimize_after_placement handling.

	* src/display.[ch] (struct MetaDisplay, meta_display_open): add a
	new display->display_opening flag to allow handling startup
	differently where needed.

	* src/window-props.c (reload_net_wm_state): handle
	_net_wm_state_hidden as well, setting
	window->minimize_after_placement appropriately

	* src/window.[ch] (struct MetaWindow, meta_window_new_with_attrs):
	add a window->minimize_after_placement field

	* src/window.c (meta_window_new_with_attrs): only unminimize the
	window and its transients if the display isn't being opened,
	(unmaximize_window_before_freeing): don't reset the state unless
	the window is becoming withdrawn, if the screen is being closed be
	sure to save the unmaximized state of the window so the next
	window manager can restore it
2006-10-01 21:59:09 +00:00
Elijah Newren
79eb53bd53 surround the XDeleteProperty() call with a
2006-10-01  Elijah Newren  <newren gmail com>

	* src/window-props.c (set_title_text): surround the
	XDeleteProperty() call with a
	meta_error_trap_push/meta_error_trap_pop pair to prevent a crash
	when closing a remote instance of gedit (and perhaps other apps).
	#358514.
2006-10-01 21:36:10 +00:00
Elijah Newren
b694312f1c Fix longstanding focus bug with mouse (not sloppy) focus mode with popup
2006-10-01  Elijah Newren  <newren gmail com>

	Fix longstanding focus bug with mouse (not sloppy) focus mode with
	popup override-redirect windows, particularly mozilla and
	firefox's location bar autocompletion.  #357695.

	* src/display.c (event_callback -- EnterNotify & LeaveNotify events):
	for mouse focus, defocus the focused window when the mouse enters
	the desktop window rather than when the mouse leaves the focused
	window.

	* doc/how-to-get-focus-right.txt:
	update for the slightly nuanced definition of mouse focus (people
	without a DESKTOP window like nautilus get sloppy focus behavior
	now)
2006-10-01 18:10:24 +00:00
Alexander Shopov
3cca3f3ee9 Updated Bulgarian translation with bugfixes prompted by Yavor Doganov
2006-09-29  Alexander Shopov  <ash@contact.bg>

	* bg.po: Updated Bulgarian translation with
	bugfixes prompted by Yavor Doganov
2006-09-29 20:51:29 +00:00
Elijah Newren
b01408f358 Patch from Bruno Boaventura to add notes to remind translators to keep
2006-09-27  Elijah Newren  <newren gmail com>

	* src/menu.c (var menuitems): Patch from Bruno Boaventura to add
	notes to remind translators to keep translations in sync with
	libwnck.  #355620.
2006-09-28 00:32:23 +00:00
Elijah Newren
4fc6a7ce65 Fix some typos Bruno pointed out in his name 2006-09-28 00:10:26 +00:00
Gabor Kelemen
e657ef87ab Translation updated.
2006-09-21  Gabor Kelemen  <kelemeng@gnome.hu>

	* hu.po: Translation updated.
2006-09-21 15:39:38 +00:00
Runa Bhattacharjee
3bc5cc1ce7 Added Entry for Bengali India Translation Updation 2006-09-19 12:51:54 +00:00
Runa Bhattacharjee
49971fc1ef Updated Bengali India Translation 2006-09-19 12:51:14 +00:00
Elijah Newren
569ff8a34c Patch from Jens Granseuer to fix c89 cleanness, again. #356631.
2006-09-18  Elijah Newren  <newren gmail com>

	* src/window.c (meta_window_show): Patch from Jens Granseuer to
	fix c89 cleanness, again.  #356631.
2006-09-18 22:00:57 +00:00
Elijah Newren
2d73af1530 Ignore maximum size hints when maximizing. Should fix #327543 (see comment
2006-09-18  Elijah Newren  <newren gmail com>

	* src/constraints.c (constrain_maximization): Ignore maximum size
	hints when maximizing.  Should fix #327543 (see comment 4 and comment
	5).
2006-09-18 21:08:46 +00:00
Elijah Newren
470dc30174 avoid a compilation warning by making sure to return something. #348067
2006-09-18  Elijah Newren  <newren gmail com>

	* src/ui.c (filter_func): avoid a compilation warning by making
	sure to return something.  #348067
2006-09-18 20:27:26 +00:00
Thomas James Alexander Thurman
7dd25001ce Branched for Gnome 2.17. 2006-09-18 20:25:12 +00:00
Elijah Newren
9b0ba2f274 Remove extra spaces, other small changes 2006-09-18 19:45:15 +00:00
Thomas James Alexander Thurman
8938ea3fa1 post-release bump to 2.16.3
* configure.in: post-release bump to 2.16.3
2006-09-18 19:41:08 +00:00
Thomas James Alexander Thurman
df93236627 2.16.2 release
* NEWS: 2.16.2 release
2006-09-18 19:27:47 +00:00
Elijah Newren
5c587726ae Partial audit to fix timestamp usage. One step towards fixing #355180; see
2006-09-18  Elijah Newren  <newren gmail com>

	Partial audit to fix timestamp usage.  One step towards fixing
	#355180; see important comments in that bug.

	* src/core.[ch] (meta_core_unshade, meta_core_shade):
	* src/delete.c (meta_window_present_delete_dialog,
	  delete_ping_timeout_func):
	* src/display.[ch] (meta_display_open, meta_display_close,
	  event_callback, meta_display_begin_grab_op,
	  process_selection_clear, meta_display_unmanage_screen,
	  meta_display_unmanage_windows_for_screen):
	* src/frames.c (meta_frames_button_press_event):
	* src/keybindings.c (handle_toggle_shade):
	* src/main.c (main):
	* src/screen.[ch] (update_num_workspaces, meta_screen_new,
	  meta_screen_free, prefs_changed_callback):
	* src/window.[ch] (meta_window_free, finish_minimize,
	  implement_showing, meta_window_show, meta_window_maximize,
	  meta_window_make_fullscreen_internal,
	  meta_window_unmake_fullscreen, meta_window_shade,
	  meta_window_unshade, window_activate, send_sync_request,
	  meta_window_client_message, menu_callback,
	  meta_window_update_keyboard_resize):
	Remove usage of CurrentTime, meta_display_get_current_time() and
	meta_display_get_current_time_roundtrip() where possible, or
	document why it isn't possible, or at very least add a FIXME with
	some explanation of my laziness and what needs to be done.
2006-09-18 17:27:24 +00:00
Elijah Newren
87100b64d9 Patch from Maik Beckmann to remove compilation warnings. Fixes #355876.
2006-09-18  Elijah Newren  <newren gmail com>

	* src/spring-model.c (on_end_move, model_is_calm): Patch from Maik
	Beckmann to remove compilation warnings.  Fixes #355876.
2006-09-18 16:31:25 +00:00
Elijah Newren
def5a12ff0 Make detection of stable vs. unstable automatic and based upon the version
2006-09-18  Elijah Newren  <newren gmail com>

	* configure.in: Make detection of stable vs. unstable automatic
	and based upon the version number.  Partially based on patch from
	Christian Hamar in #356122.  Fixes #356122.
2006-09-18 16:18:37 +00:00
Wouter Bolsterlee
31f0853ca8 Dutch translation updated by Wouter Bolsterlee
2006-09-15  Wouter Bolsterlee  <wbolster@gnome.org>

	* nl.po: Dutch translation updated by Wouter Bolsterlee
2006-09-15 14:29:48 +00:00
Matic Zgur
fb41e2bc8d Updated Slovenian translation.
2006-09-15  Matic Zgur  <mr.zgur@gmail.com>

	* sl.po: Updated Slovenian translation.
2006-09-15 00:03:39 +00:00
Francisco Javier F. Serrador
aa077d95c0 Updated Spanish translation.
2006-09-14  Francisco Javier F. Serrador  <serrador@openshine.com>

	* es.po: Updated Spanish translation.
2006-09-14 12:03:35 +00:00
Elijah Newren
b004ef4e15 update -- we depend on gtk+ >= 2.10 since Vincent's July patches for
2006-09-13  Elijah Newren  <newren gmail com>

	* HACKING: update -- we depend on gtk+ >= 2.10 since Vincent's
	July patches for #348633.
2006-09-14 05:06:10 +00:00
Alexander Shopov
7c58ecb657 Updated Bulgarian translation by Alexander Shopov <ash@contact.bg>
2006-09-14  Alexander Shopov  <ash@contact.bg>

	* bg.po: Updated Bulgarian translation by
	Alexander Shopov <ash@contact.bg>
2006-09-14 04:59:09 +00:00
Elijah Newren
8144a962e7 Patch from Thomas Andersen to make windows be stacked correctly before
2006-09-13  Elijah Newren  <newren gmail com>

	* src/window.c (meta_window_show): Patch from Thomas Andersen to
	make windows be stacked correctly before showing them, to prevent
	flicker with focus stealing prevention.  #332385.
2006-09-13 22:21:19 +00:00
Josep Puigdemont i Casamajó
8c3bce3f98 Updated Catalan translation. 2006-09-13 19:50:58 +00:00
Elijah Newren
3b0478776d Fix issues on 64-bit machines with timestamps by using guint32 (like gtk+
2006-09-13  Elijah Newren  <newren gmail com>

	* src/common.h (MetaWindowMenuFunc):
	* src/core.[ch] (meta_core_user_lower_and_unfocus,
	  meta_core_user_focus, meta_core_show_window_menu,
	  meta_core_begin_grab_op, meta_core_end_grab_op):
	* src/delete.c (delete_ping_reply_func, delete_ping_timeout_func,
	  meta_window_delete):
	* src/display.[ch] (struct MetaDisplay, struct MetaPingData,
	  sanity_check_timestamps, meta_display_open, event_callback,
	  meta_spew_event, meta_display_set_grab_op_cursor,
	  meta_display_begin_grab_op, meta_display_end_grab_op,
	  meta_display_ping_timeout, meta_display_ping_window,
	  process_pong_message, timestamp_too_old,
	  meta_display_set_input_focus_window):
	* src/keybindings.[ch] (grab_keyboard, ungrab_keyboard,
	  meta_screen_grab_all_keys, meta_window_grab_all_keys,
	  meta_window_ungrab_all_keys, error_on_generic_command,
	  error_on_command, error_on_terminal_command):
	* src/metacity-dialog.c (on_realize, warn_about_no_sm_support,
	  error_about_command, main):
	* src/screen.[ch] (struct _MetaScreen, meta_screen_new,
	  meta_screen_show_desktop, meta_screen_apply_startup_properties):
	* src/session.c (warn_about_lame_clients_and_finish_interact):
	* src/window.[ch] (struct _MetaWindow,
	  intervening_user_event_occurred, window_activate,
	  meta_window_delete, meta_window_focus,
	  meta_window_send_icccm_message, meta_window_client_message,
	  menu_callback, meta_window_show_menu, struct EventScannerData,
	  check_use_this_motion_notify, meta_window_begin_grab_op,
	  meta_window_set_user_time):
	* src/workspace.[ch] (focus_ancestor_or_mru_window,
	  meta_workspace_activate_with_focus, meta_workspace_activate,
	  meta_workspace_focus_default_window,
	  focus_ancestor_or_mru_window):
	Fix issues on 64-bit machines with timestamps by using guint32
	(like gtk+ does) instead of Time.  #348305
2006-09-13 16:32:33 +00:00
Ilkka Tuohela
c53538b1c2 Updated Finnish translation 2006-09-13 15:26:15 +00:00
Rajesh Ranjan
2ba196b310 Updated Translation 2006-09-13 11:34:13 +00:00
Kwok-Koon Cheung
4beb9df364 Updated Chinese (Hong Kong) translation. Updated Chinese (Taiwan)
* zh_HK.po: Updated Chinese (Hong Kong) translation.
	* zh_TW.po: Updated Chinese (Taiwan) translation.
2006-09-13 10:40:53 +00:00
Ani Peter
6fb90bc723 Updated Malayalam translation 2006-09-13 10:28:30 +00:00
Felix I
dd86330ff8 Tamil Translation updated 2006-09-13 10:20:16 +00:00
Felix I
f9772ac685 Tamil Translation updated 2006-09-13 10:01:34 +00:00
Ankitkumar Rameshchandra Patel
312454150b Updated Translation 2006-09-13 06:01:09 +00:00
Elijah Newren
3fac671fc8 patch from Bruno Boaventura de Oliveira to fix a compiler warning about
2006-09-12  Elijah Newren  <newren gmail com>

	* src/theme.c (meta_gtk_arrow_from_string,
	meta_gtk_arrow_to_string): patch from Bruno Boaventura de Oliveira
	to fix a compiler warning about not handling GTK_ARRROW_NONE.
	#355490.
2006-09-13 03:14:16 +00:00
Ahmad Riza H Nst
dc5dff7e9a Updated.
2006-09-13  Ahmad Riza H Nst  <rizahnst@eriagempita.co.id>

        * id.po: Updated.
2006-09-13 02:01:57 +00:00
Elijah Newren
199e2b6988 Patch from Bruno Boaventura de Oliveira Lacerda to fix warnings about
2006-09-11  Elijah Newren  <newren gmail com>

	* src/compositor.c: Patch from Bruno Boaventura de Oliveira
	Lacerda to fix warnings about unused function and global var.
	#355489.
2006-09-13 01:14:03 +00:00
Vladimer Sichinava
d3f1996655 Error correction 2006-09-13 00:51:46 +00:00
Thomas James Alexander Thurman
277236f730 2.16.2 post-release bump 2006-09-11 18:54:37 +00:00
Thomas James Alexander Thurman
0d06471910 2.16.1 release 2006-09-11 18:50:51 +00:00
David Lodge
4de104f9cf Updated English (British) translation.
2006-09-10  David Lodge <dave@cirt.net>

	* en_GB.po: Updated English (British) translation.
2006-09-10 10:24:10 +00:00
Elijah Newren
189c8b9b11 Fix build when XKB not found. #354211
2006-09-09  Elijah Newren  <newren gmail com>

	* src/display.c (meta_display_open): Fix build when XKB not found.
	#354211
2006-09-10 04:29:14 +00:00
Elijah Newren
555d7dc90c Avoid a stuck grab, preventing focus from being transferred between
2006-09-09  Elijah Newren  <newren gmail com>

	Avoid a stuck grab, preventing focus from being transferred
	between windows.  Thanks to Fryderyk Dziarmagowski for steps to
	reproduce.  Fixes at least part of #354422.

	* src/display.c (meta_display_begin_grab_op,
	meta_display_end_grab_op): pass timestamp to
	meta_screen_ungrab_all_keys, meta_screen_ungrab_all_keys, and
	meta_window_ungrab_all_keys

	* src/keybindings.[ch] (grab_keyboard, ungrab_keyboard): add a
	timestamp parameter and remove call to
	meta_display_get_current_time(), (meta_screen_grab_all_keys,
	meta_screen_ungrab_all_keys, meta_window_ungrab_all_keys): add a
	timestamp parameter and pass it on to grab_keyboard and
	ungrab_keyboard
2006-09-09 20:19:56 +00:00
Priit Laes
2ab4a35c53 Translation updated by Ivar Smolin.
2006-09-08  Priit Laes  <plaes@cvs.gnome.org>

	* et.po: Translation updated by Ivar Smolin.
2006-09-08 14:12:12 +00:00
Elijah Newren
b62aba4401 make sure windows returning from fullscreen mode are constrained to be
2006-09-07  Elijah Newren  <newren gmail com>

	* src/constraints.c (update_onscreen_requirements): make sure
	windows returning from fullscreen mode are constrained to be
	"onscreen"; fixes #353699.
2006-09-07 23:05:00 +00:00
Colin Watson
3800dac492 Clear window->xtransient_for after emitting the invalid window warning.
2006-08-30  Colin Watson  <cjwatson@ubuntu.com>

	* src/window-props.c (reload_transient_for): Clear
	window->xtransient_for after emitting the invalid window warning.
	#353540
2006-09-07 23:00:27 +00:00
Elijah Newren
bba4df7187 Patch from Bruno Boaventura de Oliveira Lacerda to replace
2006-09-07  Elijah Newren  <newren gmail com>

	* src/metacity-dialog.c: Patch from Bruno Boaventura de Oliveira
	Lacerda to replace copy_of_gdk_x11_window_set_user_time() with
	gdk_x11_window_set_user_time().  We've long since adopted gtk+ >=
	2.6 as a dependency.  #352293
2006-09-07 22:57:36 +00:00
Matic Zgur
c808195eef Updated Slovenian translation.
2006-09-07  Matic Zgur  <mr.zgur@gmail.com>

	* sl.po: Updated Slovenian translation.
2006-09-07 20:13:26 +00:00
Nickolay V. Shmyrev
cb595266fd Updated Russian translation by Vasiliy Faronov <qvvx@yandex.ru>.
2006-09-04  Nickolay V. Shmyrev  <nshmyrev@yandex.ru>

	* ru.po: Updated Russian translation by
	Vasiliy Faronov <qvvx@yandex.ru>.
2006-09-04 21:59:35 +00:00
Thomas James Alexander Thurman
3ba437d508 2.16.1 2006-09-04 19:49:08 +00:00
Thomas James Alexander Thurman
28ae1b40df post-release version bump to 2.16.1 2006-09-04 17:31:41 +00:00
Thomas James Alexander Thurman
b2352cf9e2 pre 2.16.0 2006-09-04 17:22:20 +00:00
Rahul Bhalerao
3d62fedfa2 Updated translation 2006-09-04 15:04:36 +00:00
Runa Bhattacharjee
6c6d871abc Added Entry for Bengali India Translation Updation 2006-09-04 14:18:26 +00:00
Runa Bhattacharjee
39b7e2ed79 Updated Bengali India Translation 2006-09-04 14:18:08 +00:00
Kwok-Koon Cheung
dc856f0fdb Updated Chinese (Hong Kong) translation from Woodman Tuen
* zh_HK.po: Updated Chinese (Hong Kong) translation from
	  Woodman Tuen <wmtuen@gmail.com>.
	* zh_TW.po: Updated Chinese (Taiwan) translation from
	  Woodman Tuen <wmtuen@gmail.com>.
2006-09-04 12:30:02 +00:00
Kostas Papadimas
39cb0ee987 Updated Greek translation 2006-09-04 10:50:53 +00:00
Ani Peter
78634dd4b8 Updated Malayalam translation 2006-09-04 09:44:38 +00:00
Rahul Bhalerao
7c8f91a3a9 Updated translation 2006-09-03 21:23:22 +00:00
Christophe Merlet
e199b946ee Updated French translation. 2006-09-03 17:15:49 +00:00
Danilo Šegan
6b8a3a1af5 Updated Serbian by Goran Rakić. 2006-09-03 16:29:45 +00:00
Gabor Kelemen
445e982894 Translation updated.
2006-09-03  Gabor Kelemen  <kelemeng@gnome.hu>

	* hu.po: Translation updated.
2006-09-03 12:32:32 +00:00
Gabor Kelemen
d80721697d Translation updated.
2006-09-03  Gabor Kelemen  <kelemeng@gnome.hu>

	* hu.po: Translation updated.
2006-09-03 11:57:30 +00:00
Kwok-Koon Cheung
d818e18d81 recover changelog 2006-09-01 10:48:58 +00:00
Kwok-Koon Cheung
f89973dbfc Add missing entries into LINGUAS 2006-09-01 10:02:05 +00:00
Maxim Dziumanenko
c35fbb3f5f Update Ukrainian translation.
2006-09-01  Maxim Dziumanenko <dziumanenko@gmail.com>

	* Update Ukrainian translation.
2006-09-01 09:17:25 +00:00
Leonid Kanter
d9b4fdd845 Fixed two typos 2006-09-01 09:17:06 +00:00
Duarte Loreto
0484ecd355 Updated Portuguese translation.
2006-09-01  Duarte Loreto <happyguy_pt@hotmail.com>

	* pt.po: Updated Portuguese translation.
2006-08-31 23:42:15 +00:00
Josep Puigdemont i Casamajó
277af5e783 Updated Catalan translation. 2006-08-30 16:18:15 +00:00
Gintautas Miliauskas
3274df7df1 Updated Lithuanian translation. 2006-08-27 13:46:10 +00:00
Elijah Newren
7a68a53322 Patch from Jens Granseuer to fix the build with c89/gcc 2.95.
2006-08-22  Elijah Newren  <newren gmail com>

        * src/metacity-dialog.c (main): Patch from Jens Granseuer to fix
        the build with c89/gcc 2.95.
2006-08-22 17:29:36 +00:00
Elijah Newren
c7c4efa1c1 Oops, forgot to mention the translators in the 2.15.34 release; add them
2006-08-21  Elijah Newren  <newren gmail com>

	* NEWS: Oops, forgot to mention the translators in the 2.15.34
	release; add them retroactively
2006-08-21 22:07:58 +00:00
Elijah Newren
e38609f4a2 post-release version bump to 2.15.55
2006-08-21  Elijah Newren  <newren gmail com>

	* configure.in: post-release version bump to 2.15.55
2006-08-21 22:02:24 +00:00
Elijah Newren
9d320ba435 2.15.34 release
2006-08-21  Elijah Newren  <newren gmail com>

	* NEWS:	2.15.34 release
2006-08-21 21:59:54 +00:00
Elijah Newren
18107f5f36 Patch from Thomas Andersen to fix metacity-dialog handling of arguments.
2006-08-21  Elijah Newren  <newren gmail com>

	Patch from Thomas Andersen to fix metacity-dialog handling of
	arguments.  #340690

	* src/metacity-dialog.c (main): replace hackish argument parsing
	with GOption parsing.  Much nicer.  :)
2006-08-21 19:16:08 +00:00
Elijah Newren
88b9efd0b7 Patch from Ed Catmur to fix keybindings with hex-values (coming from
2006-08-21  Elijah Newren  <newren gmail com>

	Patch from Ed Catmur to fix keybindings with hex-values (coming
	from special extended keyboard keys).  #140448.

	* src/keybindings.c (struct _MetaKeyBinding): change keycode from
	KeyCode to unsigned int (comment from Elijah: why???),
	(reload_keycodes): only grab keysyms for keybindings that have
	them, (count_bindings, rebuild_binding_table): bindings can be
	valid either due to a valid keysym or a valid keycode,
	(display_get_keybinding_action, meta_change_keygrab,
	process_tab_grab, process_workspace_switch_grab): handle keycode
	as well as keysym

	* src/prefs.[ch] (struct MetaKeyCombo, update_binding,
	update_list_binding): handle keycode as well as keysym

	* src/ui.[ch] (meta_ui_accelerator_parse): new function special
	cases strings of the form "0x[0-9a-fA-F]+" and otherwise calling
	gtk_accelerator_parse(), (meta_ui_parse_accelerator,
	meta_ui_parse_modifier): call meta_ui_accelerator_parse instead of
	gtk_accelerator_parse.
2006-08-21 19:06:26 +00:00
Vladimer Sichinava
b42e848986 Updated Georgian translation 2006-08-21 19:03:41 +00:00
Elijah Newren
7489dbc34e Allow drags & resizes to be reverted by hitting escape. Based on patch
2006-08-21  Elijah Newren  <newren gmail com>

	Allow drags & resizes to be reverted by hitting escape.  Based on
	patch from Thomas Andersen.  #126497.

	* src/display.c (grab_op_is_mouse_only): new function,
	(meta_display_begin_grab_op): grab the keyboard when moving or
	resizing too so that we can get escape keypresses

	* src/display.h (struct _MetaDisplay): add a comment to remind
	that grab_was_cancelled is only used in wireframe mode

	* src/keybindings.[ch] (process_mouse_move_resize_grab): add new
	function for handling keypresses during mouse-only moving and
	resizing, (meta_window_grab_all_keys): add a timestamp parameter
	and pass it to meta_window_focus(),
	(meta_display_process_key_event): make sure
	process_mouse_move_resize_grab() gets called when needed,
	(process_keyboard_move_grab, process_keyboard_resize_grab):
	rearrange some code slightly and improve the comments to make it
	more readable
2006-08-21 18:38:21 +00:00
Elijah Newren
4c96afba71 Fix several bugs with handling of fullscreen windows, causing them to not
2006-08-21  Elijah Newren  <newren gmail com>

	Fix several bugs with handling of fullscreen windows, causing them
	to not actually be fullscreen.  #343115 (and also #346927,
	#350547, #351643, the recent additional WINE-related issue
	mentioned on the mailing list, and probably others...)

	* src/constraints.c (setup_constraint_info): if a window tries to
	resize to fullscreen-size and it has a fullscreen function but
	isn't actually marked as fullscreen then assist it by marking it
	as such, (constrain_fully_onscreen, constrain_titlebar_visible):
	ignore this constraint for fullscreen windows since such windows
	have a separate specialized constraint

	* src/stack.c (window_is_fullscreen_size, get_standalone_layer):
	remove the old window_is_fullscreen_size() hack for detecting
	windows to treat as fullscreen since it doesn't work well with the
	new constraints framework (i.e. we needed a slightly different
	hack)

	* src/window.[ch] (meta_window_new_with_addrs): shuffle the order
	of adding the window to the stack and moveresizing the window
	since moveresizing can cause stack changes if the window's initial
	size is fullscreen size, (meta_window_make_fullscreen,
	meta_window_make_fullscreen_internal): split
	meta_window_make_fullscreen() similar to meta_window_maximize() so
	that constraints can make use of it
2006-08-21 18:08:05 +00:00
Baptiste Mille-Mathias
7ea55a1e54 Update the pixmap to a new one which fit better with the other pixmaps of
2006-08-19 Baptiste Mille-Mathias <baptiste.millemathias@gmail.com>

        * src/stock_delete.png: Update the pixmap to a new one which
        fit better with the other pixmaps of the menu. First patch in
        metacity, woot! #345498
2006-08-20 19:44:52 +00:00
Daniel Nylander
77a207c9cc Updated Swedish translation.
2006-08-20  Daniel Nylander <po@danielnylander.se>

	* sv.po: Updated Swedish translation.
2006-08-20 14:36:24 +00:00
Ahmad Riza H Nst
1bea8254ba Updated.
2006-08-19  Ahmad Riza H Nst  <rizahnst@eriagempita.co.id>

        * id.po: Updated.
2006-08-19 04:35:14 +00:00
Elijah Newren
1f5130dc93 Patch from Willie Walker to restore the part of the patch that I should
2006-08-18  Elijah Newren  <newren gmail com>

	* src/tabpopup.c (meta_ui_tab_popup_new): Patch from Willie Walker
	to restore the part of the patch that I should not have reverted
	in #123372, in order to fix accessibility.  #350624
2006-08-18 17:32:58 +00:00
Alexander Shopov
1d92dcdadd Updated Bulgarian translation by Alexander Shopov <ash@contact.bg>
2006-08-18  Alexander Shopov  <ash@contact.bg>

	* bg.po: Updated Bulgarian translation by
	Alexander Shopov <ash@contact.bg>
2006-08-18 14:34:31 +00:00
Jordi Mas
e7b08814ec Fixes small mistakes in Catalan translation 2006-08-17 18:05:44 +00:00
Gabor Kelemen
69e245b237 Translation updated.
2006-08-16  Gabor Kelemen  <kelemeng@gnome.hu>

	* hu.po: Translation updated.
2006-08-16 02:26:46 +00:00
Wouter Bolsterlee
9ad9fd4290 Translation updated by Wouter Bolsterlee.
2006-08-13  Wouter Bolsterlee  <uws+gnome@xs4all.nl>

	* nl.po: Translation updated by Wouter Bolsterlee.
2006-08-12 22:09:56 +00:00
Elijah Newren
c47e425527 Get the date right, sheesh. You'd think I'd remember what the day was today. 2006-08-09 19:19:28 +00:00
Elijah Newren
9051b70d40 Vytautus Liuolia totally rocks; he tested and debugged and tracked down
2006-08-07  Elijah Newren  <newren gmail com>

	* src/window.c (intervening_user_event_occurred): Vytautus Liuolia
	totally rocks; he tested and debugged and tracked down where we
	were using the focus window's net_wm_user_time even when it was
	uninitialized.  This may fix bug 311868 and others I've heard
	about (with Valknut, IIRC).  It definitely fixes the issues Vytas
	was seeing with his single instance library.  :-)
2006-08-09 18:32:30 +00:00
Funda Wang
43b5985c20 Updated metacity zh_CN translation. 2006-08-09 14:47:47 +00:00
Wouter Bolsterlee
0ec2133e81 Translation updated by Wouter Bolsterlee.
2006-08-08  Wouter Bolsterlee  <uws+gnome@xs4all.nl>

	* nl.po: Translation updated by Wouter Bolsterlee.
2006-08-08 21:57:52 +00:00
Elijah Newren
9fe845581b patch from Stéphane Rosi to allow moving maximized windows between
2006-08-07  Elijah Newren  <newren gmail com>

	* src/constraints.c (setup_constraint_info): patch from Stéphane
	Rosi to allow moving maximized windows between xineramas again.
	#323820
2006-08-08 00:36:04 +00:00
Elijah Newren
fc23f9b22f post-release version bump to 2.15.34
2006-08-07  Elijah Newren  <newren gmail com>

	* configure.in: post-release version bump to 2.15.34
2006-08-07 23:54:01 +00:00
Elijah Newren
cbd0312605 2.15.21 release
2006-08-07  Elijah Newren  <newren gmail com>

	* NEWS:	2.15.21 release
2006-08-07 23:53:03 +00:00
Elijah Newren
57bedc42a4 Add a constrain_titlebar_visible constraint; should fix both bug 333328
2006-08-07  Elijah Newren  <newren gmail com>

	Add a constrain_titlebar_visible constraint; should fix both bug
	333328 and bug 345522.  Not perfect (minor annoying snap pulling
	windows back onscreen, plus an ugly hack almost as bad as the old
	one), but tarballs are due in less than half an hour.  ;-)

	* src/boxes.[ch] (meta_rectangle_overlaps_with_region):
	new function

	* src/constraints.c (constrain_titlebar_visible): new function,
	  (enum ConstraintPriority, array all_constraints,
	  update_onscreen_requirements): various small changes to
	  accomodate the new function

	* src/edge-resistance.c: remove the infinite edge resistance,
	which was a big hack of a way to workaround the lack of a
	titlebar_visible constraint

	* src/window.[ch] (MetaWindow): new require_titlebar_visible
	bitfield, (meta_window_new_with_attrs): initialized here
2006-08-07 23:34:55 +00:00
Elijah Newren
acc6c97997 Patch from Chris Ball to not minimize in response to double clicks on the
2006-08-07  Elijah Newren  <newren gmail com>

	* src/frames.c (meta_frames_button_press_event): Patch from Chris
	Ball to not minimize in response to double clicks on the titlebar
	when minimiziation should not be allowed.  #347377
2006-08-07 22:06:25 +00:00
Elijah Newren
dcef402d68 Patch from Björn Lindqvist to fix button lighting with dragged clicks.
2006-08-07  Elijah Newren  <newren gmail com>

	Patch from Björn Lindqvist to fix button lighting with dragged
	clicks.  #321474.

	* src/frames.c (meta_frames_button_press_event): update the
	prelit_control, (meta_frames_button_release_event): some code
	refactoring to simplify things a bit, and make sure to update the
	prelit_control
2006-08-07 21:04:44 +00:00
Elijah Newren
d4973e8d1b Patch from Thomas Andersen to return the window to maximized state if the
2006-08-07  Elijah Newren  <newren gmail com>

	* src/keybindings.c (process_keyboard_move_grab): Patch from
	Thomas Andersen to return the window to maximized state if the
	window was "shaken loose" from maximized state during a resize but
	the resize is later aborted.  #346719.
2006-08-07 19:24:41 +00:00
Elijah Newren
1dd78e38ff Just a couple more details to explain why MetaButtonSpace is used 2006-08-07 18:20:37 +00:00
Elijah Newren
adc46fc970 Patch from Vytautas Liuolia to react to _NET_STARTUP_ID changes, as
2006-08-07  Elijah Newren  <newren gmail com>

	Patch from Vytautas Liuolia to react to _NET_STARTUP_ID changes,
	as proposed for the new startup-notification/EWMH spec.  #347515

	* src/window-props.c (reload_net_startup_id): be sure to act on
	the new id instead of just recording it

	* src/window.[ch] (window_activate, meta_window_activate,
	  meta_window_activate_with_workspace, meta_window_client_message):
	change window_activate() to take a workspace parameter instead of
	hardcoding to the current workspace, add
	meta_window_activate_with_workspace() function needed by
	reload_net_startup_id().
2006-08-07 18:08:27 +00:00
Thomas James Alexander Thurman
3917d818f5 (#97703) 2006-08-07 18:02:33 +00:00
Thomas Thurman
cc5def1021 add new MetaButtonSpace struct; use it for close_rect, max_rect, min_rect
2006-08-07  Thomas Thurman  <thomas@thurman.org.uk>

        * src/frames.h: add new MetaButtonSpace struct; use it for
        close_rect, max_rect, min_rect and menu_rect.

        * src/frames.c (control_rect, get_control): modify to support
        the new fields in MetaButtonSpace.

        * src/theme.c (meta_frame_layout_get_borders, rect_for_function,
        meta_frame_layout_calc_geometry, button_rect): add support for
        the new fields in MetaButtonSpace.
2006-08-07 18:01:21 +00:00
Elijah Newren
77a331a1e3 patch from Dmitry Timoshkov to make sure window features get recalculated
2006-08-07  Elijah Newren  <newren gmail com>

	* src/screen.c (meta_screen_resize_func): patch from Dmitry
	Timoshkov to make sure window features get recalculated when the
	screen is resized via XRandR.  Part of #346927.
2006-08-07 17:18:33 +00:00
Leonid Kanter
c12dc9de3c Updated Russian translation 2006-08-07 16:41:52 +00:00
Inaki Larranaga
ab7f789cb0 Fixed some typos.
2006-08-07  Inaki Larranaga  <dooteo@euskalgnu.org>

	* eu.po: Fixed some typos.
2006-08-07 15:56:52 +00:00
Elijah Newren
ae86fcd5b2 Fix ugly spacing 2006-08-04 22:33:42 +00:00
Elijah Newren
74d4768b8e Patch from Dmitry Timoshkov to fix the heuristic for determining if
2006-08-04  Elijah Newren  <newren gmail com>

	Patch from Dmitry Timoshkov to fix the heuristic for determining
	if windows can be made fullscreen (needed for WINE and possible
	also some legacy applications).  Part of #346927.

	* src/window.c (recalc_window_features): ignore window decoration
	when checking size for determing whether an unresizable window
	should be allowed ot be considered for fullscreening
2006-08-04 22:33:20 +00:00
Kjartan Maraas
fe74d5da13 Updated Norwegian bokmål translation.
2006-08-03  Kjartan Maraas  <kmaraas@gnome.org>

	* nb.po: Updated Norwegian bokmål translation.
2006-08-03 12:08:52 +00:00
Yair Hershkovitz
1fec6583ff updated hebrew translation 2006-08-03 08:15:31 +00:00
Jovan Naumovski
bf6da74e6a 2006-08-02 Jovan Naumovski <jovanna@cvs.gnome.org> * mk.po: Updated Macedonian Translation 2006-08-02 16:23:36 +00:00
Thomas James Alexander Thurman
e8fb842aad oops, forgot to add missing apostrophe. Punctuation is good. #336850. 2006-07-31 19:58:06 +00:00
Thomas James Alexander Thurman
76e4fd8a07 Make it so maximized windows do not have rounded corners. #336850. 2006-07-31 19:56:56 +00:00
Jakub Friedl
3cca3381ba Updated Czech translation.
2006-07-31  Jakub Friedl <jfriedl@suse.cz>

  * cs.po: Updated Czech translation.
2006-07-31 12:09:17 +00:00
Thomas James Alexander Thurman
7d8087f3e8 Fix another C89 vs. C99 issue. #347621. 2006-07-30 18:32:40 +00:00
Vincent Untz
419e063a24 also kill this
2006-07-26  Vincent Untz  <vuntz@gnome.org>

	* src/update-from-egg.sh: also kill this
2006-07-26 08:31:05 +00:00
Thomas James Alexander Thurman
05323ef21a #348633 2006-07-26 02:11:48 +00:00
Thomas James Alexander Thurman
6e4d6da191 Kill usage of libegg. #348633. 2006-07-26 02:06:17 +00:00
Elijah Newren
9c75b95146 Oops, small correction I missed by not saving before committing earlier 2006-07-24 22:07:12 +00:00
Thomas James Alexander Thurman
edfaf1a6bc post-release version bump to 2.15.21 2006-07-24 18:36:01 +00:00
Thomas James Alexander Thurman
1538ffa04c ==================================================
metacity-2.15.13 archives ready for distribution:
metacity-2.15.13.tar.gz
==================================================
2006-07-24 18:32:08 +00:00
Björn Lindqvist
3d661f9bc7 Grab Alt+Shift+Button1 as well to partially fix operation ordering issues
2006-07-24  Björn Lindqvist  <bjourne@gmail.com>

	* src/display.c (meta_display_grab_window_buttons): Grab
	Alt+Shift+Button1 as well to partially fix operation ordering
	issues when trying to snap-move windows.  Part of #112478.
2006-07-24 17:15:32 +00:00
Satoru SATOH
34662a6a3a Updated Japanese translation.
2006-07-23  Satoru SATOH <ss@gnome.gr.jp>

	* Updated Japanese translation.
2006-07-23 06:16:50 +00:00
Christophe Merlet
92dff14d55 Updated French translation. 2006-07-22 13:45:44 +00:00
Kostas Papadimas
61e1bb57e7 Updated Greek translation 2006-07-22 09:01:57 +00:00
Thomas James Alexander Thurman
5e85bf7210 Avoid a case where a struct's fields might be updated after it was freed.
* ui.[ch] (filter_func): Avoid a case where a struct's
fields might be updated after it was freed. #348067.
2006-07-22 01:45:21 +00:00
Christophe Merlet
85f9c499fb Updated French translation. 2006-07-21 16:40:05 +00:00
Hendrik Richter
42dd771506 Updated German translation.
2006-07-18  Hendrik Richter  <hendrikr@gnome.org>

	* de.po: Updated German translation.
2006-07-18 10:21:34 +00:00
Elijah Newren
8afa1da3a7 post-release version bump to 2.15.13
2006-07-10  Elijah Newren  <newren gmail com>

	* configure.in: post-release version bump to 2.15.13
2006-07-11 00:07:48 +00:00
187 changed files with 68900 additions and 43810 deletions

1654
ChangeLog

File diff suppressed because it is too large Load Diff

View File

@@ -39,10 +39,11 @@ Minimal Building/Testing Environment
You do not need to _install_ a development version of Metacity to
build, run and test it; you can run it from some temporary
directory. Also, you do not need to build all of Gnome in order to
build a development version of Metacity -- odds are, you can build
metacity from CVS without building any other modules.
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.6 with your distro, you should be able
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
@@ -182,7 +183,7 @@ Debugging information
To run metacity under valgrind, use options typical for any Gnome
program, such as
valgrind --logfile=metacity.log --tool=memcheck --num-callers=48 \
valgrind --log-file=metacity.log --tool=memcheck --num-callers=48 \
--leak-check=yes --leak-resolution=high --show-reachable=yes \
./src/metacity --replace
where, again, the backslashes mean to join all the stuff on the following

View File

@@ -1,11 +1,32 @@
Currently active maintainers
----------------------------
--------------------------------
Elijah Newren (newren gmail com)
- 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.
Havoc Pennington
E-mail: hp@redhat.com
Thomas Thurman (thomas thurman org uk)
- 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. ;-)
Elijah Newren
E-mail: newren@gmail.com
Søren Sandmann
E-mail: sandmann@redhat.com
Semi-active maintainers
--------------------------------
Havoc Pennington (hp redhat com)
- 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.
Important historical figureheads
--------------------------------
Rob Adams (readams readams net)
- Was the main maintainer of metacity for a while; particular areas
of focus included xinerama, placement, and an older version of the
constraints code. Still responds to bugs every once in a while.
Søren Sandmann (sandmann redhat com)
- Wrote most of the current compositing manager code + libcm

View File

@@ -1,7 +1,7 @@
SUBDIRS=src po doc
EXTRA_DIST=HACKING rationales.txt \
EXTRA_DIST = HACKING MAINTAINERS rationales.txt \
intltool-extract.in intltool-merge.in intltool-update.in
DISTCLEANFILES = intltool-extract intltool-merge intltool-update po/stamp-it po/.intltool-merge-cache

395
NEWS
View File

@@ -1,3 +1,398 @@
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
======
Thanks to Linus Torvalds, Yair Hershkovitz and Thomas Thurman for
improvements in this release.
- Lots of fixups for various alignments in RTL locales (Yair)
[#387893]
- Add code to configure what happens on right or middle click
of titlebar (Linus) [#408904]
- Fix layout for titlebars with mixed LTR/RTL scripts (Thomas)
[#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
======
- Prevent metacity from "forgetting" which machine a window is on
(Elijah) [#418552]
- Prevent nasty flickering an placement problem introduced in
metacity 2.19.2 (Elijah) [fix side-effect of change in #426519]
- Fix some uninitialized memory usage errors (Elijah) [#427385]
Translations
David Lodge (en_GB), Jorge González (es), Ignacio Casal Quinteiro (gl),
Daniel Nylander (sv)
2.19.3
======
Thanks to Magnus Therning, Elijah Newren, Thomas Thurman, and Bruno
Boaventura for improvements in this release.
- Add support for _NET_MOVERESIZE_WINDOW (Magnus, Elijah) [#344521]
- EWMH compliance: set _NET_WM_ALLOWED_ACTIONS so that pagers know
which actions we support (Elijah) [#115247]
- Fix crash with apps trying to open an insanely huge window
(Thomas) [#399529]
- Fix temporary hang/pause with libXt by making sure apps get a
ConfigureNotify on unmap (Elijah) [#399552]
- do not auto-maximize windows larger than the workarea in only a
single direction (Elijah) [#419810]
- Don't show the current workspace as a possible workspace to switch
to (Bruno) [#426791]
- Preserve stacking order across restarts (Elijah)
Translations
Khaled Hosny (ar), Kjartan Maraas (nb)
2.19.2
======
Thanks to Bastien Nocera, Thomas Thurman, and Elijah Newren for
improvements in this release.
- Add new control-center key bindings definitions (Bastien) [#420145]
- Prevent metacity from crashing when trying to use invalid themes
(Thomas) [#423855]
- Fix invalid free causing crash on metacity close introduced in
2.19.1 (Elijah) [#427385]
- Add special keybinding just for debugging spew marks, unbound and
not even listed in schemas (Elijah)
- Fix move/resize events in relation to combinations of
ConfigureRequest and WM_NORMAL_HINTS change notifications (Elijah)
[#426519]
- Remove what we believe to be an ancient attempt at working around
sloppy/mouse focus bugs that we believe have since been correctly
fixed. May fix some ugly race conditions. May also cause nasty
bugs in sloppy/mouse focus modes. Only one way to find
out... (Elijah) [#304430]
Translations
Raivis Dejus (lv)
2.19.1
======
Thanks to Jaap Haitsma, Linus Torvalds, Charlie Brej, Kjartan Maraas,
Arthur Taylor, Elijah Newren, Josselin Mouette, Havoc Pennington,
Benjamin Berg, and Carlo Wood for improvements in this release.
- new icon for the force-quit dialog (Jaap) [#396655]
- add configureable mouse click action abilities, and clean up lots of
related code (Linus) [#408899, #408902, others]
- add schemeas for middle and right click titlebar actions (Charlie)
[#408903]
- remove pango/pangox.h include since it's not needed and not
installed anymore (Kjartan)
- adjust rounded corners so that they fit nicely with the arcs
around them (Arthur) [#399373]
- fix session hang when metacity .sm file is missing (Josselin)
[#407981]
- add support for _NET_WM_USER_TIME_WINDOW in order to cut down on
context switches (Elijah, Havoc) [#354213]
- prevent nasty metacity/gdk interactions causing hangs with gtk
trunk (Elijah) [offshoots of #354213]
- fix button middle fallback and the prelight state (Benjamin) [#419043]
- Lots of code cleanup for the strut lists (Elijah)
- fix handling of unidirectional maximization and partial struts +
some miscellaneous cleanups (Carlo) [#358311]
- avoid some crashes when dragging windows partially offscreen
(Elijah) [#353513]
- avoid mousenav vs. keynav focus problems with the run application
dialog in mouse/sloppy focus modes (Elijah) [#374752]
- _NET_ACTIVE_WINDOW property on the root window should be a single
xwindow id, not two (Elijah)
- Fix unidirection unmaximization causing jumps (Elijah) [#355497]
- fix unfullscreening and unmaximizing with size increment/size
constraint windows (such as gnome-terminal) possibly not returning
to their "original position" (Elijah) [#329152]
- fix some issues with min/max and size increment constraints
(Elijah) [#418395]
- send synthetic configure notify events in response to appropriate
MapRequest events too (Elijah) [#322840]
Translations
Ihar Hrachyshka (be@latin), Jordi Mallach (ca), Jakub Friedl (cs),
norbu (dz), David Lodge (en_GB), Ivar Smolin (et), Gabor Kelemen (hu),
Luca Ferretti (it), Takeshi AIHANA (ja), Erdal Ronahi (ku), Gintautas
Miliauskas (lt), Jovan Naumovski (mk), Kjartan Maraas (nb), Reinout van
Schouwen (nl), wadim dziedzic (pl), raulpereira (pt_BR), Nickolay V.
Shmyrev (ru), Горан Ракић (sr), Woodman Tuen (zh_HK), Woodman Tuen (zh_TW)
2.17.5
======
Thanks to Bruno Boaventura, Mad Alex, and Thomas Thurman for
improvements in this release.
- make window menu arrangement more sensible. (Bruno) [#382962]
- unmaximise button keeps pressed appearance when moved off and
back. (Alex) [#395560]
- fix a couple of compositor crashes (Thomas) [#387761]
- new environment variables checked if the compositor is enabled;
see the new file doc/compositor-control.txt for details. (Thomas)
Translations
Djihed Afifi (ar), Ales Nyakhaychyk (be), Jordi Mallach (ca),
Jakub Friedl (cs), David Lodge (en_GB), Raivis Dejus (lv),
Kjartan Maraas (nb), Mugurel Tudor (ro), Daniel Nylander (sv),
Theppitak Karoonboonyanan (th)
2.17.3
======
Thanks to Christof Krüger, Federico Mena Quintero, Bruno Boaventura,
and Björn Lindqvist for improvements in this release.
- fix longstanding problem about windows flickering in and out of
maximised state when dragging between xineramas (Christof) [#358715]
- grab server when switching workspaces (Federico) [#381127]
- replace changing text on window menu with pairs of radio buttons
and checkboxes (Bruno, Björn) [#343108]
Translations
Kjartan Maraas (nb), Jakub Friedl (cs), Yuval Tanny (he), Ivar Smolin (et),
Duarte Loreto (pt), Francisco Javier F. Serrador (es)
2.17.2
======
Thanks to Priit Laes, Bruno Boaventura, Kjartan Maraas, Justin Mason,
Elijah Newren and Dan Mick for improvements in this release.
- implement handle_move_to_{side|corner}_* to allow the user to flip a
window to the side or corner of the screen. (Justin) [#317884]
- fix strict focus mode by picking up on res_class (Dan) [#361054]
- remove deprecated gtk stuff (Priit, Bruno)
- string fixes (Kjartan) [#363354, #363355]
Translations
Jakub Friedl (cs), Francisco Javier F. Serrador (es), Ilkka Tuohela (fi),
Christophe Merlet (RedFox) (fr), Kjartan Maraas (nb)
2.17.1
======
Thanks to Bruno Boaventura and Carlo Wood for improvements in this
release.
- sync metacity workspace previous with libwnck (Bruno) [#341893]
- fix cases when titlebar is allowed offscreen and shouldn't be, and
vice-versa (Carlo) [#333995]
Translations
Ilkka Tuohela (fi)
2.17.0
======
Thanks to Elijah Newren, Jens Granseuer, Bruno Boaventura, Carlo Wood,
and Thomas Thurman for changes in this release.
- version 2 of theme format: stick, shade and above buttons on titlebar,
variable rounding on corners, variable transparency on window
backgrounds, stock icons in themes, can remove all titlebar buttons
from certain classes of window, and more (Thomas) [#102547 and
dependencies]
- improve "Force Quit" dialog (Bruno) [#121936]
- ignore edge resistance when resizing with keyboard (Elijah) [#346782]
- maintain window size and placement across restarts (Carlo) [#358042]
- prevent crash when closing certain remote apps (Elijah) [#358514]
- longstanding mouse-focus bug fixed which affected firefox's
autocompletion (Elijah) [#357695]
- ignore maximum size constraints when maximising (Elijah) [#327543]
- warn translators to keep translations in sync with libwnck (Bruno)
[#355620]
- fixes for compilation warnings, etc (Elijah, Jens) [#348067, #356631]
Translators
Ivar Smolin (et), Gabor Kelemen (hu), Luca Ferretti (it),
Runa Bhattacharjee (bn_IN)
2.16.2
======
Thanks to Eljah Newren, Maik Beckmann, Christian Hamar, Thomas Andersen,
and Bruno Boaventura de Oliveira for changes in this release.
- partial audit to fix timestamp usage (Elijah) [part of #355180]
- remove compilation warnings (Maik) [#355876]; (Bruno) [#355490,
#355489]
- automatic detection of stable/unstable in configure script
(Christian/Elijah) [#356122]
- make windows be stacked correctly before showing them (Thomas)
[#332385]
- use guint32 for timestamps (Elijah) [#348305]
Translators
Wouter Bolsterlee (nl), Matic Žgur (sl), Francisco Javier F. Serrador (es),
Vladimir Petkov (bg), Jordi Mallach (ca), Ilkka Tuohela (fi),
Rajesh Ranjan (hi), Woodman Tuen (zh_HK, zh_TW), Ani Peter (ml),
Felix (ta), Ankit Patel (gu), Mohammad DAMT (id)
2.16.1
======
Thanks to Elijah Newren, Colin Watson, and Bruno Boaventura de Oliveira
Lacerda for changes in this release.
- fix stuck grab, letting focus be transferred between windows (Elijah)
[#354422 partial]
- windows returning from fullscreen are constrained to be onscreen
(Elijah) [#353699]
- Clear the transient_for flag of a window after emitting a warning
(Colin)
- Replace copy_of_gdk_x11_window_set_user_time() with the real thing
(Bruno) [#352293]
Translators
David Lodge (en_GB), Ivar Smolin (et), Matic Žgur (sl),
Vasiliy Faronov (ru)
2.16.0
==
Thanks to Jens Granseuer for changes in this release.
- Fix the build with c89/gcc 2.95.
Translators
Rahul Bhalerao (mr), Runa Bhattacharjee (bn_IN), Woodman Tuen
(zh_HK, zh_TW), Kostas Papadimas (el), Ani Peter (ml),
Jonathan Ernst (fr), Горан Ракић (sr, Gabor Kelemen (hu),
Maxim Dziumanenko (uk), Duarte Loreto (pt), Jordi Mallach (ca),
Gintautas Miliauskas (lt)
2.15.34
==
Thanks to Stéphane Rosi, Vytautus Liuolia, Will Walker, Baptiste
Mille-Mathias, Elijah Newren, Ed Catmur, and Thomas Andersen for fixes
in this release.
- allow moving maximized windows between xineramas again (Stéphane)
[#338660]
- fix an uninitialized-usage bug with net_wm_user_time that breaks
focus with new windows (Vytautus)
- re-fix accessibility events for the alt-tab popup (Will) [#350624]
- update the close pixmap to fit better with the other pixmaps of the
menu (Baptiste) [#345498]
- fix several fullscreen handling bugs I introduced, causing
fullscreen windows to not actually be shown fullscreen (Elijah)
[#343115]
- fix keybindings with hex-values, coming from special extended
keyboard keys (Ed) [#140448]
- fix metacity-dialog handling of arguments (Thomas) [#340690]
Translators
Vladimir Petkov (bg), Jordi Mallach (ca), Gabor Kelemen (hu),
Mohammad DAMT (id), Wouter Bolsterlee (nl), Daniel Nylander (sv),
Funda Wang (zh_CN)
2.15.21
==
Thanks to Vincent Untz, Jens Granseuer, Björn Lindqvist, Dmitry
Timoshkov, Thomas Thurman, Vytautas Liuolia, Thomas Andersen, Chris
Ball, and Elijah Newren for fixes in this release.
- kill usage of libegg (Vincent) [#348633]
- fix another C89 vs. C99 issue (Jens) [#347621]
- make it so maximized windows do not have rounded corners (Björn)
[#336850]
- fix the heuristic for determining if windows can be made
fullscreen, needed for WINE and possible also some legacy
applications (Dmitry) [#346927]
- make sure window features get recalculated when the screen is
resized via XRandR (Dmitry) [#346927]
- fitts' law fixes for titlebar buttons on maximized windows (Thomas
Thurman) [#97703]
- react to _NET_STARTUP_ID changes, as proposed for the new
startup-notification/EWMH spec (Vytautas) [#347515]
- return the window to maximized state if the window was "shaken
loose" from maximized state during a resize but the resize is later
aborted (Thomas Andersen) [#346719]
- fix button lighting with dragged clicks (Björn) [#321474]
- don't minimize in response to double clicks on the titlebar when
minimiziation should not be allowed (Chris) [#347377]
- fix some titlebar-not-on-screen constraint issues (Elijah)
[#333328, #345522]
Translators
Mahay Alam Khan (bn_IN), Jakub Friedl (cs), Iñaki Larrañaga
Murgoitio (eu), Yuval Tanny (he), Rajesh Ranjan (hi), Jovan
Naumovski (mk) Kjartan Maraas (nb), Leonid Kanter (ru)
2.15.13
==
Thanks to Björn Lindqvist and Thomas Thurman for improvements in this
release.
- grab alt+shift+button1 when trying to snap-move windows (Björn)
- avoid a case where memory is written after it's freed (Thomas)
Translators
Hendrik Richter (de), Kostas Papadimas (el), Jonathan Ernst (fr),
Satoru SATOH (ja)
2.15.8
==

7
README
View File

@@ -6,10 +6,11 @@ on UNIX keyboards.
The first release of Metacity was version 2.3. Metacity has no need for
your petty hangups about version numbers.
The stable releases so far are 2.4.x, 2.6.x, 2.8.[01], 2.8.1.x, 2.8.5-, 2.10.x,
2.12.x, 2.14.x.
The stable releases so far are 2.4.x, 2.6.x, 2.8.[01], 2.8.1.x, 2.8.5-,
2.10.x, 2.12.x, 2.14.x, 2.16.x.
Unstable branches are 2.3.x, 2.5.x, 2.8.2-4, 2.9.x, 2.11.x, 2.13.x, 2.15.x
Unstable branches are 2.3.x, 2.5.x, 2.8.2-4, 2.9.x, 2.11.x, 2.13.x,
2.15.x, 2.17.x.
COMPILING METACITY
===

View File

@@ -1,8 +1,14 @@
AC_PREREQ(2.50)
m4_define([metacity_major_version], [2])
m4_define([metacity_minor_version], [19])
# Fibonacci sequence for micro version numbering:
# 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987
AC_INIT([metacity], [2.15.8],
m4_define([metacity_micro_version], [34])
m4_define([metacity_version],
[metacity_major_version.metacity_minor_version.metacity_micro_version])
AC_INIT([metacity], [metacity_version],
[http://bugzilla.gnome.org/enter_bug.cgi?product=metacity])
AC_CONFIG_SRCDIR(src/display.c)
@@ -18,7 +24,7 @@ GETTEXT_PACKAGE=metacity
AC_SUBST(GETTEXT_PACKAGE)
AC_DEFINE_UNQUOTED(GETTEXT_PACKAGE,"$GETTEXT_PACKAGE",[Name of default gettext domain])
IT_PROG_INTLTOOL([0.35.0])
IT_PROG_INTLTOOL([0.34.90])
AC_PROG_CC
AC_ISC_POSIX
AC_HEADER_STDC
@@ -101,7 +107,7 @@ if test "x$GCC" = "xyes"; then
fi
changequote([,])dnl
METACITY_PC_MODULES='gtk+-2.0 >= 2.2.0 pango >= 1.2.0'
METACITY_PC_MODULES='gtk+-2.0 >= 2.10.0 pango >= 1.2.0'
AC_ARG_ENABLE(gconf,
AC_HELP_STRING([--disable-gconf],
@@ -213,7 +219,7 @@ if test x$enable_compositor = xyes; then
have_xcomposite=yes
echo "CompositeExt support forced on"
elif test x$enable_compositor = xauto; then
echo "Not building compositing manager by default now, must enable explicitly to get it. And it doesn't work, so don't bother unless you want to hack on it..."
echo "Not building compositing manager by default now, must enable explicitly to get it."
have_xcomposite=no
else
have_xcomposite=no
@@ -516,5 +522,13 @@ metacity-$VERSION:
Render: ${have_xrender}
Xcursor: ${have_xcursor}
"
echo "This is the UNSTABLE branch of metacity"
echo "Use 2.14.x for stable (gnome-2-14 branch in CVS)"
METACITY_MINOR_VERSION=metacity_minor_version
if test $(( $(echo $METACITY_MINOR_VERSION) %2)) == "1"; then
stable_version=$(( ($METACITY_MINOR_VERSION / 2) * 2))
echo "This is the UNSTABLE branch of metacity"
echo -n "Use 2.$stable_version.x for stable "
echo "(gnome-2-$stable_version branch in CVS)"
else
echo "This is the stable branch of metacity"
fi

View File

@@ -0,0 +1,46 @@
The compositor is the box of tricks inside the window manager which performs
special effects on the windows on your screen. Metacity's compositor is
under development. Your help is requested in finding and fixing bugs. This
document tells you how to configure Metacity so that you can use compositing.
To turn the compositor on initially, you need to pass --enable-compositor to
the configure script. This will introduce a dependence on libcm, which you
can get from <URL:http://ftp.gnome.org/pub/GNOME/sources/libcm/>.
When Metacity is compiled, you will need to turn the compositor on in gconf
for it to have any effect. You will find the boolean switch at
/apps/metacity/general/compositing_manager
When that's done, you can set some environment variables before you launch
Metacity to influence how the compositor works. These will eventually become
configuration options or gconf options when they grow up. Define them to any
value to turn them on; leave them undefined to turn them off. Currently the
options you can set are:
LIBCM_DIRECT
If this is set, the compositor will bypass the X server and do all its
work directly with the hardware. I know of no reason you would want to
do so, but perhaps you do.
LIBCM_TFP
If this is set ("tfp mode"), the compositor will feel free to use the
texture_from_pixmap extension; if this is not set ("non-tfp mode"), the
compositor will use a workaround. Many drivers require non-tfp mode in
order to work, and will paint all windows clear blue or clear white
without it. Thanks to Travis Watkins for suggesting this switch; he
cautions that some games or video players may require tfp mode.
METACITY_BLING
This turns on several pretty but non-essential animations (dialogues
fracturing and exploding, minimisations doing a shrinkydink effect,
and so on). If it is not set, the standard non-GL animations are
retained. This affects only window event animations; it doesn't change
menus zooming, dialogues being semi-transparent, and so on. Try it
and see whether you like it.
If you have any problems, ask on metacity-devel-list@gnome.org, or
#gnome-hackers on gimpnet, or come and find me (tthurman at gnome) and ask.

View File

@@ -9,7 +9,8 @@ basics are easy:
Focus method Behavior
click When a user clicks on a window, focus it
sloppy When an EnterNotify is received, focus the window
mouse Same as sloppy, but also defocus on LeaveNotify
mouse Same as sloppy, but also defocus when mouse enters DESKTOP
window
Note that these choices (along with the choice that clicking on a
window raises it for the click focus method) introduces the following
@@ -20,8 +21,8 @@ Focus method Invariant
sloppy If the mouse is in a window, then it is focused; if the
mouse is not in a window, then the most recently used
window is focused.
mouse If the mouse is in a window, then it is focused; otherwise,
the designated "no_focus_window" is focused
mouse If the mouse is in a non-DESKTOP window, then it is focused;
otherwise, the designated "no_focus_window" is focused
However, there are a number of cases where the current focus window
becomes invalid and another should be chosen. Some examples are when
@@ -34,8 +35,9 @@ Focus method Behavior
on top)
sloppy Focus the window containing the pointer if there is such
a window, otherwise focus the most recently used window.
mouse Focus the window containing the pointer if there is one,
otherwise focus the designated "no_focus_window".
mouse Focus the non-DESKTOP window containing the pointer if
there is one, otherwise focus the designated
"no_focus_window".
Note that "most recently used window", as used here, has a slightly
different connotation than "most recent to have keyboard focus". This
@@ -62,9 +64,9 @@ cases in which a new window shouldn't be focused:
To handle these cases, Metacity compares timestamps of the event that
caused the launch and the timestamp of the last interaction with the
focused window. (Case 2 is handled by providing a special timestamp
of 0 for the launch time, which ensures that the window that appears
doesn't get focus)
focused window. (Case 2 is handled by the application providing a
special timestamp of 0 for the launch time, which ensures that the
window that appears doesn't get focus)
If the newly launched window isn't focused, some things should be done
to alert the user that there is a window to work with:
@@ -84,10 +86,10 @@ attempt to handle the INHERENTLY CONFLICTING CONSTRAINTS. Metacity does
this by having a mouse_mode boolean used to determine which of the two
sets of invariants holds. This mode is set according to which method was
most recently used to choose a focus window:
1) When receiving EnterNotify/LeaveNotify events from mouse movement, set
1) When receiving EnterNotify events from mouse movement, set
mouse_mode to TRUE.
2) When using keynav to choose a focus window (e.g. alt-tab, alt-esc,
move-window-to-workspace keybindings), set mouse_mode to FALSE.
alt-f2, move-window-to-workspace keybindings), set mouse_mode to FALSE.
3) When handling events that don't choose a focus window but rather need
a focus_window chosen for them (e.g. switch-to-workspace keybindings),
don't change the mouse_mode and just use the current value.
@@ -123,6 +125,7 @@ To read more about the bugs that inspired these choices:
- Mousenav vs. Keynav in mouse and sloppy focus modes
http://bugzilla.gnome.org/show_bug.cgi?id=167545
http://bugzilla.gnome.org/show_bug.cgi?id=101190
http://bugzilla.gnome.org/show_bug.cgi?id=357695
- Not focusing panels
http://bugzilla.gnome.org/show_bug.cgi?id=160470
http://bugzilla.gnome.org/show_bug.cgi?id=120100

View File

@@ -1,6 +1,91 @@
Docs on the theme format
Themes are in a simple XML-subset format. There are multiple versions
of the theme format, and a given theme can support more than one format.
Themes are in a simple XML-subset format.
Version 1: THEMEDIR/metacity-1/metacity-theme-1.xml
(original metacity format)
Version 2: THEMEDIR/metacity-1/metacity-theme-2.xml
The subdirectory name is "metacity-1" in all versions.
As you might expect, older versions of metacity will not understand
newer theme formats. However, newer versions will use old themes.
Metacity will always use the newest theme format it understands that
the X server supports. Some format versions are only supported if you
have the right X server features.
Each format *requires* the corresponding filename. If you put version
2 format features in the metacity-1/metacity-theme-1.xml file, then
metacity will get angry.
This document has separate sections for each format version. You may
want to read the document in reverse order, since the base features
are discussed under version 1.
New Features in Theme Format Version 2
======================================
The optional attributes rounded_top_left, rounded_top_right,
rounded_bottom_left and rounded_bottom_right on <frame_geometry>
should now be the radius of the corner in pixels. You may still use
the values "false" for 0 and "true" for 5, which means v1 values will
still work just fine.
<frame_geometry> has a new optional attribute, hide_buttons. If this
is true, no buttons will be displayed on the titlebar.
Anywhere you can use a positive integer, you can use an integer constant.
As well as constant integers and reals, you may define constant colours,
thus:
<constant name="RevoltingPink" value="#FF00FF"/>
<constant name="Background" value="gtk:bg[NORMAL]"/>
<frame_style> has two new optional attributes, background and alpha.
If you specify alpha, you must specify background. background is a
colour used for the background of the frame. alpha is the transparency
as a real between 0.0 and 1.0. If the current X server does not support
alpha channels, the value is ignored.
The filename attribute of <image> may begin with "theme:". If so, the
rest of the string is the name of a theme icon. The 64x64 version of the
icon is used, except for fallback mini_icons, which use the 16x16 version.
This does not affect ordinary resizing. For example:
<button function="close" state="normal">
<draw_ops>
<include name="active_button"/>
<image filename="theme:gnome-logout" x="2" y="2"
width="width-4" height="height-4"/>
<!-- Note: not "theme:gnome-logout.png" or similar. -->
</draw_ops>
</button>
<menu_icon>s are parsed but ignored.
Fallback icons can be specified using <fallback>. There are two
optional arguments, icon and mini_icon. The values of these arguments
are identical to that of the filename attribute of <image>. Fallback
icons are used when a window does not supply its own icon. If a fallback
icon is not specified with <fallback>, Metacity will use a built-in
icon, as in metacity-theme-1.
The <arc> element, as well as the original start_angle and end_angle
attributes, may be given from and to attributes. The values of these
attributes are given in degrees clockwise, with 0 being straight up.
For example:
<arc from="0.0" to="90.0" filled="true" color="#FF00FF"
x="0" y="5" width="15" height="15"/>
<frame state="shaded"> may now take an optional resize attribute, with
the same interpretation as the resize attribute on <frame state="normal">.
If this attribute is omitted for state="shaded", it defaults to "both".
(If it is omitted for state="normal", it remains an error.)
In addition to the four <button> functions which are required in
metacity-theme-1, there are six new functions in metacity-theme-2:
shade, unshade, above, unabove, stick and unstick.
Overview of Theme Format Version 1
==================================
<?xml version="1.0"?>
<metacity_theme>

View File

@@ -1,7 +1,621 @@
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.
2007-05-09 Jovan Naumovski <jovan@lugola.net>
* mk.po: Updated Macedonian translation.
2007-05-2 Djihed Afifi <djihed@gmail.com>
* ar.po: Updated Arabic Translation by Khaled Hosny.
2007-04-24 Ihar Hrachyshka <iharh@gnome.org>
* be@latin.po: Updated Belarusian Latin translation.
2007-04-23 David Lodge <dave@cirt.net>
* en_GB.po: Updated British English translation
2007-04-22 Ignacio Casal Quinteiro <nacho.resa@gmail.com>
* gl.po: Updated Galician Translation.
2007-04-22 Jorge Gonzalez <jorgegonz@svn.gnome.org>
* es.po: Updated Spanish translation.
2007-04-21 Daniel Nylander <po@danielnylander.se>
* sv.po: Updated Swedish translation.
2007-04-14 Djihed Afifi <djihed@gmail.com>
* ar.po: Updated Arabic Translation by Khaled Hosny.
2007-04-10 Kjartan Maraas <kmaraas@gnome.org>
* nb.po: Updated Norwegian bokmål translation.
2007-04-05 Bastien Nocera <hadess@hadess.net>
* POTFILES.in: add the XML keys definitions to the list
2007-04-05 Raivis Dejus <orvils@gmail.com>
* lv.po: Updated Latvian Translation.
2007-04-02 Alessio Frusciante <algol@firenze.linux.it>
* it.po: Fixed a typo in translation. Closes #420494.
2007-03-30 Ihar Hrachyshka <iharh@gnome.org>
* be@latin.po: Added Belarusian Latin translation by Ales Navicki.
2007-03-29 Priit Laes <plaes@svn.gnome.org>
* et.po: Updated Estonian translation by Ivar Smolin <okul@linux.ee>.
2007-03-27 Gabor Kelemen <kelemeng@gnome.hu>
* hu.po: Translation updated.
2007-03-17 Kjartan Maraas <kmaraas@gnome.org>
reviewed by: <delete if not using a buddy>
* nb.po:
2007-03-14 David Lodge <dave@cirt.net>
* en_GB.po: Updated English (British) translation
2007-03-12 Jakub Friedl <jfriedl@suse.cz>
* cs.po: Updated Czech translation.
2007-03-11 Goran Rakić <grakic@devbase.net>
* sr.po, sr@Latn.po: Updated Serbian translation.
2007-03-11 Josep Puigdemont i Casamajó <josep.puigdemont@gmail.com>
* ca.po: Updated Catalan translation by
Jordi Mallach <jodri@sindominio.net>.
2007-03-10 Artur Flinta <aflinta@svn.gnome.org>
* pl.po: Updated Polish translation by GNOME PL Team.
2007-03-09 Nickolay V. Shmyrev <nshmyrev@yandex.ru>
* ru.po: Updated Russian translation.
2007-03-07 Artur Flinta <aflinta@svn.gnome.org>
* pl.po: Updated Polish translation by GNOME PL Team.
2007-03-06 Takeshi AIHANA <takeshi.aihana@gmail.com>
* ja.po: Updated Japanese translation.
2007-03-06 Jovan Naumovski <jovan@lugola.net>
* mk.po: Updated Macedonian translation.
2007-03-05 Vincent van Adrighem <adrighem@gnome.org>
* nl.po: Translation updated by Reinout van Schouwen.
2007-03-04 Gintautas Miliauskas <gintas@akl.lt>
* lt.po: Updated Lithuanian translation.
2007-03-04 Erdal Ronahi <erdal dot ronahi at gmail dot com>
* ku.po: Updated Kurdish translations
2007-03-04 Pema Geyleg <pema.geyleg@gmail.com>
* dz.po: Updated Dzongkha Translation.
2007-03-04 Chao-Hsiung Liao <j_h_liau@yahoo.com.tw>
* zh_HK.po: Updated Traditional Chinese translation(Hong Kong).
* zh_TW.po: Updated Traditional Chinese translation(Taiwan).
2007-03-02 Leonardo Ferreira Fontenelle <leonardof@svn.gnome.org>
* pt_BR.po: Updated Brazilian Portuguese translation by Leonardo
Ferreira Fontenelle <leo.fontenelle@gmail.com> (me!) and Raul Pereira
<contato@raulpereira.com>.
2007-02-27 Gintautas Miliauskas <gintas@akl.lt>
* lt.po: Updated Lithuanian translation.
2007-02-26 Luca Ferretti <elle.uca@libero.it>
* it.po: Updated Italian translation.
2007-02-25 Gabor Kelemen <kelemeng@gnome.hu>
* hu.po: Translation updated.
2007-02-24 Raphael Higino <raphaelh@svn.gnome.org>
* pt_BR.po: Updated Brazilian Portuguese translation.
2007-02-24 Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
* vi.po: Updated Vietnamese translation.
2007-02-22 Abel Cheung <abelcheung@gmail.com>
* zh_CN.po: Updated simplified Chinese translation on behalf of
Funda Wang.
2007-02-21 Maxim Dziumanenko <dziumanenko@gmail.com>
* uk.po: Update Ukrainian translation.
2007-02-21 Artur Flinta <aflinta@cvs.gnome.org>
* pl.po: Updated Polish translation by GNOME PL Team.
2007-02-20 Alexander Shopov <ash@contact.bg>
* bg.po: Updated Bulgarian translation by
Alexander Shopov <ash@contact.bg>
2007-02-16 Ilkka Tuohela <hile@iki.fi>
* fi.po: Updated Finnish translation.
2007-02-15 Changwoo Ryu <cwryu@debian.org>
* ko.po: Updated Korean translation.
2007-02-15 Duarte Loreto <happyguy_pt@hotmail.com>
* pt.po: Updated Portuguese translation.
2007-02-14 Ilkka Tuohela <hile@iki.fi>
* fi.po: Updated Finnish translation.
2007-02-09 Changwoo Ryu <cwryu@debian.org>
* ko.po: Updated Korean translation.
2007-01-31 Stéphane Raimbault <stephane.raimbault@gmail.com>
* fr.po: Updated French translation by Robert-André Mauchin.
2007-01-27 Priit Laes <plaes@svn.gnome.org>
* et.po: Updated Estonian translation by Ivar Smolin <okul@linux.ee>.
2007-01-22 Jakub Friedl <jfriedl@suse.cz>
* cs.po: Updated Czech translation.
2007-01-16 Hendrik Richter <hendrikr@gnome.org>
* de.po: Updated German translation.
2007-01-15 Djihed Afifi <djihed@gmail.com>
* ar.po: Updated Arabic Translation by Khaled Hosny.
2007-01-13 Daniel Nylander <po@danielnylander.se>
* sv.po: Updated Swedish translation.
2007-01-05 Jakub Friedl <jfriedl@suse.cz>
* cs.po: Updated Czech translation.
2007-01-3 Djihed Afifi <djihed@gmail.com>
* ar.po: Updated Arabic Translation by Djihed Afifi.
2007-01-01 David Lodge <dave@cirt.net>
* en_GB.po: Updated English (British) translation
2006-12-29 Kjartan Maraas <kmaraas@gnome.org>
* nb.po: Updated Norwegian bokmål translation.
2006-12-29 Theppitak Karoonboonyanan <thep@linux.thai.net>
* th.po: Updated Thai translation.
2006-12-27 Djihed Afifi <djihed@gmail.com>
* ar.po: Updated Arabic Translation.
2006-12-24 Djihed Afifi <djihed@gmail.com>
* ar.po: Updated Arabic Translation.
2006-12-23 Raivis Dejus <orvils@gmail.com>
* lv.po: Updated Latvian Translation.
2006-12-18 Kjartan Maraas <kmaraas@gnome.org>
* nb.po: Updated Norwegian bokmål translation.
2006-12-18 Djihed Afifi <djihed@gmail.com>
* ar.po: Updated Arabic Translation.
2006-12-18 Ales Nyakhaychyk <nab@mail.by>
* be.po: Updated Belarusian Translation by Ihar Hrachyshka.
2006-12-15 Theppitak Karoonboonyanan <thep@linux.thai.net>
* th.po: Updated Thai translation.
2006-12-13 Mugurel Tudor <mugurelu@gnome.ro>
* ro.po: Updated Romanian translation.
2006-12-11 Jordi Mallach <jordi@sindominio.net>
* ca.po: Updated Catalan translation.
2006-12-11 Kjartan Maraas <kmaraas@gnome.org>
* nb.po: Updated Norwegian bokmål translation.
2006-12-04 Jakub Friedl <jfriedl@suse.cz>
* cs.po: Updated Czech translation.
2006-11-22 Yair Hershkovitz <yairhr@gmail.com>
* he.po: Updated Hebrew translation.
2006-11-19 Priit Laes <plaes@cvs.gnome.org>
* et.po: Translation updated by Ivar Smolin.
2006-11-19 Duarte Loreto <happyguy_pt@hotmail.com>
* pt.po: Partial updated Portuguese translation.
2006-11-19 Priit Laes <plaes@cvs.gnome.org>
* et.po: Translation updated by Ivar Smolin.
2006-11-18 Priit Laes <plaes@cvs.gnome.org>
* et.po: Translation updated by Ivar Smolin.
2006-11-07 Francisco Javier F. Serrador <serrador@openshine.com>
* es.po: Updated Spanish translation.
2006-11-03 Jakub Friedl <jfriedl@suse.cz>
* cs.po: Updated Czech translation.
2006-10-26 Francisco Javier F. Serrador <serrador@openshine.com>
* es.po: Updated Spanish translation.
2006-10-26 Ilkka Tuohela <hile@iki.fi>
* fi.po: Updated Finnish translation.
2006-10-26 Ilkka Tuohela <hile@iki.fi>
* fi.po: Updated Finnish translation.
2006-10-22 Christophe Merlet <redfox@redfoxcenter.org>
* fr.po: Updated French translation.
2006-10-19 Kjartan Maraas <kmaraas@gnome.org>
* nb.po: Updated Norwegian bokmål translation.
2006-10-15 Ilkka Tuohela <hile@iki.fi>
* fi.po: Updated Finnish translation.
2006-10-02 Josep Puigdemont i Casamajó <josep.puigdemont@gmail.com>
* ca.po: Updated Catalan translation.
2006-09-29 Alexander Shopov <ash@contact.bg>
* bg.po: Updated Bulgarian translation with
bugfixes prompted by Yavor Doganov
2006-09-21 Gabor Kelemen <kelemeng@gnome.hu>
* hu.po: Translation updated.
2006-09-19 Runa Bhattacharjee <runabh@gmail.com>
* bn_IN.po: Updated Bengali India Translation.
2006-09-15 Wouter Bolsterlee <wbolster@gnome.org>
* nl.po: Translation updated by Wouter Bolsterlee.
2006-09-15 Matic Zgur <mr.zgur@gmail.com>
* sl.po: Updated Slovenian translation.
2006-09-14 Francisco Javier F. Serrador <serrador@openshine.com>
* es.po: Updated Spanish translation.
2006-09-14 Alexander Shopov <ash@contact.bg>
* bg.po: Updated Bulgarian translation by
Alexander Shopov <ash@contact.bg>
2006-09-13 Josep Puigdemont i Casamajó <josep.puigdemont@gmail.com>
* ca.po: Updated Catalan translation.
2006-09-13 Ilkka Tuohela <hile@iki.fi>
* fi.po: Updated Finnish translation.
- concistency fixes with libwnck
2006-09-13 Rajesh Ranjan <rajeshkajha@yahoo.com>
* hi.po: Updated Hindi Translation.
2006-09-13 Abel Cheung <abel@oaka.org>
* zh_HK.po: Updated Chinese (Hong Kong) translation.
* zh_TW.po: Updated Chinese (Taiwan) translation.
2006-09-13 Ani Peter <peter.ani@gmail.com>
* ml.po: Updated Malayalam translation
2006-09-13 I.Felix <ifelix25@gmail.com>
* ta.po: Updated Tamil Translation.
2006-09-13 Ankit Patel <ankit644@yahoo.com>
* gu.po: Updated Gujarati Translation.
2006-09-13 Ahmad Riza H Nst <rizahnst@eriagempita.co.id>
* id.po: Updated.
2006-09-10 David Lodge <dave@cirt.net>
* en_GB.po: Updated English (British) translation.
2006-09-08 Priit Laes <plaes@cvs.gnome.org>
* et.po: Translation updated by Ivar Smolin.
2006-09-07 Matic Zgur <mr.zgur@gmail.com>
* sl.po: Updated Slovenian translation.
2006-09-04 Nickolay V. Shmyrev <nshmyrev@yandex.ru>
* ru.po: Updated Russian translation by
Vasiliy Faronov <qvvx@yandex.ru>.
2006-09-04 Rahul Bhalerao <b.rahul.pm@gmail.com>
* mr.po: Updated Marathi translations.
2006-09-04 Runa Bhattacharjee <runabh@gmail.com>
* bn_IN.po: Modified the accelerators to English.
2006-09-04 Abel Cheung <abel@oaka.org>
* zh_HK.po: Updated Chinese (Hong Kong) translation from
Woodman Tuen <wmtuen@gmail.com>.
* zh_TW.po: Updated Chinese (Taiwan) translation from
Woodman Tuen <wmtuen@gmail.com>.
2006-09-04 Kostas Papadimas <pkst@gnome.org>
* el.po: Updated Greek translation.
2006-09-04 Ani Peter <peter.ani@gmail.com>
* ml.po: Updated Malayalam translation
2006-09-04 Rahul Bhalerao <b.rahul.pm@gmail.com>
* mr.po: Added the file and updated Marathi translation.
* LINGUAS: Added an entry for Marathi(mr).
2006-09-03 Christophe Merlet <redfox@redfoxcenter.org>
* fr.po: Updated French translation from
Jonathan Ernst <jonathan@ernstfamily.ch>.
2006-09-03 Danilo Šegan <danilo@gnome.org>
* sr.po, sr@Latn.po: Updated by Goran Rakić.
2006-09-03 Gabor Kelemen <kelemeng@gnome.hu>
* hu.po: Translation updated.
2006-09-03 Gabor Kelemen <kelemeng@gnome.hu>
* hu.po: Translation updated.
2006-09-01 Maxim Dziumanenko <dziumanenko@gmail.com>
* uk.po: Update Ukrainian translation.
2006-09-01 Duarte Loreto <happyguy_pt@hotmail.com>
* pt.po: Updated Portuguese translation.
2006-08-30 Josep Puigdemont i Casamajó <josep.puigdemont@gmail.com>
* ca.po: Updated Catalan translation.
2006-08-27 Gintautas Miliauskas <gintas@akl.lt>
* lt.po: Updated Lithuanian translation.
2006-08-20 Daniel Nylander <po@danielnylander.se>
* sv.po: Updated Swedish translation.
2006-08-19 Ahmad Riza H Nst <rizahnst@eriagempita.co.id>
* id.po: Updated.
2006-08-18 Alexander Shopov <ash@contact.bg>
* bg.po: Updated Bulgarian translation by
Alexander Shopov <ash@contact.bg>
2006-08-17 Jordi Mas <jmas@softcatala.org>
* ca.po: Fixes small mistakes in Catalan translation
2006-08-16 Gabor Kelemen <kelemeng@gnome.hu>
* hu.po: Translation updated.
2006-08-13 Wouter Bolsterlee <uws+gnome@xs4all.nl>
* nl.po: Translation updated by Wouter Bolsterlee.
2006-08-09 Funda Wang <fundawang@linux.net.cn>
* zh_CN.po: Updated Simplified Chinese translation.
2006-08-08 Wouter Bolsterlee <uws+gnome@xs4all.nl>
* nl.po: Translation updated by Wouter Bolsterlee.
2006-08-07 Leonid Kanter <leon@asplinux.ru>
* ru.po: Updated Russian translation
2006-08-07 Inaki Larranaga <dooteo@euskalgnu.org>
* eu.po: Fixed some typos.
2006-08-03 Kjartan Maraas <kmaraas@gnome.org>
* nb.po: Updated Norwegian bokmål translation.
2006-08-03 Yair Hershkovitz <yairhr@gmail.com>
* he.po: Updated Hebrew translation.
2006-08-02 Jovan Naumovski <jovan@lugola.net>
* mk.po: Updated Macedonian translation.
2006-07-31 Jakub Friedl <jfriedl@suse.cz>
* cs.po: Updated Czech translation.
2006-07-23 Satoru SATOH <ss@gnome.gr.jp>
* ja.po: Updated Japanese translation.
2006-07-22 Christophe Merlet <redfox@redfoxcenter.org>
* fr.po: Updated French translation from
Jonathan Ernst <jonathan@ernstfamily.ch>.
2006-07-22 Kostas Papadimas <pkst@gnome.org>
* el.po: Updated Greek translation
2006-07-21 Christophe Merlet <redfox@redfoxcenter.org>
* fr.po: Updated French translation from
Jonathan Ernst <jonathan@ernstfamily.ch>.
2006-07-18 Hendrik Richter <hendrikr@gnome.org>
* de.po: Updated German translation.
2006-07-03 Runa Bhattacharjee <runabh@gmail.com>
* bn_IN.po: Added Bengali India Translation
* LINGUAS: Added Bengali India (bn_IN) to the list of languages.
* bn_IN.po: Added Bengali India Translation
* LINGUAS: Added Bengali India (bn_IN) to the list of languages.
2006-07-03 Ilkka Tuohela <hile@iki.fi>
@@ -13,15 +627,15 @@
2006-06-28 Rajesh Ranjan <rajeshkajha@yahoo.com>
* hi.po: Updated Hindi Translation.
* hi.po: Updated Hindi Translation.
2006-06-27 Rajesh Ranjan <rajeshkajha@yahoo.com>
* hi.po: Updated Hindi Translation.
* hi.po: Updated Hindi Translation.
2006-06-26 Rajesh Ranjan <rajeshkajha@yahoo.com>
* hi.po: Updated Hindi Translation.
* hi.po: Updated Hindi Translation.
2006-05-28 Pema Geyleg <pema.geyleg@gmail.com>
@@ -1219,7 +1833,7 @@
2004-10-13 David Lodge <dave@cirt.net>
* en_GB.po: Updated British English translation.
* en_GB.po: Updated British English translation.
2004-09-26 Adam Weinberger <adamw@gnome.org>

View File

@@ -4,6 +4,7 @@ am
ar
az
be
be@latin
bg
bn
bn_IN
@@ -13,6 +14,7 @@ cs
cy
da
de
dz
el
en_CA
en_GB
@@ -34,6 +36,7 @@ id
is
it
ja
ka
ko
ku
lt
@@ -42,11 +45,13 @@ mg
mk
ml
mn
mr
ms
nb
ne
nl
nn
oc
or
pa
pl
@@ -55,8 +60,8 @@ pt_BR
ro
ru
rw
sl
sk
sl
sq
sr
sr@Latn

View File

@@ -1,6 +1,9 @@
# List of source files containing translatable strings.
# Please keep this file sorted alphabetically.
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

2566
po/ar.po

File diff suppressed because it is too large Load Diff

3319
po/be.po

File diff suppressed because it is too large Load Diff

2577
po/be@latin.po Normal file

File diff suppressed because it is too large Load Diff

1732
po/bg.po

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

1473
po/ca.po

File diff suppressed because it is too large Load Diff

1644
po/cs.po

File diff suppressed because it is too large Load Diff

2043
po/da.po

File diff suppressed because it is too large Load Diff

1686
po/de.po

File diff suppressed because it is too large Load Diff

1480
po/dz.po

File diff suppressed because it is too large Load Diff

1174
po/el.po

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

1548
po/es.po

File diff suppressed because it is too large Load Diff

1768
po/et.po

File diff suppressed because it is too large Load Diff

152
po/eu.po
View File

@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: eu\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2006-05-25 08:47+0000\n"
"POT-Creation-Date: 2006-08-07 18:02+0000\n"
"PO-Revision-Date: 2006-05-25 09:26+0000\n"
"Last-Translator: Iñaki Larrañaga Murgoitio <dooteo@euskalgnu.org>\n"
"Language-Team: Basque <itzulpena@euskalgnu.org>\n"
@@ -16,7 +16,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: KBabel 1.10.2\n"
"Plural-Forms: Plural-Forms: Plural-Forms: nplurals=2; plural=(n != 1);\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"\n"
#: ../src/tools/metacity-message.c:150
@@ -43,7 +43,8 @@ msgstr "Ez dira ulertzen amaierako \"%s\" karaktereak \"%s\" katean"
#: ../src/delete.c:129
#, c-format
msgid "Failed to parse message \"%s\" from dialog process\n"
msgstr "Huts egin du elkarrizketa-koadroaren prozesutik \"%s\" mezua analizatzean\n"
msgstr ""
"Huts egin du elkarrizketa-koadroaren prozesutik \"%s\" mezua analizatzean\n"
#: ../src/delete.c:264
#, c-format
@@ -52,7 +53,8 @@ msgstr "Errorea elkarrizketa-koadroa bistaratzeko prozesutik irakurtzean: %s\n"
#: ../src/delete.c:345
#, c-format
msgid "Error launching metacity-dialog to ask about killing an application: %s\n"
msgid ""
"Error launching metacity-dialog to ask about killing an application: %s\n"
msgstr ""
"Errorea aplikazioa hil behar den galdetzeko metacity-ren elkarrizketa-"
"koadroa abiaraztean: %s\n"
@@ -174,8 +176,10 @@ msgstr "Huts egin du gaien direktorioa aztertzean: %s\n"
#: ../src/main.c:366
#, c-format
msgid "Could not find a theme! Be sure %s exists and contains the usual themes."
msgstr "Gai bat ezin izan da aurkitu! Ziurtatu %s badagoela eta ohiko gaiak dituela."
msgid ""
"Could not find a theme! Be sure %s exists and contains the usual themes."
msgstr ""
"Gai bat ezin izan da aurkitu! Ziurtatu %s badagoela eta ohiko gaiak dituela."
#: ../src/main.c:424
#, c-format
@@ -362,7 +366,8 @@ msgid "The window \"%s\" is not responding."
msgstr "\"%s\" leihoak ez du erantzuten."
#: ../src/metacity-dialog.c:119
msgid "Forcing this application to quit will cause you to lose any unsaved changes."
msgid ""
"Forcing this application to quit will cause you to lose any unsaved changes."
msgstr ""
"Aplikazioa ixtera behartzen baduzu, gorde gabeko aldaketak galdu egingo "
"dituzu."
@@ -402,7 +407,8 @@ msgstr "Metacity"
#: ../src/metacity.schemas.in.h:1
msgid "(Not implemented) Navigation works in terms of applications not windows"
msgstr "(Ez dago inplementatuta) Nabigazioa aplikazioetan egiten da, ez leihoetan"
msgstr ""
"(Ez dago inplementatuta) Nabigazioa aplikazioetan egiten da, ez leihoetan"
#: ../src/metacity.schemas.in.h:2
msgid ""
@@ -520,7 +526,9 @@ msgid ""
msgstr ""
"Egia bada, eta fokuaren modua \"sloppy\" edo \"mouse\" bada, fokua duen "
"leihoa automatikoki goratuko da 'auto_raise_key' gakoan zehaztutako "
"atzerapena igarotakoan. Honek ez dauka zerikusirik leiho baten klik egitearekin goratzeko, ezta leiho batean sartzearekin arrastatu eta jaregitean."
"atzerapena igarotakoan. Honek ez dauka zerikusirik leiho baten klik "
"egitearekin goratzeko, ezta leiho batean sartzearekin arrastatu eta "
"jaregitean."
#: ../src/metacity.schemas.in.h:21
msgid ""
@@ -562,12 +570,13 @@ msgstr ""
"Aplikazioan oinarritutako moduan leiho bati fokua ematen diozunean, "
"aplikazio horretako leiho guztiak goratuko dira. Gainera, aplikazioan "
"oinarritutako moduan, foku-klikak ez dira pasatzen beste aplikazio "
"batzuetako leihoetara. Gainera, aplikazioa "
"oinarritutako modua ez dago ia batere inplementatuta oraingoz."
"batzuetako leihoetara. Gainera, aplikazioa oinarritutako modua ez dago ia "
"batere inplementatuta oraingoz."
#: ../src/metacity.schemas.in.h:24
msgid "If true, trade off usability for less resource usage"
msgstr "Egia bada, gutxiagotu erabilgarritasuna errekurtso gutxiago erabiltzeko"
msgstr ""
"Egia bada, gutxiagotu erabilgarritasuna errekurtso gutxiago erabiltzeko"
#: ../src/metacity.schemas.in.h:25
msgid "Lower window below other windows"
@@ -589,8 +598,8 @@ msgstr ""
"leihoa ez goratzeko. Faltsua balioarekin leihoa goratu ahalko da Alt"
"+saguaren-ezker-pultsazioa sakatuz edo klik normal batekin leihoaren "
"dekorazioan (suposatzen da horrelako klik-ak ez direla erabiltzen lekuz edo "
"tamainaz aldatzeko eragiketak hasteko). "
"Unean aukera hau desgaituta dago 'click-to-focus' moduan."
"tamainaz aldatzeko eragiketak hasteko). Unean aukera hau desgaituta dago "
"'click-to-focus' moduan."
#: ../src/metacity.schemas.in.h:27
msgid "Maximize window"
@@ -780,7 +789,12 @@ msgid ""
"manager misfeatures. This option puts Metacity in a rigorously correct mode, "
"which gives a more consistent user interface, provided one does not need to "
"run any misbehaving applications."
msgstr "Aplikazio batzuk espezifikazioaei jaramonik ez diete egiten eta leiho-kudeatzailearen funtzionalitatea gutxituz. Aukera honek Metacity era zorrotzean modu zuzenean jartzen du, erabiltzailearen interfazeari sendotasun gehiago emanez, eskainitakoak ez du gaizki portatzen diren aplikazioak exekutatu beharrik."
msgstr ""
"Aplikazio batzuk espezifikazioaei jaramonik ez diete egiten eta leiho-"
"kudeatzailearen funtzionalitatea gutxituz. Aukera honek Metacity era "
"zorrotzean modu zuzenean jartzen du, erabiltzailearen interfazeari "
"sendotasun gehiago emanez, eskainitakoak ez du gaizki portatzen diren "
"aplikazioak exekutatu beharrik."
#: ../src/metacity.schemas.in.h:72
msgid "Switch to workspace 1"
@@ -1633,14 +1647,13 @@ msgid ""
"\"&lt;Ctrl&gt;\". If you set the option to the special string \"disabled\", "
"then there will be no keybinding for this action."
msgstr ""
"Fokua leihoen artean laster-leihorik gabe aldatzeko laster-teklak. "
"Laster-tekla hauekin batera \"maius\" "
"sakatuta, mugimenduaren norabidea aldatu egiten da. Formatua \"&lt;"
"Kontrol&gt;a\" edo \"&lt;Maius&gt;&lt;Alt&gt;F1\" itxurakoa izango da. "
"Analizatzailea oso irekia da eta maiuskulak eta minuskulak onartzen ditu, "
"eta baita \"&lt;Ktl&gt;\" eta \"&lt;Ktrl&gt;\" moduko laburdurak ere. "
"Aukeran \"disabled\" kate berezia ezartzen baduzu, ez da laster-teklarik "
"izango ekintza honentzat."
"Fokua leihoen artean laster-leihorik gabe aldatzeko laster-teklak. Laster-"
"tekla hauekin batera \"maius\" sakatuta, mugimenduaren norabidea aldatu "
"egiten da. Formatua \"&lt;Kontrol&gt;a\" edo \"&lt;Maius&gt;&lt;Alt&gt;F1\" "
"itxurakoa izango da. Analizatzailea oso irekia da eta maiuskulak eta "
"minuskulak onartzen ditu, eta baita \"&lt;Ktl&gt;\" eta \"&lt;Ktrl&gt;\" "
"moduko laburdurak ere. Aukeran \"disabled\" kate berezia ezartzen baduzu, ez "
"da laster-teklarik izango ekintza honentzat."
#: ../src/metacity.schemas.in.h:144
msgid ""
@@ -1878,7 +1891,8 @@ msgstr "Pantaila-argazkiaren komandoa"
msgid ""
"The theme determines the appearance of window borders, titlebar, and so "
"forth."
msgstr "Gaiak erabakiko du leihoen ertzen, titulu-barren eta horrelakoen itxura."
msgstr ""
"Gaiak erabakiko du leihoen ertzen, titulu-barren eta horrelakoen itxura."
#: ../src/metacity.schemas.in.h:161
msgid ""
@@ -2007,7 +2021,11 @@ msgid ""
"focus. It has two possible values; \"smart\" applies the user's normal focus "
"mode, and \"strict\" results in windows started from a terminal not being "
"given focus."
msgstr "Aukera honek leihoak sortu berriek nola lortzen duten fokuaren gaineko kontrol gehiago ematen du. Bi balio izan ditzake: \"smart\" erabiltzailearen foku-modu normala aplikatzen du, eta \"sctrict\" leihoa terminal batetik abiaratzen denean eta fokua lortzen ez duenekoa."
msgstr ""
"Aukera honek leihoak sortu berriek nola lortzen duten fokuaren gaineko "
"kontrol gehiago ematen du. Bi balio izan ditzake: \"smart\" erabiltzailearen "
"foku-modu normala aplikatzen du, eta \"sctrict\" leihoa terminal batetik "
"abiaratzen denean eta fokua lortzen ez duenekoa."
#: ../src/metacity.schemas.in.h:171
msgid "Toggle always on top state"
@@ -2036,8 +2054,8 @@ msgid ""
"environments."
msgstr ""
"Adierazpen bisuala aktibatzen du aplikazio batek edo sistemak soinua "
"bidaltzen duenerako; erosoa da entzumen-arazoak dituztenentzat edo "
"inguruan zarata handia dagoenerako."
"bidaltzen duenerako; erosoa da entzumen-arazoak dituztenentzat edo inguruan "
"zarata handia dagoenerako."
#: ../src/metacity.schemas.in.h:177
msgid "Unmaximize window"
@@ -2165,7 +2183,8 @@ msgstr ""
#: ../src/screen.c:443
#, c-format
msgid "Could not acquire window manager selection on screen %d display \"%s\"\n"
msgid ""
"Could not acquire window manager selection on screen %d display \"%s\"\n"
msgstr ""
"Ezin izan da eskuratu leiho-kudeatzailearen hautapena \"%2$s\" bistaratzeko %"
"1$d pantailan\n"
@@ -2286,7 +2305,8 @@ msgstr "\"%s\" ezin da analizatu koma mugikorreko zenbaki gisa"
#: ../src/theme-parser.c:552
#, c-format
msgid "Boolean values must be \"true\" or \"false\" not \"%s\""
msgstr "Balio boolearrak \"egiazkoak\" edo \"faltsuak\" izan daitezke, ez \"%s\""
msgstr ""
"Balio boolearrak \"egiazkoak\" edo \"faltsuak\" izan daitezke, ez \"%s\""
#: ../src/theme-parser.c:572
#, c-format
@@ -2296,7 +2316,8 @@ msgstr "Angeluak 0.0 eta 360.0 bitartekoa behar du, %g \n"
#: ../src/theme-parser.c:638
#, c-format
msgid "Alpha must be between 0.0 (invisible) and 1.0 (fully opaque), was %g\n"
msgstr "Alfak 0.0 (ikusezina) eta 1.0 (erabat opakoa) artekoa izan behar du, %g\n"
msgstr ""
"Alfak 0.0 (ikusezina) eta 1.0 (erabat opakoa) artekoa izan behar du, %g\n"
#: ../src/theme-parser.c:684
#, c-format
@@ -2398,7 +2419,8 @@ msgstr "Ez dago \"value\" atributurik <%s> elementuan"
#: ../src/theme-parser.c:1320 ../src/theme-parser.c:1334
#: ../src/theme-parser.c:1393
msgid "Cannot specify both button_width/button_height and aspect ratio for buttons"
msgid ""
"Cannot specify both button_width/button_height and aspect ratio for buttons"
msgstr ""
"button_width/button_height eta aspektu-erlazioa ezin dira batera zehaztu "
"botoietan"
@@ -2577,7 +2599,8 @@ msgstr "Ez da \"%s\" izeneko <draw_ops> bat ere definitu"
#: ../src/theme-parser.c:2971 ../src/theme-parser.c:3087
#, c-format
msgid "Including draw_ops \"%s\" here would create a circular reference"
msgstr "Hemen \"%s\" draw_ops sartzen bada, erreferentzia zirkularra sortuko da"
msgstr ""
"Hemen \"%s\" draw_ops sartzen bada, erreferentzia zirkularra sortuko da"
#: ../src/theme-parser.c:3150
#, c-format
@@ -2707,11 +2730,13 @@ msgstr ""
#: ../src/theme-parser.c:3656
#, c-format
msgid "Outermost element in theme must be <metacity_theme> not <%s>"
msgstr "Gaian kanporen dagoen elementuak <metacity_theme> izan behar du, ez <%s>"
msgstr ""
"Gaian kanporen dagoen elementuak <metacity_theme> izan behar du, ez <%s>"
#: ../src/theme-parser.c:3676
#, c-format
msgid "Element <%s> is not allowed inside a name/author/date/description element"
msgid ""
"Element <%s> is not allowed inside a name/author/date/description element"
msgstr "<%s> elementua ez da onartzen izena/egilea/data/azalpena elementuan"
#: ../src/theme-parser.c:3681
@@ -2721,13 +2746,15 @@ msgstr "<%s> elementua ez da onartzen <constant> elementuaren barnean"
#: ../src/theme-parser.c:3693
#, c-format
msgid "Element <%s> is not allowed inside a distance/border/aspect_ratio element"
msgid ""
"Element <%s> is not allowed inside a distance/border/aspect_ratio element"
msgstr "<%s> elementua ez da onartzen distance/border/aspect_ratio elementuan"
#: ../src/theme-parser.c:3715
#, c-format
msgid "Element <%s> is not allowed inside a draw operation element"
msgstr "<%s> elementua ez da onartzen marrazteko eragiketaren elementuaren barnean"
msgstr ""
"<%s> elementua ez da onartzen marrazteko eragiketaren elementuaren barnean"
#: ../src/theme-parser.c:3725 ../src/theme-parser.c:3755
#: ../src/theme-parser.c:3760
@@ -2944,7 +2971,8 @@ msgstr ""
#: ../src/theme-viewer.c:1217
msgid "position expression test returned TRUE but set error"
msgstr "adierazpenaren kokalekuko probak TRUE itzuli du, baina errore bat ezarri du"
msgstr ""
"adierazpenaren kokalekuko probak TRUE itzuli du, baina errore bat ezarri du"
#: ../src/theme-viewer.c:1219
msgid "position expression test returned FALSE but didn't set error"
@@ -2979,7 +3007,8 @@ msgstr "y balioa %d zen, %d espero zenean"
#: ../src/theme-viewer.c:1301
#, c-format
msgid "%d coordinate expressions parsed in %g seconds (%g seconds average)\n"
msgstr "%d koordenada adierazpen analizatua %g segundotan (%g segundo batazbesteko)\n"
msgstr ""
"%d koordenada adierazpen analizatua %g segundotan (%g segundo batazbesteko)\n"
#: ../src/theme.c:202
msgid "top"
@@ -3069,7 +3098,8 @@ msgstr "Kolore nahastuko \"%s\" alfa balioa ez dago 0,0 eta 1,0 artean"
#: ../src/theme.c:1075
#, c-format
msgid "Shade format is \"shade/base_color/factor\", \"%s\" does not fit the format"
msgid ""
"Shade format is \"shade/base_color/factor\", \"%s\" does not fit the format"
msgstr ""
"Itzal-faktorea \"shade/base_color/factor\" da, \"%s\" ez dator bat "
"formatuarekin"
@@ -3092,7 +3122,8 @@ msgstr "Ezin izan da \"%s\" kolorea analizatu"
#: ../src/theme.c:1384
#, c-format
msgid "Coordinate expression contains character '%s' which is not allowed"
msgstr "Koordenatuen adierazpenak '%s' karakterea dauka, eta hori ez da onartzen"
msgstr ""
"Koordenatuen adierazpenak '%s' karakterea dauka, eta hori ez da onartzen"
#: ../src/theme.c:1411
#, c-format
@@ -3106,7 +3137,8 @@ msgstr ""
#: ../src/theme.c:1425
#, c-format
msgid "Coordinate expression contains integer '%s' which could not be parsed"
msgstr "Koordenatuen adierazpenak '%s' osoko zenbakia dauka, eta ezin da analizatu"
msgstr ""
"Koordenatuen adierazpenak '%s' osoko zenbakia dauka, eta ezin da analizatu"
#: ../src/theme.c:1492
#, c-format
@@ -3126,19 +3158,23 @@ msgid "Coordinate expression results in division by zero"
msgstr "Koordenatuen adierazpenak zero zatitzaileko zatiketa ematen du"
#: ../src/theme.c:1738
msgid "Coordinate expression tries to use mod operator on a floating-point number"
msgid ""
"Coordinate expression tries to use mod operator on a floating-point number"
msgstr ""
"Koordenatuen adierazpena mod eragilea erabiltzen saiatzen da koma "
"mugikorreko zenbaki batean"
#: ../src/theme.c:1794
#, c-format
msgid "Coordinate expression has an operator \"%s\" where an operand was expected"
msgstr "Koordenatuen adierazpenak \"%s\" eragilea du eragigai bat espero zen lekuan"
msgid ""
"Coordinate expression has an operator \"%s\" where an operand was expected"
msgstr ""
"Koordenatuen adierazpenak \"%s\" eragilea du eragigai bat espero zen lekuan"
#: ../src/theme.c:1803
msgid "Coordinate expression had an operand where an operator was expected"
msgstr "Koordenatuen adierazpenak eragigai bat du eragile bat espero zen lekuan"
msgstr ""
"Koordenatuen adierazpenak eragigai bat du eragile bat espero zen lekuan"
#: ../src/theme.c:1811
msgid "Coordinate expression ended with an operator instead of an operand"
@@ -3157,11 +3193,13 @@ msgstr ""
#: ../src/theme.c:1939
msgid "Coordinate expression parser overflowed its buffer."
msgstr "Koordenatuen adierazpenaren analizatzaileak bere bufferra gainezkatu du"
msgstr ""
"Koordenatuen adierazpenaren analizatzaileak bere bufferra gainezkatu du"
#: ../src/theme.c:1968
msgid "Coordinate expression had a close parenthesis with no open parenthesis"
msgstr "Koordenatuen adierazpenak ixteko parentesi bat du, baina irekitzekoa falta da"
msgstr ""
"Koordenatuen adierazpenak ixteko parentesi bat du, baina irekitzekoa falta da"
#: ../src/theme.c:2030
#, c-format
@@ -3170,7 +3208,8 @@ msgstr "Koordenatuen adierazpenak \"%s\" aldagai edo konstante ezezaguna du"
#: ../src/theme.c:2085
msgid "Coordinate expression had an open parenthesis with no close parenthesis"
msgstr "Koordenatuen adierazpenak irekitzeko parentesi bat du, baina ixtekoa falta da"
msgstr ""
"Koordenatuen adierazpenak irekitzeko parentesi bat du, baina ixtekoa falta da"
#: ../src/theme.c:2096
msgid "Coordinate expression doesn't seem to have any operators or operands"
@@ -3192,8 +3231,10 @@ msgstr ""
#: ../src/theme.c:4270 ../src/theme.c:4295
#, c-format
msgid "Missing <frame state=\"%s\" resize=\"%s\" focus=\"%s\" style=\"whatever\"/>"
msgstr "<frame state=\"%s\" resize=\"%s\" focus=\"%s\" style=\"whatever\"/> falta da"
msgid ""
"Missing <frame state=\"%s\" resize=\"%s\" focus=\"%s\" style=\"whatever\"/>"
msgstr ""
"<frame state=\"%s\" resize=\"%s\" focus=\"%s\" style=\"whatever\"/> falta da"
#: ../src/theme.c:4341
#, c-format
@@ -3226,7 +3267,8 @@ msgstr ""
#: ../src/theme.c:4911 ../src/theme.c:4973
#, c-format
msgid "User-defined constants must begin with a capital letter; \"%s\" does not"
msgid ""
"User-defined constants must begin with a capital letter; \"%s\" does not"
msgstr ""
"Erabiltzaileak definitutako konstanteak maiuskulaz hasi behar du; \"%s\" ez "
"da maiuskulaz hasten"
@@ -3283,7 +3325,7 @@ msgid "Invalid WM_TRANSIENT_FOR window 0x%lx specified for %s.\n"
msgstr "%2$s(e)n baliogabeko WM_TRANSIENT_FOR 0x%1$lx leihoa zehaztu da.\n"
#. first time through
#: ../src/window.c:5217
#: ../src/window.c:5248
#, c-format
msgid ""
"Window %s sets SM_CLIENT_ID on itself, instead of on the WM_CLIENT_LEADER "
@@ -3299,7 +3341,7 @@ msgstr ""
#. * MWM but not WM_NORMAL_HINTS are basically broken. We complain
#. * about these apps but make them work.
#.
#: ../src/window.c:5813
#: ../src/window.c:5844
#, c-format
msgid ""
"Window %s sets an MWM hint indicating it isn't resizable, but sets min size %"
@@ -3331,8 +3373,8 @@ msgstr "0x%2$lx leihoko %1$s propietateak UTF-8 baliogabea du\n"
#: ../src/xprops.c:482
#, c-format
msgid "Property %s on window 0x%lx contained invalid UTF-8 for item %d in the list\n"
msgid ""
"Property %s on window 0x%lx contained invalid UTF-8 for item %d in the list\n"
msgstr ""
"0x%2$lx leihoko %1$s propietateak UTF-8 baliogabea du zerrendako %3$d. "
"elementuan\n"

1520
po/fi.po

File diff suppressed because it is too large Load Diff

2136
po/fr.po

File diff suppressed because it is too large Load Diff

2816
po/gl.po

File diff suppressed because it is too large Load Diff

173
po/gu.po
View File

@@ -4,8 +4,8 @@ msgid ""
msgstr ""
"Project-Id-Version: metacity.HEAD.gu\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2006-04-20 06:45+0200\n"
"PO-Revision-Date: 2006-04-20 13:00+0530\n"
"POT-Creation-Date: 2006-09-13 00:49+0200\n"
"PO-Revision-Date: 2006-09-13 11:27+0530\n"
"Last-Translator: Ankit Patel <ankit644@yahoo.com>\n"
"Language-Team: Gujarati <indianoss-gujarati@lists.sourceforge.net>\n"
"MIME-Version: 1.0\n"
@@ -19,6 +19,7 @@ msgstr ""
"\n"
"\n"
"\n"
"\n"
#: ../src/tools/metacity-message.c:150
#, c-format
@@ -29,13 +30,13 @@ msgstr "વપરાશ: %s\n"
msgid "Metacity was compiled without support for verbose mode\n"
msgstr "મેટાસીટીને વર્ણનિય પદ્ધતિના આધાર વગર કમ્પાઈલ કરાયુ હતુ\n"
#: ../src/delete.c:64 ../src/delete.c:91 ../src/metacity-dialog.c:71
#: ../src/delete.c:64 ../src/delete.c:91 ../src/metacity-dialog.c:48
#: ../src/theme-parser.c:467
#, c-format
msgid "Could not parse \"%s\" as an integer"
msgstr "\"%s\" ને પૂર્ણાંક તરીકે પદચ્છેદ કરી શકાયુ નહિ"
#: ../src/delete.c:71 ../src/delete.c:98 ../src/metacity-dialog.c:78
#: ../src/delete.c:71 ../src/delete.c:98 ../src/metacity-dialog.c:55
#: ../src/theme-parser.c:476 ../src/theme-parser.c:530
#, c-format
msgid "Did not understand trailing characters \"%s\" in string \"%s\""
@@ -61,7 +62,7 @@ msgstr "કાર્યક્રમને મૃત કરવા માટે
msgid "Failed to get hostname: %s\n"
msgstr "યજમાનનું નામ મેળવવામાં નિષ્ફળ: %s\n"
#: ../src/display.c:354
#: ../src/display.c:344
#, c-format
msgid "Failed to open X Window System display '%s'\n"
msgstr "X વિન્ડો સિસ્ટમ ડિસ્પ્લે '%s' ને ખોલવામાં નિષ્ફળ\n"
@@ -82,48 +83,48 @@ msgstr ""
msgid "Fatal IO error %d (%s) on display '%s'.\n"
msgstr "ઘાતક IO ભૂલ %d (%s) %s ડિસ્પ્લે પર.\n"
#: ../src/frames.c:1086
#: ../src/frames.c:1089
msgid "Close Window"
msgstr "વિન્ડો બંધ કરો"
#: ../src/frames.c:1089
#: ../src/frames.c:1092
msgid "Window Menu"
msgstr "વિન્ડોનું મેનુ"
#: ../src/frames.c:1092
#: ../src/frames.c:1095
msgid "Minimize Window"
msgstr "વિન્ડોને ન્યૂનત્તમ સ્થિતિમાં લાવો"
#: ../src/frames.c:1095
#: ../src/frames.c:1098
msgid "Maximize Window"
msgstr "વિન્ડોને મહત્તમ સ્થિતિમાં લાવો"
#: ../src/frames.c:1098
#: ../src/frames.c:1101
msgid "Unmaximize Window"
msgstr "વિન્ડોને મહત્તમ સ્થિતિમાંથી પાછી લાવો"
#: ../src/keybindings.c:1021
#: ../src/keybindings.c:1031
#, c-format
msgid ""
"Some other program is already using the key %s with modifiers %x as a "
"binding\n"
msgstr "કોઈ બીજો કાર્યક્રમ પહેલેથીજ કી %s ને બદલનાર %x સાથે જોડાણ તરીકે વાપરી રહ્યુ છે\n"
#: ../src/keybindings.c:2588
#: ../src/keybindings.c:2663
#, c-format
msgid "Error launching metacity-dialog to print an error about a command: %s\n"
msgstr "આદેશ વિશેની ભૂલ છાપવા માટે મેટાસીટી-સંવાદને શરુ કરવામાં ભૂલ: %s\n"
#: ../src/keybindings.c:2693
#: ../src/keybindings.c:2768
#, c-format
msgid "No command %d has been defined.\n"
msgstr "કોઈ આદેશ %d વ્યાખ્યાયિત કરાયો નથી.\n"
#: ../src/keybindings.c:3559
#: ../src/keybindings.c:3635
msgid "No terminal command has been defined.\n"
msgstr "કોઈ ટર્મિનલ આદેશ વ્યાખ્યાયિત નથી.\n"
#: ../src/main.c:70
#: ../src/main.c:65
#, c-format
msgid ""
"metacity %s\n"
@@ -138,48 +139,48 @@ msgstr ""
"એની કોઈ બાંયધરી નથી; વ્યાપારીપણાં માટે પણ નહિં કે પછી ચોક્કસ ઉદ્દેશની વ્યવસ્થા માટે પણ "
"નહિં.\n"
#: ../src/main.c:258
#: ../src/main.c:169
msgid "Disable connection to session manager"
msgstr "સત્ર વ્યવસ્થાપકનું જોડાણ નિષ્ક્રિય કરો"
#: ../src/main.c:264
#: ../src/main.c:175
msgid "Replace the running window manager with Metacity"
msgstr "ચાલી રહેલ વિન્ડો વ્યવસ્થાપક મેટાસીટી વડે બદલો"
#: ../src/main.c:270
#: ../src/main.c:181
msgid "Specify session management ID"
msgstr "સત્ર વ્યવસ્થાપન ID સ્પષ્ટ કરો"
#: ../src/main.c:275
#: ../src/main.c:186
msgid "X Display to use"
msgstr "વાપરવા માટેનું X ડિસ્પ્લે"
#: ../src/main.c:281
#: ../src/main.c:192
msgid "Initialize session from savefile"
msgstr "સંગ્રહાયેલ ફાઈલમાંથી સત્રનો પ્રારંભ કરો"
#: ../src/main.c:287
#: ../src/main.c:198
msgid "Print version"
msgstr "છાપન આવૃત્તિ"
#: ../src/main.c:439
#: ../src/main.c:350
#, c-format
msgid "Failed to scan themes directory: %s\n"
msgstr "થીમની ડિરેક્ટરી જોવામાં નિષ્ફળ: %s\n"
#: ../src/main.c:455
#: ../src/main.c:366
#, c-format
msgid "Could not find a theme! Be sure %s exists and contains the usual themes."
msgstr "થીમ શોધી શકાઈ નહિં! ખાતરી કરો કે %s અસ્તિત્વ ધરાવે છે અને તેમાં સામાન્ય થીમ છે."
#: ../src/main.c:527
#: ../src/main.c:424
#, c-format
msgid "Failed to restart: %s\n"
msgstr "ફરીથી શરુ કરવામાં નિષ્ફળ: %s\n"
#: ../src/menu.c:55
msgid "Mi_nimize"
msgstr "ન્યૂનત્તમ કરો (_N)"
msgstr "ન્યૂનત્તમ કરો (_n)"
#: ../src/menu.c:56
msgid "Ma_ximize"
@@ -187,7 +188,7 @@ msgstr "મહત્તમ કરો (_x)"
#: ../src/menu.c:57
msgid "Unma_ximize"
msgstr "મહત્તમમાંથી પાછા ફરો (_x)"
msgstr "મહત્તમમાંથી પાછુ લાવો (_x)"
#: ../src/menu.c:58
msgid "Roll _Up"
@@ -199,11 +200,11 @@ msgstr "ખોલી કાઢો (_U)"
#: ../src/menu.c:60 ../src/menu.c:61
msgid "On _Top"
msgstr "ઉપરની બાજુએ (_T)"
msgstr "ટોચ પર (_T)"
#: ../src/menu.c:62
msgid "_Move"
msgstr "ખસડો (_M)"
msgstr "ખસડો (_M)"
#: ../src/menu.c:63
msgid "_Resize"
@@ -225,25 +226,25 @@ msgstr "હંમેશા દ્રશ્ય કામ કરવાની જ
#: ../src/menu.c:69
msgid "_Only on This Workspace"
msgstr "માત્ર આ કામ કરવાની જગ્યા પર (_O)"
msgstr "માત્ર આ કામ કરવાની જગ્યા પર (_O)"
#: ../src/menu.c:70
msgid "Move to Workspace _Left"
msgstr "કામ કરવાની જગ્યાને ડાબે ખસેડો (_L)"
msgstr "ડાબી કામ કરવાની જગ્યામાં ખસો (_L)"
#: ../src/menu.c:71
msgid "Move to Workspace R_ight"
msgstr "કામ કરવાની જગ્યાને જમણે ખસેડો (_i)"
msgstr "જમણી કામ કરવાની જગ્યામાં ખસો (_i)"
#: ../src/menu.c:72
msgid "Move to Workspace _Up"
msgstr "કામ કરવાની જગ્યાને ઉપર ખસેડો (_U)"
msgstr "ઉપરની કામ કરવાની જગ્યામાં ખસો (_U)"
#: ../src/menu.c:73
msgid "Move to Workspace _Down"
msgstr "કામ કરવાની જગ્યાને ડાબે ખસેડો (_D)"
msgstr "ઉપરની કામ કરવાની જગ્યામાં ખસો (_D)"
#: ../src/menu.c:164 ../src/prefs.c:2142 ../src/prefs.c:2669
#: ../src/menu.c:164 ../src/prefs.c:2142 ../src/prefs.c:2677
#, c-format
msgid "Workspace %d"
msgstr "કામ કરવાની જગ્યા %d"
@@ -351,31 +352,31 @@ msgstr "Mod4"
msgid "Mod5"
msgstr "Mod5"
#: ../src/metacity-dialog.c:111
#: ../src/metacity-dialog.c:88
#, c-format
msgid "The window \"%s\" is not responding."
msgstr "વિન્ડો \"%s\" જવાબ આપી રહ્યું નથી."
#: ../src/metacity-dialog.c:119
#: ../src/metacity-dialog.c:96
msgid "Forcing this application to quit will cause you to lose any unsaved changes."
msgstr "આ કાર્યક્રમને જબરદસ્તી બંધ કરવાથી કોઈપણ અસંગ્રહિત બદલાવો ખોરવાઈ જશે."
#: ../src/metacity-dialog.c:130
#: ../src/metacity-dialog.c:107
msgid "_Force Quit"
msgstr "જબરદસ્તી બહાર કાઢો (_F)"
# #-#-#-#-# libgnomeui.HEAD.hi.po (libgnomeui-2.0.hi) #-#-#-#-#
# libgnomeui/gnome-druid-page-standard.c:121
# libgnomeui/gnome-font-picker.c:155
#: ../src/metacity-dialog.c:227
#: ../src/metacity-dialog.c:204
msgid "Title"
msgstr "શીર્ષક"
#: ../src/metacity-dialog.c:239
#: ../src/metacity-dialog.c:216
msgid "Class"
msgstr "વર્ગ"
#: ../src/metacity-dialog.c:265
#: ../src/metacity-dialog.c:242
msgid ""
"These windows do not support \"save current setup\" and will have to be "
"restarted manually next time you log in."
@@ -383,7 +384,7 @@ msgstr ""
"આ બધી વિન્ડો \"વર્તમાન સુયોજનનો સંગ્રહ કરો\" ને આધાર આપતી નથી અને બીજી વખત તમે પ્રવેશ "
"કરો ત્યારે જાતે જ ફરી શરુ કરવું પડશે."
#: ../src/metacity-dialog.c:331
#: ../src/metacity-dialog.c:308
#, c-format
msgid ""
"There was an error running \"%s\":\n"
@@ -2078,19 +2079,19 @@ msgstr "%d એ જીકોન્ફ કી %s માં સંગ્રહિ
msgid "Error setting number of workspaces to %d: %s\n"
msgstr "કામ કરવાની જગ્યાની સંખ્યા %d નક્કી કરવામાં ભૂલ થઈ: %s\n"
#: ../src/prefs.c:2170 ../src/prefs.c:2335
#: ../src/prefs.c:2172 ../src/prefs.c:2342
#, c-format
msgid ""
"\"%s\" found in configuration database is not a valid value for keybinding "
"\"%s\"\n"
msgstr "કી જોડાણ \"%s\" માટે રુપરેખાના ડેટાબેઝ \"%s\" માં મળેલ કિંમત યોગ્ય નથી\n"
#: ../src/prefs.c:2750
#: ../src/prefs.c:2758
#, c-format
msgid "Error setting name for workspace %d to \"%s\": %s\n"
msgstr "કામ કરવાની જગ્યા %d ને \"%s\" નું નામ બદલવામાં ભૂલ થઈ: %s\n"
#: ../src/resizepopup.c:123
#: ../src/resizepopup.c:111
#, c-format
msgid "%d x %d"
msgstr "%d x %d"
@@ -2952,11 +2953,11 @@ msgstr "બટન માટે ધારેલુ પ્રમાણ %g એ વ
msgid "Frame geometry does not specify size of buttons"
msgstr "ચોકઠાની ભૂમિતિ બટનોનું માપ સ્પષ્ટ કરતી નથી"
#: ../src/theme.c:813
#: ../src/theme.c:847
msgid "Gradients should have at least two colors"
msgstr "ઢાળમાં ઓછામાં ઓછા બે રંગ હોવા જોઈએ"
#: ../src/theme.c:939
#: ../src/theme.c:973
#, c-format
msgid ""
"GTK color specification must have the state in brackets, e.g. gtk:fg[NORMAL] "
@@ -2965,7 +2966,7 @@ msgstr ""
"GTK રંગના સ્પષ્ટીકરણમાં કૌંસમાં સ્થિતિ હોવી જોઈએ દા.ત. gtk:fg[NORMAL] જ્યાં NORMAL "
"સ્થિતિ છે; \"%s\" નો પદચ્છેદ કરી શકાય નહિં"
#: ../src/theme.c:953
#: ../src/theme.c:987
#, c-format
msgid ""
"GTK color specification must have a close bracket after the state, e.g. gtk:"
@@ -2974,136 +2975,136 @@ msgstr ""
"GTK રંગના સ્પષ્ટીકરણમાં સ્થિતિ પછી કૌંસ બંધ થવો જોઈએ દા.ત. gtk:fg[NORMAL] જ્યાં "
"NORMAL સ્થિતિ છે; \"%s\" નો પદચ્છેદ કરી શકાય નહિં"
#: ../src/theme.c:964
#: ../src/theme.c:998
#, c-format
msgid "Did not understand state \"%s\" in color specification"
msgstr "રંગના સ્પષ્ટીકરણમાં સ્થિતિ \"%s\" સમજી શકાઈ નહિં"
#: ../src/theme.c:977
#: ../src/theme.c:1011
#, c-format
msgid "Did not understand color component \"%s\" in color specification"
msgstr "રંગના સ્પષ્ટીકરણમાં રંગની વસ્તુ \"%s\" સમજી શકાયો નહિં"
#: ../src/theme.c:1007
#: ../src/theme.c:1041
#, c-format
msgid ""
"Blend format is \"blend/bg_color/fg_color/alpha\", \"%s\" does not fit the "
"format"
msgstr "\"blend/bg_color/fg_color/alpha\" એ મિશ્રિત માળખું છે, \"%s\" માળખામાં બેસતું નથી "
#: ../src/theme.c:1018
#: ../src/theme.c:1052
#, c-format
msgid "Could not parse alpha value \"%s\" in blended color"
msgstr "મિશ્રિત રંગમાં આલ્ફાની કિંમત \"%s\" નું પદચ્છેદ કરી શકાતુ નથી"
#: ../src/theme.c:1028
#: ../src/theme.c:1062
#, c-format
msgid "Alpha value \"%s\" in blended color is not between 0.0 and 1.0"
msgstr "મિશ્રિત રંગમાં આલ્ફાની કિંમત \"%s\" . અને ૧. ની વચ્ચે નથી"
#: ../src/theme.c:1075
#: ../src/theme.c:1109
#, 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:1086
#: ../src/theme.c:1120
#, c-format
msgid "Could not parse shade factor \"%s\" in shaded color"
msgstr "છાયાંકિત રંગમાં છાયાનો અવયવ \"%s\" નું પદચ્છેદ કરી શકાતુ નથી"
#: ../src/theme.c:1096
#: ../src/theme.c:1130
#, c-format
msgid "Shade factor \"%s\" in shaded color is negative"
msgstr "છાયાનો અવયવ \"%s\" છાયાના રંગમાં ઋણ છે"
#: ../src/theme.c:1125
#: ../src/theme.c:1159
#, c-format
msgid "Could not parse color \"%s\""
msgstr "રંગ \"%s\" નુ પદચ્છેદ કરી શકાતુ નથી"
#: ../src/theme.c:1384
#: ../src/theme.c:1418
#, c-format
msgid "Coordinate expression contains character '%s' which is not allowed"
msgstr "યામાક્ષ સમીકરણ અક્ષર '%s' ધરાવે છે જે સ્વીકાર્ય નથી"
#: ../src/theme.c:1411
#: ../src/theme.c:1445
#, c-format
msgid ""
"Coordinate expression contains floating point number '%s' which could not be "
"parsed"
msgstr "યામાક્ષ સમીકરણ અપૂર્ણાંક સંખ્યા '%s' ધરાવે છે જેનું પદચ્છેદ કરી શકાતું નથી"
#: ../src/theme.c:1425
#: ../src/theme.c:1459
#, c-format
msgid "Coordinate expression contains integer '%s' which could not be parsed"
msgstr "યામાક્ષ સમીકરણ પૂર્ણાંક સંખ્યા '%s' ધરાવે છે જેનું પદચ્છેદ કરી શકાતું નથી"
#: ../src/theme.c:1492
#: ../src/theme.c:1526
#, c-format
msgid ""
"Coordinate expression contained unknown operator at the start of this text: "
"\"%s\""
msgstr "યામાક્ષ સમીકરણમાં આ લખાણની શરુઆતમાં અજાણ્યા કારકો ધરાવે છે: \"%s\""
#: ../src/theme.c:1549
#: ../src/theme.c:1583
msgid "Coordinate expression was empty or not understood"
msgstr "યામાક્ષ સમીકરણ ખાલી છે અથવા સમજી શકાય એવું નથી"
#: ../src/theme.c:1686 ../src/theme.c:1696 ../src/theme.c:1730
#: ../src/theme.c:1720 ../src/theme.c:1730 ../src/theme.c:1764
msgid "Coordinate expression results in division by zero"
msgstr "યામાક્ષ સમીકરણ શૂન્ય વડે ભાગાકારમાં પરિણમશે"
#: ../src/theme.c:1738
#: ../src/theme.c:1772
msgid "Coordinate expression tries to use mod operator on a floating-point number"
msgstr "યામાક્ષ સમીકરણ અપૂર્ણાંક સંખ્યાની ઉપર શેષ કારકનો ઉપયોગ કરવાનો પ્રયત્ન કરે છે"
#: ../src/theme.c:1794
#: ../src/theme.c:1828
#, c-format
msgid "Coordinate expression has an operator \"%s\" where an operand was expected"
msgstr "યામાક્ષ સમીકરણ માટે \"%s\" કારક છે જેના માટે ઓપરન્ડ હોવા જોઈએ"
#: ../src/theme.c:1803
#: ../src/theme.c:1837
msgid "Coordinate expression had an operand where an operator was expected"
msgstr "યામાક્ષ સમીકરણમાં ઓપરન્ડ છે જ્યાં કારક હોવુ જોઈતું હતું"
#: ../src/theme.c:1811
#: ../src/theme.c:1845
msgid "Coordinate expression ended with an operator instead of an operand"
msgstr "યામાક્ષ સમીકરણનો અંત ઓપરન્ડની જગ્યાએ કારકથી થાય છે"
#: ../src/theme.c:1821
#: ../src/theme.c:1855
#, c-format
msgid ""
"Coordinate expression has operator \"%c\" following operator \"%c\" with no "
"operand in between"
msgstr "યામાક્ષ સમીકરણમાં \"%c\" કારક પછી તરત જ \"%c\" કારક છે જેમની વચ્ચે કોઈ ઓપરન્ડ નથી"
#: ../src/theme.c:1939
#: ../src/theme.c:1973
msgid "Coordinate expression parser overflowed its buffer."
msgstr "યામાક્ષ સમીકરણ પદચ્છેદકે તેનું બફર ઓવરફ્લો કરી નાંખ્યું."
#: ../src/theme.c:1968
#: ../src/theme.c:2002
msgid "Coordinate expression had a close parenthesis with no open parenthesis"
msgstr "યામાક્ષ સમીકરણ પાસે ખુલ્લા કૌંસની વગર જ બંધ કૌંસ છે"
#: ../src/theme.c:2030
#: ../src/theme.c:2064
#, c-format
msgid "Coordinate expression had unknown variable or constant \"%s\""
msgstr "યામાક્ષ સમીકરણમાં અજાણ્યો ચલ કે અચલ \"%s\" છે"
#: ../src/theme.c:2085
#: ../src/theme.c:2119
msgid "Coordinate expression had an open parenthesis with no close parenthesis"
msgstr "યામાક્ષ સમીકરણ પાસે બંધ કૌંસની વગર જ ખુલ્લો કૌંસ હતો"
#: ../src/theme.c:2096
#: ../src/theme.c:2130
msgid "Coordinate expression doesn't seem to have any operators or operands"
msgstr "યામાક્ષ સમીકરણમાં કોઈ કારક કે ઓપરન્ડ હોય તેવુ લાગતુ નથી"
#: ../src/theme.c:2337 ../src/theme.c:2359 ../src/theme.c:2380
#: ../src/theme.c:2371 ../src/theme.c:2393 ../src/theme.c:2414
#, c-format
msgid "Theme contained an expression \"%s\" that resulted in an error: %s\n"
msgstr "થીમ \"%s\" સમીકરણ ધરાવે છે જેના પરિણામે ભૂલ થઈ: %s\n"
#: ../src/theme.c:3826
#: ../src/theme.c:3860
#, c-format
msgid ""
"<button function=\"%s\" state=\"%s\" draw_ops=\"whatever\"/> must be "
@@ -3112,23 +3113,23 @@ msgstr ""
"આ માળખાની શૈલી માટે <button function=\"%s\" state=\"%s\" draw_ops=\"whatever\"/"
"> સ્પષ્ટ કરેલી હોવી જરુરી છે"
#: ../src/theme.c:4270 ../src/theme.c:4295
#: ../src/theme.c:4304 ../src/theme.c:4329
#, c-format
msgid "Missing <frame state=\"%s\" resize=\"%s\" focus=\"%s\" style=\"whatever\"/>"
msgstr "<frame state=\"%s\" resize=\"%s\" focus=\"%s\" style=\"whatever\"/> ખોવાય છે"
#: ../src/theme.c:4341
#: ../src/theme.c:4375
#, c-format
msgid "Failed to load theme \"%s\": %s\n"
msgstr "થીમ \"%s\" લાવવામાં નિષ્ફળ: %s\n"
#: ../src/theme.c:4481 ../src/theme.c:4488 ../src/theme.c:4495
#: ../src/theme.c:4502 ../src/theme.c:4509
#: ../src/theme.c:4515 ../src/theme.c:4522 ../src/theme.c:4529
#: ../src/theme.c:4536 ../src/theme.c:4543
#, c-format
msgid "No <%s> set for theme \"%s\""
msgstr "કોઈ <%s> ગોઠવણ થીમ \"%s\" માટે નથી"
#: ../src/theme.c:4517
#: ../src/theme.c:4551
#, c-format
msgid ""
"No frame style set for window type \"%s\" in theme \"%s\", add a <window "
@@ -3137,7 +3138,7 @@ msgstr ""
"થીમ \"%s\" માં વિન્ડોના પ્રકાર \"%s\" માટે કોઈ માળખાની શૈલી ગોઠવાયેલી નથી, <window "
"type=\"%s\" style_set=\"whatever\"/> વસ્તુ ઊમેરો"
#: ../src/theme.c:4531
#: ../src/theme.c:4565
#, c-format
msgid ""
"<menu_icon function=\"%s\" state=\"%s\" draw_ops=\"whatever\"/> must be "
@@ -3146,12 +3147,12 @@ msgstr ""
"આ થીમ માટે <menu_icon function=\"%s\" state=\"%s\" draw_ops=\"whatever\"/> "
"સ્પષ્ટ કરેલુ હોવુ જોઈએ"
#: ../src/theme.c:4911 ../src/theme.c:4973
#: ../src/theme.c:4945 ../src/theme.c:5007
#, c-format
msgid "User-defined constants must begin with a capital letter; \"%s\" does not"
msgstr "વપરાશકર્તા દ્વારા વ્યાખ્યાયિત અચલો મોટા અક્ષરથી જ શરુ થવા જોઈએ; \"%s\" નહિં"
#: ../src/theme.c:4919 ../src/theme.c:4981
#: ../src/theme.c:4953 ../src/theme.c:5015
#, c-format
msgid "Constant \"%s\" has already been defined"
msgstr "અચલ \"%s\" પહેલેથી જ વ્યાખ્યાયિત છે"
@@ -3192,18 +3193,18 @@ msgstr "વિન્ડો વ્યવસ્થાપકની ભૂલ: "
msgid "Application set a bogus _NET_WM_PID %lu\n"
msgstr "કાર્યક્રમ એ ખોટું _NET_WM_PID %lu સુયોજિત કર્યું છે\n"
#: ../src/window-props.c:233
#: ../src/window-props.c:237
#, c-format
msgid "%s (on %s)"
msgstr "%s (%s પર)"
#: ../src/window-props.c:1139
#: ../src/window-props.c:1177
#, 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:5227
#: ../src/window.c:5288
#, c-format
msgid ""
"Window %s sets SM_CLIENT_ID on itself, instead of on the WM_CLIENT_LEADER "
@@ -3219,7 +3220,7 @@ msgstr ""
#. * MWM but not WM_NORMAL_HINTS are basically broken. We complain
#. * about these apps but make them work.
#.
#: ../src/window.c:5823
#: ../src/window.c:5884
#, c-format
msgid ""
"Window %s sets an MWM hint indicating it isn't resizable, but sets min size %"

2140
po/he.po

File diff suppressed because it is too large Load Diff

282
po/hi.po
View File

@@ -10,7 +10,7 @@ msgid ""
msgstr ""
"Project-Id-Version: metacity.HEAD.hi\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2006-06-28 00:06+0200\n"
"POT-Creation-Date: 2006-09-13 07:50+0200\n"
"PO-Revision-Date: 2006-06-28 11:02+0530\n"
"Last-Translator: Rajesh Ranjan <rranjan@redhat.com>\n"
"Language-Team: Hindi <fedora-trans-hi@redhat.com>\n"
@@ -18,7 +18,8 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: KBabel 1.9.1\n"
"Plural-Forms: nplurals=2; plural=(n!=1);\n\n"
"Plural-Forms: nplurals=2; plural=(n!=1);\n"
"\n"
"\n"
"\n"
"\n"
@@ -35,13 +36,13 @@ msgstr "उपयोग: %s\n"
msgid "Metacity was compiled without support for verbose mode\n"
msgstr "मेटासिटी को वाचाल विधि के बगैर कम्पाइल किया गया है\n"
#: ../src/delete.c:64 ../src/delete.c:91 ../src/metacity-dialog.c:71
#: ../src/delete.c:64 ../src/delete.c:91 ../src/metacity-dialog.c:48
#: ../src/theme-parser.c:467
#, c-format
msgid "Could not parse \"%s\" as an integer"
msgstr "\"%s\" को पूर्णांक की तरह व्याख्या नहीं कर सका"
#: ../src/delete.c:71 ../src/delete.c:98 ../src/metacity-dialog.c:78
#: ../src/delete.c:71 ../src/delete.c:98 ../src/metacity-dialog.c:55
#: ../src/theme-parser.c:476 ../src/theme-parser.c:530
#, c-format
msgid "Did not understand trailing characters \"%s\" in string \"%s\""
@@ -59,8 +60,10 @@ msgstr "संवाद प्रदर्शक प्रक्रिया: %s
#: ../src/delete.c:345
#, c-format
msgid "Error launching metacity-dialog to ask about killing an application: %s\n"
msgstr "किसी अनुप्रयोग को खत्म करने के लिए पूछने हेतु मेटासिटी-संवाद प्रारंभ करने में त्रुटि: %s\n"
msgid ""
"Error launching metacity-dialog to ask about killing an application: %s\n"
msgstr ""
"किसी अनुप्रयोग को खत्म करने के लिए पूछने हेतु मेटासिटी-संवाद प्रारंभ करने में त्रुटि: %s\n"
#: ../src/delete.c:453
#, c-format
@@ -88,44 +91,45 @@ msgstr ""
msgid "Fatal IO error %d (%s) on display '%s'.\n"
msgstr "गंभीर आईओ त्रुटि %d (%s), प्रदर्शक '%s' में.\n"
#: ../src/frames.c:1086
#: ../src/frames.c:1089
msgid "Close Window"
msgstr "विंडो बंद करें"
#: ../src/frames.c:1089
#: ../src/frames.c:1092
msgid "Window Menu"
msgstr "विंडो मेनू"
#: ../src/frames.c:1092
#: ../src/frames.c:1095
msgid "Minimize Window"
msgstr "विंडो न्यूनतम करें"
#: ../src/frames.c:1095
#: ../src/frames.c:1098
msgid "Maximize Window"
msgstr "विंडो अधिकतम करें"
#: ../src/frames.c:1098
#: ../src/frames.c:1101
msgid "Unmaximize Window"
msgstr "विंडो अधिकतम खत्म करें"
#: ../src/keybindings.c:1021
#: ../src/keybindings.c:1031
#, c-format
msgid ""
"Some other program is already using the key %s with modifiers %x as a "
"binding\n"
msgstr "कोई अन्य प्रोग्राम पहले से ही कुंजी %s उपयोग में ले रहा है, परिवर्धक %x बाइंडिंग के रूप में \n"
msgstr ""
"कोई अन्य प्रोग्राम पहले से ही कुंजी %s उपयोग में ले रहा है, परिवर्धक %x बाइंडिंग के रूप में \n"
#: ../src/keybindings.c:2588
#: ../src/keybindings.c:2663
#, c-format
msgid "Error launching metacity-dialog to print an error about a command: %s\n"
msgstr "कमांड: %s हेतु हुई त्रुटि मुद्रण हेतु मेटासिटी-संवाद प्रारंभ करने में त्रुटि हुई\n"
#: ../src/keybindings.c:2693
#: ../src/keybindings.c:2768
#, c-format
msgid "No command %d has been defined.\n"
msgstr "कोई कमांड %d पारिभाषित नहीं है.\n"
#: ../src/keybindings.c:3559
#: ../src/keybindings.c:3635
msgid "No terminal command has been defined.\n"
msgstr "कोई टर्मिनल कमांड पारिभाषित नहीं है.\n"
@@ -175,7 +179,8 @@ msgstr "प्रसंग डिरेक्ट्री स्कैन कर
#: ../src/main.c:366
#, c-format
msgid "Could not find a theme! Be sure %s exists and contains the usual themes."
msgid ""
"Could not find a theme! Be sure %s exists and contains the usual themes."
msgstr "प्रसंग नहीं ढूंढ सका! सुनिश्चित हों कि %s मौज़ूद है, तथा इसमें सामान्य प्रसंग हैं."
#: ../src/main.c:424
@@ -193,7 +198,7 @@ msgstr "अधिकतम (_x)"
#: ../src/menu.c:57
msgid "Unma_ximize"
msgstr "अधिकतम खत्म करें (_x)"
msgstr "बड़े से छोटा करें (_x)"
#: ../src/menu.c:58
msgid "Roll _Up"
@@ -250,7 +255,7 @@ msgstr "ऊपर कार्यस्थान में ले जाएँ (
msgid "Move to Workspace _Down"
msgstr "नीचे कार्यस्थान में ले जाएँ (_D)"
#: ../src/menu.c:164 ../src/prefs.c:2142 ../src/prefs.c:2669
#: ../src/menu.c:164 ../src/prefs.c:2142 ../src/prefs.c:2677
#, c-format
msgid "Workspace %d"
msgstr "कार्यस्थान %d"
@@ -394,31 +399,32 @@ msgstr "परि.4"
msgid "Mod5"
msgstr "परि.5"
#: ../src/metacity-dialog.c:111
#: ../src/metacity-dialog.c:88
#, c-format
msgid "The window \"%s\" is not responding."
msgstr "विंडो \"%s\" कोई प्रतिक्रिया नही दे रहा है."
#: ../src/metacity-dialog.c:119
msgid "Forcing this application to quit will cause you to lose any unsaved changes."
#: ../src/metacity-dialog.c:96
msgid ""
"Forcing this application to quit will cause you to lose any unsaved changes."
msgstr "इस अनुप्रयोग को जबरदस्ती बन्द करने पर आप अपने सहेजे नहीं गए परिवर्तनों को खो देंगे"
#: ../src/metacity-dialog.c:130
#: ../src/metacity-dialog.c:107
msgid "_Force Quit"
msgstr "जबर्दस्ती बाहर (_F)"
# #-#-#-#-# libgnomeui.HEAD.hi.po (libgnomeui-2.0.hi) #-#-#-#-#
# libgnomeui/gnome-druid-page-standard.c:121
# libgnomeui/gnome-font-picker.c:155
#: ../src/metacity-dialog.c:227
#: ../src/metacity-dialog.c:204
msgid "Title"
msgstr "शीर्षक"
#: ../src/metacity-dialog.c:239
#: ../src/metacity-dialog.c:216
msgid "Class"
msgstr "वर्ग"
#: ../src/metacity-dialog.c:265
#: ../src/metacity-dialog.c:242
msgid ""
"These windows do not support \"save current setup\" and will have to be "
"restarted manually next time you log in."
@@ -426,7 +432,7 @@ msgstr ""
"ये विंडो \"वर्तमान सेटअप सहेजें\" समर्थन नहीं करते अतः इन्हें अगली बार जब आप लॉगइन करेंगे तब "
"पुनः प्रारंभ करना होगा."
#: ../src/metacity-dialog.c:331
#: ../src/metacity-dialog.c:308
#, c-format
msgid ""
"There was an error running \"%s\":\n"
@@ -451,8 +457,9 @@ msgid ""
"option is set to true."
msgstr ""
"एक फंट विवरण स्ट्रिंग विंडो शीर्षक पट्टी के लिये फंट के बारे में बता रहा है. विवरण से आकार "
"प्रयुक्त होगा अगर titlebar_font_size विकल्प 0 में सेट किया जाता है, साथ ही, यह विकल्प निष्क्रिय किया जाता है अगर titlebar_uses_desktop_font "
"विकल्प को सही पर सेट किया जाता है."
"प्रयुक्त होगा अगर titlebar_font_size विकल्प 0 में सेट किया जाता है, साथ ही, यह विकल्प "
"निष्क्रिय किया जाता है अगर titlebar_uses_desktop_font विकल्प को सही पर सेट किया "
"जाता है."
#: ../src/metacity.schemas.in.h:3
msgid "Action on title bar double-click"
@@ -549,7 +556,10 @@ msgid ""
"the focused window will be automatically raised after a delay specified by "
"the auto_raise_delay key. This is not related to clicking on a window to "
"raise it, nor to entering a window during drag-and-drop."
msgstr "अगर सही पर सेट किया जाता है, और फोकस मोड या तो \"स्लोपी\" या \"माउस\" हो तब फोकस किया विंडो तब auto_raise_delay कुंजी से निर्दिष्ट विलंब से फोकस किया विंडो उठाया जायेगा. यह विंडो पर क्लिक किये जाने से संबंधित नहीं है, न तो खींचे व छोड़ें पर दाखिल होकर."
msgstr ""
"अगर सही पर सेट किया जाता है, और फोकस मोड या तो \"स्लोपी\" या \"माउस\" हो तब "
"फोकस किया विंडो तब auto_raise_delay कुंजी से निर्दिष्ट विलंब से फोकस किया विंडो उठाया "
"जायेगा. यह विंडो पर क्लिक किये जाने से संबंधित नहीं है, न तो खींचे व छोड़ें पर दाखिल होकर."
#: ../src/metacity.schemas.in.h:21
msgid ""
@@ -586,8 +596,8 @@ msgstr ""
"यदि सही है तो मेटासिटी विंडो के बजाए अनुप्रयोग जैसे कार्य करेगा. परिकल्पना थोड़ी संक्षिप्त "
"है परंतु आमतौर पर अनुप्रयोग आधारित सेटअप मैक जैसा ज्यादा होगा विंडोज़ की तरह कम. यदि आप "
"किसी विंडो को अनुप्रयोग आधारित मोड पर फ़ोकस करेंगे तो अनुप्रयोग में के सभी विंडो ऊपर हो "
"जाएंगे. यह भी कि अनुप्रयोग आधारित मोड में फ़ोकस क्लिक अन्य अनुप्रयोग के विंडो से होकर नहीं जाता. अनुप्रयोग आधारित मोड विस्तृत रूप से इस समय कार्यान्वित नहीं "
"है."
"जाएंगे. यह भी कि अनुप्रयोग आधारित मोड में फ़ोकस क्लिक अन्य अनुप्रयोग के विंडो से होकर नहीं "
"जाता. अनुप्रयोग आधारित मोड विस्तृत रूप से इस समय कार्यान्वित नहीं है."
#: ../src/metacity.schemas.in.h:24
msgid "If true, trade off usability for less resource usage"
@@ -607,8 +617,11 @@ msgid ""
"activation requests from pagers. This option is currently disabled in click-"
"to-focus mode."
msgstr ""
"कई क्रिया (उदाहरण के लिये क्लाइंट क्षेत्र को क्लिक करना, विंडो को खिसकाना व पुनः आकार देना) सामान्यतः विंडो को कुप्रभाव के रूप में उठाता है. इस विकल्प को गलत पर सेट करें अन्य उपयोक्ता क्रिया से उठाते हुये. जबकि यह विकल्प गलत है, "
"विंडो को अब भी alt-left-click से कहीं पर उठाया जा सकता है, विंडो सजावट पर सामान्य क्लिक से, या विशेष संदेश सेजैसे कि पेजर से सक्रियकरण आग्रह. यह विकल्प अभी क्लिक टू फोकस मोड में निष्क्रिय किया हुआ है."
"कई क्रिया (उदाहरण के लिये क्लाइंट क्षेत्र को क्लिक करना, विंडो को खिसकाना व पुनः आकार "
"देना) सामान्यतः विंडो को कुप्रभाव के रूप में उठाता है. इस विकल्प को गलत पर सेट करें अन्य "
"उपयोक्ता क्रिया से उठाते हुये. जबकि यह विकल्प गलत है, विंडो को अब भी alt-left-click से "
"कहीं पर उठाया जा सकता है, विंडो सजावट पर सामान्य क्लिक से, या विशेष संदेश सेजैसे कि पेजर "
"से सक्रियकरण आग्रह. यह विकल्प अभी क्लिक टू फोकस मोड में निष्क्रिय किया हुआ है."
#: ../src/metacity.schemas.in.h:27
msgid "Maximize window"
@@ -759,7 +772,9 @@ 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 "
"workspaces."
msgstr "कार्यस्थान की संख्या. यह शून्य से अधिक होना चाहिए तथा इसे एक अधिकतम पर निर्धारित करना चाहिये ज्यादा कार्यस्थान की मांग करने पर आपके डेस्कटॉप को दुर्धटनावश नष्ट होने से बचाने हेतु."
msgstr ""
"कार्यस्थान की संख्या. यह शून्य से अधिक होना चाहिए तथा इसे एक अधिकतम पर निर्धारित करना "
"चाहिये ज्यादा कार्यस्थान की मांग करने पर आपके डेस्कटॉप को दुर्धटनावश नष्ट होने से बचाने हेतु."
#: ../src/metacity.schemas.in.h:64
msgid "Raise obscured window, otherwise lower"
@@ -795,7 +810,10 @@ msgid ""
"manager misfeatures. This option puts Metacity in a rigorously correct mode, "
"which gives a more consistent user interface, provided one does not need to "
"run any misbehaving applications."
msgstr "कुछ अनुप्रयोग विशेषता को महत्व नहीं देते हैं जो कि विंडो प्रबंधक मिसफीचर में परिणाम लाता है. यह विकल्प Metacity को काफी सही मोड में रखता है, जो कि ज्यादा संगत उपयोक्ता अंतरफलक देता है, अगर कोई गलत अनुप्रयोग नहीं चला रहा है."
msgstr ""
"कुछ अनुप्रयोग विशेषता को महत्व नहीं देते हैं जो कि विंडो प्रबंधक मिसफीचर में परिणाम लाता है. "
"यह विकल्प Metacity को काफी सही मोड में रखता है, जो कि ज्यादा संगत उपयोक्ता अंतरफलक "
"देता है, अगर कोई गलत अनुप्रयोग नहीं चला रहा है."
#: ../src/metacity.schemas.in.h:72
msgid "Switch to workspace 1"
@@ -1531,12 +1549,12 @@ msgid ""
"Ctl&gt;\" and \"&lt;Ctrl&gt;\". If you set the option to the special string "
"\"disabled\", then there will be no keybinding for this action."
msgstr ""
"कीबाइंडिंग जो फ़ोकस को विंडो के बीच, पॉपअप विंडो के बिना उपयोग में आता "
"है. इस बाइंडिंग के साथ \"शिफ़्ट\" को दबाकर रखने से दिशा फिर आगे जाती है. फ़ॉर्मेट इस "
"तरह दिखेंगे \"&lt;Control&gt;a\" या \"&lt;Shift&gt;&lt;Alt&gt;F1\". यह पारसर पूरी "
"तरह लिबरल है और बड़े या छोटे अक्षर दोनों स्वीकार करता है, तथा संक्षिप्ताक्षर भी जैसे- "
"\"&lt;Ctl&gt;\" और \"&lt;Ctrl&gt;\". यदि आपने विकल्प विशेष स्ट्रिंग में तय किया है "
"\"निष्क्रिय\", तब वहाँ इस क्रिया हेतु कोई कीबाइंडिंग नहीं होगा."
"कीबाइंडिंग जो फ़ोकस को विंडो के बीच, पॉपअप विंडो के बिना उपयोग में आता है. इस बाइंडिंग "
"के साथ \"शिफ़्ट\" को दबाकर रखने से दिशा फिर आगे जाती है. फ़ॉर्मेट इस तरह दिखेंगे \"&lt;"
"Control&gt;a\" या \"&lt;Shift&gt;&lt;Alt&gt;F1\". यह पारसर पूरी तरह लिबरल है "
"और बड़े या छोटे अक्षर दोनों स्वीकार करता है, तथा संक्षिप्ताक्षर भी जैसे- \"&lt;Ctl&gt;\" "
"और \"&lt;Ctrl&gt;\". यदि आपने विकल्प विशेष स्ट्रिंग में तय किया है \"निष्क्रिय\", तब "
"वहाँ इस क्रिया हेतु कोई कीबाइंडिंग नहीं होगा."
#: ../src/metacity.schemas.in.h:138
msgid ""
@@ -1549,10 +1567,11 @@ msgid ""
"\"disabled\", then there will be no keybinding for this action."
msgstr ""
"कीबाइंडिंग जो अनुप्रयोग के विंडो के बीच, पॉपअप विंडो की मदद से पीछे हटाने में उपयोग में आता "
"है. इस बाइंडिंग के साथ \"shift\" को दबाकर रखने से दिशा फिर आगे जाती है. फ़ॉर्मेट इस तरह "
"दिखेंगे \"&lt;Control&gt;a\" या \"&lt;Shift&gt;&lt;Alt&gt;F1\". यह विश्लेषक पूरी तरह उदाहरण है और बड़े या छोटे अक्षर दोनों स्वीकार करता है, तथा संक्षिप्ताक्षर भी जैसे- \"&lt;"
"Ctl&gt;\" और \"&lt;Ctrl&gt;\". यदि आपने विकल्प विशेष स्ट्रिंग में तय किया है "
"\"निष्क्रिय\", तब वहाँ इस क्रिया हेतु कोई कीबाइंडिंग नहीं होगा."
"है. इस बाइंडिंग के साथ \"shift\" को दबाकर रखने से दिशा फिर आगे जाती है. फ़ॉर्मेट इस "
"तरह दिखेंगे \"&lt;Control&gt;a\" या \"&lt;Shift&gt;&lt;Alt&gt;F1\". यह विश्लेषक "
"पूरी तरह उदाहरण है और बड़े या छोटे अक्षर दोनों स्वीकार करता है, तथा संक्षिप्ताक्षर भी "
"जैसे- \"&lt;Ctl&gt;\" और \"&lt;Ctrl&gt;\". यदि आपने विकल्प विशेष स्ट्रिंग में तय किया "
"है \"निष्क्रिय\", तब वहाँ इस क्रिया हेतु कोई कीबाइंडिंग नहीं होगा."
#: ../src/metacity.schemas.in.h:139
msgid ""
@@ -1630,12 +1649,11 @@ msgid ""
"then there will be no keybinding for this action."
msgstr ""
"कीबाइंडिंग जो फ़ोकस को विंडो के बीच, पॉपअप विंडो की मदद के बगैर हटाने में उपयोग में आता "
"है. इस बाइंडिंग के साथ शिफ्ट \"shift\" को "
"दबाकर रखने से चाल की दिशा उलटी हो जाती है. फ़ॉर्मेट इस तरह दिखेंगे \"&lt;Control&gt;a"
"\" या \"&lt;Shift&gt;&lt;Alt&gt;F1\". यह विश्लेषक पूरी तरह उदार है और बड़े या छोटे "
"अक्षर दोनों स्वीकार करता है, तथा संक्षिप्ताक्षर भी जैसे- \"&lt;Ctl&gt;\" और \"&lt;"
"Ctrl&gt;\". यदि आपने विकल्प विशेष स्ट्रिंग में तय किया है \"निष्क्रिय\", तब वहाँ इस "
"क्रिया हेतु कोई कीबाइंडिंग नहीं होगा."
"है. इस बाइंडिंग के साथ शिफ्ट \"shift\" को दबाकर रखने से चाल की दिशा उलटी हो जाती "
"है. फ़ॉर्मेट इस तरह दिखेंगे \"&lt;Control&gt;a\" या \"&lt;Shift&gt;&lt;Alt&gt;F1\". "
"यह विश्लेषक पूरी तरह उदार है और बड़े या छोटे अक्षर दोनों स्वीकार करता है, तथा "
"संक्षिप्ताक्षर भी जैसे- \"&lt;Ctl&gt;\" और \"&lt;Ctrl&gt;\". यदि आपने विकल्प विशेष "
"स्ट्रिंग में तय किया है \"निष्क्रिय\", तब वहाँ इस क्रिया हेतु कोई कीबाइंडिंग नहीं होगा."
#: ../src/metacity.schemas.in.h:144
msgid ""
@@ -1648,12 +1666,11 @@ msgid ""
"\"disabled\", then there will be no keybinding for this action."
msgstr ""
"कीबाइंडिंग जो फ़ोकस को विंडो के बीच, पॉपअप विंडो की मदद से हटाने में उपयोग में आता है. "
"इस बाइंडिंग के साथ शिफ्ट \"shift\" को दबाकर रखने से "
"चाल की दिशा उलटी हो जाती है. फ़ॉर्मेट इस तरह दिखेंगे \"&lt;Control&gt;a\" या \"&lt;"
"Shift&gt;&lt;Alt&gt;F1\". यह विश्लेषक पूरी तरह उदाहरण है और बड़े या छोटे अक्षर दोनों "
"स्वीकार करता है, तथा संक्षिप्ताक्षर भी जैसे- \"&lt;Ctl&gt;\" और \"&lt;Ctrl&gt;\". "
"यदि आपने विकल्प विशेष स्ट्रिंग में तय किया है \"निष्क्रिय\", तब वहाँ इस क्रिया हेतु कोई "
"कीबाइंडिंग नहीं होगा."
"इस बाइंडिंग के साथ शिफ्ट \"shift\" को दबाकर रखने से चाल की दिशा उलटी हो जाती है. "
"फ़ॉर्मेट इस तरह दिखेंगे \"&lt;Control&gt;a\" या \"&lt;Shift&gt;&lt;Alt&gt;F1\". यह "
"विश्लेषक पूरी तरह उदाहरण है और बड़े या छोटे अक्षर दोनों स्वीकार करता है, तथा संक्षिप्ताक्षर "
"भी जैसे- \"&lt;Ctl&gt;\" और \"&lt;Ctrl&gt;\". यदि आपने विकल्प विशेष स्ट्रिंग में तय "
"किया है \"निष्क्रिय\", तब वहाँ इस क्रिया हेतु कोई कीबाइंडिंग नहीं होगा."
#: ../src/metacity.schemas.in.h:145
msgid ""
@@ -1905,10 +1922,10 @@ msgstr ""
"यह कुंजी बाइंडिंग बदलता है कि क्याविंडो को अन्य विंडो के ऊपर या नीचे करना है. यदि विंडो "
"अन्य विंडो से ढँका है, तो यह विंडो को अन्य विंडो से ऊपर करता है. यदि विंडो पहले से ही पूरी "
"तरह दिखाई दे रहा है, तो यह विंडो को अन्य विंडो के नीचे रखता है. फॉर्मेट इस तरह दिखेंगे "
"\"&lt;Control&gt;a\" या \"&lt;Shift&gt;&lt;Alt&gt;F1\". यह विश्लेषक पूरी तरह उदार "
"है और बड़े या छोटे अक्षर दोनों स्वीकार करता है, तथा संक्षिप्ताक्षर भी जैसे- \"&lt;Ctl&gt;"
"\" और \"&lt;Ctrl&gt;\". यदि आपने विकल्प विशेष स्ट्रिंग में तय किया है \"निष्क्रिय\", "
"तब वहाँ इस क्रिया हेतु कोई कीबाइंडिंग नहीं होगा."
"\"&lt;Control&gt;a\" या \"&lt;Shift&gt;&lt;Alt&gt;F1\". यह विश्लेषक पूरी तरह "
"उदार है और बड़े या छोटे अक्षर दोनों स्वीकार करता है, तथा संक्षिप्ताक्षर भी जैसे- \"&lt;"
"Ctl&gt;\" और \"&lt;Ctrl&gt;\". यदि आपने विकल्प विशेष स्ट्रिंग में तय किया है \"निष्क्रिय"
"\", तब वहाँ इस क्रिया हेतु कोई कीबाइंडिंग नहीं होगा."
#: ../src/metacity.schemas.in.h:165
msgid ""
@@ -1975,7 +1992,11 @@ msgid ""
"window, 'toggle_maximize' which will maximize/unmaximize the window, "
"'minimize' which will minimize the window, and 'none' which will not do "
"anything."
msgstr "यह शीर्षक पट्टी पर डबल-क्लिक के असर को निर्धारित करता है. वर्तमान वैध विकल्प हैं- 'toggle_shade' जो विंडो की छाया चालू/बन्द करते हैं, तथा 'टॉगल-अधिकतम' जो विंडो को अधिकतम/उससे बाहर करता है, और 'न्यूनतम' जो विंडो न्यूनतम करेगा, और 'कुछ नहीं' जो विंडो को कुछ नहीं करेगा."
msgstr ""
"यह शीर्षक पट्टी पर डबल-क्लिक के असर को निर्धारित करता है. वर्तमान वैध विकल्प हैं- "
"'toggle_shade' जो विंडो की छाया चालू/बन्द करते हैं, तथा 'टॉगल-अधिकतम' जो विंडो को "
"अधिकतम/उससे बाहर करता है, और 'न्यूनतम' जो विंडो न्यूनतम करेगा, और 'कुछ नहीं' जो विंडो "
"को कुछ नहीं करेगा."
#: ../src/metacity.schemas.in.h:170
msgid ""
@@ -1983,7 +2004,10 @@ msgid ""
"focus. It has two possible values; \"smart\" applies the user's normal focus "
"mode, and \"strict\" results in windows started from a terminal not being "
"given focus."
msgstr "यह विकल्प अतिरिक्त नियंत्रण देता है कि कैसे नया बनाया विंडो फोकस पाता है. इसके दो संभावित मान हैं; \"smart\" उपयोक्ता के सामान्य फोकस मोड पर लागू होता है और \"strict\" ऐसे विंडो के रूप में आता है जो टर्मिनल से फोकस नहीं किये गये रूप में आता है."
msgstr ""
"यह विकल्प अतिरिक्त नियंत्रण देता है कि कैसे नया बनाया विंडो फोकस पाता है. इसके दो "
"संभावित मान हैं; \"smart\" उपयोक्ता के सामान्य फोकस मोड पर लागू होता है और \"strict"
"\" ऐसे विंडो के रूप में आता है जो टर्मिनल से फोकस नहीं किये गये रूप में आता है."
#: ../src/metacity.schemas.in.h:171
msgid "Toggle always on top state"
@@ -2067,7 +2091,9 @@ msgstr "जी-कॉन्फ़ कुंजी '%s' एक अवैध प
msgid ""
"%d stored in GConf key %s is not a reasonable cursor_size; must be in the "
"range 1..128\n"
msgstr "%d जो जी-कॉन्फ़ कुंजी %s में भंडारित है जो एक तार्किक cursor_size नहीं है; को 1..128 के परिसर में होना चाहिये\n"
msgstr ""
"%d जो जी-कॉन्फ़ कुंजी %s में भंडारित है जो एक तार्किक cursor_size नहीं है; को 1..128 के "
"परिसर में होना चाहिये\n"
#: ../src/prefs.c:1329
#, c-format
@@ -2101,14 +2127,14 @@ msgstr "%d जो जी-कॉन्फ़ कुंजी %s में भं
msgid "Error setting number of workspaces to %d: %s\n"
msgstr "कार्यस्थान संख्या %d पर तय करने में त्रुटि: %s हुई.\n"
#: ../src/prefs.c:2170 ../src/prefs.c:2335
#: ../src/prefs.c:2172 ../src/prefs.c:2342
#, c-format
msgid ""
"\"%s\" found in configuration database is not a valid value for keybinding "
"\"%s\"\n"
msgstr "कॉन्फ़िगरेशन डेटाबेस में प्राप्त \"%s\" कीबाइंडिंग \"%s\" हेतु वैध मूल्य नहीं है\n"
#: ../src/prefs.c:2750
#: ../src/prefs.c:2758
#, c-format
msgid "Error setting name for workspace %d to \"%s\": %s\n"
msgstr "कार्यस्थान नाम %d को \"%s\" से में बदलने में त्रुटि: %s हुई\n"
@@ -2134,7 +2160,8 @@ msgstr ""
#: ../src/screen.c:443
#, c-format
msgid "Could not acquire window manager selection on screen %d display \"%s\"\n"
msgid ""
"Could not acquire window manager selection on screen %d display \"%s\"\n"
msgstr "स्क्रीन %d प्रदर्शक \"%s\" पर विंडो प्रबंधक चयन प्राप्त नहीं कर सका\n"
#: ../src/screen.c:501
@@ -2365,7 +2392,8 @@ msgstr "कोई \"मान\" गुण तत्व <%s> पर नहीं
#: ../src/theme-parser.c:1320 ../src/theme-parser.c:1334
#: ../src/theme-parser.c:1393
msgid "Cannot specify both button_width/button_height and aspect ratio for buttons"
msgid ""
"Cannot specify both button_width/button_height and aspect ratio for buttons"
msgstr "बटनों हेतु बटन-चौड़ाई/बटन-ऊँचाई दोनों ही तथा आकार अनुपात निर्दिष्ट नहीं कर सका"
#: ../src/theme-parser.c:1343
@@ -2673,7 +2701,8 @@ msgstr "प्रसंग का सबसे बाहरी तत्व <म
#: ../src/theme-parser.c:3676
#, c-format
msgid "Element <%s> is not allowed inside a name/author/date/description element"
msgid ""
"Element <%s> is not allowed inside a name/author/date/description element"
msgstr "तत्व <%s>, एक name/author/date/description तत्व के भीतर स्वीकार्य नहीं है"
#: ../src/theme-parser.c:3681
@@ -2683,7 +2712,8 @@ msgstr "तत्व <%s> <स्थिरांक> तत्व के भी
#: ../src/theme-parser.c:3693
#, c-format
msgid "Element <%s> is not allowed inside a distance/border/aspect_ratio element"
msgid ""
"Element <%s> is not allowed inside a distance/border/aspect_ratio element"
msgstr "तत्व <%s>, distance/border/aspect_ratio तत्व के भीतर स्वीकार्य नहीं है"
#: ../src/theme-parser.c:3715
@@ -2975,11 +3005,11 @@ msgstr "बटन आस्पेक्ट रेशो %g यथोचित
msgid "Frame geometry does not specify size of buttons"
msgstr "फ्रेम ज्यामिती बटनों के आकार को उल्लेखित नहीं करता"
#: ../src/theme.c:813
#: ../src/theme.c:847
msgid "Gradients should have at least two colors"
msgstr "अनुपात में कम से कम दो रंग होने चाहिएँ"
#: ../src/theme.c:939
#: ../src/theme.c:973
#, c-format
msgid ""
"GTK color specification must have the state in brackets, e.g. gtk:fg[NORMAL] "
@@ -2988,7 +3018,7 @@ msgstr ""
"जीटीके रंग लक्षण कोष्ठक में स्थिति (स्टेट) होने चाहिएँ जैसे- gtk:fg[NORMAL] यहाँ NORMAL "
"स्थिति है; \"%s\" की व्याख्या नहीं कर सका"
#: ../src/theme.c:953
#: ../src/theme.c:987
#, c-format
msgid ""
"GTK color specification must have a close bracket after the state, e.g. gtk:"
@@ -2997,17 +3027,17 @@ msgstr ""
"जीटीके रंग लक्षण स्थिति के बाद बंद कोष्ठक में होने चाहिएँ जैसे- gtk:fg[NORMAL] यहाँ "
"NORMAL स्थिति है; \"%s\" की व्याख्या नहीं कर सका"
#: ../src/theme.c:964
#: ../src/theme.c:998
#, c-format
msgid "Did not understand state \"%s\" in color specification"
msgstr "स्थिति \"%s\" रंग लक्षण में समझ नहीं सका"
#: ../src/theme.c:977
#: ../src/theme.c:1011
#, c-format
msgid "Did not understand color component \"%s\" in color specification"
msgstr "रंग अवयव \"%s\" रंग लक्षण में समझ नहीं सका"
#: ../src/theme.c:1007
#: ../src/theme.c:1041
#, c-format
msgid ""
"Blend format is \"blend/bg_color/fg_color/alpha\", \"%s\" does not fit the "
@@ -3016,119 +3046,124 @@ msgstr ""
"ब्लेंड फ़ॉर्मेट है \"blend/bg_color/fg_color/alpha\", \"%s\" जो फ़ॉर्मेट के अनुरूप नहीं "
"होता"
#: ../src/theme.c:1018
#: ../src/theme.c:1052
#, c-format
msgid "Could not parse alpha value \"%s\" in blended color"
msgstr "अल्फा मूल्य \"%s\" की ब्लेंडेड रंग में व्याख्या नहीं कर सका"
#: ../src/theme.c:1028
#: ../src/theme.c:1062
#, 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:1075
#: ../src/theme.c:1109
#, c-format
msgid "Shade format is \"shade/base_color/factor\", \"%s\" does not fit the format"
msgstr "शेड फॉर्मेट है \"shade/base_color/factor\", \"%s\" जो फॉर्मेट के अनुरूप नहीं होता"
msgid ""
"Shade format is \"shade/base_color/factor\", \"%s\" does not fit the format"
msgstr ""
"शेड फॉर्मेट है \"shade/base_color/factor\", \"%s\" जो फॉर्मेट के अनुरूप नहीं होता"
#: ../src/theme.c:1086
#: ../src/theme.c:1120
#, c-format
msgid "Could not parse shade factor \"%s\" in shaded color"
msgstr "शेड फैक्टर \"%s\" की आभायुक्त रंग में व्याख्या नहीं कर सका"
#: ../src/theme.c:1096
#: ../src/theme.c:1130
#, c-format
msgid "Shade factor \"%s\" in shaded color is negative"
msgstr "शेड फैक्टर \"%s\" आभायुक्त रंग में ऋणात्मक है"
#: ../src/theme.c:1125
#: ../src/theme.c:1159
#, c-format
msgid "Could not parse color \"%s\""
msgstr "\"%s\" रंग की व्याख्या नहीं कर सका"
#: ../src/theme.c:1384
#: ../src/theme.c:1418
#, c-format
msgid "Coordinate expression contains character '%s' which is not allowed"
msgstr "कोआर्डिनेट एक्सप्रेशन मे अक्षर '%s' है जो स्वीकार्य नहीं है"
#: ../src/theme.c:1411
#: ../src/theme.c:1445
#, c-format
msgid ""
"Coordinate expression contains floating point number '%s' which could not be "
"parsed"
msgstr "कोआर्डिनेट एक्सप्रेशन मे फ्लोटिंग पाइंट नम्बर '%s' है जिसकी व्याख्या नहीं की जा सकी"
#: ../src/theme.c:1425
#: ../src/theme.c:1459
#, c-format
msgid "Coordinate expression contains integer '%s' which could not be parsed"
msgstr "कोआर्डिनेट एक्सप्रेशन मे पूर्णांक '%s' है जिसकी व्याख्या नहीं की जा सकी"
#: ../src/theme.c:1492
#: ../src/theme.c:1526
#, c-format
msgid ""
"Coordinate expression contained unknown operator at the start of this text: "
"\"%s\""
msgstr "कोआर्डिनेट एक्सप्रेशन मे इस पाठ: \"%s\" के आरंभ में ही अज्ञात आपरेटर है "
#: ../src/theme.c:1549
#: ../src/theme.c:1583
msgid "Coordinate expression was empty or not understood"
msgstr "कोआर्डिनेट एक्सप्रेशन या खाली है या समझा नहीं जा सका"
#: ../src/theme.c:1686 ../src/theme.c:1696 ../src/theme.c:1730
#: ../src/theme.c:1720 ../src/theme.c:1730 ../src/theme.c:1764
msgid "Coordinate expression results in division by zero"
msgstr "कोआर्डिनेट एक्सप्रेशन परिणाम शून्य से भाजक के रूप में मिला"
#: ../src/theme.c:1738
msgid "Coordinate expression tries to use mod operator on a floating-point number"
#: ../src/theme.c:1772
msgid ""
"Coordinate expression tries to use mod operator on a floating-point number"
msgstr "कोआर्डिनेट एक्सप्रेशन, फ्लोटिंग पाइंट नम्बर पर माड आपरेटर के उपयोग की कोशिश में"
#: ../src/theme.c:1794
#: ../src/theme.c:1828
#, c-format
msgid "Coordinate expression has an operator \"%s\" where an operand was expected"
msgid ""
"Coordinate expression has an operator \"%s\" where an operand was expected"
msgstr "कोआर्डिनेट एक्सप्रेशन में एक आपरेटर \"%s\" है जबकि आपरेंड वांछित है"
#: ../src/theme.c:1803
#: ../src/theme.c:1837
msgid "Coordinate expression had an operand where an operator was expected"
msgstr "कोआर्डिनेट एक्सप्रेशन में एक आपरेंड है जबकि आपरेटर वांछित है"
#: ../src/theme.c:1811
#: ../src/theme.c:1845
msgid "Coordinate expression ended with an operator instead of an operand"
msgstr "कोआर्डिनेट एक्सप्रेशन एक आपरेटर से अंत हो रहा है एक आपरेंड के बदले"
#: ../src/theme.c:1821
#: ../src/theme.c:1855
#, c-format
msgid ""
"Coordinate expression has operator \"%c\" following operator \"%c\" with no "
"operand in between"
msgstr "कोआर्डिनेट एक्सप्रेशन में आपरेटर \"%c\" के बाद आपरेटर \"%c\" है बीच में कोई आपरेण्ड नहीं है"
msgstr ""
"कोआर्डिनेट एक्सप्रेशन में आपरेटर \"%c\" के बाद आपरेटर \"%c\" है बीच में कोई आपरेण्ड नहीं है"
#: ../src/theme.c:1939
#: ../src/theme.c:1973
msgid "Coordinate expression parser overflowed its buffer."
msgstr "कोआर्डिनेट एक्सप्रेशन विश्लेषक इसके बफर को ओवरफ्लो कर गया है."
#: ../src/theme.c:1968
#: ../src/theme.c:2002
msgid "Coordinate expression had a close parenthesis with no open parenthesis"
msgstr "कोआर्डिनेट एक्सप्रेशन में बन्द लघुकोष्ठक है जिसमें कोई खुला कोष्ठक नहीं है"
#: ../src/theme.c:2030
#: ../src/theme.c:2064
#, c-format
msgid "Coordinate expression had unknown variable or constant \"%s\""
msgstr "कोआर्डिनेट एक्सप्रेशन में अज्ञात चर या अचर \"%s\" है"
#: ../src/theme.c:2085
#: ../src/theme.c:2119
msgid "Coordinate expression had an open parenthesis with no close parenthesis"
msgstr "कोआर्डिनेट एक्सप्रेशन में खुला लघुकोष्ठक है जिसमें कोई बंद कोष्ठक नहीं है"
#: ../src/theme.c:2096
#: ../src/theme.c:2130
msgid "Coordinate expression doesn't seem to have any operators or operands"
msgstr "प्रतीत होता है कि कोआर्डिनेट एक्सप्रेशन में कोई आपरेटर या आपरेंड नहीं है"
#: ../src/theme.c:2337 ../src/theme.c:2359 ../src/theme.c:2380
#: ../src/theme.c:2371 ../src/theme.c:2393 ../src/theme.c:2414
#, c-format
msgid "Theme contained an expression \"%s\" that resulted in an error: %s\n"
msgstr "प्रसंग में एक एक्सप्रेशन \"%s\" है जिसके प्रतिफल में त्रुटि: %s हुई \n"
#: ../src/theme.c:3826
#: ../src/theme.c:3860
#, c-format
msgid ""
"<button function=\"%s\" state=\"%s\" draw_ops=\"whatever\"/> must be "
@@ -3137,23 +3172,25 @@ msgstr ""
"<button function=\"%s\" state=\"%s\" draw_ops=\"whatever\"/> इस फ्रेम शैली हेतु "
"निर्दिष्ट किया जाना अनिवार्य है"
#: ../src/theme.c:4270 ../src/theme.c:4295
#: ../src/theme.c:4304 ../src/theme.c:4329
#, c-format
msgid "Missing <frame state=\"%s\" resize=\"%s\" focus=\"%s\" style=\"whatever\"/>"
msgstr "नहीं है <frame state=\"%s\" resize=\"%s\" focus=\"%s\" style=\"whatever\"/>"
msgid ""
"Missing <frame state=\"%s\" resize=\"%s\" focus=\"%s\" style=\"whatever\"/>"
msgstr ""
"नहीं है <frame state=\"%s\" resize=\"%s\" focus=\"%s\" style=\"whatever\"/>"
#: ../src/theme.c:4341
#: ../src/theme.c:4375
#, c-format
msgid "Failed to load theme \"%s\": %s\n"
msgstr "प्रसंग \"%s\" लोड करने में असफल: %s\n"
#: ../src/theme.c:4481 ../src/theme.c:4488 ../src/theme.c:4495
#: ../src/theme.c:4502 ../src/theme.c:4509
#: ../src/theme.c:4515 ../src/theme.c:4522 ../src/theme.c:4529
#: ../src/theme.c:4536 ../src/theme.c:4543
#, c-format
msgid "No <%s> set for theme \"%s\""
msgstr "कोई <%s> सेट प्रसंग \"%s\" हेतु नहीं है"
#: ../src/theme.c:4517
#: ../src/theme.c:4551
#, c-format
msgid ""
"No frame style set for window type \"%s\" in theme \"%s\", add a <window "
@@ -3162,7 +3199,7 @@ msgstr ""
"विंडो प्रकार \"%s\" में प्रसंग \"%s\" में कोई फ्रेम स्टाइल नियत नहीं है, जोड़ें <window "
"type=\"%s\" style_set=\"whatever\"/> तत्व "
#: ../src/theme.c:4531
#: ../src/theme.c:4565
#, c-format
msgid ""
"<menu_icon function=\"%s\" state=\"%s\" draw_ops=\"whatever\"/> must be "
@@ -3171,14 +3208,15 @@ msgstr ""
"<menu_icon function=\"%s\" state=\"%s\" draw_ops=\"whatever\"/> इस प्रसंग हेतु "
"उल्लेखित होना चाहिए"
#: ../src/theme.c:4911 ../src/theme.c:4973
#: ../src/theme.c:4945 ../src/theme.c:5007
#, c-format
msgid "User-defined constants must begin with a capital letter; \"%s\" does not"
msgid ""
"User-defined constants must begin with a capital letter; \"%s\" does not"
msgstr ""
"उपयोगकर्ता द्वारा पारिभाषित स्थिरांक बड़े अक्षर से शुरू होने चाहिएँ, जो \"%s\" नहीं हो "
"रहा है"
#: ../src/theme.c:4919 ../src/theme.c:4981
#: ../src/theme.c:4953 ../src/theme.c:5015
#, c-format
msgid "Constant \"%s\" has already been defined"
msgstr "स्थिरांक \"%s\" पहले ही पारिभाषित है"
@@ -3224,14 +3262,14 @@ msgstr "अनुप्रयोग ने नियत किया एक bogu
msgid "%s (on %s)"
msgstr "%s (%s पर)"
#: ../src/window-props.c:1159
#: ../src/window-props.c:1177
#, c-format
msgid "Invalid WM_TRANSIENT_FOR window 0x%lx specified for %s.\n"
msgstr "अवैध WM_TRANSIENT_FOR window 0x%lx %s के लिये निर्दिष्ट.\n"
# first time through
#. first time through
#: ../src/window.c:5240
#: ../src/window.c:5288
#, c-format
msgid ""
"Window %s sets SM_CLIENT_ID on itself, instead of on the WM_CLIENT_LEADER "
@@ -3253,7 +3291,7 @@ msgstr ""
#. * MWM but not WM_NORMAL_HINTS are basically broken. We complain
#. * about these apps but make them work.
#.
#: ../src/window.c:5836
#: ../src/window.c:5884
#, c-format
msgid ""
"Window %s sets an MWM hint indicating it isn't resizable, but sets min size %"
@@ -3285,6 +3323,6 @@ msgstr "गुण %s विंडो 0x%lx में अवैध यूटी
#: ../src/xprops.c:482
#, c-format
msgid "Property %s on window 0x%lx contained invalid UTF-8 for item %d in the list\n"
msgid ""
"Property %s on window 0x%lx contained invalid UTF-8 for item %d in the list\n"
msgstr "गुण %s विंडो 0x%lx पर %d वस्तुओं हेतु सूची में अवैध यूटीएफ़-8 है\n"

1796
po/hu.po

File diff suppressed because it is too large Load Diff

1259
po/id.po

File diff suppressed because it is too large Load Diff

1645
po/it.po

File diff suppressed because it is too large Load Diff

1752
po/ja.po

File diff suppressed because it is too large Load Diff

2468
po/ka.po

File diff suppressed because it is too large Load Diff

1363
po/ko.po

File diff suppressed because it is too large Load Diff

2372
po/ku.po

File diff suppressed because it is too large Load Diff

1611
po/lt.po

File diff suppressed because it is too large Load Diff

1507
po/lv.po

File diff suppressed because it is too large Load Diff

1649
po/mk.po

File diff suppressed because it is too large Load Diff

1305
po/ml.po

File diff suppressed because it is too large Load Diff

2775
po/mr.po Normal file

File diff suppressed because it is too large Load Diff

1513
po/nb.po

File diff suppressed because it is too large Load Diff

2969
po/nl.po

File diff suppressed because it is too large Load Diff

2949
po/oc.po Normal file

File diff suppressed because it is too large Load Diff

2121
po/pa.po

File diff suppressed because it is too large Load Diff

1648
po/pl.po

File diff suppressed because it is too large Load Diff

1712
po/pt.po

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -260,7 +260,7 @@ msgstr "Ecranul %s%d"
#: ../src/menu.c:370
msgid "Move to Another _Workspace"
msgstr "Mută ferestra către un alt _ecran"
msgstr "Mută fereastra către un alt _ecran"
#. This is the text that should appear next to menu accelerators
#. * that use the shift key. If the text on this key isn't typically
@@ -456,7 +456,7 @@ msgid ""
"for example."
msgstr ""
"Efectuănd un click pe o fereastră având apăsată această tastă modificator va "
"muta fereastra (click normal), va redimensiona ferestra (click cu butonul "
"muta fereastra (click normal), va redimensiona fereastra (click cu butonul "
"din mijloc), sau va arăta meniul ferestrei (click cu butonul din dreapta). "
"Modificatorul este scris ca „&lt;Alt&gt;” sau „&lt;Super&gt;”, de exemplu."
@@ -599,7 +599,7 @@ msgstr ""
#: ../src/metacity.schemas.in.h:24
msgid "Maximize window"
msgstr "Maximizează ferestra"
msgstr "Maximizează fereastra"
#: ../src/metacity.schemas.in.h:25
msgid "Maximize window horizontally"
@@ -667,7 +667,7 @@ msgstr "Mută fereastra un ecran la dreapta"
#: ../src/metacity.schemas.in.h:41
msgid "Move window one workspace up"
msgstr "Mută ferestra un ecran mai sus"
msgstr "Mută fereastra un ecran mai sus"
#: ../src/metacity.schemas.in.h:42
msgid "Move window to workspace 1"
@@ -1932,7 +1932,7 @@ msgid ""
"option to the special string \"disabled\", then there will be no keybinding "
"for this action."
msgstr ""
"Combinaţia de taste folosită pentru a maximiza o ferestră la totalul "
"Combinaţia de taste folosită pentru a maximiza o fereastră la totalul "
"spaţiului disponibil pe verticală. Formatul arată ca de exemplu „&lt;"
"Control&gt;a” sau „&lt;Shift&gt;&lt;Alt&gt;F1”. Este permisă folosirea "
"majusculelor şi a minusculelor, precum şi a abrevierilor gen „&lt;Ctl&gt;” "
@@ -2877,7 +2877,7 @@ msgstr "Test de performanţă"
#: ../src/theme-viewer.c:900
msgid "Window Title Goes Here"
msgstr "Titlul de ferestră vine aici"
msgstr "Titlul de fereastră vine aici"
#: ../src/theme-viewer.c:1004
#, c-format
@@ -3235,7 +3235,7 @@ msgid ""
"Window %s sets SM_CLIENT_ID on itself, instead of on the WM_CLIENT_LEADER "
"window as specified in the ICCCM.\n"
msgstr ""
"Ferestra %s setează SM_CLIENT_ID asupra sa, în loc să o facă asupra "
"Fereastra %s setează SM_CLIENT_ID asupra sa, în loc să o facă asupra "
"ferestrei WM_CLIENT_LEADER aşa cum este specificat în ICCCM.\n"
#. We ignore mwm_has_resize_func because WM_NORMAL_HINTS is the

2562
po/ru.po

File diff suppressed because it is too large Load Diff

2843
po/sl.po

File diff suppressed because it is too large Load Diff

1722
po/sr.po

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

3202
po/sv.po

File diff suppressed because it is too large Load Diff

1284
po/ta.po

File diff suppressed because it is too large Load Diff

1479
po/th.po

File diff suppressed because it is too large Load Diff

1691
po/uk.po

File diff suppressed because it is too large Load Diff

1777
po/vi.po

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,20 @@
<?xml version="1.0" encoding="UTF-8" ?>
<KeyListEntries _name="Desktop" wm_name="Metacity" package="metacity">
<KeyListEntry
name="/apps/metacity/global_keybindings/panel_run_dialog" />
<KeyListEntry
name="/apps/metacity/global_keybindings/panel_main_menu" />
<KeyListEntry
name="/apps/metacity/global_keybindings/run_command_screenshot" />
<KeyListEntry
name="/apps/metacity/global_keybindings/run_command_window_screenshot" />
<KeyListEntry
name="/apps/metacity/global_keybindings/run_command_terminal" />
</KeyListEntries>

269
src/50-metacity-key.xml.in Normal file
View File

@@ -0,0 +1,269 @@
<?xml version="1.0" encoding="UTF-8" ?>
<KeyListEntries _name="Window Management" wm_name="Metacity" package="metacity">
<KeyListEntry
name="/apps/metacity/window_keybindings/activate_window_menu" />
<KeyListEntry
name="/apps/metacity/window_keybindings/toggle_fullscreen" />
<KeyListEntry
name="/apps/metacity/window_keybindings/toggle_maximized" />
<KeyListEntry
name="/apps/metacity/window_keybindings/maximize" />
<KeyListEntry
name="/apps/metacity/window_keybindings/unmaximize" />
<KeyListEntry
name="/apps/metacity/window_keybindings/toggle_shaded" />
<KeyListEntry
name="/apps/metacity/window_keybindings/close" />
<KeyListEntry
name="/apps/metacity/window_keybindings/minimize" />
<KeyListEntry
name="/apps/metacity/window_keybindings/begin_move" />
<KeyListEntry
name="/apps/metacity/window_keybindings/begin_resize" />
<KeyListEntry
name="/apps/metacity/window_keybindings/toggle_on_all_workspaces"
value="1"
key="/apps/metacity/general/num_workspaces"
comparison="gt" />
<KeyListEntry
name="/apps/metacity/window_keybindings/raise_or_lower" />
<KeyListEntry
name="/apps/metacity/window_keybindings/raise" />
<KeyListEntry
name="/apps/metacity/window_keybindings/lower" />
<KeyListEntry
name="/apps/metacity/window_keybindings/maximize_vertically" />
<KeyListEntry
name="/apps/metacity/window_keybindings/maximize_horizontally" />
<KeyListEntry
name="/apps/metacity/window_keybindings/move_to_workspace_1"
value="1"
key="/apps/metacity/general/num_workspaces"
comparison="gt" />
<KeyListEntry
name="/apps/metacity/window_keybindings/move_to_workspace_2"
value="1"
key="/apps/metacity/general/num_workspaces"
comparison="gt" />
<KeyListEntry
name="/apps/metacity/window_keybindings/move_to_workspace_3"
value="2"
key="/apps/metacity/general/num_workspaces"
comparison="gt" />
<KeyListEntry
name="/apps/metacity/window_keybindings/move_to_workspace_4"
value="3"
key="/apps/metacity/general/num_workspaces"
comparison="gt" />
<KeyListEntry
name="/apps/metacity/window_keybindings/move_to_workspace_5"
value="4"
key="/apps/metacity/general/num_workspaces"
comparison="gt" />
<KeyListEntry
name="/apps/metacity/window_keybindings/move_to_workspace_6"
value="5"
key="/apps/metacity/general/num_workspaces"
comparison="gt" />
<KeyListEntry
name="/apps/metacity/window_keybindings/move_to_workspace_7"
value="6"
key="/apps/metacity/general/num_workspaces"
comparison="gt" />
<KeyListEntry
name="/apps/metacity/window_keybindings/move_to_workspace_8"
value="7"
key="/apps/metacity/general/num_workspaces"
comparison="gt" />
<KeyListEntry
name="/apps/metacity/window_keybindings/move_to_workspace_9"
value="8"
key="/apps/metacity/general/num_workspaces"
comparison="gt" />
<KeyListEntry
name="/apps/metacity/window_keybindings/move_to_workspace_10"
value="9"
key="/apps/metacity/general/num_workspaces"
comparison="gt" />
<KeyListEntry
name="/apps/metacity/window_keybindings/move_to_workspace_11"
value="10"
key="/apps/metacity/general/num_workspaces"
comparison="gt" />
<KeyListEntry
name="/apps/metacity/window_keybindings/move_to_workspace_12"
value="11"
key="/apps/metacity/general/num_workspaces"
comparison="gt" />
<KeyListEntry
name="/apps/metacity/window_keybindings/move_to_workspace_left"
value="1"
key="/apps/metacity/general/num_workspaces"
comparison="gt" />
<KeyListEntry
name="/apps/metacity/window_keybindings/move_to_workspace_right"
value="1"
key="/apps/metacity/general/num_workspaces"
comparison="gt" />
<KeyListEntry
name="/apps/metacity/window_keybindings/move_to_workspace_up"
value="1"
key="/apps/metacity/general/num_workspaces"
comparison="gt" />
<KeyListEntry
name="/apps/metacity/window_keybindings/move_to_workspace_down"
value="1"
key="/apps/metacity/general/num_workspaces"
comparison="gt" />
<KeyListEntry
name="/apps/metacity/global_keybindings/switch_windows" />
<KeyListEntry
name="/apps/metacity/global_keybindings/switch_group" />
<KeyListEntry
name="/apps/metacity/global_keybindings/switch_panels" />
<KeyListEntry
name="/apps/metacity/global_keybindings/cycle_windows" />
<KeyListEntry
name="/apps/metacity/global_keybindings/cycle_group" />
<KeyListEntry
name="/apps/metacity/global_keybindings/cycle_panels" />
<KeyListEntry
name="/apps/metacity/global_keybindings/show_desktop" />
<KeyListEntry
name="/apps/metacity/global_keybindings/switch_to_workspace_1"
value="1"
key="/apps/metacity/general/num_workspaces"
comparison="gt" />
<KeyListEntry
name="/apps/metacity/global_keybindings/switch_to_workspace_2"
value="1"
key="/apps/metacity/general/num_workspaces"
comparison="gt" />
<KeyListEntry
name="/apps/metacity/global_keybindings/switch_to_workspace_3"
value="2"
key="/apps/metacity/general/num_workspaces"
comparison="gt" />
<KeyListEntry
name="/apps/metacity/global_keybindings/switch_to_workspace_4"
value="3"
key="/apps/metacity/general/num_workspaces"
comparison="gt" />
<KeyListEntry
name="/apps/metacity/global_keybindings/switch_to_workspace_5"
value="4"
key="/apps/metacity/general/num_workspaces"
comparison="gt" />
<KeyListEntry
name="/apps/metacity/global_keybindings/switch_to_workspace_6"
value="5"
key="/apps/metacity/general/num_workspaces"
comparison="gt" />
<KeyListEntry
name="/apps/metacity/global_keybindings/switch_to_workspace_7"
value="6"
key="/apps/metacity/general/num_workspaces"
comparison="gt" />
<KeyListEntry
name="/apps/metacity/global_keybindings/switch_to_workspace_8"
value="7"
key="/apps/metacity/general/num_workspaces"
comparison="gt" />
<KeyListEntry
name="/apps/metacity/global_keybindings/switch_to_workspace_9"
value="8"
key="/apps/metacity/general/num_workspaces"
comparison="gt" />
<KeyListEntry
name="/apps/metacity/global_keybindings/switch_to_workspace_10"
value="9"
key="/apps/metacity/general/num_workspaces"
comparison="gt" />
<KeyListEntry
name="/apps/metacity/global_keybindings/switch_to_workspace_11"
value="10"
key="/apps/metacity/general/num_workspaces"
comparison="gt" />
<KeyListEntry
name="/apps/metacity/global_keybindings/switch_to_workspace_12"
value="11"
key="/apps/metacity/general/num_workspaces"
comparison="gt" />
<KeyListEntry
name="/apps/metacity/global_keybindings/switch_to_workspace_left"
value="1"
key="/apps/metacity/general/num_workspaces"
comparison="gt" />
<KeyListEntry
name="/apps/metacity/global_keybindings/switch_to_workspace_right"
value="1"
key="/apps/metacity/general/num_workspaces"
comparison="gt" />
<KeyListEntry
name="/apps/metacity/global_keybindings/switch_to_workspace_up"
value="1"
key="/apps/metacity/general/num_workspaces"
comparison="gt" />
<KeyListEntry
name="/apps/metacity/global_keybindings/switch_to_workspace_down"
value="1"
key="/apps/metacity/general/num_workspaces"
comparison="gt" />
</KeyListEntries>

View File

@@ -4,10 +4,6 @@ SUBDIRS=wm-tester tools themes
INCLUDES=@METACITY_CFLAGS@ -DMETACITY_LIBEXECDIR=\"$(libexecdir)\" -DHOST_ALIAS=\"@HOST_ALIAS@\" -DMETACITY_LOCALEDIR=\"$(prefix)/@DATADIRNAME@/locale\" -DMETACITY_PKGDATADIR=\"$(pkgdatadir)\" -DMETACITY_DATADIR=\"$(datadir)\" -DG_LOG_DOMAIN=\"metacity\" -DSN_API_NOT_YET_FROZEN=1
EGGFILES= \
eggaccelerators.c \
eggaccelerators.h
metacity_SOURCES= \
async-getprop.c \
async-getprop.h \
@@ -97,8 +93,7 @@ metacity_SOURCES= \
workspace.c \
workspace.h \
xprops.c \
xprops.h \
$(EGGFILES)
xprops.h
# by setting libmetacity_private_la_CFLAGS, the files shared with
# metacity proper will be compiled with different names.
@@ -166,6 +161,12 @@ schemadir = @GCONF_SCHEMA_FILE_DIR@
schema_in_files = metacity.schemas.in
schema_DATA = $(schema_in_files:.schemas.in=.schemas)
@INTLTOOL_XML_NOMERGE_RULE@
xmldir = $(datadir)/control-center/keybindings
xml_in_files = 50-metacity-desktop-key.xml.in 50-metacity-key.xml.in
xml_DATA = $(xml_in_files:.xml.in=.xml)
@INTLTOOL_SCHEMAS_RULE@
if GCONF_SCHEMAS_INSTALL
@@ -182,7 +183,7 @@ VARIABLES=default_icon_data $(srcdir)/default_icon.png \
stock_delete_data $(srcdir)/stock_delete.png
BUILT_SOURCES = inlinepixbufs.h
CLEANFILES = inlinepixbufs.h metacity.desktop metacity.schemas
CLEANFILES = inlinepixbufs.h metacity.desktop metacity.schemas 50-metacity-desktop-key.xml 50-metacity-key.xml
inlinepixbufs.h: $(IMAGES)
$(GDK_PIXBUF_CSOURCE) --raw --build-list $(VARIABLES) >$(srcdir)/inlinepixbufs.h
@@ -193,13 +194,8 @@ pkgconfig_DATA = libmetacity-private.pc
EXTRA_DIST=$(desktopfiles_files) \
$(IMAGES) $(schema_DATA) \
update-from-egg.sh \
$(desktopfiles_in_files) \
$(schema_in_files) \
$(xml_in_files) \
libmetacity-private.pc.in
EGGDIR=$(srcdir)/../../libegg/libegg
regenerate-built-sources:
EGGFILES="$(EGGFILES)" EGGDIR="$(EGGDIR)" $(srcdir)/update-from-egg.sh

View File

@@ -1,3 +1,5 @@
/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */
/* Metacity misc. public entry points */
/*

View File

@@ -1,3 +1,5 @@
/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */
/* Metacity misc. public entry points */
/*

View File

@@ -1,3 +1,5 @@
/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */
/* Asynchronous X property getting hack */
/*

View File

@@ -1,3 +1,5 @@
/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */
/* Asynchronous X property getting hack */
/*

View File

@@ -1,3 +1,5 @@
/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */
/* Metacity visual bell */
/*

View File

@@ -1,5 +1,6 @@
/* Metacity visual bell */
/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */
/*
* Copyright (C) 2002 Sun Microsystems Inc.
*

View File

@@ -1,3 +1,5 @@
/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */
/* Simple box operations */
/*
@@ -545,10 +547,10 @@ meta_rectangle_get_minimal_spanning_set_for_region (
ret = g_list_prepend (NULL, temp_rect);
strut_iter = all_struts;
while (strut_iter)
for (strut_iter = all_struts; strut_iter; strut_iter = strut_iter->next)
{
GList *rect_iter;
MetaRectangle *strut = (MetaRectangle*) strut_iter->data;
MetaRectangle *strut_rect = &((MetaStrut*)strut_iter->data)->rect;
tmp_list = ret;
ret = NULL;
@@ -556,45 +558,45 @@ meta_rectangle_get_minimal_spanning_set_for_region (
while (rect_iter)
{
MetaRectangle *rect = (MetaRectangle*) rect_iter->data;
if (!meta_rectangle_overlap (rect, strut))
if (!meta_rectangle_overlap (rect, strut_rect))
ret = g_list_prepend (ret, rect);
else
{
/* If there is area in rect left of strut */
if (rect->x < strut->x)
if (BOX_LEFT (*rect) < BOX_LEFT (*strut_rect))
{
temp_rect = g_new (MetaRectangle, 1);
*temp_rect = *rect;
temp_rect->width = strut->x - rect->x;
temp_rect->width = BOX_LEFT (*strut_rect) - BOX_LEFT (*rect);
ret = g_list_prepend (ret, temp_rect);
}
/* If there is area in rect right of strut */
if (rect->x + rect->width > strut->x + strut->width)
if (BOX_RIGHT (*rect) > BOX_RIGHT (*strut_rect))
{
int new_x;
temp_rect = g_new (MetaRectangle, 1);
*temp_rect = *rect;
new_x = strut->x + strut->width;
temp_rect->width = rect->x + rect->width - new_x;
new_x = BOX_RIGHT (*strut_rect);
temp_rect->width = BOX_RIGHT(*rect) - new_x;
temp_rect->x = new_x;
ret = g_list_prepend (ret, temp_rect);
}
/* If there is area in rect above strut */
if (rect->y < strut->y)
if (BOX_TOP (*rect) < BOX_TOP (*strut_rect))
{
temp_rect = g_new (MetaRectangle, 1);
*temp_rect = *rect;
temp_rect->height = strut->y - rect->y;
temp_rect->height = BOX_TOP (*strut_rect) - BOX_TOP (*rect);
ret = g_list_prepend (ret, temp_rect);
}
/* If there is area in rect below strut */
if (rect->y + rect->height > strut->y + strut->height)
if (BOX_BOTTOM (*rect) > BOX_BOTTOM (*strut_rect))
{
int new_y;
temp_rect = g_new (MetaRectangle, 1);
*temp_rect = *rect;
new_y = strut->y + strut->height;
temp_rect->height = rect->y + rect->height - new_y;
new_y = BOX_BOTTOM (*strut_rect);
temp_rect->height = BOX_BOTTOM (*rect) - new_y;
temp_rect->y = new_y;
ret = g_list_prepend (ret, temp_rect);
}
@@ -603,7 +605,6 @@ meta_rectangle_get_minimal_spanning_set_for_region (
rect_iter = rect_iter->next;
}
g_list_free (tmp_list);
strut_iter = strut_iter->next;
}
/* Sort by maximal area, just because I feel like it... */
@@ -660,6 +661,76 @@ meta_rectangle_expand_region_conditionally (GList *region,
return region;
}
void
meta_rectangle_expand_to_avoiding_struts (MetaRectangle *rect,
const MetaRectangle *expand_to,
const MetaDirection direction,
const GSList *all_struts)
{
const GSList *strut_iter;
/* If someone wants this function to handle more fine-grained
* direction expanding in the future (e.g. only left, or fully
* horizontal plus upward), feel free. But I'm hard-coding for both
* horizontal directions (exclusive-)or both vertical directions.
*/
g_assert ((direction == META_DIRECTION_HORIZONTAL) ^
(direction == META_DIRECTION_VERTICAL ));
if (direction == META_DIRECTION_HORIZONTAL)
{
rect->x = expand_to->x;
rect->width = expand_to->width;
}
else
{
rect->y = expand_to->y;
rect->height = expand_to->height;
}
/* Run over all struts */
for (strut_iter = all_struts; strut_iter; strut_iter = strut_iter->next)
{
MetaStrut *strut = (MetaStrut*) strut_iter->data;
/* Skip struts that don't overlap */
if (!meta_rectangle_overlap (&strut->rect, rect))
continue;
if (direction == META_DIRECTION_HORIZONTAL)
{
if (strut->side == META_SIDE_LEFT)
{
int offset = BOX_RIGHT(strut->rect) - BOX_LEFT(*rect);
rect->x += offset;
rect->width -= offset;
}
else if (strut->side == META_SIDE_RIGHT)
{
int offset = BOX_RIGHT (*rect) - BOX_LEFT(strut->rect);
rect->width -= offset;
}
/* else ignore the strut */
}
else /* direction == META_DIRECTION_VERTICAL */
{
if (strut->side == META_SIDE_TOP)
{
int offset = BOX_BOTTOM(strut->rect) - BOX_TOP(*rect);
rect->y += offset;
rect->height -= offset;
}
else if (strut->side == META_SIDE_BOTTOM)
{
int offset = BOX_BOTTOM(*rect) - BOX_TOP(strut->rect);
rect->height -= offset;
}
/* else ignore the strut */
}
} /* end loop over struts */
} /* end meta_rectangle_expand_to_avoiding_struts */
void
meta_rectangle_free_list_and_elements (GList *filled_list)
{
@@ -705,6 +776,25 @@ meta_rectangle_contained_in_region (const GList *spanning_rects,
return contained;
}
gboolean
meta_rectangle_overlaps_with_region (const GList *spanning_rects,
const MetaRectangle *rect)
{
const GList *temp;
gboolean overlaps;
temp = spanning_rects;
overlaps = FALSE;
while (!overlaps && temp != NULL)
{
overlaps = overlaps || meta_rectangle_overlap (temp->data, rect);
temp = temp->next;
}
return overlaps;
}
void
meta_rectangle_clamp_to_fit_into_region (const GList *spanning_rects,
FixedDirections fixed_directions,
@@ -718,39 +808,36 @@ meta_rectangle_clamp_to_fit_into_region (const GList *spanning_rects,
/* First, find best rectangle from spanning_rects to which we can clamp
* rect to fit into.
*/
temp = spanning_rects;
while (temp)
for (temp = spanning_rects; temp; temp = temp->next)
{
int factor = 1;
MetaRectangle *compare_rect = temp->data;
int maximal_overlap_amount_for_compare;
/* If x is fixed and the entire width of rect doesn't fit in compare, set
* factor to 0.
/* If x is fixed and the entire width of rect doesn't fit in compare,
* skip this rectangle.
*/
if ((fixed_directions & FIXED_DIRECTION_X) &&
(compare_rect->x > rect->x ||
compare_rect->x + compare_rect->width < rect->x + rect->width))
factor = 0;
continue;
/* If y is fixed and the entire height of rect doesn't fit in compare, set
* factor to 0.
/* If y is fixed and the entire height of rect doesn't fit in compare,
* skip this rectangle.
*/
if ((fixed_directions & FIXED_DIRECTION_Y) &&
(compare_rect->y > rect->y ||
compare_rect->y + compare_rect->height < rect->y + rect->height))
factor = 0;
continue;
/* If compare can't hold the min_size window, set factor to 0 */
/* If compare can't hold the min_size window, skip this rectangle. */
if (compare_rect->width < min_size->width ||
compare_rect->height < min_size->height)
factor = 0;
continue;
/* Determine maximal overlap amount */
maximal_overlap_amount_for_compare =
MIN (rect->width, compare_rect->width) *
MIN (rect->height, compare_rect->height);
maximal_overlap_amount_for_compare *= factor;
/* See if this is the best rect so far */
if (maximal_overlap_amount_for_compare > best_overlap)
@@ -758,8 +845,6 @@ meta_rectangle_clamp_to_fit_into_region (const GList *spanning_rects,
best_rect = compare_rect;
best_overlap = maximal_overlap_amount_for_compare;
}
temp = temp->next;
}
/* Clamp rect appropriately */
@@ -792,34 +877,31 @@ meta_rectangle_clip_to_region (const GList *spanning_rects,
/* First, find best rectangle from spanning_rects to which we will clip
* rect into.
*/
temp = spanning_rects;
while (temp)
for (temp = spanning_rects; temp; temp = temp->next)
{
int factor = 1;
MetaRectangle *compare_rect = temp->data;
MetaRectangle overlap;
int maximal_overlap_amount_for_compare;
/* If x is fixed and the entire width of rect doesn't fit in compare, set
* factor to 0.
/* If x is fixed and the entire width of rect doesn't fit in compare,
* skip the rectangle.
*/
if ((fixed_directions & FIXED_DIRECTION_X) &&
(compare_rect->x > rect->x ||
compare_rect->x + compare_rect->width < rect->x + rect->width))
factor = 0;
continue;
/* If y is fixed and the entire height of rect doesn't fit in compare, set
* factor to 0.
/* If y is fixed and the entire height of rect doesn't fit in compare,
* skip the rectangle.
*/
if ((fixed_directions & FIXED_DIRECTION_Y) &&
(compare_rect->y > rect->y ||
compare_rect->y + compare_rect->height < rect->y + rect->height))
factor = 0;
continue;
/* Determine maximal overlap amount */
meta_rectangle_intersect (rect, compare_rect, &overlap);
maximal_overlap_amount_for_compare = meta_rectangle_area (&overlap);
maximal_overlap_amount_for_compare *= factor;
/* See if this is the best rect so far */
if (maximal_overlap_amount_for_compare > best_overlap)
@@ -827,8 +909,6 @@ meta_rectangle_clip_to_region (const GList *spanning_rects,
best_rect = compare_rect;
best_overlap = maximal_overlap_amount_for_compare;
}
temp = temp->next;
}
/* Clip rect appropriately */
@@ -875,36 +955,35 @@ meta_rectangle_shove_into_region (const GList *spanning_rects,
/* First, find best rectangle from spanning_rects to which we will shove
* rect into.
*/
temp = spanning_rects;
while (temp)
for (temp = spanning_rects; temp; temp = temp->next)
{
int factor = 1;
MetaRectangle *compare_rect = temp->data;
int maximal_overlap_amount_for_compare;
int dist_to_compare;
/* If x is fixed and the entire width of rect doesn't fit in compare, set
* factor to 0.
/* If x is fixed and the entire width of rect doesn't fit in compare,
* skip this rectangle.
*/
if ((fixed_directions & FIXED_DIRECTION_X) &&
(compare_rect->x > rect->x ||
compare_rect->x + compare_rect->width < rect->x + rect->width))
factor = 0;
continue;
/* If y is fixed and the entire height of rect doesn't fit in compare, set
* factor to 0.
/* If y is fixed and the entire height of rect doesn't fit in compare,
* skip this rectangle.
*/
if ((fixed_directions & FIXED_DIRECTION_Y) &&
(compare_rect->y > rect->y ||
compare_rect->y + compare_rect->height < rect->y + rect->height))
factor = 0;
continue;
/* Determine maximal overlap amount between rect & compare_rect */
maximal_overlap_amount_for_compare =
MIN (rect->width, compare_rect->width) *
MIN (rect->height, compare_rect->height);
/* Determine distance necessary to put rect into comapre_rect */
/* Determine distance necessary to put rect into compare_rect */
dist_to_compare = 0;
if (compare_rect->x > rect->x)
dist_to_compare += compare_rect->x - rect->x;
@@ -917,13 +996,6 @@ meta_rectangle_shove_into_region (const GList *spanning_rects,
dist_to_compare += (rect->y + rect->height) -
(compare_rect->y + compare_rect->height);
/* If we'd have to move in the wrong direction, disqualify compare_rect */
if (factor == 0)
{
maximal_overlap_amount_for_compare = 0;
dist_to_compare = G_MAXINT;
}
/* See if this is the best rect so far */
if ((maximal_overlap_amount_for_compare > best_overlap) ||
(maximal_overlap_amount_for_compare == best_overlap &&
@@ -933,8 +1005,6 @@ meta_rectangle_shove_into_region (const GList *spanning_rects,
best_overlap = maximal_overlap_amount_for_compare;
shortest_distance = dist_to_compare;
}
temp = temp->next;
}
/* Shove rect appropriately */
@@ -1054,9 +1124,9 @@ meta_rectangle_edge_aligns (const MetaRectangle *rect, const MetaEdge *edge)
case META_DIRECTION_BOTTOM:
return BOX_LEFT (*rect) <= BOX_RIGHT (edge->rect) &&
BOX_LEFT (edge->rect) <= BOX_RIGHT (*rect);
default:
g_assert_not_reached ();
}
g_assert_not_reached ();
}
static GList*
@@ -1140,27 +1210,27 @@ replace_rect_with_list (GList *old_element,
}
/* Make a copy of the strut list, make sure that copy only contains parts
* of the old_struts that intersect with the rection rect, and then do some
* of the old_struts that intersect with the region rect, and then do some
* magic to make all the new struts disjoint (okay, we we break up struts
* that aren't disjoint in a way that the overlapping part is only included
* once, so it's not really magic...).
*/
static GList*
get_disjoint_strut_list_in_region (const GSList *old_struts,
const MetaRectangle *region)
get_disjoint_strut_rect_list_in_region (const GSList *old_struts,
const MetaRectangle *region)
{
GList *struts;
GList *strut_rects;
GList *tmp;
/* First, copy the list */
struts = NULL;
strut_rects = NULL;
while (old_struts)
{
MetaRectangle *cur = old_struts->data;
MetaRectangle *cur = &((MetaStrut*)old_struts->data)->rect;
MetaRectangle *copy = g_new (MetaRectangle, 1);
*copy = *cur;
if (meta_rectangle_intersect (copy, region, copy))
struts = g_list_prepend (struts, copy);
strut_rects = g_list_prepend (strut_rects, copy);
else
g_free (copy);
@@ -1170,7 +1240,7 @@ get_disjoint_strut_list_in_region (const GSList *old_struts,
/* Now, loop over the list and check for intersections, fixing things up
* where they do intersect.
*/
tmp = struts;
tmp = strut_rects;
while (tmp)
{
GList *compare;
@@ -1197,10 +1267,10 @@ get_disjoint_strut_list_in_region (const GSList *old_struts,
cur_leftover = g_list_prepend (cur_leftover, overlap_allocated);
/* Fix up tmp, compare, and cur -- maybe struts too */
if (struts == tmp)
if (strut_rects == tmp)
{
struts = replace_rect_with_list (tmp, cur_leftover);
tmp = struts;
strut_rects = replace_rect_with_list (tmp, cur_leftover);
tmp = strut_rects;
}
else
tmp = replace_rect_with_list (tmp, cur_leftover);
@@ -1218,7 +1288,7 @@ get_disjoint_strut_list_in_region (const GSList *old_struts,
tmp = tmp->next;
}
return struts;
return strut_rects;
}
gint
@@ -1326,7 +1396,7 @@ rectangle_and_edge_intersection (const MetaRectangle *rect,
/* Find out if the intersection is empty; have to do it this way since
* edges have a thickness of 0
*/
if ((result->width < 0 || result->height < 0) ||
if ((result->width < 0 || result->height < 0) ||
(result->width == 0 && result->height == 0))
{
result->width = 0;
@@ -1376,6 +1446,8 @@ rectangle_and_edge_intersection (const MetaRectangle *rect,
else
*handle_type = 0;
break;
default:
g_assert_not_reached ();
}
}
return intersect;
@@ -1482,23 +1554,25 @@ split_edge (GList *cur_list,
cur_list = g_list_prepend (cur_list, temp_edge);
}
break;
default:
g_assert_not_reached ();
}
return cur_list;
}
/* Split up edge and remove preliminary edges from strut_edges depending on
* if and how strut and edge intersect.
* if and how rect and edge intersect.
*/
static void
fix_up_edges (MetaRectangle *strut, MetaEdge *edge,
fix_up_edges (MetaRectangle *rect, MetaEdge *edge,
GList **strut_edges, GList **edge_splits,
gboolean *edge_needs_removal)
{
MetaEdge overlap;
int handle_type;
if (!rectangle_and_edge_intersection (strut, edge, &overlap, &handle_type))
if (!rectangle_and_edge_intersection (rect, edge, &overlap, &handle_type))
return;
if (handle_type == 0 || handle_type == 1)
@@ -1607,9 +1681,9 @@ meta_rectangle_find_onscreen_edges (const MetaRectangle *basic_rect,
const GSList *all_struts)
{
GList *ret;
GList *fixed_struts;
GList *fixed_strut_rects;
GList *edge_iter;
const GList *strut_iter;
const GList *strut_rect_iter;
/* The algorithm is basically as follows:
* Make sure the struts are disjoint
@@ -1627,18 +1701,19 @@ meta_rectangle_find_onscreen_edges (const MetaRectangle *basic_rect,
*/
/* Make sure the struts are disjoint */
fixed_struts = get_disjoint_strut_list_in_region (all_struts, basic_rect);
fixed_strut_rects =
get_disjoint_strut_rect_list_in_region (all_struts, basic_rect);
/* Start off the list with the edges of basic_rect */
ret = add_edges (NULL, basic_rect, TRUE);
strut_iter = fixed_struts;
while (strut_iter)
strut_rect_iter = fixed_strut_rects;
while (strut_rect_iter)
{
MetaRectangle *strut = (MetaRectangle*) strut_iter->data;
MetaRectangle *strut_rect = (MetaRectangle*) strut_rect_iter->data;
/* Get the new possible edges we may need to add from the strut */
GList *new_strut_edges = add_edges (NULL, strut, FALSE);
GList *new_strut_edges = add_edges (NULL, strut_rect, FALSE);
edge_iter = ret;
while (edge_iter)
@@ -1647,7 +1722,7 @@ meta_rectangle_find_onscreen_edges (const MetaRectangle *basic_rect,
GList *splits_of_cur_edge = NULL;
gboolean edge_needs_removal = FALSE;
fix_up_edges (strut, cur_edge,
fix_up_edges (strut_rect, cur_edge,
&new_strut_edges, &splits_of_cur_edge,
&edge_needs_removal);
@@ -1671,14 +1746,14 @@ meta_rectangle_find_onscreen_edges (const MetaRectangle *basic_rect,
}
ret = g_list_concat (new_strut_edges, ret);
strut_iter = strut_iter->next;
strut_rect_iter = strut_rect_iter->next;
}
/* Sort the list */
ret = g_list_sort (ret, meta_rectangle_edge_cmp);
/* Free the fixed struts list */
meta_rectangle_free_list_and_elements (fixed_struts);
meta_rectangle_free_list_and_elements (fixed_strut_rects);
return ret;
}
@@ -1695,6 +1770,7 @@ meta_rectangle_find_nonintersected_xinerama_edges (
*/
GList *ret;
const GList *cur;
GSList *temp_rects;
/* Initialize the return list to be empty */
ret = NULL;
@@ -1802,8 +1878,13 @@ meta_rectangle_find_nonintersected_xinerama_edges (
cur = cur->next;
}
temp_rects = NULL;
for (; all_struts; all_struts = all_struts->next)
temp_rects = g_slist_prepend (temp_rects,
&((MetaStrut*)all_struts->data)->rect);
ret = meta_rectangle_remove_intersections_with_boxes_from_edges (ret,
all_struts);
temp_rects);
g_slist_free (temp_rects);
/* Sort the list */
ret = g_list_sort (ret, meta_rectangle_edge_cmp);

View File

@@ -1,3 +1,5 @@
/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */
/* Simple box operations */
/*
@@ -26,7 +28,6 @@
#include "common.h"
typedef struct _MetaRectangle MetaRectangle;
struct _MetaRectangle
{
int x;
@@ -35,6 +36,13 @@ struct _MetaRectangle
int height;
};
typedef struct _MetaStrut MetaStrut;
struct _MetaStrut
{
MetaRectangle rect;
MetaDirection side;
};
#define BOX_LEFT(box) ((box).x) /* Leftmost pixel of rect */
#define BOX_RIGHT(box) ((box).x + (box).width) /* One pixel past right */
#define BOX_TOP(box) ((box).y) /* Topmost pixel of rect */
@@ -42,8 +50,9 @@ struct _MetaRectangle
typedef enum
{
FIXED_DIRECTION_X = 1 << 0,
FIXED_DIRECTION_Y = 1 << 1,
FIXED_DIRECTION_NONE = 0,
FIXED_DIRECTION_X = 1 << 0,
FIXED_DIRECTION_Y = 1 << 1,
} FixedDirections;
typedef enum
@@ -164,6 +173,16 @@ GList* meta_rectangle_expand_region_conditionally (
const int min_x,
const int min_y);
/* Expand rect in direction to the size of expand_to, and then clip out any
* overlapping struts oriented orthognal to the expansion direction. (Think
* horizontal or vertical maximization)
*/
void meta_rectangle_expand_to_avoiding_struts (
MetaRectangle *rect,
const MetaRectangle *expand_to,
const MetaDirection direction,
const GSList *all_struts);
/* Free the list created by
* meta_rectangle_get_minimal_spanning_set_for_region()
* or
@@ -183,6 +202,9 @@ gboolean meta_rectangle_could_fit_in_region (
gboolean meta_rectangle_contained_in_region (
const GList *spanning_rects,
const MetaRectangle *rect);
gboolean meta_rectangle_overlaps_with_region (
const GList *spanning_rects,
const MetaRectangle *rect);
/* Make the rectangle small enough to fit into one of the spanning_rects,
* but make it no smaller than min_size.

View File

@@ -1,3 +1,5 @@
/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */
/*
* Copyright (C) 2006 Red Hat, Inc.
*
@@ -336,8 +338,6 @@ meta_comp_screen_redirect (MetaCompScreen *info)
info->magnifier = cm_magnifier_new (CM_NODE (info->stacker), &source, &target);
g_object_unref (info->stacker);
if (g_getenv ("USE_MAGNIFIER"))
cm_magnifier_set_active (info->magnifier, TRUE);
else

View File

@@ -1,3 +1,5 @@
/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */
#include "screen.h"
#include "c-window.h"

View File

@@ -1,3 +1,5 @@
/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */
/*
* Copyright (C) 2006 Red Hat, Inc.
*
@@ -34,7 +36,8 @@
#include "c-window.h"
#include "window.h"
#include "frame.h"
#include "spring-model.h"
#include "compositor.h"
#include "workspace.h"
typedef struct UnminimizeInfo UnminimizeInfo;
@@ -1184,10 +1187,6 @@ typedef struct
gdouble last_time;
} FocusInfo;
/* XXX HATE */
extern void get_patch_points (Model *model, CmPoint points[4][4]);
extern void compute_window_rect (MetaWindow *window, MetaRectangle *rect);
static gboolean
update_focus (gpointer data)
{

View File

@@ -1,3 +1,4 @@
/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */
/*
* Copyright (C) 2006 Red Hat, Inc.
*
@@ -27,7 +28,7 @@
typedef struct _MetaCompWindow MetaCompWindow;
typedef void (* MetaCompWindowDestroy) (MetaCompWindow *window,
gpointer closure);
gpointer closure);
MetaCompWindow *meta_comp_window_new (MetaScreen *screen,
WsDrawable *drawable,

View File

@@ -1,3 +1,5 @@
/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */
/* Metacity RGB color stuff */
/*

View File

@@ -1,3 +1,5 @@
/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */
/* Metacity RGB color stuff */
/*

View File

@@ -1,3 +1,5 @@
/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */
/* Metacity common types shared by core.h and ui.h */
/*
@@ -44,7 +46,8 @@ typedef enum
META_FRAME_ALLOWS_SHADE = 1 << 10,
META_FRAME_ALLOWS_MOVE = 1 << 11,
META_FRAME_FULLSCREEN = 1 << 12,
META_FRAME_IS_FLASHING = 1 << 13
META_FRAME_IS_FLASHING = 1 << 13,
META_FRAME_ABOVE = 1 << 14
} MetaFrameFlags;
typedef enum
@@ -74,7 +77,7 @@ typedef struct _MetaWindowMenu MetaWindowMenu;
typedef void (* MetaWindowMenuFunc) (MetaWindowMenu *menu,
Display *xdisplay,
Window client_xwindow,
Time timestamp,
guint32 timestamp,
MetaMenuOp op,
int workspace,
gpointer data);
@@ -129,7 +132,13 @@ typedef enum
META_GRAB_OP_CLICKING_MAXIMIZE,
META_GRAB_OP_CLICKING_UNMAXIMIZE,
META_GRAB_OP_CLICKING_DELETE,
META_GRAB_OP_CLICKING_MENU
META_GRAB_OP_CLICKING_MENU,
META_GRAB_OP_CLICKING_SHADE,
META_GRAB_OP_CLICKING_UNSHADE,
META_GRAB_OP_CLICKING_ABOVE,
META_GRAB_OP_CLICKING_UNABOVE,
META_GRAB_OP_CLICKING_STICK,
META_GRAB_OP_CLICKING_UNSTICK
} MetaGrabOp;
typedef enum
@@ -163,12 +172,14 @@ typedef enum
typedef enum
{
META_ACTION_DOUBLE_CLICK_TITLEBAR_TOGGLE_SHADE,
META_ACTION_DOUBLE_CLICK_TITLEBAR_TOGGLE_MAXIMIZE,
META_ACTION_DOUBLE_CLICK_TITLEBAR_MINIMIZE,
META_ACTION_DOUBLE_CLICK_TITLEBAR_NONE,
META_ACTION_DOUBLE_CLICK_TITLEBAR_LAST
} MetaActionDoubleClickTitlebar;
META_ACTION_TITLEBAR_TOGGLE_SHADE,
META_ACTION_TITLEBAR_TOGGLE_MAXIMIZE,
META_ACTION_TITLEBAR_MINIMIZE,
META_ACTION_TITLEBAR_NONE,
META_ACTION_TITLEBAR_LOWER,
META_ACTION_TITLEBAR_MENU,
META_ACTION_TITLEBAR_LAST
} MetaActionTitlebar;
typedef enum
{
@@ -206,12 +217,24 @@ typedef enum
*/
typedef enum
{
META_DIRECTION_LEFT = 1 << 0,
META_DIRECTION_RIGHT = 1 << 1,
META_DIRECTION_TOP = 1 << 2,
META_DIRECTION_BOTTOM = 1 << 3,
META_DIRECTION_UP = 1 << 2, /* Alternate name for TOP */
META_DIRECTION_DOWN = 1 << 3 /* Alternate name for BOTTOM */
META_DIRECTION_LEFT = 1 << 0,
META_DIRECTION_RIGHT = 1 << 1,
META_DIRECTION_TOP = 1 << 2,
META_DIRECTION_BOTTOM = 1 << 3,
/* Some aliases for making code more readable for various circumstances. */
META_DIRECTION_UP = META_DIRECTION_TOP,
META_DIRECTION_DOWN = META_DIRECTION_BOTTOM,
/* A few more definitions using aliases */
META_DIRECTION_HORIZONTAL = META_DIRECTION_LEFT | META_DIRECTION_RIGHT,
META_DIRECTION_VERTICAL = META_DIRECTION_UP | META_DIRECTION_DOWN,
/* And a few more aliases */
META_SIDE_LEFT = META_DIRECTION_LEFT,
META_SIDE_RIGHT = META_DIRECTION_RIGHT,
META_SIDE_TOP = META_DIRECTION_TOP,
META_SIDE_BOTTOM = META_DIRECTION_BOTTOM
} MetaDirection;
/* Function a window button can have. Note, you can't add stuff here
@@ -224,6 +247,12 @@ typedef enum
META_BUTTON_FUNCTION_MINIMIZE,
META_BUTTON_FUNCTION_MAXIMIZE,
META_BUTTON_FUNCTION_CLOSE,
META_BUTTON_FUNCTION_SHADE,
META_BUTTON_FUNCTION_ABOVE,
META_BUTTON_FUNCTION_STICK,
META_BUTTON_FUNCTION_UNSHADE,
META_BUTTON_FUNCTION_UNABOVE,
META_BUTTON_FUNCTION_UNSTICK,
META_BUTTON_FUNCTION_LAST
} MetaButtonFunction;

View File

@@ -1,3 +1,5 @@
/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */
/*
* Copyright (C) 2003, 2004, 2005, 2006 Red Hat, Inc.
* Copyright (C) 2003 Keith Packard
@@ -47,7 +49,6 @@
#include <X11/extensions/Xdamage.h>
#include <X11/extensions/Xfixes.h>
#include <X11/extensions/Xrender.h>
#include "spring-model.h"
#include <cm/state.h>
#include "effects.h"
@@ -96,6 +97,8 @@ handle_error (Display *dpy, XErrorEvent *ev, gpointer data)
}
#endif
#ifdef HAVE_COMPOSITE_EXTENSIONS
static Window
get_xid (MetaWindow *window)
{
@@ -105,8 +108,14 @@ get_xid (MetaWindow *window)
return window->xwindow;
}
#endif /* HAVE_COMPOSITE_EXTENSIONS */
#ifdef HAVE_COMPOSITE_EXTENSIONS
/* This is called by Metacity's effect code when an effect needs to happen.
* In compositor-less Metacity, this includes things like the wireframe
* zoom when a window is minimised. We have a rather larger box of tricks.
*/
static void
do_effect (MetaEffect *effect,
gpointer data)
@@ -115,6 +124,15 @@ do_effect (MetaEffect *effect,
MetaCompWindow *window;
screen = meta_comp_screen_get_by_xwindow (get_xid (effect->window));
if (!screen)
{
/* sanity check: if no screen is found, bail */
meta_warning ("No screen found for %s (%ld); aborting effect.\n",
effect->window->desc, get_xid (effect->window));
return;
}
window = meta_comp_screen_lookup_window (screen, get_xid (effect->window));
switch (effect->type)
@@ -152,6 +170,9 @@ do_effect (MetaEffect *effect,
#endif /* HAVE_COMPOSITE_EXTENSIONS */
/* Constructs a new compositor. The rest of Metacity knows whether the
* compositor is turned on by whether this function returns NULL or not.
*/
MetaCompositor *
meta_compositor_new (MetaDisplay *display)
{
@@ -196,7 +217,11 @@ meta_compositor_new (MetaDisplay *display)
compositor->enabled = TRUE;
meta_push_effect_handler (do_effect, compositor);
/* Compositor without bling is the default, but leave the bling
* accessible for now.
*/
if (getenv("METACITY_BLING")!=NULL)
meta_push_effect_handler (do_effect, compositor);
return compositor;
#else /* HAVE_COMPOSITE_EXTENSIONS */
@@ -204,6 +229,7 @@ meta_compositor_new (MetaDisplay *display)
#endif /* HAVE_COMPOSITE_EXTENSIONS */
}
#if 0
void
meta_compositor_set_debug_updates (MetaCompositor *compositor,
gboolean debug_updates)
@@ -212,6 +238,7 @@ meta_compositor_set_debug_updates (MetaCompositor *compositor,
compositor->debug_updates = !!debug_updates;
#endif /* HAVE_COMPOSITE_EXTENSIONS */
}
#endif /* 0 */
#ifdef HAVE_COMPOSITE_EXTENSIONS
static void
@@ -240,8 +267,29 @@ meta_compositor_unref (MetaCompositor *compositor)
#endif /* HAVE_COMPOSITE_EXTENSIONS */
}
#ifdef HAVE_COMPOSITE_EXTENSIONS
/****************************************************************************
*
* HANDLING X EVENTS
*
* Here are several process_* functions, which are all called by
* meta_compositor_process_event at the bottom.
*
****************************************************************************/
#ifdef HAVE_COMPOSITE_EXTENSIONS
/* Handles the CirculateNotify XEvent.
*/
static void
process_circulate_notify (MetaCompositor *compositor,
XCirculateEvent* event)
{
/* FIXME: Do something here. */
}
#endif /* HAVE_COMPOSITE_EXTENSIONS */
#ifdef HAVE_COMPOSITE_EXTENSIONS
/* Handles the ConfigureNotify XEvent.
*/
static void
process_configure_notify (MetaCompositor *compositor,
XConfigureEvent *event)
@@ -275,6 +323,9 @@ process_configure_notify (MetaCompositor *compositor,
#ifdef HAVE_COMPOSITE_EXTENSIONS
/* Handles the Expose XEvent.
* XXX FIXME: This looks like it quite urgently needs looking into. --tthurman
*/
static void
process_expose (MetaCompositor *compositor,
XExposeEvent *event)
@@ -286,6 +337,10 @@ process_expose (MetaCompositor *compositor,
#ifdef HAVE_COMPOSITE_EXTENSIONS
#if 0
/* Apparently never used. */
typedef struct
{
CmDrawableNode *node;
@@ -325,9 +380,12 @@ fade_out (gpointer data)
return TRUE;
}
}
#endif /* 0 */
#endif
#ifdef HAVE_COMPOSITE_EXTENSIONS
/* Handles the MapNotify XEvent.
*/
static void
process_map (MetaCompositor *compositor,
XMapEvent *event)
@@ -341,13 +399,13 @@ process_map (MetaCompositor *compositor,
/* See if window was mapped as child of root */
screen = meta_display_screen_for_root (compositor->meta_display,
event->event);
if (screen == NULL)
{
meta_topic (META_DEBUG_COMPOSITOR,
"MapNotify received on non-root 0x%lx for 0x%lx\n",
event->event, event->window);
/* MapNotify wasn't for a child of the root */
return;
}
@@ -359,6 +417,8 @@ process_map (MetaCompositor *compositor,
#endif /* HAVE_COMPOSITE_EXTENSIONS */
#ifdef HAVE_COMPOSITE_EXTENSIONS
/* Handles the UnmapNotify XEvent.
*/
static void
process_unmap (MetaCompositor *compositor,
XUnmapEvent *event)
@@ -385,6 +445,8 @@ process_unmap (MetaCompositor *compositor,
#endif /* HAVE_COMPOSITE_EXTENSIONS */
#ifdef HAVE_COMPOSITE_EXTENSIONS
/* Handles the CreateNotify XEvent.
*/
static void
process_create (MetaCompositor *compositor,
XCreateWindowEvent *event)
@@ -426,6 +488,8 @@ process_create (MetaCompositor *compositor,
#endif /* HAVE_COMPOSITE_EXTENSIONS */
#ifdef HAVE_COMPOSITE_EXTENSIONS
/* Handles the DestroyNotify XEvent.
*/
static void
process_destroy (MetaCompositor *compositor,
XDestroyWindowEvent *event)
@@ -459,6 +523,8 @@ process_destroy (MetaCompositor *compositor,
#ifdef HAVE_COMPOSITE_EXTENSIONS
/* Handles the ReparentNotify XEvent.
*/
static void
process_reparent (MetaCompositor *compositor,
XReparentEvent *event)
@@ -501,6 +567,9 @@ process_reparent (MetaCompositor *compositor,
#endif /* HAVE_COMPOSITE_EXTENSIONS */
/* If the compositor is enabled, this function gets called with any XEvent
* in case we want to deal with it specially.
*/
void
meta_compositor_process_event (MetaCompositor *compositor,
XEvent *event,
@@ -510,9 +579,12 @@ meta_compositor_process_event (MetaCompositor *compositor,
if (!compositor->enabled)
return; /* no extension */
/* FIXME support CirculateNotify */
if (event->type == ConfigureNotify)
if (event->type == CirculateNotify)
{
process_circulate_notify (compositor,
(XCirculateEvent*) event);
}
else if (event->type == ConfigureNotify)
{
process_configure_notify (compositor,
(XConfigureEvent*) event);
@@ -551,9 +623,14 @@ meta_compositor_process_event (MetaCompositor *compositor,
#endif /* HAVE_COMPOSITE_EXTENSIONS */
}
#ifdef HAVE_COMPOSITE_EXTENSIONS
#if 0
static GTimer *timer;
#endif /* 0 */
#endif /* HAVE_COMPOSITE_EXTENSIONS */
#ifdef HAVE_COMPOSITE_EXTENSIONS
#if 0
static void
dump_stacking_order (GList *nodes)
{
@@ -567,6 +644,7 @@ dump_stacking_order (GList *nodes)
}
g_print ("\n");
}
#endif /* 0 */
#endif
/* This is called when metacity does its XQueryTree() on startup
@@ -753,7 +831,7 @@ struct MoveInfo
void
get_patch_points (Model *model,
CmPoint points[4][4])
CmPoint points[4][4])
{
int i, j;

View File

@@ -1,3 +1,5 @@
/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */
/* Metacity compositing manager */
/*
@@ -24,6 +26,13 @@
#include "util.h"
#include "display.h"
#include "spring-model.h"
#ifdef HAVE_COMPOSITE_EXTENSIONS
#include "cm/deform.h"
/* FIXME: Needs namespacing. */
void get_patch_points (Model *model, CmPoint points[4][4]);
#endif
typedef void (* MetaAnimationFinishedFunc) (gpointer data);

View File

@@ -1,3 +1,5 @@
/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */
/* Metacity size/position constraints */
/*
@@ -97,6 +99,7 @@ typedef enum
PRIORITY_MAXIMIZATION = 2,
PRIORITY_FULLSCREEN = 2,
PRIORITY_SIZE_HINTS_LIMITS = 3,
PRIORITY_TITLEBAR_VISIBLE = 4,
PRIORITY_PARTIALLY_VISIBLE_ON_WORKAREA = 4,
PRIORITY_MAXIMUM = 4 // Dummy value used for loop end = max(all priorities)
} ConstraintPriority;
@@ -165,6 +168,10 @@ static gboolean constrain_fully_onscreen (MetaWindow *window,
ConstraintInfo *info,
ConstraintPriority priority,
gboolean check_only);
static gboolean constrain_titlebar_visible (MetaWindow *window,
ConstraintInfo *info,
ConstraintPriority priority,
gboolean check_only);
static gboolean constrain_partially_onscreen (MetaWindow *window,
ConstraintInfo *info,
ConstraintPriority priority,
@@ -209,6 +216,7 @@ static const Constraint all_constraints[] = {
{constrain_aspect_ratio, "constrain_aspect_ratio"},
{constrain_to_single_xinerama, "constrain_to_single_xinerama"},
{constrain_fully_onscreen, "constrain_fully_onscreen"},
{constrain_titlebar_visible, "constrain_titlebar_visible"},
{constrain_partially_onscreen, "constrain_partially_onscreen"},
{NULL, NULL}
};
@@ -342,7 +350,7 @@ setup_constraint_info (ConstraintInfo *info,
else if (flags & META_IS_RESIZE_ACTION)
info->action_type = ACTION_RESIZE;
else if (flags & META_IS_MOVE_ACTION)
info->action_type = ACTION_MOVE_AND_RESIZE;
info->action_type = ACTION_MOVE;
else
g_error ("BAD, BAD developer! No treat for you! (Fix your calls to "
"meta_window_move_resize_internal()).\n");
@@ -357,7 +365,7 @@ setup_constraint_info (ConstraintInfo *info,
* and (b) ignored it for aspect ratio windows -- at least in those
* cases where both directions do actually change size.
*/
info->fixed_directions = 0;
info->fixed_directions = FIXED_DIRECTION_NONE;
/* If x directions don't change but either y direction does */
if ( orig->x == new->x && orig->x + orig->width == new->x + new->width &&
(orig->y != new->y || orig->y + orig->height != new->y + new->height))
@@ -377,12 +385,13 @@ setup_constraint_info (ConstraintInfo *info,
* aren't explicit user interaction, though, so just clear it out.
*/
if (!info->is_user_action)
info->fixed_directions = 0;
meta_window_get_work_area_current_xinerama (window, &info->work_area_xinerama);
info->fixed_directions = FIXED_DIRECTION_NONE;
xinerama_info =
meta_screen_get_xinerama_for_window (window->screen, window);
meta_screen_get_xinerama_for_rect (window->screen, &info->current);
meta_window_get_work_area_for_xinerama (window,
xinerama_info->number,
&info->work_area_xinerama);
info->entire_xinerama = xinerama_info->rect;
cur_workspace = window->screen->active_workspace;
@@ -392,6 +401,23 @@ setup_constraint_info (ConstraintInfo *info,
meta_workspace_get_onxinerama_region (cur_workspace,
xinerama_info->number);
/* Workaround braindead legacy apps that don't know how to
* fullscreen themselves properly.
*/
if (meta_rectangle_equal (new, &xinerama_info->rect) &&
window->has_fullscreen_func &&
!window->fullscreen)
{
/*
meta_topic (META_DEBUG_GEOMETRY,
*/
meta_warning (
"Treating resize request of legacy application %s as a "
"fullscreen request\n",
window->desc);
meta_window_make_fullscreen_internal (window);
}
/* Log all this information for debugging */
meta_topic (META_DEBUG_GEOMETRY,
"Setting up constraint info:\n"
@@ -415,7 +441,7 @@ setup_constraint_info (ConstraintInfo *info,
"Freakin' Invalid Stupid",
(info->is_user_action) ? "true" : "false",
meta_gravity_to_string (info->resize_gravity),
(info->fixed_directions == 0) ? "None" :
(info->fixed_directions == FIXED_DIRECTION_NONE) ? "None" :
(info->fixed_directions == FIXED_DIRECTION_X) ? "X fixed" :
(info->fixed_directions == FIXED_DIRECTION_Y) ? "Y fixed" :
"Freakin' Invalid Stupid",
@@ -434,13 +460,15 @@ place_window_if_needed(MetaWindow *window,
/* Do placement if any, so we go ahead and apply position
* constraints in a move-only context. Don't place
* maximized/fullscreen windows until they are unmaximized
* and unfullscreened
* maximized/minimized/fullscreen windows until they are
* unmaximized, unminimized and unfullscreened.
*/
did_placement = FALSE;
if (!window->placed &&
window->calc_placement &&
!META_WINDOW_MAXIMIZED (window) &&
!(window->maximized_horizontally ||
window->maximized_vertically) &&
!window->minimized &&
!window->fullscreen)
{
MetaRectangle placed_rect = info->orig;
@@ -472,56 +500,50 @@ place_window_if_needed(MetaWindow *window,
/* Since we just barely placed the window, there's no reason to
* consider any of the directions fixed.
*/
info->fixed_directions = 0;
info->fixed_directions = FIXED_DIRECTION_NONE;
}
if ((window->maximize_horizontally_after_placement ||
window->maximize_vertically_after_placement) &&
(window->placed || did_placement))
if (window->placed || did_placement)
{
/* define a sane saved_rect so that the user can unmaximize to
* something reasonable.
*/
if (info->current.width >= info->work_area_xinerama.width)
{
info->current.width = .75 * info->work_area_xinerama.width;
info->current.x = info->work_area_xinerama.x +
.125 * info->work_area_xinerama.width;
}
if (info->current.height >= info->work_area_xinerama.height)
{
info->current.height = .75 * info->work_area_xinerama.height;
info->current.y = info->work_area_xinerama.y +
.083 * info->work_area_xinerama.height;
}
if (window->maximize_horizontally_after_placement &&
if (window->maximize_horizontally_after_placement ||
window->maximize_vertically_after_placement)
meta_window_maximize_internal (window,
META_MAXIMIZE_HORIZONTAL |
META_MAXIMIZE_VERTICAL,
&info->current);
else if (window->maximize_horizontally_after_placement)
{
info->current.x = info->work_area_xinerama.x
+ info->fgeom->left_width;
info->current.width = info->work_area_xinerama.width
- info->fgeom->left_width - info->fgeom->right_width;
/* define a sane saved_rect so that the user can unmaximize to
* something reasonable.
*/
if (info->current.width >= info->work_area_xinerama.width)
{
info->current.width = .75 * info->work_area_xinerama.width;
info->current.x = info->work_area_xinerama.x +
.125 * info->work_area_xinerama.width;
}
if (info->current.height >= info->work_area_xinerama.height)
{
info->current.height = .75 * info->work_area_xinerama.height;
info->current.y = info->work_area_xinerama.y +
.083 * info->work_area_xinerama.height;
}
if (window->maximize_horizontally_after_placement ||
window->maximize_vertically_after_placement)
meta_window_maximize_internal (window,
(window->maximize_horizontally_after_placement ?
META_MAXIMIZE_HORIZONTAL : 0 ) |
(window->maximize_vertically_after_placement ?
META_MAXIMIZE_VERTICAL : 0), &info->current);
/* maximization may have changed frame geometry */
if (window->frame && !window->fullscreen)
meta_frame_calc_geometry (window->frame, info->fgeom);
window->maximize_horizontally_after_placement = FALSE;
window->maximize_vertically_after_placement = FALSE;
}
else if (window->maximize_vertically_after_placement);
if (window->minimize_after_placement)
{
info->current.y = info->work_area_xinerama.y
+ info->fgeom->top_height;
info->current.height = info->work_area_xinerama.height
- info->fgeom->top_height - info->fgeom->bottom_height;
meta_window_minimize (window);
window->minimize_after_placement = FALSE;
}
/* maximization may have changed frame geometry */
if (window->frame && !window->fullscreen)
meta_frame_calc_geometry (window->frame, info->fgeom);
window->maximize_horizontally_after_placement = FALSE;
window->maximize_vertically_after_placement = FALSE;
}
}
@@ -536,23 +558,33 @@ update_onscreen_requirements (MetaWindow *window,
window->type == META_WINDOW_DOCK)
return;
/* USABILITY NOTE: Naturally, I only want the require_fully_onscreen and
* require_on_single_xinerama flags to *become false* due to user
* interactions (which is allowed since certain constraints are ignored
* for user interactions regardless of the setting of these flags).
* However, whether to make these flags *become true* due to just an
* application interaction is a little trickier. It's possible that
* users may find not doing that strange since two application
* interactions that resize in opposite ways don't necessarily end up
* cancelling--but it may also be strange for the user to have an
* application resize the window so that it's onscreen, the user forgets
* about it, and then later the app is able to resize itself off the
* screen. Anyway, for now, I'm think the latter is the more problematic
* case but this may need to be revisited.
/* We don't want to update the requirements for fullscreen windows;
* fullscreen windows are specially handled anyway, and it updating
* the requirements when windows enter fullscreen mode mess up the
* handling of the window when it leaves that mode (especially when
* the application sends a bunch of configurerequest events). See
* #353699.
*/
if (window->fullscreen)
return;
/* USABILITY NOTE: Naturally, I only want the require_fully_onscreen,
* require_on_single_xinerama, and require_titlebar_visible flags to
* *become false* due to user interactions (which is allowed since
* certain constraints are ignored for user interactions regardless of
* the setting of these flags). However, whether to make these flags
* *become true* due to just an application interaction is a little
* trickier. It's possible that users may find not doing that strange
* since two application interactions that resize in opposite ways don't
* necessarily end up cancelling--but it may also be strange for the user
* to have an application resize the window so that it's onscreen, the
* user forgets about it, and then later the app is able to resize itself
* off the screen. Anyway, for now, I think the latter is the more
* problematic case but this may need to be revisited.
*/
/* The require onscreen/on-single-xinerama stuff is relative to the
* outer window, not the inner
/* The require onscreen/on-single-xinerama and titlebar_visible
* stuff is relative to the outer window, not the inner
*/
extend_by_frame (&info->current, info->fgeom);
@@ -582,6 +614,26 @@ update_onscreen_requirements (MetaWindow *window,
window->desc,
window->require_on_single_xinerama ? "TRUE" : "FALSE");
/* Update whether we want future constraint runs to require the
* titlebar to be visible.
*/
if (window->frame && window->decorated)
{
MetaRectangle titlebar_rect;
titlebar_rect = info->current;
titlebar_rect.height = info->fgeom->top_height;
old = window->require_titlebar_visible;
window->require_titlebar_visible =
meta_rectangle_overlaps_with_region (info->usable_screen_region,
&titlebar_rect);
if (old ^ window->require_titlebar_visible)
meta_topic (META_DEBUG_GEOMETRY,
"require_titlebar_visible for %s toggled to %s\n",
window->desc,
window->require_titlebar_visible ? "TRUE" : "FALSE");
}
/* Don't forget to restore the position of the window */
unextend_by_frame (&info->current, info->fgeom);
}
@@ -639,8 +691,9 @@ constrain_maximization (MetaWindow *window,
ConstraintPriority priority,
gboolean check_only)
{
MetaRectangle min_size, max_size, work_area;
gboolean hminbad, vminbad, hmaxbad, vmaxbad;
MetaRectangle target_size;
MetaRectangle min_size, max_size;
gboolean hminbad, vminbad;
gboolean horiz_equal, vert_equal;
gboolean constraint_already_satisfied;
@@ -651,22 +704,51 @@ constrain_maximization (MetaWindow *window,
if (!window->maximized_horizontally && !window->maximized_vertically)
return TRUE;
work_area = info->work_area_xinerama;
unextend_by_frame (&work_area, info->fgeom);
get_size_limits (window, info->fgeom, FALSE, &min_size, &max_size);
/* Calculate target_size = maximized size of (window + frame) */
if (window->maximized_horizontally && window->maximized_vertically)
target_size = info->work_area_xinerama;
else
{
/* Amount of maximization possible in a single direction depends
* on which struts could occlude the window given its current
* position. For example, a vertical partial strut on the right
* is only relevant for a horizontally maximized window when the
* window is at a vertical position where it could be occluded
* by that partial strut.
*/
MetaDirection direction;
GSList *active_workspace_struts;
hminbad = work_area.width < min_size.width && window->maximized_horizontally;
vminbad = work_area.height < min_size.height && window->maximized_vertically;
hmaxbad = work_area.width > max_size.width && window->maximized_horizontally;
vmaxbad = work_area.height > max_size.height && window->maximized_vertically;
if (hminbad || vminbad || hmaxbad || vmaxbad)
if (window->maximized_horizontally)
direction = META_DIRECTION_HORIZONTAL;
else
direction = META_DIRECTION_VERTICAL;
active_workspace_struts = window->screen->active_workspace->all_struts;
target_size = info->current;
extend_by_frame (&target_size, info->fgeom);
meta_rectangle_expand_to_avoiding_struts (&target_size,
&info->entire_xinerama,
direction,
active_workspace_struts);
}
/* Now make target_size = maximized size of client window */
unextend_by_frame (&target_size, info->fgeom);
/* Check min size constraints; max size constraints are ignored for maximized
* windows, as per bug 327543.
*/
get_size_limits (window, info->fgeom, FALSE, &min_size, &max_size);
hminbad = target_size.width < min_size.width && window->maximized_horizontally;
vminbad = target_size.height < min_size.height && window->maximized_vertically;
if (hminbad || vminbad)
return TRUE;
/* Determine whether constraint is already satisfied; exit if it is */
horiz_equal = work_area.x == info->current.x &&
work_area.width == info->current.width;
vert_equal = work_area.y == info->current.y &&
work_area.height == info->current.height;
horiz_equal = target_size.x == info->current.x &&
target_size.width == info->current.width;
vert_equal = target_size.y == info->current.y &&
target_size.height == info->current.height;
constraint_already_satisfied =
(horiz_equal || !window->maximized_horizontally) &&
(vert_equal || !window->maximized_vertically);
@@ -676,13 +758,13 @@ constrain_maximization (MetaWindow *window,
/*** Enforce constraint ***/
if (window->maximized_horizontally)
{
info->current.x = work_area.x;
info->current.width = work_area.width;
info->current.x = target_size.x;
info->current.width = target_size.width;
}
if (window->maximized_vertically)
{
info->current.y = work_area.y;
info->current.height = work_area.height;
info->current.y = target_size.y;
info->current.height = target_size.height;
}
return TRUE;
}
@@ -727,6 +809,7 @@ constrain_size_increments (MetaWindow *window,
gboolean check_only)
{
int bh, hi, bw, wi, extra_height, extra_width;
int new_width, new_height;
gboolean constraint_already_satisfied;
if (priority > PRIORITY_SIZE_HINTS_INCREMENTS)
@@ -744,10 +827,12 @@ constrain_size_increments (MetaWindow *window,
wi = window->size_hints.width_inc;
extra_height = (info->current.height - bh) % hi;
extra_width = (info->current.width - bw) % wi;
/* ignore size increments for maximized windows */
if (window->maximized_horizontally)
extra_width *= 0;
if (window->maximized_vertically)
extra_height *= 0;
/* constraint is satisfied iff there is no extra height or width */
constraint_already_satisfied =
(extra_height == 0 && extra_width == 0);
@@ -755,12 +840,24 @@ constrain_size_increments (MetaWindow *window,
return constraint_already_satisfied;
/*** Enforce constraint ***/
/* Shrink to base + N * inc */
new_width = info->current.width - extra_width;
new_height = info->current.height - extra_height;
/* Adjusting down instead of up (as done in the above two lines) may
* violate minimum size constraints; fix the adjustment if this
* happens.
*/
if (new_width < window->size_hints.min_width)
new_width += ((window->size_hints.min_width - new_width)/wi + 1)*wi;
if (new_height < window->size_hints.min_height)
new_height += ((window->size_hints.min_height - new_height)/hi + 1)*hi;
/* Resize to the new size */
meta_rectangle_resize_with_gravity (&info->orig,
&info->current,
info->resize_gravity,
info->current.width - extra_width,
info->current.height - extra_height);
new_width,
new_height);
return TRUE;
}
@@ -787,8 +884,13 @@ constrain_size_limits (MetaWindow *window,
/* Determine whether constraint is already satisfied; exit if it is */
get_size_limits (window, info->fgeom, FALSE, &min_size, &max_size);
too_big = !meta_rectangle_could_fit_rect (&info->current, &min_size);
too_small = !meta_rectangle_could_fit_rect (&max_size, &info->current);
/* We ignore max-size limits for maximized windows; see #327543 */
if (window->maximized_horizontally)
max_size.width = MAX (max_size.width, info->current.width);
if (window->maximized_vertically)
max_size.height = MAX (max_size.height, info->current.height);
too_small = !meta_rectangle_could_fit_rect (&info->current, &min_size);
too_big = !meta_rectangle_could_fit_rect (&max_size, &info->current);
constraint_already_satisfied = !too_big && !too_small;
if (check_only || constraint_already_satisfied)
return constraint_already_satisfied;
@@ -939,13 +1041,15 @@ do_screen_and_xinerama_relative_constraints (
gboolean exit_early = FALSE, constraint_satisfied;
MetaRectangle how_far_it_can_be_smushed, min_size, max_size;
#ifdef WITH_VERBOSE_MODE
/* First, log some debugging information */
char spanning_region[1 + 28 * g_list_length (region_spanning_rectangles)];
(void) spanning_region; /* Avoid stupid & incorrect compiler warnings... */
meta_topic (META_DEBUG_GEOMETRY,
"screen/xinerama constraint; region_spanning_rectangles: %s\n",
meta_rectangle_region_to_string (region_spanning_rectangles, ", ",
spanning_region));
#endif
/* Determine whether constraint applies; exit if it doesn't */
how_far_it_can_be_smushed = info->current;
@@ -1042,6 +1146,7 @@ constrain_fully_onscreen (MetaWindow *window,
*/
if (window->type == META_WINDOW_DESKTOP ||
window->type == META_WINDOW_DOCK ||
window->fullscreen ||
!window->require_fully_onscreen ||
info->is_user_action)
return TRUE;
@@ -1053,6 +1158,91 @@ constrain_fully_onscreen (MetaWindow *window,
check_only);
}
static gboolean
constrain_titlebar_visible (MetaWindow *window,
ConstraintInfo *info,
ConstraintPriority priority,
gboolean check_only)
{
gboolean unconstrained_user_action;
gboolean retval;
int bottom_amount;
int horiz_amount_offscreen, vert_amount_offscreen;
int horiz_amount_onscreen, vert_amount_onscreen;
if (priority > PRIORITY_TITLEBAR_VISIBLE)
return TRUE;
/* Allow the titlebar beyond the top of the screen only if the user wasn't
* clicking on the frame to start the move.
*/
unconstrained_user_action =
info->is_user_action && !window->display->grab_frame_action;
/* Exit early if we know the constraint won't apply--note that this constraint
* is only meant for normal windows (e.g. we don't want docks to be shoved
* "onscreen" by their own strut).
*/
if (window->type == META_WINDOW_DESKTOP ||
window->type == META_WINDOW_DOCK ||
window->fullscreen ||
!window->require_titlebar_visible ||
!window->decorated ||
unconstrained_user_action)
return TRUE;
/* Determine how much offscreen things are allowed. We first need to
* figure out how much must remain on the screen. For that, we use 25%
* window width/height but clamp to the range of (10,75) pixels. This is
* somewhat of a seat of my pants random guess at what might look good.
* Then, the amount that is allowed off is just the window size minus
* this amount (but no less than 0 for tiny windows).
*/
horiz_amount_onscreen = info->current.width / 4;
vert_amount_onscreen = info->current.height / 4;
horiz_amount_onscreen = CLAMP (horiz_amount_onscreen, 10, 75);
vert_amount_onscreen = CLAMP (vert_amount_onscreen, 10, 75);
horiz_amount_offscreen = info->current.width - horiz_amount_onscreen;
vert_amount_offscreen = info->current.height - vert_amount_onscreen;
horiz_amount_offscreen = MAX (horiz_amount_offscreen, 0);
vert_amount_offscreen = MAX (vert_amount_offscreen, 0);
/* Allow the titlebar to touch the bottom panel; If there is no titlebar,
* require vert_amount to remain on the screen.
*/
if (window->frame)
{
bottom_amount = info->current.height + info->fgeom->bottom_height;
vert_amount_onscreen = info->fgeom->top_height;
}
else
bottom_amount = vert_amount_offscreen;
/* Extend the region, have a helper function handle the constraint,
* then return the region to its original size.
*/
meta_rectangle_expand_region_conditionally (info->usable_screen_region,
horiz_amount_offscreen,
horiz_amount_offscreen,
0, /* Don't let titlebar off */
bottom_amount,
horiz_amount_onscreen,
vert_amount_onscreen);
retval =
do_screen_and_xinerama_relative_constraints (window,
info->usable_screen_region,
info,
check_only);
meta_rectangle_expand_region_conditionally (info->usable_screen_region,
-horiz_amount_offscreen,
-horiz_amount_offscreen,
0, /* Don't let titlebar off */
-bottom_amount,
horiz_amount_onscreen,
vert_amount_onscreen);
return retval;
}
static gboolean
constrain_partially_onscreen (MetaWindow *window,
ConstraintInfo *info,

View File

@@ -1,3 +1,5 @@
/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */
/* Metacity size/position constraints */
/*

View File

@@ -1,3 +1,5 @@
/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */
/* Metacity interface used by GTK+ UI to talk to core */
/*
@@ -27,9 +29,20 @@
#include "workspace.h"
#include "prefs.h"
/* Looks up the MetaWindow representing the frame of the given X window.
* Used as a helper function by a bunch of the functions below.
*
* FIXME: The functions that use this function throw the result away
* after use. Many of these functions tend to be called in small groups,
* which results in get_window() getting called several times in succession
* with the same parameters. We should profile to see whether this wastes
* much time, and if it does we should look into a generalised
* meta_core_get_window_info() which takes a bunch of pointers to variables
* to put its results in, and only fills in the non-null ones.
*/
static MetaWindow *
get_window (Display *xdisplay,
Window frame_xwindow)
Window frame_xwindow)
{
MetaDisplay *display;
MetaWindow *window;
@@ -47,112 +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_titlebar_is_onscreen (Display *xdisplay,
Window frame_xwindow)
{
MetaWindow *window = get_window (xdisplay, frame_xwindow);
MetaDisplay *display = meta_display_for_x_display (xdisplay);
MetaWindow *window = meta_display_lookup_x_window (display, xwindow);
return meta_window_titlebar_is_onscreen (window);
}
va_start (args, xwindow);
Window
meta_core_get_client_xwindow (Display *xdisplay,
Window frame_xwindow)
{
MetaWindow *window = get_window (xdisplay, frame_xwindow);
request = va_arg (args, MetaCoreGetType);
return window->xwindow;
}
/* 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.
*/
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);
}
if (request != META_CORE_WINDOW_HAS_FRAME &&
(window == NULL || window->frame == NULL)) {
meta_bug ("No such frame window 0x%lx!\n", xwindow);
return;
}
MetaFrameType
meta_core_get_frame_type (Display *xdisplay,
Window frame_xwindow)
{
MetaWindow *window;
MetaFrameType base_type;
while (request != META_CORE_GET_END) {
gpointer answer = va_arg (args, gpointer);
window = get_window (xdisplay, frame_xwindow);
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;
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;
switch (window->type)
{
case META_WINDOW_NORMAL:
base_type = META_FRAME_TYPE_NORMAL;
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_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_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
@@ -161,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
@@ -199,7 +256,7 @@ meta_core_user_raise (Display *xdisplay,
void
meta_core_user_lower_and_unfocus (Display *xdisplay,
Window frame_xwindow,
Time timestamp)
guint32 timestamp)
{
MetaWindow *window = get_window (xdisplay, frame_xwindow);
@@ -242,39 +299,13 @@ meta_core_user_lower_and_unfocus (Display *xdisplay,
void
meta_core_user_focus (Display *xdisplay,
Window frame_xwindow,
Time timestamp)
guint32 timestamp)
{
MetaWindow *window = get_window (xdisplay, frame_xwindow);
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)
@@ -339,20 +370,22 @@ meta_core_delete (Display *xdisplay,
void
meta_core_unshade (Display *xdisplay,
Window frame_xwindow)
Window frame_xwindow,
guint32 timestamp)
{
MetaWindow *window = get_window (xdisplay, frame_xwindow);
meta_window_unshade (window);
meta_window_unshade (window, timestamp);
}
void
meta_core_shade (Display *xdisplay,
Window frame_xwindow)
Window frame_xwindow,
guint32 timestamp)
{
MetaWindow *window = get_window (xdisplay, frame_xwindow);
meta_window_shade (window);
meta_window_shade (window, timestamp);
}
void
@@ -364,6 +397,24 @@ meta_core_unstick (Display *xdisplay,
meta_window_unstick (window);
}
void
meta_core_make_above (Display *xdisplay,
Window frame_xwindow)
{
MetaWindow *window = get_window (xdisplay, frame_xwindow);
meta_window_make_above (window);
}
void
meta_core_unmake_above (Display *xdisplay,
Window frame_xwindow)
{
MetaWindow *window = get_window (xdisplay, frame_xwindow);
meta_window_unmake_above (window);
}
void
meta_core_stick (Display *xdisplay,
Window frame_xwindow)
@@ -405,43 +456,13 @@ 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,
int root_x,
int root_y,
int button,
Time timestamp)
guint32 timestamp)
{
MetaWindow *window = get_window (xdisplay, frame_xwindow);
@@ -584,10 +605,10 @@ meta_core_begin_grab_op (Display *xdisplay,
Window frame_xwindow,
MetaGrabOp op,
gboolean pointer_already_grabbed,
int event_serial,
gboolean frame_action,
int button,
gulong modmask,
Time timestamp,
guint32 timestamp,
int root_x,
int root_y)
{
@@ -602,14 +623,14 @@ meta_core_begin_grab_op (Display *xdisplay,
return meta_display_begin_grab_op (display, screen, window,
op, pointer_already_grabbed,
event_serial,
frame_action,
button, modmask,
timestamp, root_x, root_y);
}
void
meta_core_end_grab_op (Display *xdisplay,
Time timestamp)
guint32 timestamp)
{
MetaDisplay *display;
@@ -684,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)
{
@@ -708,3 +715,31 @@ meta_core_increment_event_serial (Display *xdisplay)
meta_display_increment_event_serial (display);
}
void
meta_invalidate_default_icons (void)
{
GSList *displays, *windows;
for (displays = meta_displays_list ();
displays != NULL;
displays = displays->next)
{
for (windows = meta_display_list_windows (displays->data);
windows != NULL;
windows = windows->next)
{
MetaWindow *window = (MetaWindow*)windows->data;
if (window->icon_cache.origin == USING_FALLBACK_ICON)
{
meta_icon_cache_free (&(window->icon_cache));
meta_window_update_icon_now (window);
}
}
g_slist_free (windows);
}
}

View File

@@ -1,3 +1,5 @@
/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */
/* Metacity interface used by GTK+ UI to talk to core */
/*
@@ -27,26 +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);
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);
@@ -66,22 +110,11 @@ void meta_core_user_raise (Display *xdisplay,
Window frame_xwindow);
void meta_core_user_lower_and_unfocus (Display *xdisplay,
Window frame_xwindow,
Time timestamp);
guint32 timestamp);
void meta_core_user_focus (Display *xdisplay,
Window frame_xwindow,
Time 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);
guint32 timestamp);
void meta_core_minimize (Display *xdisplay,
Window frame_xwindow);
@@ -95,13 +128,19 @@ void meta_core_delete (Display *xdisplay,
Window frame_xwindow,
guint32 timestamp);
void meta_core_unshade (Display *xdisplay,
Window frame_xwindow);
Window frame_xwindow,
guint32 timestamp);
void meta_core_shade (Display *xdisplay,
Window frame_xwindow);
Window frame_xwindow,
guint32 timestamp);
void meta_core_unstick (Display *xdisplay,
Window frame_xwindow);
void meta_core_stick (Display *xdisplay,
Window frame_xwindow);
void meta_core_unmake_above (Display *xdisplay,
Window frame_xwindow);
void meta_core_make_above (Display *xdisplay,
Window frame_xwindow);
void meta_core_change_workspace (Display *xdisplay,
Window frame_xwindow,
int new_workspace);
@@ -114,20 +153,12 @@ 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,
int root_y,
int button,
Time timestamp);
guint32 timestamp);
void meta_core_get_menu_accelerator (MetaMenuOp menu_op,
int workspace,
@@ -138,14 +169,14 @@ gboolean meta_core_begin_grab_op (Display *xdisplay,
Window frame_xwindow,
MetaGrabOp op,
gboolean pointer_already_grabbed,
int event_serial,
gboolean frame_action,
int button,
gulong modmask,
Time timestamp,
guint32 timestamp,
int root_x,
int root_y);
void meta_core_end_grab_op (Display *xdisplay,
Time timestamp);
guint32 timestamp);
MetaGrabOp meta_core_get_grab_op (Display *xdisplay);
Window meta_core_get_grab_frame (Display *xdisplay);
int meta_core_get_grab_button (Display *xdisplay);
@@ -158,18 +189,13 @@ 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.
*/
void meta_core_increment_event_serial (Display *display);
int meta_ui_get_last_event_serial (Display *xdisplay);
void meta_invalidate_default_icons (void);
#endif

View File

@@ -1,3 +1,5 @@
/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */
/* Metacity window deletion */
/*
@@ -34,12 +36,13 @@
#include <stdlib.h>
#include <stdio.h>
static void meta_window_present_delete_dialog (MetaWindow *window);
static void meta_window_present_delete_dialog (MetaWindow *window,
guint32 timestamp);
static void
delete_ping_reply_func (MetaDisplay *display,
Window xwindow,
Time timestamp,
guint32 timestamp,
void *user_data)
{
meta_topic (META_DEBUG_PING,
@@ -292,7 +295,7 @@ io_from_ping_dialog (GIOChannel *channel,
static void
delete_ping_timeout_func (MetaDisplay *display,
Window xwindow,
Time timestamp,
guint32 timestamp,
void *user_data)
{
MetaWindow *window = user_data;
@@ -311,14 +314,14 @@ delete_ping_timeout_func (MetaDisplay *display,
if (window->dialog_pid >= 0)
{
meta_window_present_delete_dialog (window);
meta_window_present_delete_dialog (window, timestamp);
return;
}
window_id_str = g_strdup_printf ("0x%lx", window->xwindow);
sprintf (numbuf, "%d", window->screen->number);
sprintf (timestampbuf, "%lu", timestamp);
sprintf (timestampbuf, "%u", timestamp);
argv[0] = METACITY_LIBEXECDIR"/metacity-dialog";
argv[1] = "--screen";
@@ -364,7 +367,7 @@ delete_ping_timeout_func (MetaDisplay *display,
void
meta_window_delete (MetaWindow *window,
Time timestamp)
guint32 timestamp)
{
meta_error_trap_push (window->display);
if (window->delete_window)
@@ -476,7 +479,7 @@ meta_window_free_delete_dialog (MetaWindow *window)
}
static void
meta_window_present_delete_dialog (MetaWindow *window)
meta_window_present_delete_dialog (MetaWindow *window, guint32 timestamp)
{
meta_topic (META_DEBUG_PING,
"Presenting existing ping dialog for %s\n",
@@ -501,8 +504,7 @@ meta_window_present_delete_dialog (MetaWindow *window)
w->res_class &&
g_strcasecmp (w->res_class, "metacity-dialog") == 0)
{
meta_window_activate (w,
meta_display_get_current_time (w->display));
meta_window_activate (w, timestamp);
break;
}

File diff suppressed because it is too large Load Diff

View File

@@ -1,3 +1,5 @@
/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */
/* Metacity X display handler */
/*
@@ -62,7 +64,7 @@ typedef struct MetaEdgeResistanceData MetaEdgeResistanceData;
typedef void (* MetaWindowPingFunc) (MetaDisplay *display,
Window xwindow,
Time timestamp,
guint32 timestamp,
gpointer user_data);
@@ -83,6 +85,7 @@ struct _MetaDisplay
Display *xdisplay;
Window leader_window;
Window timestamp_pinging_window;
Atom atom_net_wm_name;
Atom atom_wm_protocols;
@@ -156,6 +159,8 @@ struct _MetaDisplay
Atom atom_net_wm_action_maximize_vert;
Atom atom_net_wm_action_change_desktop;
Atom atom_net_wm_action_close;
Atom atom_net_wm_action_above;
Atom atom_net_wm_action_below;
Atom atom_net_wm_state_above;
Atom atom_net_wm_state_below;
Atom atom_net_startup_id;
@@ -178,6 +183,7 @@ struct _MetaDisplay
Atom atom_metacity_version;
Atom atom_net_wm_visible_name;
Atom atom_net_wm_visible_icon_name;
Atom atom_net_wm_user_time_window;
/* This is the actual window from focus events,
* not the one we last set
@@ -194,10 +200,10 @@ struct _MetaDisplay
MetaWindow *expected_focus_window;
/* last timestamp passed to XSetInputFocus */
Time last_focus_time;
guint32 last_focus_time;
/* last user interaction time in any app */
Time last_user_time;
guint32 last_user_time;
/* whether we're using mousenav (only relevant for sloppy&mouse focus modes;
* !mouse_mode means "keynav mode")
@@ -250,7 +256,6 @@ struct _MetaDisplay
MetaScreen *grab_screen;
MetaWindow *grab_window;
Window grab_xwindow;
gulong grab_start_serial;
int grab_button;
int grab_anchor_root_x;
int grab_anchor_root_y;
@@ -261,7 +266,8 @@ struct _MetaDisplay
guint grab_have_pointer : 1;
guint grab_have_keyboard : 1;
guint grab_wireframe_active : 1;
guint grab_was_cancelled : 1;
guint grab_was_cancelled : 1; /* Only used in wireframe mode */
guint grab_frame_action : 1;
MetaRectangle grab_wireframe_rect;
MetaRectangle grab_wireframe_last_xor_rect;
MetaRectangle grab_initial_window_pos;
@@ -269,7 +275,7 @@ struct _MetaDisplay
gboolean grab_threshold_movement_reached; /* raise_on_click == FALSE. */
MetaResizePopup *grab_resize_popup;
GTimeVal grab_last_moveresize_time;
Time grab_motion_notify_time;
guint32 grab_motion_notify_time;
int grab_wireframe_last_display_width;
int grab_wireframe_last_display_height;
GList* grab_old_window_stacking;
@@ -283,7 +289,7 @@ struct _MetaDisplay
#ifdef HAVE_XKB
int xkb_base_event_type;
Time last_bell_time;
guint32 last_bell_time;
#endif
#ifdef HAVE_XSYNC
/* alarm monitoring client's _NET_WM_SYNC_REQUEST_COUNTER */
@@ -311,6 +317,9 @@ struct _MetaDisplay
/* Xinerama cache */
unsigned int xinerama_cache_invalidated : 1;
/* Opening the display */
unsigned int display_opening : 1;
/* Closing down the display */
int closing;
@@ -388,7 +397,8 @@ struct _MetaDisplay
)
gboolean meta_display_open (void);
void meta_display_close (MetaDisplay *display);
void meta_display_close (MetaDisplay *display,
guint32 timestamp);
MetaScreen* meta_display_screen_for_root (MetaDisplay *display,
Window xroot);
MetaScreen* meta_display_screen_for_x_screen (MetaDisplay *display,
@@ -399,10 +409,16 @@ void meta_display_grab (MetaDisplay *display);
void meta_display_ungrab (MetaDisplay *display);
void meta_display_unmanage_screen (MetaDisplay *display,
MetaScreen *screen);
MetaScreen *screen,
guint32 timestamp);
void meta_display_unmanage_windows_for_screen (MetaDisplay *display,
MetaScreen *screen);
MetaScreen *screen,
guint32 timestamp);
/* Utility function to compare the stacking of two windows */
int meta_display_stack_cmp (const void *a,
const void *b);
/* A given MetaWindow may have various X windows that "belong"
* to it, such as the frame window.
@@ -431,21 +447,21 @@ void meta_display_set_grab_op_cursor (MetaDisplay *display,
MetaGrabOp op,
gboolean change_pointer,
Window grab_xwindow,
Time timestamp);
guint32 timestamp);
gboolean meta_display_begin_grab_op (MetaDisplay *display,
MetaScreen *screen,
MetaWindow *window,
MetaGrabOp op,
gboolean pointer_already_grabbed,
int event_serial,
gboolean frame_action,
int button,
gulong modmask,
Time timestamp,
guint32 timestamp,
int root_x,
int root_y);
void meta_display_end_grab_op (MetaDisplay *display,
Time timestamp);
guint32 timestamp);
void meta_display_check_threshold_reached (MetaDisplay *display,
int x,
@@ -482,12 +498,12 @@ void meta_display_retheme_all (void);
void meta_display_set_cursor_theme (const char *theme,
int size);
void meta_display_ping_window (MetaDisplay *display,
MetaWindow *window,
Time timestamp,
MetaWindowPingFunc ping_reply_func,
MetaWindowPingFunc ping_timeout_func,
void *user_data);
void meta_display_ping_window (MetaDisplay *display,
MetaWindow *window,
guint32 timestamp,
MetaWindowPingFunc ping_reply_func,
MetaWindowPingFunc ping_timeout_func,
void *user_data);
gboolean meta_display_window_has_pending_pings (MetaDisplay *display,
MetaWindow *window);
@@ -546,7 +562,7 @@ gboolean meta_display_focus_sentinel_clear (MetaDisplay *display);
void meta_display_set_input_focus_window (MetaDisplay *display,
MetaWindow *window,
gboolean focus_frame,
Time timestamp);
guint32 timestamp);
/* meta_display_focus_the_no_focus_window is called when the
* designated no_focus_window should be focused, but is otherwise the
@@ -554,7 +570,7 @@ void meta_display_set_input_focus_window (MetaDisplay *display,
*/
void meta_display_focus_the_no_focus_window (MetaDisplay *display,
MetaScreen *screen,
Time timestamp);
guint32 timestamp);
void meta_display_queue_autoraise_callback (MetaDisplay *display,
MetaWindow *window);

View File

@@ -1,3 +1,5 @@
/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */
/* Draw a workspace */
/* This file should not be modified to depend on other files in
@@ -64,21 +66,38 @@ get_window_rect (const WnckWindowDisplayInfo *win,
}
static void
draw_window (GtkWidget *widget,
GdkDrawable *drawable,
draw_window (GtkWidget *widget,
GdkDrawable *drawable,
const WnckWindowDisplayInfo *win,
const GdkRectangle *winrect)
const GdkRectangle *winrect,
GtkStateType state)
{
cairo_t *cr;
GdkPixbuf *icon;
int icon_x, icon_y, icon_w, icon_h;
gdk_draw_rectangle (drawable,
win->is_active ?
widget->style->bg_gc[GTK_STATE_SELECTED] :
widget->style->bg_gc[GTK_STATE_NORMAL],
TRUE,
winrect->x + 1, winrect->y + 1,
winrect->width - 2, winrect->height - 2);
gboolean is_active;
GdkColor *color;
is_active = win->is_active;
cr = gdk_cairo_create (drawable);
cairo_rectangle (cr, winrect->x, winrect->y, winrect->width, winrect->height);
cairo_clip (cr);
if (is_active)
color = &widget->style->light[state];
else
color = &widget->style->bg[state];
cairo_set_source_rgb (cr,
color->red / 65535.,
color->green / 65535.,
color->blue / 65535.);
cairo_rectangle (cr,
winrect->x + 1, winrect->y + 1,
MAX (0, winrect->width - 2), MAX (0, winrect->height - 2));
cairo_fill (cr);
icon = win->icon;
@@ -101,7 +120,7 @@ draw_window (GtkWidget *widget,
{
icon_w = gdk_pixbuf_get_width (icon);
icon_h = gdk_pixbuf_get_height (icon);
/* Give up. */
if (icon_w > (winrect->width - 2) ||
icon_h > (winrect->height - 2))
@@ -114,44 +133,31 @@ draw_window (GtkWidget *widget,
{
icon_x = winrect->x + (winrect->width - icon_w) / 2;
icon_y = winrect->y + (winrect->height - icon_h) / 2;
{
/* render_to_drawable should take a clip rect to save
* us this mess...
*/
GdkRectangle pixbuf_rect;
GdkRectangle draw_rect;
pixbuf_rect.x = icon_x;
pixbuf_rect.y = icon_y;
pixbuf_rect.width = icon_w;
pixbuf_rect.height = icon_h;
if (gdk_rectangle_intersect ((GdkRectangle *)winrect, &pixbuf_rect,
&draw_rect))
{
gdk_pixbuf_render_to_drawable_alpha (icon,
drawable,
draw_rect.x - pixbuf_rect.x,
draw_rect.y - pixbuf_rect.y,
draw_rect.x, draw_rect.y,
draw_rect.width,
draw_rect.height,
GDK_PIXBUF_ALPHA_FULL,
128,
GDK_RGB_DITHER_NORMAL,
0, 0);
}
}
cairo_save (cr);
gdk_cairo_set_source_pixbuf (cr, icon, icon_x, icon_y);
cairo_rectangle (cr, icon_x, icon_y, icon_w, icon_h);
cairo_clip (cr);
cairo_paint (cr);
cairo_restore (cr);
}
gdk_draw_rectangle (drawable,
win->is_active ?
widget->style->fg_gc[GTK_STATE_SELECTED] :
widget->style->fg_gc[GTK_STATE_NORMAL],
FALSE,
winrect->x, winrect->y,
winrect->width - 1, winrect->height - 1);
if (is_active)
color = &widget->style->fg[state];
else
color = &widget->style->fg[state];
cairo_set_source_rgb (cr,
color->red / 65535.,
color->green / 65535.,
color->blue / 65535.);
cairo_set_line_width (cr, 1.0);
cairo_rectangle (cr,
winrect->x + 0.5, winrect->y + 0.5,
MAX (0, winrect->width - 1), MAX (0, winrect->height - 1));
cairo_stroke (cr);
cairo_destroy (cr);
}
void
@@ -170,48 +176,56 @@ wnck_draw_workspace (GtkWidget *widget,
{
int i;
GdkRectangle workspace_rect;
GtkStateType state;
workspace_rect.x = x;
workspace_rect.y = y;
workspace_rect.width = width;
workspace_rect.height = height;
if (is_active)
gdk_draw_rectangle (drawable,
GTK_WIDGET (widget)->style->dark_gc[GTK_STATE_SELECTED],
TRUE,
x, y, width, height);
else if (workspace_background)
state = GTK_STATE_SELECTED;
else if (workspace_background)
state = GTK_STATE_PRELIGHT;
else
state = GTK_STATE_NORMAL;
if (workspace_background)
{
gdk_pixbuf_render_to_drawable (workspace_background,
drawable,
GTK_WIDGET (widget)->style->dark_gc[GTK_STATE_SELECTED],
0, 0,
x, y,
-1, -1,
GDK_RGB_DITHER_MAX,
0, 0);
gdk_draw_pixbuf (drawable,
GTK_WIDGET (widget)->style->dark_gc[state],
workspace_background,
0, 0,
x, y,
-1, -1,
GDK_RGB_DITHER_MAX,
0, 0);
}
else
gdk_draw_rectangle (drawable,
GTK_WIDGET (widget)->style->dark_gc[GTK_STATE_NORMAL],
TRUE,
x, y, width, height);
{
cairo_t *cr;
cr = gdk_cairo_create (widget->window);
gdk_cairo_set_source_color (cr, &widget->style->dark[state]);
cairo_rectangle (cr, x, y, width, height);
cairo_fill (cr);
cairo_destroy (cr);
}
i = 0;
while (i < n_windows)
{
const WnckWindowDisplayInfo *win = &windows[i];
GdkRectangle winrect;
get_window_rect (win, screen_width, screen_height, &workspace_rect, &winrect);
get_window_rect (win, screen_width,
screen_height, &workspace_rect, &winrect);
draw_window (widget,
drawable,
win,
&winrect);
&winrect,
state);
++i;
}

View File

@@ -1,3 +1,5 @@
/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */
/* Draw a workspace */
/* This file should not be modified to depend on other files in

View File

@@ -1,3 +1,5 @@
/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */
/* Edge resistance for move/resize operations */
/*
@@ -44,7 +46,6 @@ struct ResistanceDataForAnEdge
GSourceFunc timeout_func;
MetaWindow *window;
int keyboard_buildup;
gboolean allow_past_screen_edge;
};
typedef struct ResistanceDataForAnEdge ResistanceDataForAnEdge;
@@ -61,6 +62,9 @@ struct MetaEdgeResistanceData
ResistanceDataForAnEdge bottom_data;
};
/* !WARNING!: this function can return invalid indices (namely, either -1 or
* edges->len); this is by design, but you need to remember this.
*/
static int
find_index_of_edge_near_position (const GArray *edges,
int position,
@@ -299,9 +303,9 @@ movement_towards_edge (MetaDirection side, int increment)
case META_DIRECTION_RIGHT:
case META_DIRECTION_BOTTOM:
return increment > 0;
default:
g_assert_not_reached ();
}
g_assert_not_reached ();
}
static gboolean
@@ -329,6 +333,7 @@ apply_edge_resistance (MetaWindow *window,
gboolean keyboard_op)
{
int i, begin, end;
int last_edge;
gboolean increasing = new_pos > old_pos;
int increment = increasing ? 1 : -1;
@@ -365,6 +370,13 @@ apply_edge_resistance (MetaWindow *window,
begin = find_index_of_edge_near_position (edges, old_pos, increasing, xdir);
end = find_index_of_edge_near_position (edges, new_pos, !increasing, xdir);
/* begin and end can be outside the array index, if the window is partially
* off the screen
*/
last_edge = edges->len - 1;
begin = CLAMP (begin, 0, last_edge);
end = CLAMP (end, 0, last_edge);
/* Loop over all these edges we're moving past/to. */
i = begin;
while ((increasing && i <= end) ||
@@ -397,18 +409,6 @@ apply_edge_resistance (MetaWindow *window,
{
int threshold;
/* INFINITE RESISTANCE for screen edges under certain cases; If
* the edge is relevant and we're moving towards it and it's a
* screen edge and infinite resistance has been requested for
* this particular grab op then don't allow movement past it.
*/
if (edge->edge_type == META_EDGE_SCREEN &&
!resistance_data->allow_past_screen_edge &&
movement_towards_edge (edge->side_type, increment))
{
return compare;
}
/* TIMEOUT RESISTANCE: If the edge is relevant and we're moving
* towards it, then we may want to have some kind of time delay
* before the user can move past this edge.
@@ -541,7 +541,8 @@ apply_edge_resistance_to_each_side (MetaDisplay *display,
MetaRectangle *new_outer,
GSourceFunc timeout_func,
gboolean auto_snap,
gboolean keyboard_op)
gboolean keyboard_op,
gboolean is_resize)
{
MetaEdgeResistanceData *edge_data;
MetaRectangle modified_rect;
@@ -588,47 +589,68 @@ apply_edge_resistance_to_each_side (MetaDisplay *display,
}
else
{
/* Now, apply the normal edge resistance */
new_left = apply_edge_resistance (window,
BOX_LEFT (*old_outer),
BOX_LEFT (*new_outer),
old_outer,
new_outer,
edge_data->left_edges,
&edge_data->left_data,
timeout_func,
TRUE,
keyboard_op);
new_right = apply_edge_resistance (window,
BOX_RIGHT (*old_outer),
BOX_RIGHT (*new_outer),
old_outer,
new_outer,
edge_data->right_edges,
&edge_data->right_data,
timeout_func,
TRUE,
keyboard_op);
new_top = apply_edge_resistance (window,
BOX_TOP (*old_outer),
BOX_TOP (*new_outer),
old_outer,
new_outer,
edge_data->top_edges,
&edge_data->top_data,
timeout_func,
FALSE,
keyboard_op);
new_bottom = apply_edge_resistance (window,
BOX_BOTTOM (*old_outer),
BOX_BOTTOM (*new_outer),
old_outer,
new_outer,
edge_data->bottom_edges,
&edge_data->bottom_data,
timeout_func,
FALSE,
keyboard_op);
/* Disable edge resistance for resizes when windows have size
* increment hints; see #346782. For all other cases, apply
* them.
*/
if (!is_resize || window->size_hints.width_inc == 1)
{
/* Now, apply the normal horizontal edge resistance */
new_left = apply_edge_resistance (window,
BOX_LEFT (*old_outer),
BOX_LEFT (*new_outer),
old_outer,
new_outer,
edge_data->left_edges,
&edge_data->left_data,
timeout_func,
TRUE,
keyboard_op);
new_right = apply_edge_resistance (window,
BOX_RIGHT (*old_outer),
BOX_RIGHT (*new_outer),
old_outer,
new_outer,
edge_data->right_edges,
&edge_data->right_data,
timeout_func,
TRUE,
keyboard_op);
}
else
{
new_left = new_outer->x;
new_right = new_outer->x + new_outer->width;
}
/* Same for vertical resizes... */
if (!is_resize || window->size_hints.height_inc == 1)
{
new_top = apply_edge_resistance (window,
BOX_TOP (*old_outer),
BOX_TOP (*new_outer),
old_outer,
new_outer,
edge_data->top_edges,
&edge_data->top_data,
timeout_func,
FALSE,
keyboard_op);
new_bottom = apply_edge_resistance (window,
BOX_BOTTOM (*old_outer),
BOX_BOTTOM (*new_outer),
old_outer,
new_outer,
edge_data->bottom_edges,
&edge_data->bottom_data,
timeout_func,
FALSE,
keyboard_op);
}
else
{
new_top = new_outer->y;
new_bottom = new_outer->y + new_outer->height;
}
}
/* Determine whether anything changed, and save the changes */
@@ -913,12 +935,6 @@ initialize_grab_edge_resistance_data (MetaDisplay *display)
edge_data->right_data.keyboard_buildup = 0;
edge_data->top_data.keyboard_buildup = 0;
edge_data->bottom_data.keyboard_buildup = 0;
edge_data->left_data.allow_past_screen_edge = TRUE;
edge_data->right_data.allow_past_screen_edge = TRUE;
edge_data->bottom_data.allow_past_screen_edge = TRUE;
edge_data->top_data.allow_past_screen_edge =
display->grab_anchor_root_y >= display->grab_initial_window_pos.y;
}
void
@@ -1121,6 +1137,7 @@ meta_window_edge_resistance_for_move (MetaWindow *window,
gboolean is_keyboard_op)
{
MetaRectangle old_outer, proposed_outer, new_outer;
gboolean is_resize;
if (window == window->display->grab_window &&
window->display->grab_wireframe_active)
@@ -1139,13 +1156,15 @@ meta_window_edge_resistance_for_move (MetaWindow *window,
new_outer = proposed_outer;
window->display->grab_last_user_action_was_snap = snap;
is_resize = FALSE;
if (apply_edge_resistance_to_each_side (window->display,
window,
&old_outer,
&new_outer,
timeout_func,
snap,
is_keyboard_op))
is_keyboard_op,
is_resize))
{
/* apply_edge_resistance_to_each_side independently applies
* resistance to both the right and left edges of new_outer as both
@@ -1213,6 +1232,7 @@ meta_window_edge_resistance_for_resize (MetaWindow *window,
{
MetaRectangle old_outer, new_outer;
int proposed_outer_width, proposed_outer_height;
gboolean is_resize;
if (window == window->display->grab_window &&
window->display->grab_wireframe_active)
@@ -1234,13 +1254,15 @@ meta_window_edge_resistance_for_resize (MetaWindow *window,
proposed_outer_height);
window->display->grab_last_user_action_was_snap = snap;
is_resize = TRUE;
if (apply_edge_resistance_to_each_side (window->display,
window,
&old_outer,
&new_outer,
timeout_func,
snap,
is_keyboard_op))
is_keyboard_op,
is_resize))
{
*new_width = old_width + (new_outer.width - old_outer.width);
*new_height = old_height + (new_outer.height - old_outer.height);

View File

@@ -1,3 +1,5 @@
/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */
/* Edge resistance for move/resize operations */
/*

View File

@@ -1,3 +1,5 @@
/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */
/* Metacity animation effects */
/*

View File

@@ -1,3 +1,5 @@
/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */
/* Metacity animation effects */
/*
@@ -67,6 +69,8 @@ typedef struct
MetaRectangle icon_rect;
} MetaMinimizeEffect, MetaUnminimizeEffect;
#if 0
/* Solaris abhors an empty struct. #397296. */
typedef struct
{
@@ -75,6 +79,7 @@ typedef struct
typedef struct
{
} MetaFocusEffect;
#endif
struct MetaEffect
{
@@ -86,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;

View File

@@ -1,657 +0,0 @@
/* eggaccelerators.c
* Copyright (C) 2002 Red Hat, Inc.; Copyright 1998, 2001 Tim Janik
* Developed by Havoc Pennington, Tim Janik
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
* License as published by the Free Software Foundation; either
* version 2 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Library General Public License for more details.
*
* You should have received a copy of the GNU Library General Public
* License along with this library; if not, write to the
* Free Software Foundation, Inc., 59 Temple Place - Suite 330,
* Boston, MA 02111-1307, USA.
*/
#include "eggaccelerators.h"
#include <string.h>
#include <gdk/gdkx.h>
#include <gdk/gdkkeysyms.h>
enum
{
EGG_MODMAP_ENTRY_SHIFT = 0,
EGG_MODMAP_ENTRY_LOCK = 1,
EGG_MODMAP_ENTRY_CONTROL = 2,
EGG_MODMAP_ENTRY_MOD1 = 3,
EGG_MODMAP_ENTRY_MOD2 = 4,
EGG_MODMAP_ENTRY_MOD3 = 5,
EGG_MODMAP_ENTRY_MOD4 = 6,
EGG_MODMAP_ENTRY_MOD5 = 7,
EGG_MODMAP_ENTRY_LAST = 8
};
#define MODMAP_ENTRY_TO_MODIFIER(x) (1 << (x))
typedef struct
{
EggVirtualModifierType mapping[EGG_MODMAP_ENTRY_LAST];
} EggModmap;
static const EggModmap* egg_keymap_get_modmap (GdkKeymap *keymap);
static inline gboolean
is_alt (const gchar *string)
{
return ((string[0] == '<') &&
(string[1] == 'a' || string[1] == 'A') &&
(string[2] == 'l' || string[2] == 'L') &&
(string[3] == 't' || string[3] == 'T') &&
(string[4] == '>'));
}
static inline gboolean
is_ctl (const gchar *string)
{
return ((string[0] == '<') &&
(string[1] == 'c' || string[1] == 'C') &&
(string[2] == 't' || string[2] == 'T') &&
(string[3] == 'l' || string[3] == 'L') &&
(string[4] == '>'));
}
static inline gboolean
is_modx (const gchar *string)
{
return ((string[0] == '<') &&
(string[1] == 'm' || string[1] == 'M') &&
(string[2] == 'o' || string[2] == 'O') &&
(string[3] == 'd' || string[3] == 'D') &&
(string[4] >= '1' && string[4] <= '5') &&
(string[5] == '>'));
}
static inline gboolean
is_ctrl (const gchar *string)
{
return ((string[0] == '<') &&
(string[1] == 'c' || string[1] == 'C') &&
(string[2] == 't' || string[2] == 'T') &&
(string[3] == 'r' || string[3] == 'R') &&
(string[4] == 'l' || string[4] == 'L') &&
(string[5] == '>'));
}
static inline gboolean
is_shft (const gchar *string)
{
return ((string[0] == '<') &&
(string[1] == 's' || string[1] == 'S') &&
(string[2] == 'h' || string[2] == 'H') &&
(string[3] == 'f' || string[3] == 'F') &&
(string[4] == 't' || string[4] == 'T') &&
(string[5] == '>'));
}
static inline gboolean
is_shift (const gchar *string)
{
return ((string[0] == '<') &&
(string[1] == 's' || string[1] == 'S') &&
(string[2] == 'h' || string[2] == 'H') &&
(string[3] == 'i' || string[3] == 'I') &&
(string[4] == 'f' || string[4] == 'F') &&
(string[5] == 't' || string[5] == 'T') &&
(string[6] == '>'));
}
static inline gboolean
is_control (const gchar *string)
{
return ((string[0] == '<') &&
(string[1] == 'c' || string[1] == 'C') &&
(string[2] == 'o' || string[2] == 'O') &&
(string[3] == 'n' || string[3] == 'N') &&
(string[4] == 't' || string[4] == 'T') &&
(string[5] == 'r' || string[5] == 'R') &&
(string[6] == 'o' || string[6] == 'O') &&
(string[7] == 'l' || string[7] == 'L') &&
(string[8] == '>'));
}
static inline gboolean
is_release (const gchar *string)
{
return ((string[0] == '<') &&
(string[1] == 'r' || string[1] == 'R') &&
(string[2] == 'e' || string[2] == 'E') &&
(string[3] == 'l' || string[3] == 'L') &&
(string[4] == 'e' || string[4] == 'E') &&
(string[5] == 'a' || string[5] == 'A') &&
(string[6] == 's' || string[6] == 'S') &&
(string[7] == 'e' || string[7] == 'E') &&
(string[8] == '>'));
}
static inline gboolean
is_meta (const gchar *string)
{
return ((string[0] == '<') &&
(string[1] == 'm' || string[1] == 'M') &&
(string[2] == 'e' || string[2] == 'E') &&
(string[3] == 't' || string[3] == 'T') &&
(string[4] == 'a' || string[4] == 'A') &&
(string[5] == '>'));
}
static inline gboolean
is_super (const gchar *string)
{
return ((string[0] == '<') &&
(string[1] == 's' || string[1] == 'S') &&
(string[2] == 'u' || string[2] == 'U') &&
(string[3] == 'p' || string[3] == 'P') &&
(string[4] == 'e' || string[4] == 'E') &&
(string[5] == 'r' || string[5] == 'R') &&
(string[6] == '>'));
}
static inline gboolean
is_hyper (const gchar *string)
{
return ((string[0] == '<') &&
(string[1] == 'h' || string[1] == 'H') &&
(string[2] == 'y' || string[2] == 'Y') &&
(string[3] == 'p' || string[3] == 'P') &&
(string[4] == 'e' || string[4] == 'E') &&
(string[5] == 'r' || string[5] == 'R') &&
(string[6] == '>'));
}
/**
* egg_accelerator_parse_virtual:
* @accelerator: string representing an accelerator
* @accelerator_key: return location for accelerator keyval
* @accelerator_mods: return location for accelerator modifier mask
*
* Parses a string representing a virtual accelerator. The format
* looks like "&lt;Control&gt;a" or "&lt;Shift&gt;&lt;Alt&gt;F1" or
* "&lt;Release&gt;z" (the last one is for key release). The parser
* is fairly liberal and allows lower or upper case, and also
* abbreviations such as "&lt;Ctl&gt;" and "&lt;Ctrl&gt;".
*
* If the parse fails, @accelerator_key and @accelerator_mods will
* be set to 0 (zero) and %FALSE will be returned. If the string contains
* only modifiers, @accelerator_key will be set to 0 but %TRUE will be
* returned.
*
* The virtual vs. concrete accelerator distinction is a relic of
* how the X Window System works; there are modifiers Mod2-Mod5 that
* can represent various keyboard keys (numlock, meta, hyper, etc.),
* the virtual modifier represents the keyboard key, the concrete
* modifier the actual Mod2-Mod5 bits in the key press event.
*
* Returns: %TRUE on success.
*/
gboolean
egg_accelerator_parse_virtual (const gchar *accelerator,
guint *accelerator_key,
EggVirtualModifierType *accelerator_mods)
{
guint keyval;
GdkModifierType mods;
gint len;
gboolean bad_keyval;
if (accelerator_key)
*accelerator_key = 0;
if (accelerator_mods)
*accelerator_mods = 0;
g_return_val_if_fail (accelerator != NULL, FALSE);
bad_keyval = FALSE;
keyval = 0;
mods = 0;
len = strlen (accelerator);
while (len)
{
if (*accelerator == '<')
{
if (len >= 9 && is_release (accelerator))
{
accelerator += 9;
len -= 9;
mods |= EGG_VIRTUAL_RELEASE_MASK;
}
else if (len >= 9 && is_control (accelerator))
{
accelerator += 9;
len -= 9;
mods |= EGG_VIRTUAL_CONTROL_MASK;
}
else if (len >= 7 && is_shift (accelerator))
{
accelerator += 7;
len -= 7;
mods |= EGG_VIRTUAL_SHIFT_MASK;
}
else if (len >= 6 && is_shft (accelerator))
{
accelerator += 6;
len -= 6;
mods |= EGG_VIRTUAL_SHIFT_MASK;
}
else if (len >= 6 && is_ctrl (accelerator))
{
accelerator += 6;
len -= 6;
mods |= EGG_VIRTUAL_CONTROL_MASK;
}
else if (len >= 6 && is_modx (accelerator))
{
static const guint mod_vals[] = {
EGG_VIRTUAL_ALT_MASK, EGG_VIRTUAL_MOD2_MASK, EGG_VIRTUAL_MOD3_MASK,
EGG_VIRTUAL_MOD4_MASK, EGG_VIRTUAL_MOD5_MASK
};
len -= 6;
accelerator += 4;
mods |= mod_vals[*accelerator - '1'];
accelerator += 2;
}
else if (len >= 5 && is_ctl (accelerator))
{
accelerator += 5;
len -= 5;
mods |= EGG_VIRTUAL_CONTROL_MASK;
}
else if (len >= 5 && is_alt (accelerator))
{
accelerator += 5;
len -= 5;
mods |= EGG_VIRTUAL_ALT_MASK;
}
else if (len >= 6 && is_meta (accelerator))
{
accelerator += 6;
len -= 6;
mods |= EGG_VIRTUAL_META_MASK;
}
else if (len >= 7 && is_hyper (accelerator))
{
accelerator += 7;
len -= 7;
mods |= EGG_VIRTUAL_HYPER_MASK;
}
else if (len >= 7 && is_super (accelerator))
{
accelerator += 7;
len -= 7;
mods |= EGG_VIRTUAL_SUPER_MASK;
}
else
{
gchar last_ch;
last_ch = *accelerator;
while (last_ch && last_ch != '>')
{
last_ch = *accelerator;
accelerator += 1;
len -= 1;
}
}
}
else
{
keyval = gdk_keyval_from_name (accelerator);
if (keyval == 0)
bad_keyval = TRUE;
accelerator += len;
len -= len;
}
}
if (accelerator_key)
*accelerator_key = gdk_keyval_to_lower (keyval);
if (accelerator_mods)
*accelerator_mods = mods;
return !bad_keyval;
}
/**
* egg_virtual_accelerator_name:
* @accelerator_key: accelerator keyval
* @accelerator_mods: accelerator modifier mask
* @returns: a newly-allocated accelerator name
*
* Converts an accelerator keyval and modifier mask
* into a string parseable by egg_accelerator_parse_virtual().
* For example, if you pass in #GDK_q and #EGG_VIRTUAL_CONTROL_MASK,
* this function returns "&lt;Control&gt;q".
*
* The caller of this function must free the returned string.
*/
gchar*
egg_virtual_accelerator_name (guint accelerator_key,
EggVirtualModifierType accelerator_mods)
{
static const gchar text_release[] = "<Release>";
static const gchar text_shift[] = "<Shift>";
static const gchar text_control[] = "<Control>";
static const gchar text_mod1[] = "<Alt>";
static const gchar text_mod2[] = "<Mod2>";
static const gchar text_mod3[] = "<Mod3>";
static const gchar text_mod4[] = "<Mod4>";
static const gchar text_mod5[] = "<Mod5>";
static const gchar text_meta[] = "<Meta>";
static const gchar text_super[] = "<Super>";
static const gchar text_hyper[] = "<Hyper>";
guint l;
gchar *keyval_name;
gchar *accelerator;
accelerator_mods &= EGG_VIRTUAL_MODIFIER_MASK;
keyval_name = gdk_keyval_name (gdk_keyval_to_lower (accelerator_key));
if (!keyval_name)
keyval_name = "";
l = 0;
if (accelerator_mods & EGG_VIRTUAL_RELEASE_MASK)
l += sizeof (text_release) - 1;
if (accelerator_mods & EGG_VIRTUAL_SHIFT_MASK)
l += sizeof (text_shift) - 1;
if (accelerator_mods & EGG_VIRTUAL_CONTROL_MASK)
l += sizeof (text_control) - 1;
if (accelerator_mods & EGG_VIRTUAL_ALT_MASK)
l += sizeof (text_mod1) - 1;
if (accelerator_mods & EGG_VIRTUAL_MOD2_MASK)
l += sizeof (text_mod2) - 1;
if (accelerator_mods & EGG_VIRTUAL_MOD3_MASK)
l += sizeof (text_mod3) - 1;
if (accelerator_mods & EGG_VIRTUAL_MOD4_MASK)
l += sizeof (text_mod4) - 1;
if (accelerator_mods & EGG_VIRTUAL_MOD5_MASK)
l += sizeof (text_mod5) - 1;
if (accelerator_mods & EGG_VIRTUAL_META_MASK)
l += sizeof (text_meta) - 1;
if (accelerator_mods & EGG_VIRTUAL_HYPER_MASK)
l += sizeof (text_hyper) - 1;
if (accelerator_mods & EGG_VIRTUAL_SUPER_MASK)
l += sizeof (text_super) - 1;
l += strlen (keyval_name);
accelerator = g_new (gchar, l + 1);
l = 0;
accelerator[l] = 0;
if (accelerator_mods & EGG_VIRTUAL_RELEASE_MASK)
{
strcpy (accelerator + l, text_release);
l += sizeof (text_release) - 1;
}
if (accelerator_mods & EGG_VIRTUAL_SHIFT_MASK)
{
strcpy (accelerator + l, text_shift);
l += sizeof (text_shift) - 1;
}
if (accelerator_mods & EGG_VIRTUAL_CONTROL_MASK)
{
strcpy (accelerator + l, text_control);
l += sizeof (text_control) - 1;
}
if (accelerator_mods & EGG_VIRTUAL_ALT_MASK)
{
strcpy (accelerator + l, text_mod1);
l += sizeof (text_mod1) - 1;
}
if (accelerator_mods & EGG_VIRTUAL_MOD2_MASK)
{
strcpy (accelerator + l, text_mod2);
l += sizeof (text_mod2) - 1;
}
if (accelerator_mods & EGG_VIRTUAL_MOD3_MASK)
{
strcpy (accelerator + l, text_mod3);
l += sizeof (text_mod3) - 1;
}
if (accelerator_mods & EGG_VIRTUAL_MOD4_MASK)
{
strcpy (accelerator + l, text_mod4);
l += sizeof (text_mod4) - 1;
}
if (accelerator_mods & EGG_VIRTUAL_MOD5_MASK)
{
strcpy (accelerator + l, text_mod5);
l += sizeof (text_mod5) - 1;
}
if (accelerator_mods & EGG_VIRTUAL_META_MASK)
{
strcpy (accelerator + l, text_meta);
l += sizeof (text_meta) - 1;
}
if (accelerator_mods & EGG_VIRTUAL_HYPER_MASK)
{
strcpy (accelerator + l, text_hyper);
l += sizeof (text_hyper) - 1;
}
if (accelerator_mods & EGG_VIRTUAL_SUPER_MASK)
{
strcpy (accelerator + l, text_super);
l += sizeof (text_super) - 1;
}
strcpy (accelerator + l, keyval_name);
return accelerator;
}
void
egg_keymap_resolve_virtual_modifiers (GdkKeymap *keymap,
EggVirtualModifierType virtual_mods,
GdkModifierType *concrete_mods)
{
GdkModifierType concrete;
int i;
const EggModmap *modmap;
g_return_if_fail (GDK_IS_KEYMAP (keymap));
g_return_if_fail (concrete_mods != NULL);
modmap = egg_keymap_get_modmap (keymap);
/* Not so sure about this algorithm. */
concrete = 0;
i = 0;
while (i < EGG_MODMAP_ENTRY_LAST)
{
if (modmap->mapping[i] & virtual_mods)
concrete |= (1 << i);
++i;
}
*concrete_mods = concrete;
}
void
egg_keymap_virtualize_modifiers (GdkKeymap *keymap,
GdkModifierType concrete_mods,
EggVirtualModifierType *virtual_mods)
{
GdkModifierType virtual;
int i;
const EggModmap *modmap;
g_return_if_fail (GDK_IS_KEYMAP (keymap));
g_return_if_fail (virtual_mods != NULL);
modmap = egg_keymap_get_modmap (keymap);
/* Not so sure about this algorithm. */
virtual = 0;
i = 0;
while (i < EGG_MODMAP_ENTRY_LAST)
{
if ((1 << i) & concrete_mods)
{
EggVirtualModifierType cleaned;
cleaned = modmap->mapping[i] & ~(EGG_VIRTUAL_MOD2_MASK |
EGG_VIRTUAL_MOD3_MASK |
EGG_VIRTUAL_MOD4_MASK |
EGG_VIRTUAL_MOD5_MASK);
if (cleaned != 0)
{
virtual |= cleaned;
}
else
{
/* Rather than dropping mod2->mod5 if not bound,
* go ahead and use the concrete names
*/
virtual |= modmap->mapping[i];
}
}
++i;
}
*virtual_mods = virtual;
}
static void
reload_modmap (GdkKeymap *keymap,
EggModmap *modmap)
{
XModifierKeymap *xmodmap;
int map_size;
int i;
/* FIXME multihead */
xmodmap = XGetModifierMapping (gdk_x11_get_default_xdisplay ());
memset (modmap->mapping, 0, sizeof (modmap->mapping));
/* there are 8 modifiers, and the first 3 are shift, shift lock,
* and control
*/
map_size = 8 * xmodmap->max_keypermod;
i = 3 * xmodmap->max_keypermod;
while (i < map_size)
{
/* get the key code at this point in the map,
* see if its keysym is one we're interested in
*/
int keycode = xmodmap->modifiermap[i];
GdkKeymapKey *keys;
guint *keyvals;
int n_entries;
int j;
EggVirtualModifierType mask;
keys = NULL;
keyvals = NULL;
n_entries = 0;
gdk_keymap_get_entries_for_keycode (keymap,
keycode,
&keys, &keyvals, &n_entries);
mask = 0;
j = 0;
while (j < n_entries)
{
if (keyvals[j] == GDK_Num_Lock)
mask |= EGG_VIRTUAL_NUM_LOCK_MASK;
else if (keyvals[j] == GDK_Scroll_Lock)
mask |= EGG_VIRTUAL_SCROLL_LOCK_MASK;
else if (keyvals[j] == GDK_Meta_L ||
keyvals[j] == GDK_Meta_R)
mask |= EGG_VIRTUAL_META_MASK;
else if (keyvals[j] == GDK_Hyper_L ||
keyvals[j] == GDK_Hyper_R)
mask |= EGG_VIRTUAL_HYPER_MASK;
else if (keyvals[j] == GDK_Super_L ||
keyvals[j] == GDK_Super_R)
mask |= EGG_VIRTUAL_SUPER_MASK;
else if (keyvals[j] == GDK_Mode_switch)
mask |= EGG_VIRTUAL_MODE_SWITCH_MASK;
++j;
}
/* Mod1Mask is 1 << 3 for example, i.e. the
* fourth modifier, i / keyspermod is the modifier
* index
*/
modmap->mapping[i/xmodmap->max_keypermod] |= mask;
g_free (keyvals);
g_free (keys);
++i;
}
/* Add in the not-really-virtual fixed entries */
modmap->mapping[EGG_MODMAP_ENTRY_SHIFT] |= EGG_VIRTUAL_SHIFT_MASK;
modmap->mapping[EGG_MODMAP_ENTRY_CONTROL] |= EGG_VIRTUAL_CONTROL_MASK;
modmap->mapping[EGG_MODMAP_ENTRY_LOCK] |= EGG_VIRTUAL_LOCK_MASK;
modmap->mapping[EGG_MODMAP_ENTRY_MOD1] |= EGG_VIRTUAL_ALT_MASK;
modmap->mapping[EGG_MODMAP_ENTRY_MOD2] |= EGG_VIRTUAL_MOD2_MASK;
modmap->mapping[EGG_MODMAP_ENTRY_MOD3] |= EGG_VIRTUAL_MOD3_MASK;
modmap->mapping[EGG_MODMAP_ENTRY_MOD4] |= EGG_VIRTUAL_MOD4_MASK;
modmap->mapping[EGG_MODMAP_ENTRY_MOD5] |= EGG_VIRTUAL_MOD5_MASK;
XFreeModifiermap (xmodmap);
}
const EggModmap*
egg_keymap_get_modmap (GdkKeymap *keymap)
{
EggModmap *modmap;
/* This is all a hack, much simpler when we can just
* modify GDK directly.
*/
modmap = g_object_get_data (G_OBJECT (keymap),
"egg-modmap");
if (modmap == NULL)
{
modmap = g_new0 (EggModmap, 1);
/* FIXME modify keymap change events with an event filter
* and force a reload if we get one
*/
reload_modmap (keymap, modmap);
g_object_set_data_full (G_OBJECT (keymap),
"egg-modmap",
modmap,
g_free);
}
g_assert (modmap != NULL);
return modmap;
}

Some files were not shown because too many files have changed in this diff Show More