Compare commits

...

52 Commits

Author SHA1 Message Date
Carlos Garnacho
855c402e77 backends: Consider pen/eraser devices when looking for matching WacomDevice
Those device types are still in use through the X11 backend, breaking some
checks around on that backend...

https://gitlab.gnome.org/GNOME/mutter/merge_requests/972
2020-03-20 21:55:26 +01:00
Carlos Garnacho
c131a9b7fa backends/x11: Observe multiple pad mode switch buttons in a group
Some tablets like the Cintiq 24HDT have several mode switch buttons
per group. Those are meant to jump straight to a given mode, however
we just handle cycling across modes (as most other tablets have a
single mode switch button per group).

So spice up the mode switch handling so we handle multiple mode
switch buttons, assigning each of them a mode. If the device only
has one mode switch button, we do the old-fashioned cycling.

https://gitlab.gnome.org/GNOME/mutter/merge_requests/970
2020-03-20 21:30:30 +01:00
Carlos Garnacho
2ecbf6d746 x11: Handle windowing errors while writing selection INCR data
This error was just logged but not raised. Do as the code comment said
and raise a pipe error at that moment, and for subsequent operations
on the output stream (although none besides close() should be expected
after propagating the error properly).

Related: https://gitlab.gnome.org/GNOME/mutter/issues/1065
2020-03-20 16:14:07 +01:00
Daniel Șerbănescu
a13d60aae5 Update Romanian translation 2020-03-19 10:59:57 +00:00
Robert Mader
ed4b80cee5 clutter/stage: Rename parameters to match documentation
To silence warnings during GIR generation.

https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1133
2020-03-18 02:45:43 +01:00
Jonas Ådahl
0a6034ef3a monitor-manager: Remove 'mirror' capability
With per-CRTC views, there is nothing stopping NVIDA EGLStream based
rendering to not support monitor mirroring, so lets remove that
restriction.

https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1098
2020-03-18 00:46:20 +00:00
Jonas Ådahl
c9a5b2b22f kms-impl-simple: Handle lack of cached mode set in flip fallback
When a page flip fails with a certain error code, we've treated this as
a hint that page flipping is broken and we should try to use mode
setting instead.

On some drivers, it seems that this error is also reported when there
was no mode set, which means we'll have no cached mode set to use in the
fallback. The lack of prior mode set tends to happen when we hit a race
when the DRM objects change before we have the time to process a hotplug
event.

Handle the lack a missing mode set in the flip fallback path, with the
assumption that we'll get a hotplug event that'll fix things up for us
eventually.

Closes: https://gitlab.gnome.org/GNOME/mutter/issues/917
2020-03-18 00:33:03 +00:00
Carlos Garnacho
db9b60cc63 wayland: Represent preedit string cursor offset in bytes
Both IBus and ClutterInputFocus work in character offsets for the cursor
position in the preedit string. However the zwp_text_input protocol does
define the preedit string cursor offset to be in bytes.

Fixes client bugs in representing the caret within the preedit string,
as we were clearly giving the wrong offset.

Fixes: https://gitlab.gnome.org/GNOME/gtk/issues/2517

https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1132
2020-03-17 22:15:52 +00:00
Jonas Ådahl
fa74da0039 wayland/window: Ignore state changes for popups
We send configure events for state changes e.g. for `appears-focused`,
etc. What we don't want to do is to do this for popup windows, as in
Wayland don't care about this state.

When the focus mode was configured to "sloppy focus" we'd get
`appears-focused` state changes for the popup window only by moving the
mouse cursor around, and while a popup may care about focus, it does not
care about related appearance, as there is no such state in xdg_popup.

What these state changes instead resulted in was absolute window
configuration events, intended for toplevel (xdg_toplevel) windows. In
the end this caused the popup to be positioned aginst at (0, 0) of the
parent window, as the assumptions when the configuration of the popup
was acknowledged is that it had received a relative position window
configuration.

Fix this by simply ignoring any state changes of the window if it is a
popup, meaning we won't send any configuration events intended for
toplevels for state changes. Currently we don't have any way to know
this other than checking whether it has a placement rule. Cleaning up
MetaWindow creation is left to be dealt with another day.

Fixes: https://gitlab.gnome.org/GNOME/mutter/issues/1103

https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1122
2020-03-17 21:59:02 +00:00
Corentin Noël
b310e1d9d7 clutter-stage: Add annotations to clutter_stage_capture
Especially document that out_captures is an array that is given as output.

https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1131
2020-03-17 15:14:57 +01:00
Corentin Noël
0053ef2e16 cogl-texture: Add some missing array annotations
This allows bindings to correctly understand that it is an array

https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1130
2020-03-17 13:30:31 +01:00
Robert Mader
4133b73632 cursor-renderer/native: Skip hw cursor upload if we can't use it
If the CRTCs the cursor is visible on do not share a common scale
and transform, we can't use the cursor hardware plane as we only have one.
We therefore fall back to software / gl cursor.

The check for that currently happens after we tried to upload the cursor image
to the hardware plane though.
This is made worse by the fact that in the scaling step, where we scale the
cursor image to the desired size, until now we expected a valid common scale -
otherwise scaling the image by an uninitialized float.

Make sure we bail out early during the scale/upload step if we don't have common
scales and transforms - to avoid that bug and save some unnecessary work.

https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1125
2020-03-16 21:51:30 +01:00
Daniel van Vugt
074f4974dd input-settings: Specify middle-click-emulation key
Which exists, unlike `emulate-middle`.

Closes: https://gitlab.gnome.org/GNOME/mutter/issues/1124
2020-03-16 15:09:00 +08:00
Andrew Gaul
0700f3749f input-settings/x11: Fix typo in has_udev_property
https://gitlab.gnome.org/GNOME/mutter/merge_requests/256
2020-03-15 13:04:32 +09:00
Andrew Gaul
0487e6f11f input-settings: Wire up middle-emulation
This allows emulating middle click via simultaneous left and right
click.  Fixes #238.

https://gitlab.gnome.org/GNOME/mutter/merge_requests/256
2020-03-15 13:04:32 +09:00
Carlos Garnacho
23da6c2426 keybindings: Check the special modifiers specifically
Make sure it is only the special modifier (hardcoded to 1 currently)
which is being pressed (not counting locked modifiers) before notifying
that the special modifier is pressed, as we are interested in it being
pressed alone and not in combination with other modifier keys.

This helps in two ways:
- Pressing alt, then ctrl, then releasing both won't trigger the locate
  pointer action.
- Pressing alt, then ctrl, then down/up to switch workspace won't interpret
  the last up/down keypress as an additional key on top of the special ctrl
  modifier, thus won't be forwarded down to the focused client in the last
  second.

Closes: https://gitlab.gnome.org/GNOME/mutter/issues/812

https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1014
2020-03-13 21:37:32 +01:00
Carlos Garnacho
67dd0b4fec keybindings: Avoid double calls to process_event() on the same event
If you first press a key that triggers the "special modifier key" paths
(ctrl, super), and then press another key that doesn't match (yet?) any
keybindings (eg. ctrl+alt, super+x), the second key press goes twice
through process_event(), once in the processing of this so far special
combination and another while we let the event through.

In order to keep things consistent, handle it differently depending on
whether we are a wayland compositor or not. For X11, consider the event
handled after the call to process_event() in process_special_modifier_key().
For Wayland, as XIAllowEvents is not the mechanism that allows clients see
the key event, we can just fall through the regular paths, without this
special handling.

https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1014
2020-03-13 21:22:28 +01:00
Andre Moreira Magalhaes
6989fea767 cogl: Fix build error when GL_ARB_sync is not defined
Commit 41992757e0 introduced a change to use CoglContext.glFenceSync
but this method is only available when GL_ARB_sync is defined (as
defined on gl-prototypes/cogl-all-functions.h).

This change fixes that.

https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1123
2020-03-12 18:05:10 -03:00
Corentin Noël
df33255162 cogl: Add main header for Cogl
This allows bindings linking to the C header to actually have the right one.

https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1101
2020-03-12 13:35:25 +00:00
Jonas Ådahl
5319949a45 kms-impl-device: Clean up state if drm resources disappear
It may happen that drmModeGetResources() starts returning NULL. Handle
this gracefully by removing all connectors, CRTCs and planes making the
device in practice defunct.

https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1121
2020-03-12 13:08:46 +00:00
Alynx Zhou
aba0b9ef64 keybindings: Move common window grab code out of X-only if statement
`3c8d4171` moved some common codes into X11-only code blocks by mistake,
and it prevents keyboard window resize/move mode under Wayland because
those variables are unset. This commit fixed it via moving such common
codes out of X11-only code blocks.

Fixes: https://gitlab.gnome.org/GNOME/mutter/issues/949

https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/997
2020-03-12 08:42:04 +00:00
Jonas Ådahl
512bb7d1cd wayland: Don't crash when trying to fullscreen on inert wl_output
There is a race where an output can be used as a fullscreen target, but
it has already been removed due to a hotplug. Handle this gracefully by
ignoring said output in such situations.

https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1120
2020-03-11 14:37:09 +00:00
Jonas Ådahl
d2a12ee0fa crtc-xrandr: Compare right coordinate when checking assignment
Compare x with x, and y with y, not y with x.

Fixes an issue where only changing the scale doesn't actually apply the
new scale.

https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1119
2020-03-11 13:02:50 +00:00
Jonas Ådahl
531a195cf1 monitor-config-manager: Respect layout mode when calculating CRTC layout
The scale used when calculating the CRTC layout should only come from
the logical monitor scale if the layout mode of the corresponding
configuration is 'logical'.

This fixes an issue where the X11 screen size accidentally got set to a
size scaled down by the configured global UI scale.

Fixes: https://gitlab.gnome.org/GNOME/mutter/issues/1107
Fixes: https://gitlab.gnome.org/GNOME/mutter/issues/1109

https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1118
2020-03-11 12:55:03 +00:00
Sebastian Keller
509e9ca5a0 xwayland: Fix mime type atom list leak on DnD with more than 3 types
Found using the clang static analyzer

https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1117
2020-03-11 03:21:36 +01:00
Olivier Fourdan
0743381573 window/x11: Rename meta_window_x11_buffer_rect_to_frame_rect
To keep consistent and avoid confusion, rename the function:
    `meta_window_x11_buffer_rect_to_frame_rect()`
to:
    `meta_window_x11_surface_rect_to_frame_rect()`

As this function doesn't deal with the `window->buffer_rect` at all.

https://gitlab.gnome.org/GNOME/mutter/merge_requests/1091
2020-03-10 14:52:26 +01:00
Olivier Fourdan
267f712068 window-actor/x11: Use the new MetaShapedTexture API
The code in `build_and_scan_frame_mask` predates the introduction of the
`MetaShapedTexture` API to get the texture width hand height.

Use the new `meta_shaped_texture_get_width/height` API instead of using
the CoGL paint texture.

https://gitlab.gnome.org/GNOME/mutter/merge_requests/1091
2020-03-10 14:52:26 +01:00
Olivier Fourdan
0b102afb53 xwayland: Update regions on texture updates
For X11 clients running on Wayland, the actual texture is set by
Xwayland.

The shape, input and opaque regions, however are driven by X11
properties meaning that those may come at a different time than the
actual update of the content.

This results in black areas being visible at times on resize with
Xwayland clients.

To make sure we update all the regions at the same time the buffer is
updated, update the shape, input and opaque regions when the texture is
committed from when the Xwayland surface state is synchronized.

That fixes the remaining black areas being sometimes visible when
resizing client-side decorations windows on Xwayland.

Closes: https://gitlab.gnome.org/GNOME/mutter/issues/1007
https://gitlab.gnome.org/GNOME/mutter/merge_requests/1091
2020-03-10 14:52:26 +01:00
Olivier Fourdan
304a103659 window-actor: Add API to update regions
For X11 clients running on Xwayland, the opaque, input and shape regions
are processed from different properties and may occur at a different
time, before the actual buffer is eventually committed by Xwayland.

Add a new API `update_regions` to window actor to trigger the update of
those regions when needed.

https://gitlab.gnome.org/GNOME/mutter/merge_requests/1091
2020-03-10 14:52:26 +01:00
Olivier Fourdan
2d09e95934 window-actor/x11: Compute client area from surface size
Commit 7dbb4bc3 cached the client area when the client was frozen.

This is not sufficient though, because the buffer size might still be
lagging waiting for the buffer from Xwayland to be committed.

So instead of caching the client size from the expected size, deduce the
client area rectangle from the surface size, like we did for the frame
bounds in commit 1ce933e2.

This partly reverts commit 7dbb4bc3 - "window-actor/x11: Cache the
client area"

https://gitlab.gnome.org/GNOME/mutter/issues/1007
https://gitlab.gnome.org/GNOME/mutter/merge_requests/1091
2020-03-10 14:52:26 +01:00
Olivier Fourdan
be11525b28 window/x11: Add function to convert the surface to client area
Add a convenient function to get the client area rectangle from a given
surface rectangle.

https://gitlab.gnome.org/GNOME/mutter/merge_requests/1091
2020-03-10 14:52:26 +01:00
Robert Mader
adc38f902a window-actor/X11: Update shape, input and opaque region in order
As they depend on each other to be correct, we should set all of them
in the correct order. As we do already have a function for that, use it.

https://gitlab.gnome.org/GNOME/mutter/merge_requests/1091
2020-03-10 14:52:26 +01:00
Pekka Paalanen
8abdf16a39 cursor-renderer/native: Handle GPU hotplug
Listen for GPU hotplug events to initialize their cursor support.

This fixes one reason for why DisplayLink devices may not be using a hardware
cursor. Particularly, when a DisplayLink device is hotplugged for the first
time such that EVDI creates a new DRM device node after gnome-shell has already
started, we used to forget to initialize the cursor support.

https://gitlab.gnome.org/GNOME/mutter/merge_requests/1097
2020-03-10 08:26:17 +00:00
Pekka Paalanen
4cc29cfb61 cursor-renderer/native: Refactor init to per-gpu
Extract the code to initialize a single GPU cursor support into its own
function. The new function will be used by GPU hotplug in the future.

This is a pure refactoring without any behavioral changes.

https://gitlab.gnome.org/GNOME/mutter/merge_requests/1097
2020-03-10 08:26:17 +00:00
Mart Raudsepp
121c5d2a92 meson: Expand on xwayland_initfd option description
https://gitlab.gnome.org/GNOME/mutter/merge_requests/1104
2020-03-09 17:59:25 +00:00
Olivier Fourdan
50ff30bf2b xwayland: Log actual error message if available
If X11 initialization fails, print the actual error message if the error
is set, to help with debugging.

https://gitlab.gnome.org/GNOME/mutter/merge_requests/1102
2020-03-09 17:49:51 +00:00
Jonas Ådahl
26e1e495a0 screen-cast-stream-src: Don't leak GSource
For every stream src, we created and attached a GSource. Upon stream
src destruction, we g_source_destroy():ed the GSource. What
g_source_destroy() does, hawever, is not really "destroy" it but only
detaches it from the main context removing the reference the context had
added for it via g_source_attach(). This caused the GSource to leak,
although in a detached state, as the reference taken on creation was
still held.

Fix this by also removing our own reference to it when finalizing.

https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1106
2020-03-09 17:31:23 +00:00
Jonas Ådahl
480e7d44be screen-cast-stream-src: Don't complain when we can't dequeue buffer
PipeWire will be unable to dequeue a buffer if all are already busy.
This can happen for valid reasons, e.g. the stream consumer not being
fast enough, so don't complain in the journal if it happens.

https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1115
2020-03-09 17:46:54 +01:00
Марко Костић
1c1adb0036 Update Serbian translation 2020-03-08 20:20:38 +00:00
Florian Müllner
6b852e6cb3 Bump version to 3.36.0
Update NEWS.
2020-03-07 22:51:06 +01:00
Jonas Ådahl
6e966e47f2 cursor-renderer-native: Handle lack of cursor planes gracefully
While we will always have cursor planes, as we'll currently create fake
ones when real ones are missing (See #1058), eventually we will run into
situations where we can't create fake ones, for example for atomic KMS
drivers that don't advertise any cursor planes.

https://gitlab.gnome.org/GNOME/mutter/merge_requests/1079
2020-03-07 21:40:50 +00:00
Jonas Ådahl
227eea1e31 kms-impl-simple: Add fake cursor planes if no real ones
Non-atomic drivers may support drmModeSetCursor() even if no cursor
plane is advertised. To deal with this, add a fake cursor plane for
every CRTC when using MetaKmsImplSimple. This will eventually be
translated to drmModeSetCursor() calls without any explicit cursor plane
usage.

Fixes: https://gitlab.gnome.org/GNOME/mutter/issues/1058

https://gitlab.gnome.org/GNOME/mutter/merge_requests/1079
2020-03-07 21:40:50 +00:00
Nathan Follens
79920d66d4 Update Dutch translation 2020-03-07 21:11:51 +00:00
Jonas Ådahl
6cd0aa429f window: Force placement for first placement rule
If we don't force the placement, we enter the constrain machinery with
the position (0, 0), meaning we always get the "current work area" setup
to correspond to whatever logical monitor was at that position.

Avoid this by doing the same as "meta_window_force_placement()" and set
"window->calc_placement" to TRUE while move-resizing, causing the
move-resize to first calculate the initial position.

Fixes: https://gitlab.gnome.org/GNOME/mutter/issues/1098

https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1110
2020-03-06 17:28:09 +01:00
Aman Alam
15d3de0099 Update Punjabi translation 2020-03-05 03:53:57 +00:00
Andre Klapper
38fb59a6a6 Fix broken markup in Welsh UI translation 2020-03-05 00:43:05 +01:00
Daniel Korostil
748f5bb3e6 Update Ukrainian translation 2020-03-04 16:47:45 +00:00
Milo Casagrande
3c55475391 Update Italian translation 2020-03-03 10:43:50 +00:00
Guillaume Bernard
dd6e371bac Update French translation 2020-03-03 08:31:16 +00:00
Anders Jonsson
00d900e46d Update Swedish translation 2020-03-02 18:50:50 +00:00
Goran Vidović
a4f11bef47 Update Croatian translation 2020-03-01 15:55:04 +00:00
Aurimas Černius
c4f76622a6 Updated Lithuanian translation 2020-03-01 14:48:05 +02:00
64 changed files with 1807 additions and 3682 deletions

13
NEWS
View File

@@ -1,3 +1,16 @@
3.36.0
======
* Fix placement of popup windows in multi-monitor setups [Jonas; !1110]
* Fix invisible mouse cursor on some hardware [Jonas; !1079]
Contributors:
Jonas Ådahl
Translators:
Aurimas Černius [lt], Goran Vidović [hr], Anders Jonsson [sv],
Guillaume Bernard [fr], Milo Casagrande [it], Daniel Korostil [uk],
Andre Klapper [cy], Aman Alam [pa], Nathan Follens [nl]
3.35.92
=======
* Fix visibility of initially hidden windows [Jonas Å.; !1066]

View File

@@ -4349,6 +4349,20 @@ capture_view (ClutterStage *stage,
cairo_surface_mark_dirty (capture->image);
}
/**
* clutter_stage_capture:
* @stage: a #ClutterStage
* @paint: whether to pain the frame
* @rect: a #cairo_rectangle_int_t in stage coordinates
* @out_captures: (out) (array length=out_n_captures): an array of
* #ClutterCapture
* @out_n_captures: (out): the number of captures in @out_captures
*
* Captures the stage pixels of @rect into @captures. @rect is in stage
* coordinates.
*
* Returns: %TRUE if a #ClutterCapture has been created, %FALSE otherwise
*/
gboolean
clutter_stage_capture (ClutterStage *stage,
gboolean paint,

View File

@@ -233,8 +233,8 @@ CLUTTER_EXPORT
gboolean clutter_stage_capture (ClutterStage *stage,
gboolean paint,
cairo_rectangle_int_t *rect,
ClutterCapture **captures,
int *n_captures);
ClutterCapture **out_captures,
int *out_n_captures);
CLUTTER_EXPORT
ClutterStageView * clutter_stage_get_view_at (ClutterStage *stage,
float x,

View File

@@ -320,8 +320,8 @@ cogl_texture_get_gl_texture (CoglTexture *texture,
* @rowstride: the rowstride of @data in bytes or pass 0 to calculate
* from the bytes-per-pixel of @format multiplied by the
* @texture width.
* @data: memory location to write the @texture's contents, or %NULL
* to only query the data size through the return value.
* @data: (array) (nullable): memory location to write the @texture's contents,
* or %NULL to only query the data size through the return value.
*
* Copies the pixel data from a cogl texture to system memory.
*
@@ -354,7 +354,7 @@ cogl_texture_get_data (CoglTexture *texture,
* @format: the #CoglPixelFormat used in the source buffer.
* @rowstride: rowstride of source buffer (computed from width if none
* specified)
* @data: the actual pixel data.
* @data: (array): the actual pixel data.
*
* Sets the pixels in a rectangular subregion of @texture from an in-memory
* buffer containing pixel data.
@@ -384,7 +384,7 @@ cogl_texture_set_region (CoglTexture *texture,
* @format: the #CoglPixelFormat used in the source @data buffer.
* @rowstride: rowstride of the source @data buffer (computed from
* the texture width and @format if it equals 0)
* @data: the source data, pointing to the first top-left pixel to set
* @data: (array): the source data, pointing to the first top-left pixel to set
* @level: The mipmap level to update (Normally 0 for the largest,
* base texture)
* @error: A #GError to return exceptional errors

View File

@@ -104,7 +104,7 @@ cogl_texture_new_from_file (const char *filename,
* something other than straight blending.
* @rowstride: the memory offset in bytes between the starts of
* scanlines in @data
* @data: pointer the memory region where the source buffer resides
* @data: (array): pointer the memory region where the source buffer resides
*
* Creates a new #CoglTexture based on data residing in memory.
*

View File

@@ -366,8 +366,10 @@ _cogl_driver_update_features (CoglContext *context,
_cogl_check_extension ("GL_OES_egl_sync", gl_extensions))
COGL_FLAGS_SET (private_features, COGL_PRIVATE_FEATURE_OES_EGL_SYNC, TRUE);
#ifdef GL_ARB_sync
if (context->glFenceSync)
COGL_FLAGS_SET (context->features, COGL_FEATURE_ID_FENCE, TRUE);
#endif
if (_cogl_check_extension ("GL_EXT_texture_rg", gl_extensions))
COGL_FLAGS_SET (context->features,

View File

@@ -478,6 +478,7 @@ if have_introspection
'-D__COGL_GLX_H_INSIDE__',
'-DCOGL_GIR_SCANNING',
],
header: 'cogl/cogl.h',
install_dir_gir: pkglibdir,
install_dir_typelib: pkglibdir,
install: true

View File

@@ -1,5 +1,5 @@
project('mutter', 'c',
version: '3.35.92',
version: '3.36.0',
meson_version: '>= 0.50.0',
license: 'GPLv2+'
)

View File

@@ -156,5 +156,5 @@ option('xwayland_grab_default_access_rules',
option('xwayland_initfd',
type: 'feature',
value: 'auto',
description: 'Whether Xwayland -initfd argument is used'
description: 'Whether -initfd argument is passed to Xwayland to guarantee services (e.g. gsd-xsettings) startup before applications'
)

View File

@@ -3669,7 +3669,7 @@ msgid ""
"type=\"%s\" style_set=\"whatever\"/> element"
msgstr ""
"Dim arddull ffrâm wedi ei osod ar gyfer y math ffenest \"%s\" yn y thema \"%s"
"\", ychwanegwch elfen <window type=\"%s\" style_set\"beth bynnag\"/>"
"\", ychwanegwch elfen <window type=\"%s\" style_set=\"beth bynnag\"/>"
#: ../src/ui/theme.c:5207 ../src/ui/theme.c:5269 ../src/ui/theme.c:5332
#, c-format

View File

@@ -20,15 +20,16 @@ msgid ""
msgstr ""
"Project-Id-Version: mutter master\n"
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/mutter/issues\n"
"POT-Creation-Date: 2019-09-01 14:53+0000\n"
"PO-Revision-Date: 2019-09-06 08:23+0200\n"
"Last-Translator: Claude Paroz <claude@2xlibre.net>\n"
"POT-Creation-Date: 2020-02-23 17:41+0000\n"
"PO-Revision-Date: 2020-03-01 13:19+0100\n"
"Last-Translator: Guillaume Bernard <associations@guillaume-bernard.fr>\n"
"Language-Team: GNOME French Team <gnomefr@traduc.org>\n"
"Language: fr\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
"X-Generator: Poedit 2.3\n"
#: data/50-mutter-navigation.xml:6
msgid "Navigation"
@@ -437,21 +438,34 @@ msgstr "Touche à utiliser pour situer le pointeur"
msgid "This key will initiate the “locate pointer” action."
msgstr "Cette clé initie laction « situer le pointeur »."
#: data/org.gnome.mutter.gschema.xml.in:155
#: data/org.gnome.mutter.gschema.xml.in:142
msgid "Timeout for check-alive ping"
msgstr "Temps dattente du ping de vérification dactivité"
#: data/org.gnome.mutter.gschema.xml.in:143
msgid ""
"Number of milliseconds a client has to respond to a ping request in order to "
"not be detected as frozen. Using 0 will disable the alive check completely."
msgstr ""
"Nombre de millisecondes dont dispose un client pour répondre à une requête "
"ping et ne pas être considéré comme figé. Utiliser 0 désactivera "
"complètement la vérification dactivité."
#: data/org.gnome.mutter.gschema.xml.in:165
msgid "Select window from tab popup"
msgstr ""
"Sélectionner la fenêtre dans la vue qui apparaît suite à un appui sur la "
"touche tab"
#: data/org.gnome.mutter.gschema.xml.in:160
#: data/org.gnome.mutter.gschema.xml.in:170
msgid "Cancel tab popup"
msgstr "Fermer la vue qui apparaît suite à un appui sur la touche tab"
#: data/org.gnome.mutter.gschema.xml.in:165
#: data/org.gnome.mutter.gschema.xml.in:175
msgid "Switch monitor configurations"
msgstr "Changer de configuration de moniteur"
#: data/org.gnome.mutter.gschema.xml.in:170
#: data/org.gnome.mutter.gschema.xml.in:180
msgid "Rotates the built-in monitor configuration"
msgstr "Passe à la prochaine configuration intégrée de moniteur"
@@ -567,7 +581,7 @@ msgstr ""
#. TRANSLATORS: This string refers to a button that switches between
#. * different modes.
#.
#: src/backends/meta-input-settings.c:2531
#: src/backends/meta-input-settings.c:2567
#, c-format
msgid "Mode Switch (Group %d)"
msgstr "Changement de mode (groupe %d)"
@@ -575,11 +589,11 @@ msgstr "Changement de mode (groupe %d)"
#. TRANSLATORS: This string refers to an action, cycles drawing tablets'
#. * mapping through the available outputs.
#.
#: src/backends/meta-input-settings.c:2554
#: src/backends/meta-input-settings.c:2590
msgid "Switch monitor"
msgstr "Changer de moniteur"
#: src/backends/meta-input-settings.c:2556
#: src/backends/meta-input-settings.c:2592
msgid "Show on-screen help"
msgstr "Afficher laide à lécran"
@@ -611,13 +625,13 @@ msgid "%s %s"
msgstr "%s %s"
#. Translators: this string will appear in Sysprof
#: src/backends/meta-profiler.c:82
#: src/backends/meta-profiler.c:79
msgid "Compositor"
msgstr "Compositeur"
#. This probably means that a non-WM compositor like xcompmgr is running;
#. * we have no way to get it to exit
#: src/compositor/compositor.c:509
#: src/compositor/compositor.c:533
#, c-format
msgid ""
"Another compositing manager is already running on screen %i on display “%s”."
@@ -629,47 +643,47 @@ msgstr ""
msgid "Bell event"
msgstr "Évènement sonore"
#: src/core/main.c:186
#: src/core/main.c:190
msgid "Disable connection to session manager"
msgstr "Désactiver la connexion au gestionnaire de sessions"
#: src/core/main.c:192
#: src/core/main.c:196
msgid "Replace the running window manager"
msgstr "Remplacer le gestionnaire de fenêtres en cours de fonctionnement"
#: src/core/main.c:198
#: src/core/main.c:202
msgid "Specify session management ID"
msgstr "Indiquer lID de gestion de sessions"
#: src/core/main.c:203
#: src/core/main.c:207
msgid "X Display to use"
msgstr "Affichage X à utiliser"
#: src/core/main.c:209
#: src/core/main.c:213
msgid "Initialize session from savefile"
msgstr "Initialiser la session depuis le fichier de sauvegarde"
#: src/core/main.c:215
#: src/core/main.c:219
msgid "Make X calls synchronous"
msgstr "Rendre synchrones les appels à X"
#: src/core/main.c:222
#: src/core/main.c:226
msgid "Run as a wayland compositor"
msgstr "Lancer comme un compositeur wayland"
#: src/core/main.c:228
#: src/core/main.c:232
msgid "Run as a nested compositor"
msgstr "Lancer comme un compositeur imbriqué"
#: src/core/main.c:234
#: src/core/main.c:238
msgid "Run wayland compositor without starting Xwayland"
msgstr "Lancer le compositeur wayland sans démarrer Xwayland"
#: src/core/main.c:242
#: src/core/main.c:246
msgid "Run as a full display server, rather than nested"
msgstr "Lancer comme un serveur daffichage complet, plutôt quimbriqué"
#: src/core/main.c:248
#: src/core/main.c:252
msgid "Run with X11 backend"
msgstr "Lancer avec le moteur X11"
@@ -723,7 +737,7 @@ msgstr "Afficher la version"
msgid "Mutter plugin to use"
msgstr "Greffon de Mutter à utiliser"
#: src/core/prefs.c:1849
#: src/core/prefs.c:1911
#, c-format
msgid "Workspace %d"
msgstr "Espace de travail %d"
@@ -737,7 +751,7 @@ msgstr "Mutter a été compilé sans la prise en charge du mode bavard\n"
msgid "Mode Switch: Mode %d"
msgstr "Changement de mode : mode %d"
#: src/x11/meta-x11-display.c:679
#: src/x11/meta-x11-display.c:676
#, c-format
msgid ""
"Display “%s” already has a window manager; try using the --replace option to "
@@ -746,21 +760,21 @@ msgstr ""
"Laffichage « %s » a déjà un gestionnaire de fenêtres ; essayez dutiliser "
"loption --replace pour remplacer le gestionnaire de fenêtres actuel."
#: src/x11/meta-x11-display.c:1040
#: src/x11/meta-x11-display.c:1089
msgid "Failed to initialize GDK\n"
msgstr "Linitialisation de GDK a échoué\n"
#: src/x11/meta-x11-display.c:1064
#: src/x11/meta-x11-display.c:1113
#, c-format
msgid "Failed to open X Window System display “%s”\n"
msgstr "Impossible douvrir laffichage « %s » du système X Window\n"
#: src/x11/meta-x11-display.c:1147
#: src/x11/meta-x11-display.c:1196
#, c-format
msgid "Screen %d on display “%s” is invalid\n"
msgstr "Lécran %d sur laffichage « %s » nest pas valide\n"
#: src/x11/meta-x11-selection-input-stream.c:445
#: src/x11/meta-x11-selection-input-stream.c:460
#, c-format
msgid "Format %s not supported"
msgstr "Le format %s nest pas pris en charge"

View File

@@ -5,8 +5,8 @@ msgid ""
msgstr ""
"Project-Id-Version: metacity 0\n"
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/mutter/issues\n"
"POT-Creation-Date: 2019-08-06 00:49+0000\n"
"PO-Revision-Date: 2019-09-03 18:00+0200\n"
"POT-Creation-Date: 2020-02-23 17:41+0000\n"
"PO-Revision-Date: 2020-03-01 16:54+0100\n"
"Last-Translator: gogo <linux.hr@protonmail.com>\n"
"Language-Team: Croatian <lokalizacija@linux.hr>\n"
"Language: hr\n"
@@ -16,7 +16,7 @@ msgstr ""
"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
"X-Launchpad-Export-Date: 2008-05-28 13:28+0000\n"
"X-Generator: Poedit 2.2.1\n"
"X-Generator: Poedit 2.0.6\n"
#: data/50-mutter-navigation.xml:6
msgid "Navigation"
@@ -417,19 +417,32 @@ msgstr "Izmjenjivač za korištenje lociranja pokazivača"
msgid "This key will initiate the “locate pointer” action."
msgstr "Ova tipka će pokrenuti “lociraj pokazivač” radnju."
#: data/org.gnome.mutter.gschema.xml.in:155
#: data/org.gnome.mutter.gschema.xml.in:142
msgid "Timeout for check-alive ping"
msgstr "Vrijeme isteka provjere odgovora pinga"
#: data/org.gnome.mutter.gschema.xml.in:143
msgid ""
"Number of milliseconds a client has to respond to a ping request in order to "
"not be detected as frozen. Using 0 will disable the alive check completely."
msgstr ""
"Broj milisekundi za koje klijent treba odgovoriti na zahtjev pinga kako ne "
"bi bio otkriven kao smrznut. Korištenje 0 će u potpunosti onemogućiti "
"provjeru odgovora pinga."
#: data/org.gnome.mutter.gschema.xml.in:165
msgid "Select window from tab popup"
msgstr "Odaberi prozor iz skočnog prozora"
#: data/org.gnome.mutter.gschema.xml.in:160
#: data/org.gnome.mutter.gschema.xml.in:170
msgid "Cancel tab popup"
msgstr "Prekini skočni prozor"
#: data/org.gnome.mutter.gschema.xml.in:165
#: data/org.gnome.mutter.gschema.xml.in:175
msgid "Switch monitor configurations"
msgstr "Prebacivanje podešavanja zaslona"
#: data/org.gnome.mutter.gschema.xml.in:170
#: data/org.gnome.mutter.gschema.xml.in:180
msgid "Rotates the built-in monitor configuration"
msgstr "Rotiraj ugrađeno podešavanje zaslona"
@@ -542,7 +555,7 @@ msgstr ""
#. TRANSLATORS: This string refers to a button that switches between
#. * different modes.
#.
#: src/backends/meta-input-settings.c:2531
#: src/backends/meta-input-settings.c:2567
#, c-format
msgid "Mode Switch (Group %d)"
msgstr "Način prebacivanja (Grupa %d)"
@@ -550,11 +563,11 @@ msgstr "Način prebacivanja (Grupa %d)"
#. TRANSLATORS: This string refers to an action, cycles drawing tablets'
#. * mapping through the available outputs.
#.
#: src/backends/meta-input-settings.c:2554
#: src/backends/meta-input-settings.c:2590
msgid "Switch monitor"
msgstr "Prebaci zaslon"
#: src/backends/meta-input-settings.c:2556
#: src/backends/meta-input-settings.c:2592
msgid "Show on-screen help"
msgstr "Prikaži zaslonsku pomoć"
@@ -586,13 +599,13 @@ msgid "%s %s"
msgstr "%s %s"
#. Translators: this string will appear in Sysprof
#: src/backends/meta-profiler.c:82
#: src/backends/meta-profiler.c:79
msgid "Compositor"
msgstr "Kompozitor"
#. This probably means that a non-WM compositor like xcompmgr is running;
#. * we have no way to get it to exit
#: src/compositor/compositor.c:510
#: src/compositor/compositor.c:533
#, c-format
msgid ""
"Another compositing manager is already running on screen %i on display “%s”."
@@ -603,47 +616,47 @@ msgstr ""
msgid "Bell event"
msgstr "Događaj zvona"
#: src/core/main.c:185
#: src/core/main.c:190
msgid "Disable connection to session manager"
msgstr "Onemogući povezivanje sa upraviteljem sesija"
#: src/core/main.c:191
#: src/core/main.c:196
msgid "Replace the running window manager"
msgstr "Zamijeni pokrenutoga upravitelja porozora"
#: src/core/main.c:197
#: src/core/main.c:202
msgid "Specify session management ID"
msgstr "Odredite ID upravljanja sesijama"
#: src/core/main.c:202
#: src/core/main.c:207
msgid "X Display to use"
msgstr "X Prikaz za korištenje"
#: src/core/main.c:208
#: src/core/main.c:213
msgid "Initialize session from savefile"
msgstr "Pokreni sesiju iz spremljene datoteke"
#: src/core/main.c:214
#: src/core/main.c:219
msgid "Make X calls synchronous"
msgstr "Napravi X pozive usklađenim"
#: src/core/main.c:221
#: src/core/main.c:226
msgid "Run as a wayland compositor"
msgstr "Pokreni wayland kompozitor"
#: src/core/main.c:227
#: src/core/main.c:232
msgid "Run as a nested compositor"
msgstr "Pokreni kao ugrađeni kompozitor"
#: src/core/main.c:233
#: src/core/main.c:238
msgid "Run wayland compositor without starting Xwayland"
msgstr "Pokreni wayland kompozitor bez pokretanja Xwaylanda"
#: src/core/main.c:241
#: src/core/main.c:246
msgid "Run as a full display server, rather than nested"
msgstr "Pokreni kao potpuni poslužitelj zaslona, radije nego ugrađeni"
#: src/core/main.c:247
#: src/core/main.c:252
msgid "Run with X11 backend"
msgstr "Pokreni s X11 pozadinskim programom"
@@ -696,21 +709,21 @@ msgstr "Inačica za ispis"
msgid "Mutter plugin to use"
msgstr "Mutter priključak koji se koristi"
#: src/core/prefs.c:1849
#: src/core/prefs.c:1911
#, c-format
msgid "Workspace %d"
msgstr "Radni prostor %d"
#: src/core/util.c:121
#: src/core/util.c:122
msgid "Mutter was compiled without support for verbose mode\n"
msgstr "Mutter je kompiliran bez podrške za opširan način rada\n"
#: src/wayland/meta-wayland-tablet-pad.c:567
#: src/wayland/meta-wayland-tablet-pad.c:568
#, c-format
msgid "Mode Switch: Mode %d"
msgstr "Način prebacivanja: Način %d"
#: src/x11/meta-x11-display.c:671
#: src/x11/meta-x11-display.c:676
#, c-format
msgid ""
"Display “%s” already has a window manager; try using the --replace option to "
@@ -719,21 +732,21 @@ msgstr ""
"Prikaz \"%s\" već ima upravitelja prozora; pokušajte koristiti --replace "
"mogućnost za zamjenu trenutnog upravitelja prozora."
#: src/x11/meta-x11-display.c:1032
#: src/x11/meta-x11-display.c:1089
msgid "Failed to initialize GDK\n"
msgstr "Neuspjelo GDK pokretanje\n"
#: src/x11/meta-x11-display.c:1056
#: src/x11/meta-x11-display.c:1113
#, c-format
msgid "Failed to open X Window System display “%s”\n"
msgstr "Neuspjelo otvaranje sustava prikaza X prozora \"%s\"\n"
#: src/x11/meta-x11-display.c:1140
#: src/x11/meta-x11-display.c:1196
#, c-format
msgid "Screen %d on display “%s” is invalid\n"
msgstr "Zaslon %d na prikazu '%s' je neispravan\n"
#: src/x11/meta-x11-selection-input-stream.c:445
#: src/x11/meta-x11-selection-input-stream.c:460
#, c-format
msgid "Format %s not supported"
msgstr "Format %s nije podržan"

View File

@@ -2,18 +2,18 @@
# Based on Italian translation for Metacity
# This file is distributed under the same license as metacity package
# Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 Free Software Foundation, Inc.
# Copyright (C) 2018, 2019 Free Software Foundation, Inc.
# Copyright (C) 2018, 2019, 2020 Free Software Foundation, Inc.
# Pier Luigi Fiorini <plfiorini@libero.it>, 2002.
# Lapo Calamandrei <lapo.calamandrei@virgilio.it>, 2003.
# Luca Ferretti <lferrett@gnome.org>, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012.
# Milo Casagrande <milo@milo.name>, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019.
# Milo Casagrande <milo@milo.name>, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020.
#
msgid ""
msgstr ""
"Project-Id-Version: mutter\n"
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/mutter/issues\n"
"POT-Creation-Date: 2019-09-06 08:46+0000\n"
"PO-Revision-Date: 2019-09-10 10:56+0200\n"
"POT-Creation-Date: 2020-02-23 17:41+0000\n"
"PO-Revision-Date: 2020-03-03 11:42+0100\n"
"Last-Translator: Milo Casagrande <milo@milo.name>\n"
"Language-Team: Italian <tp@lists.linux.it>\n"
"Language: it\n"
@@ -21,7 +21,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n!=1);\n"
"X-Generator: Poedit 2.2.3\n"
"X-Generator: Poedit 2.2.4\n"
#: data/50-mutter-navigation.xml:6
msgid "Navigation"
@@ -433,19 +433,32 @@ msgstr "Modificatore da usare per trovare il puntatore"
msgid "This key will initiate the “locate pointer” action."
msgstr "Questa chiave avvia l'azione di localizzazione del puntatore."
#: data/org.gnome.mutter.gschema.xml.in:155
#: data/org.gnome.mutter.gschema.xml.in:142
msgid "Timeout for check-alive ping"
msgstr "Timeout per il ping di controllo"
#: data/org.gnome.mutter.gschema.xml.in:143
msgid ""
"Number of milliseconds a client has to respond to a ping request in order to "
"not be detected as frozen. Using 0 will disable the alive check completely."
msgstr ""
"Numero di millisecondi entro cui un client deve rispondere a una richiesta "
"di ping per non essere rilevato come bloccato. Utilizzando 0 si disattiva "
"completamente il controllo."
#: data/org.gnome.mutter.gschema.xml.in:165
msgid "Select window from tab popup"
msgstr "Seleziona finestra dal tab popup"
#: data/org.gnome.mutter.gschema.xml.in:160
#: data/org.gnome.mutter.gschema.xml.in:170
msgid "Cancel tab popup"
msgstr "Annulla tab popup"
#: data/org.gnome.mutter.gschema.xml.in:165
#: data/org.gnome.mutter.gschema.xml.in:175
msgid "Switch monitor configurations"
msgstr "Cambia le configurazioni del monitor"
#: data/org.gnome.mutter.gschema.xml.in:170
#: data/org.gnome.mutter.gschema.xml.in:180
msgid "Rotates the built-in monitor configuration"
msgstr "Passa da una configurazione integrata all'altra del monitor"
@@ -562,7 +575,7 @@ msgstr ""
#. TRANSLATORS: This string refers to a button that switches between
#. * different modes.
#.
#: src/backends/meta-input-settings.c:2531
#: src/backends/meta-input-settings.c:2567
#, c-format
msgid "Mode Switch (Group %d)"
msgstr "Cambio modalità (gruppo %d)"
@@ -570,11 +583,11 @@ msgstr "Cambio modalità (gruppo %d)"
#. TRANSLATORS: This string refers to an action, cycles drawing tablets'
#. * mapping through the available outputs.
#.
#: src/backends/meta-input-settings.c:2554
#: src/backends/meta-input-settings.c:2590
msgid "Switch monitor"
msgstr "Cambia monitor"
#: src/backends/meta-input-settings.c:2556
#: src/backends/meta-input-settings.c:2592
msgid "Show on-screen help"
msgstr "Mostra aiuto sullo schermo"
@@ -606,13 +619,13 @@ msgid "%s %s"
msgstr "%s %s"
#. Translators: this string will appear in Sysprof
#: src/backends/meta-profiler.c:82
#: src/backends/meta-profiler.c:79
msgid "Compositor"
msgstr "Compositor"
#. This probably means that a non-WM compositor like xcompmgr is running;
#. * we have no way to get it to exit
#: src/compositor/compositor.c:509
#: src/compositor/compositor.c:533
#, c-format
msgid ""
"Another compositing manager is already running on screen %i on display “%s”."
@@ -624,47 +637,47 @@ msgstr ""
msgid "Bell event"
msgstr "Evento campanella"
#: src/core/main.c:186
#: src/core/main.c:190
msgid "Disable connection to session manager"
msgstr "Disabilita la connessione al gestore di sessione"
#: src/core/main.c:192
#: src/core/main.c:196
msgid "Replace the running window manager"
msgstr "Sostituisce il window manager in esecuzione"
#: src/core/main.c:198
#: src/core/main.c:202
msgid "Specify session management ID"
msgstr "Specifica l'ID di gestione sessione"
#: src/core/main.c:203
#: src/core/main.c:207
msgid "X Display to use"
msgstr "Display X da usare"
#: src/core/main.c:209
#: src/core/main.c:213
msgid "Initialize session from savefile"
msgstr "Inizializza la sessione da file salvato"
#: src/core/main.c:215
#: src/core/main.c:219
msgid "Make X calls synchronous"
msgstr "Rende le chiamate X sincrone"
#: src/core/main.c:222
#: src/core/main.c:226
msgid "Run as a wayland compositor"
msgstr "Esegui come compositor Wayland"
#: src/core/main.c:228
#: src/core/main.c:232
msgid "Run as a nested compositor"
msgstr "Esegui come compositor annidato"
#: src/core/main.c:234
#: src/core/main.c:238
msgid "Run wayland compositor without starting Xwayland"
msgstr "Esegui il compositor Wayland senza avviare Xwayland"
#: src/core/main.c:242
#: src/core/main.c:246
msgid "Run as a full display server, rather than nested"
msgstr "Esegui come display server invece che annidato"
#: src/core/main.c:248
#: src/core/main.c:252
msgid "Run with X11 backend"
msgstr "Esegui con sistema X11"
@@ -717,7 +730,7 @@ msgstr "Stampa la versione"
msgid "Mutter plugin to use"
msgstr "Plugin Mutter da usare"
#: src/core/prefs.c:1849
#: src/core/prefs.c:1911
#, c-format
msgid "Workspace %d"
msgstr "Spazio di lavoro %d"
@@ -732,7 +745,7 @@ msgstr ""
msgid "Mode Switch: Mode %d"
msgstr "Cambio modalità: modalità %d"
#: src/x11/meta-x11-display.c:679
#: src/x11/meta-x11-display.c:676
#, c-format
msgid ""
"Display “%s” already has a window manager; try using the --replace option to "
@@ -741,21 +754,21 @@ msgstr ""
"Il display «%s» ha già un window manager; provare a utilizzare l'opzione --"
"replace per sostituirlo."
#: src/x11/meta-x11-display.c:1040
#: src/x11/meta-x11-display.c:1089
msgid "Failed to initialize GDK\n"
msgstr "Inizializzazione GDK non riuscita\n"
#: src/x11/meta-x11-display.c:1064
#: src/x11/meta-x11-display.c:1113
#, c-format
msgid "Failed to open X Window System display “%s”\n"
msgstr "Apertura del display «%s» di X Window System non riuscita\n"
#: src/x11/meta-x11-display.c:1147
#: src/x11/meta-x11-display.c:1196
#, c-format
msgid "Screen %d on display “%s” is invalid\n"
msgstr "Lo schermo %d sul display «%s» non è valido\n"
#: src/x11/meta-x11-selection-input-stream.c:445
#: src/x11/meta-x11-selection-input-stream.c:460
#, c-format
msgid "Format %s not supported"
msgstr "Formato %s non supportato"

View File

@@ -6,14 +6,14 @@
# Tomas Kuliavas <tokul@users.sourceforge.net>, 2003.
# Žygimantas Beručka <zygis@gnome.org>, 2004-2007.
# Gintautas Miliauskas <gintautas@miliauskas.lt>, 2007-2009, 2010.
# Aurimas Černius <aurisc4@gmail.com>, 2013-2019.
# Aurimas Černius <aurisc4@gmail.com>, 2013-2020.
#
msgid ""
msgstr ""
"Project-Id-Version: lt\n"
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/mutter/issues\n"
"POT-Creation-Date: 2019-08-06 00:49+0000\n"
"PO-Revision-Date: 2019-08-18 22:29+0300\n"
"POT-Creation-Date: 2020-02-23 17:41+0000\n"
"PO-Revision-Date: 2020-03-01 14:47+0200\n"
"Last-Translator: Aurimas Černius <aurisc4@gmail.com>\n"
"Language-Team: Lietuvių <gnome-lt@lists.akl.lt>\n"
"Language: lt\n"
@@ -22,7 +22,7 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n"
"%100<10 || n%100>=20) ? 1 : 2)\n"
"X-Generator: Gtranslator 3.32.1\n"
"X-Generator: Gtranslator 3.34.0\n"
#: data/50-mutter-navigation.xml:6
msgid "Navigation"
@@ -389,16 +389,6 @@ msgid "Enable experimental features"
msgstr "Įjungti eksperimentines savybes"
#: data/org.gnome.mutter.gschema.xml.in:108
#| msgid ""
#| "To enable experimental features, add the feature keyword to the list. "
#| "Whether the feature requires restarting the compositor depends on the "
#| "given feature. Any experimental feature is not required to still be "
#| "available, or configurable. Dont expect adding anything in this setting "
#| "to be future proof. Currently possible keywords: • “scale-monitor-"
#| "framebuffer” — makes mutter default to layout logical monitors in a "
#| "logical pixel coordinate space, while scaling monitor framebuffers "
#| "instead of window content, to manage HiDPI monitors. Does not require a "
#| "restart."
msgid ""
"To enable experimental features, add the feature keyword to the list. "
"Whether the feature requires restarting the compositor depends on the given "
@@ -434,19 +424,31 @@ msgstr "Pakaitos klavišas, naudojamas žymękliui surasti"
msgid "This key will initiate the “locate pointer” action."
msgstr "Šis klavišas paleisti veiksmą „surasti žymeklį“."
#: data/org.gnome.mutter.gschema.xml.in:155
#: data/org.gnome.mutter.gschema.xml.in:142
msgid "Timeout for check-alive ping"
msgstr "check-alive ping laiko limitas"
#: data/org.gnome.mutter.gschema.xml.in:143
msgid ""
"Number of milliseconds a client has to respond to a ping request in order to "
"not be detected as frozen. Using 0 will disable the alive check completely."
msgstr ""
"Per kiek milisekundžių klientas turi atsakyti į ping užklausą, kad nebūtų "
"aptiktas kaip pakibęs. 0 išjungtas šį tikrinimą."
#: data/org.gnome.mutter.gschema.xml.in:165
msgid "Select window from tab popup"
msgstr "Pasirinkti langą iš tab iššokimo"
#: data/org.gnome.mutter.gschema.xml.in:160
#: data/org.gnome.mutter.gschema.xml.in:170
msgid "Cancel tab popup"
msgstr "Atšaukti tab iššokimą"
#: data/org.gnome.mutter.gschema.xml.in:165
#: data/org.gnome.mutter.gschema.xml.in:175
msgid "Switch monitor configurations"
msgstr "Perjungti monitorių konfigūracijas"
#: data/org.gnome.mutter.gschema.xml.in:170
#: data/org.gnome.mutter.gschema.xml.in:180
msgid "Rotates the built-in monitor configuration"
msgstr "Suka integruotas monitorių konfigūracijas"
@@ -503,17 +505,10 @@ msgid "Re-enable shortcuts"
msgstr "Iš naujo įjungti trumpinius"
#: data/org.gnome.mutter.wayland.gschema.xml.in:64
#| msgid "Allow grabs with Xwayland"
msgid "Allow X11 grabs to lock keyboard focus with Xwayland"
msgstr "Leisti X11 pagriebimams užrakinti klaviatūros fokusą su XWayland"
#: data/org.gnome.mutter.wayland.gschema.xml.in:65
#| msgid ""
#| "Allow keyboard grabs issued by X11 applications running in Xwayland to be "
#| "taken into account. For a X11 grab to be taken into account under "
#| "Wayland, the client must also either send a specific X11 ClientMessage to "
#| "the root window or be among the applications white-listed in key "
#| "“xwayland-grab-access-rules”."
msgid ""
"Allow all keyboard events to be routed to X11 “override redirect” windows "
"with a grab when running in Xwayland. This option is to support X11 clients "
@@ -566,7 +561,7 @@ msgstr ""
#. TRANSLATORS: This string refers to a button that switches between
#. * different modes.
#.
#: src/backends/meta-input-settings.c:2531
#: src/backends/meta-input-settings.c:2567
#, c-format
msgid "Mode Switch (Group %d)"
msgstr "Veiksenos perjungimas (Grupė %d)"
@@ -574,11 +569,11 @@ msgstr "Veiksenos perjungimas (Grupė %d)"
#. TRANSLATORS: This string refers to an action, cycles drawing tablets'
#. * mapping through the available outputs.
#.
#: src/backends/meta-input-settings.c:2554
#: src/backends/meta-input-settings.c:2590
msgid "Switch monitor"
msgstr "Perjungti monitorių"
#: src/backends/meta-input-settings.c:2556
#: src/backends/meta-input-settings.c:2592
msgid "Show on-screen help"
msgstr "Rodyti pagalbą ekrane"
@@ -610,13 +605,13 @@ msgid "%s %s"
msgstr "%s %s"
#. Translators: this string will appear in Sysprof
#: src/backends/meta-profiler.c:82
#: src/backends/meta-profiler.c:79
msgid "Compositor"
msgstr "Komponuotojas"
#. This probably means that a non-WM compositor like xcompmgr is running;
#. * we have no way to get it to exit
#: src/compositor/compositor.c:510
#: src/compositor/compositor.c:533
#, c-format
msgid ""
"Another compositing manager is already running on screen %i on display “%s”."
@@ -626,47 +621,47 @@ msgstr "Kita kompozicijos tvarkytuvė jau veikia ekrane %i vaizduoklyje „%s“
msgid "Bell event"
msgstr "Skambučio įvykis"
#: src/core/main.c:185
#: src/core/main.c:190
msgid "Disable connection to session manager"
msgstr "Išjungti susijungimą su sesijos tvarkytuve"
#: src/core/main.c:191
#: src/core/main.c:196
msgid "Replace the running window manager"
msgstr "Pakeisti veikiančią langų tvarkytuvę"
#: src/core/main.c:197
#: src/core/main.c:202
msgid "Specify session management ID"
msgstr "Nurodyti sesijos tvarkymo ID"
#: src/core/main.c:202
#: src/core/main.c:207
msgid "X Display to use"
msgstr "Naudotinas X ekranas"
#: src/core/main.c:208
#: src/core/main.c:213
msgid "Initialize session from savefile"
msgstr "Inicializuoti sesiją iš išsaugojimo failo"
#: src/core/main.c:214
#: src/core/main.c:219
msgid "Make X calls synchronous"
msgstr "Sinchronizuoti X iškvietimus"
#: src/core/main.c:221
#: src/core/main.c:226
msgid "Run as a wayland compositor"
msgstr "Vykdyti kaip wayland kompozitorių"
#: src/core/main.c:227
#: src/core/main.c:232
msgid "Run as a nested compositor"
msgstr "Vykdyti kaip įdėtinį kompozitorių"
#: src/core/main.c:233
#: src/core/main.c:238
msgid "Run wayland compositor without starting Xwayland"
msgstr "Paleisti wayland kompozitorių nepaleidžiant Xwayland"
#: src/core/main.c:241
#: src/core/main.c:246
msgid "Run as a full display server, rather than nested"
msgstr "Vykdyti kaip visą vaizduoklio serverį, o ne įdėtinį"
#: src/core/main.c:247
#: src/core/main.c:252
msgid "Run with X11 backend"
msgstr "Paleisti su X11 realizacija"
@@ -718,21 +713,21 @@ msgstr "Parodyti versiją"
msgid "Mutter plugin to use"
msgstr "Naudojamas Mutter įskiepis"
#: src/core/prefs.c:1849
#: src/core/prefs.c:1911
#, c-format
msgid "Workspace %d"
msgstr "Darbo sritis %d"
#: src/core/util.c:121
#: src/core/util.c:122
msgid "Mutter was compiled without support for verbose mode\n"
msgstr "Mutter buvo sukompiliuota be išsamaus veikimo veiksenos\n"
#: src/wayland/meta-wayland-tablet-pad.c:567
#: src/wayland/meta-wayland-tablet-pad.c:568
#, c-format
msgid "Mode Switch: Mode %d"
msgstr "Veiksenos perjungimas: veiksena %d"
#: src/x11/meta-x11-display.c:671
#: src/x11/meta-x11-display.c:676
#, c-format
msgid ""
"Display “%s” already has a window manager; try using the --replace option to "
@@ -741,21 +736,21 @@ msgstr ""
"Vaizduoklis „%s“ jau turi langų tvarkytuvę; pabandykite pakeisti esamą langų "
"tvarkytuvę, naudodami parametrą --replace."
#: src/x11/meta-x11-display.c:1032
#: src/x11/meta-x11-display.c:1089
msgid "Failed to initialize GDK\n"
msgstr "Nepavyko inicializuoti GDK\n"
#: src/x11/meta-x11-display.c:1056
#: src/x11/meta-x11-display.c:1113
#, c-format
msgid "Failed to open X Window System display “%s”\n"
msgstr "Nepavyko atverti X Window sistemos vaizduoklio „%s“\n"
#: src/x11/meta-x11-display.c:1140
#: src/x11/meta-x11-display.c:1196
#, c-format
msgid "Screen %d on display “%s” is invalid\n"
msgstr "Ekranas %d vaizduoklyje „%s“ yra netinkamas\n"
#: src/x11/meta-x11-selection-input-stream.c:445
#: src/x11/meta-x11-selection-input-stream.c:460
#, c-format
msgid "Format %s not supported"
msgstr "Formatas %s nepalaikomas"

View File

@@ -5,13 +5,13 @@
# Michiel Sikkes <michiels@gnome.org>, 2005.
# Wouter Bolsterlee <wbolster@gnome.org>, 20062012.
# Hannie Dumoleyn <hannie@ubuntu-nl.org>, 2016.
# Nathan Follens <nthn@unseen.is>, 2017, 2019.
# Nathan Follens <nthn@unseen.is>, 2017, 2019-2020.
msgid ""
msgstr ""
"Project-Id-Version: mutter\n"
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/mutter/issues\n"
"POT-Creation-Date: 2019-09-20 12:33+0000\n"
"PO-Revision-Date: 2019-09-25 12:47+0200\n"
"POT-Creation-Date: 2020-02-23 17:41+0000\n"
"PO-Revision-Date: 2020-02-24 19:06+0100\n"
"Last-Translator: Nathan Follens <nthn@unseen.is>\n"
"Language-Team: Dutch <vertaling@vrijschrift.org>\n"
"Language: nl\n"
@@ -20,7 +20,7 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Project-Style: gnome\n"
"X-Generator: Poedit 2.2.3\n"
"X-Generator: Poedit 2.3\n"
#: data/50-mutter-navigation.xml:6
msgid "Navigation"
@@ -425,19 +425,32 @@ msgstr "Controletoets om de muispijl te lokaliseren"
msgid "This key will initiate the “locate pointer” action."
msgstr "Deze sleutel activeert de actie muispijl lokaliseren."
#: data/org.gnome.mutter.gschema.xml.in:155
#: data/org.gnome.mutter.gschema.xml.in:142
msgid "Timeout for check-alive ping"
msgstr "Time-out voor levenscontroleping"
#: data/org.gnome.mutter.gschema.xml.in:143
msgid ""
"Number of milliseconds a client has to respond to a ping request in order to "
"not be detected as frozen. Using 0 will disable the alive check completely."
msgstr ""
"Aantal milliseconden dat een cliënt heeft om te antwoorden om een ping-"
"verzoek om niet als bevroren beschouwd te worden. Stel dit in op 0 om de "
"levenscontrole volledig uit te schakelen."
#: data/org.gnome.mutter.gschema.xml.in:165
msgid "Select window from tab popup"
msgstr "Venster selecteren uit tab-pop-up"
#: data/org.gnome.mutter.gschema.xml.in:160
#: data/org.gnome.mutter.gschema.xml.in:170
msgid "Cancel tab popup"
msgstr "Tab-pop-up annuleren"
#: data/org.gnome.mutter.gschema.xml.in:165
#: data/org.gnome.mutter.gschema.xml.in:175
msgid "Switch monitor configurations"
msgstr "Tussen beeldschermconfiguraties schakelen"
#: data/org.gnome.mutter.gschema.xml.in:170
#: data/org.gnome.mutter.gschema.xml.in:180
msgid "Rotates the built-in monitor configuration"
msgstr "Roteert de ingebouwde beeldschermconfiguratie"
@@ -552,7 +565,7 @@ msgstr ""
#. TRANSLATORS: This string refers to a button that switches between
#. * different modes.
#.
#: src/backends/meta-input-settings.c:2532
#: src/backends/meta-input-settings.c:2567
#, c-format
msgid "Mode Switch (Group %d)"
msgstr "Moduswisselaar (groep %d)"
@@ -560,11 +573,11 @@ msgstr "Moduswisselaar (groep %d)"
#. TRANSLATORS: This string refers to an action, cycles drawing tablets'
#. * mapping through the available outputs.
#.
#: src/backends/meta-input-settings.c:2555
#: src/backends/meta-input-settings.c:2590
msgid "Switch monitor"
msgstr "Van beeldscherm wisselen"
#: src/backends/meta-input-settings.c:2557
#: src/backends/meta-input-settings.c:2592
msgid "Show on-screen help"
msgstr "Hulptekst op scherm tonen"
@@ -596,13 +609,13 @@ msgid "%s %s"
msgstr "%s %s"
#. Translators: this string will appear in Sysprof
#: src/backends/meta-profiler.c:82
#: src/backends/meta-profiler.c:79
msgid "Compositor"
msgstr "Compositor"
#. This probably means that a non-WM compositor like xcompmgr is running;
#. * we have no way to get it to exit
#: src/compositor/compositor.c:509
#: src/compositor/compositor.c:533
#, c-format
msgid ""
"Another compositing manager is already running on screen %i on display “%s”."
@@ -614,47 +627,47 @@ msgstr ""
msgid "Bell event"
msgstr "Bel-gebeurtenis"
#: src/core/main.c:186
#: src/core/main.c:190
msgid "Disable connection to session manager"
msgstr "Schakel de verbinding met het sessiebeheer uit"
#: src/core/main.c:192
#: src/core/main.c:196
msgid "Replace the running window manager"
msgstr "De huidige toepassing voor vensterbeheer vervangen"
#: src/core/main.c:198
#: src/core/main.c:202
msgid "Specify session management ID"
msgstr "Specificeer de ID van het sessiebeheer"
#: src/core/main.c:203
#: src/core/main.c:207
msgid "X Display to use"
msgstr "De te gebruiken X-weergave"
#: src/core/main.c:209
#: src/core/main.c:213
msgid "Initialize session from savefile"
msgstr "Initialiseer de sessie middels een opslagbestand"
#: src/core/main.c:215
#: src/core/main.c:219
msgid "Make X calls synchronous"
msgstr "X-aanroepen synchroon maken"
#: src/core/main.c:222
#: src/core/main.c:226
msgid "Run as a wayland compositor"
msgstr "Uitvoeren als een wayland compositor"
#: src/core/main.c:228
#: src/core/main.c:232
msgid "Run as a nested compositor"
msgstr "Uitvoeren als een geneste compositor"
#: src/core/main.c:234
#: src/core/main.c:238
msgid "Run wayland compositor without starting Xwayland"
msgstr "Wayland-compositor uitvoeren zonder Xwayland te starten"
#: src/core/main.c:242
#: src/core/main.c:246
msgid "Run as a full display server, rather than nested"
msgstr "Uitvoeren als een volledige displayserver, in plaats van genest"
#: src/core/main.c:248
#: src/core/main.c:252
msgid "Run with X11 backend"
msgstr "Uitvoeren met X11-backend"
@@ -707,7 +720,7 @@ msgstr "Versie-informatie tonen"
msgid "Mutter plugin to use"
msgstr "Te gebruiken Mutter-plug-in"
#: src/core/prefs.c:1849
#: src/core/prefs.c:1911
#, c-format
msgid "Workspace %d"
msgstr "Werkblad %d"
@@ -721,7 +734,7 @@ msgstr "Mutter is gecompileerd zonder ondersteuning voor verbose-mode\n"
msgid "Mode Switch: Mode %d"
msgstr "Moduswisselaar: modus %d"
#: src/x11/meta-x11-display.c:679
#: src/x11/meta-x11-display.c:676
#, c-format
msgid ""
"Display “%s” already has a window manager; try using the --replace option to "
@@ -730,21 +743,21 @@ msgstr ""
"Beeldscherm %s heeft al een vensterbeheerder; probeer de optie: --replace "
"te gebruiken om de huidige vensterbeheerder te vervangen."
#: src/x11/meta-x11-display.c:1040
#: src/x11/meta-x11-display.c:1089
msgid "Failed to initialize GDK\n"
msgstr "Initialiseren van GDK mislukt\n"
#: src/x11/meta-x11-display.c:1064
#: src/x11/meta-x11-display.c:1113
#, c-format
msgid "Failed to open X Window System display “%s”\n"
msgstr "Openen van X Window System display %s mislukt\n"
#: src/x11/meta-x11-display.c:1147
#: src/x11/meta-x11-display.c:1196
#, c-format
msgid "Screen %d on display “%s” is invalid\n"
msgstr "Scherm %d op beeldscherm %s is ongeldig\n"
#: src/x11/meta-x11-selection-input-stream.c:445
#: src/x11/meta-x11-selection-input-stream.c:460
#, c-format
msgid "Format %s not supported"
msgstr "Formaat %s wordt niet ondersteund"

379
po/pa.po
View File

@@ -8,21 +8,20 @@
# A S Alam <aalam@users.sf.net>, 2006.
# A S Alam <aalam@users.sf.net>, 2007, 2009, 2010, 2011.
# ASB <aalam@users.sf.net>, 2007.
# Amanpreet Singh Alam <aalam@users.sf.net>, 2009, 2012, 2013, 2014, 2015, 2017.
# Amanpreet Singh Alam <aalam@users.sf.net>, 2009, 2012, 2013, 2014, 2015, 2017, 2020.
msgid ""
msgstr ""
"Project-Id-Version: metacity.gnome-2-26\n"
"Report-Msgid-Bugs-To: https://bugzilla.gnome.org/enter_bug.cgi?product=mutter"
"&keywords=I18N+L10N&component=general\n"
"POT-Creation-Date: 2017-08-29 16:09+0000\n"
"PO-Revision-Date: 2017-09-10 18:24-0600\n"
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/mutter/issues\n"
"POT-Creation-Date: 2020-02-23 17:41+0000\n"
"PO-Revision-Date: 2020-03-04 19:52-0800\n"
"Last-Translator: A S Alam <aalam@users.sf.net>\n"
"Language-Team: Punjabi <punjabi-users@lists.sf.net>\n"
"Language: pa\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: Lokalize 2.0\n"
"X-Generator: Lokalize 19.04.3\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"\n"
@@ -51,134 +50,118 @@ msgid "Move window to last workspace"
msgstr "ਵਿੰਡੋ ਨੂੰ ਪਿਛਲੇ ਵਰਕਸਪੇਸ ਵਿੱਚ ਲਿਜਾਓ"
#: data/50-mutter-navigation.xml:24
msgid "Move window one workspace to the left"
msgstr "ਵਿੰਡੋ ਨੂੰ ਇੱਕ ਵਰਕਸਪੇਸ ਖੱਬੇ ਵੱਲ ਲਿਜਾਓ"
#: data/50-mutter-navigation.xml:27
msgid "Move window one workspace to the right"
msgstr "ਵਿੰਡੋ ਨੂੰ ਇੱਕ ਵਰਕਸਪੇਸ ਸੱਜੇ ਵੱਲ ਲਿਜਾਓ"
#: data/50-mutter-navigation.xml:30
msgid "Move window one workspace up"
msgstr "ਵਿੰਡੋ ਨੂੰ ਇੱਕ ਵਰਕਸਪੇਸ ਉੱਤੇ ਲਿਜਾਓ"
#: data/50-mutter-navigation.xml:33
#: data/50-mutter-navigation.xml:27
msgid "Move window one workspace down"
msgstr "ਵਿੰਡੋ ਨੂੰ ਇੱਕ ਵਰਕਸਪੇਸ ਹੇਠਾਂ ਲਿਜਾਓ"
#: data/50-mutter-navigation.xml:36
#: data/50-mutter-navigation.xml:30
msgid "Move window one monitor to the left"
msgstr "ਵਿੰਡੋ ਨੂੰ ਇੱਕ ਮਾਨੀਟਰ ਖੱਬੇ ਵੱਲ ਲਿਜਾਓ"
#: data/50-mutter-navigation.xml:39
#: data/50-mutter-navigation.xml:33
msgid "Move window one monitor to the right"
msgstr "ਵਿੰਡੋ ਨੂੰ ਇੱਕ ਮਾਨੀਟਰ ਸੱਜੇ ਵੱਲ ਲਿਜਾਓ"
#: data/50-mutter-navigation.xml:42
#: data/50-mutter-navigation.xml:36
msgid "Move window one monitor up"
msgstr "ਵਿੰਡੋ ਨੂੰ ਇੱਕ ਮਾਨੀਟਰ ਉੱਤੇ ਲਿਜਾਓ"
#: data/50-mutter-navigation.xml:45
#: data/50-mutter-navigation.xml:39
msgid "Move window one monitor down"
msgstr "ਵਿੰਡੋ ਨੂੰ ਇੱਕ ਮਾਨੀਟਰ ਹੇਠਾਂ ਲਿਜਾਓ"
#: data/50-mutter-navigation.xml:49
#: data/50-mutter-navigation.xml:43
msgid "Switch applications"
msgstr "ਐਪਲੀਕੇਸ਼ਨ ਬਦਲੋ"
#: data/50-mutter-navigation.xml:54
#: data/50-mutter-navigation.xml:48
msgid "Switch to previous application"
msgstr "ਪਿਛਲੀ ਐਪਲੀਕੇਸ਼ਨ ਲਈ ਬਦਲੋ"
#: data/50-mutter-navigation.xml:58
#: data/50-mutter-navigation.xml:52
msgid "Switch windows"
msgstr "ਵਿੰਡੋਜ਼ ਬਦਲੋ"
#: data/50-mutter-navigation.xml:63
#: data/50-mutter-navigation.xml:57
msgid "Switch to previous window"
msgstr "ਪਿਛਲੀ ਵਿੰਡੋ ਲਈ ਬਦਲੋ"
#: data/50-mutter-navigation.xml:67
#: data/50-mutter-navigation.xml:61
msgid "Switch windows of an application"
msgstr "ਐਪਲੀਕੇਸ਼ਨ ਦੀਆਂ ਵਿੰਡੋਜ਼ ਬਦਲੋ"
#: data/50-mutter-navigation.xml:72
#: data/50-mutter-navigation.xml:66
msgid "Switch to previous window of an application"
msgstr "ਐਪਲੀਕੇਸ਼ਨ ਦੀ ਪਿਛਲੀ ਵਿੰਡੋ ਵਿੱਚ ਜਾਓ"
#: data/50-mutter-navigation.xml:76
#: data/50-mutter-navigation.xml:70
msgid "Switch system controls"
msgstr "ਸਿਸਟਮ ਕੰਟਰੋਲ ਬਦਲੋ"
#: data/50-mutter-navigation.xml:81
#: data/50-mutter-navigation.xml:75
msgid "Switch to previous system control"
msgstr "ਪਿਛਲੇ ਸਿਸਟਮ ਕੰਟਰੋਲ ਬਦਲੋ"
#: data/50-mutter-navigation.xml:85
#: data/50-mutter-navigation.xml:79
msgid "Switch windows directly"
msgstr "ਵਿੰਡੋਜ਼ ਸਿੱਧੀਆਂ ਬਦਲੋ"
#: data/50-mutter-navigation.xml:90
#: data/50-mutter-navigation.xml:84
msgid "Switch directly to previous window"
msgstr "ਸਿੱਧਾ ਪਿਛਲੀ ਵਿੰਡੋ ਲਈ ਬਦਲੋ"
#: data/50-mutter-navigation.xml:94
#: data/50-mutter-navigation.xml:88
msgid "Switch windows of an app directly"
msgstr "ਐਪਲੀਕੇਸ਼ਨ ਦੀ ਵਿੰਡੋਜ਼ ਸਿੱਧੀ ਬਦਲੋ"
#: data/50-mutter-navigation.xml:99
#: data/50-mutter-navigation.xml:93
msgid "Switch directly to previous window of an app"
msgstr "ਸਿੱਧਾ ਐਪ ਦੀ ਪਿਛਲੀ ਵਿੰਡੋ ਲਈ ਬਦਲੋ"
#: data/50-mutter-navigation.xml:103
#: data/50-mutter-navigation.xml:97
msgid "Switch system controls directly"
msgstr "ਸਿਸਟਮ ਕੰਟਰੋਲ ਸਿੱਧੇ ਬਦਲੋ"
#: data/50-mutter-navigation.xml:108
#: data/50-mutter-navigation.xml:102
msgid "Switch directly to previous system control"
msgstr "ਸਿੱਧਾ ਪਿਛਲੇ ਸਿਸਟਮ ਕੰਟਰੋਲ ਲਈ ਬਦਲੋ"
#: data/50-mutter-navigation.xml:111
#: data/50-mutter-navigation.xml:105
msgid "Hide all normal windows"
msgstr "ਸਭ ਸਧਾਰਨ ਵਿੰਡੋਜ਼ ਓਹਲੇ ਕਰੋ"
#: data/50-mutter-navigation.xml:114
#: data/50-mutter-navigation.xml:108
msgid "Switch to workspace 1"
msgstr "ਵਰਕਸਪੇਸ ਵਿੱਚ ਜਾਓ"
#: data/50-mutter-navigation.xml:117
#: data/50-mutter-navigation.xml:111
msgid "Switch to workspace 2"
msgstr "ਵਰਕਸਪੇਸ ੨ ਵਿੱਚ ਜਾਓ"
#: data/50-mutter-navigation.xml:120
#: data/50-mutter-navigation.xml:114
msgid "Switch to workspace 3"
msgstr "ਵਰਕਸਪੇਸ ੩ ਵਿੱਚ ਜਾਓ"
#: data/50-mutter-navigation.xml:123
#: data/50-mutter-navigation.xml:117
msgid "Switch to workspace 4"
msgstr "ਵਰਕਸਪੇਸ ਵਿੱਚ ਜਾਓ"
#: data/50-mutter-navigation.xml:126
#: data/50-mutter-navigation.xml:120
msgid "Switch to last workspace"
msgstr "ਪਿਛਲੇ ਵਰਕਸਪੇਸ ਵਿੱਚ ਜਾਓ"
#: data/50-mutter-navigation.xml:129
msgid "Move to workspace left"
msgstr "ਖੱਬੇ ਵਰਕਸਪੇਸ 'ਚ ਭੇਜੋ"
#: data/50-mutter-navigation.xml:132
msgid "Move to workspace right"
msgstr "ਸੱਜੇ ਵਰਕਸਪੇਸ 'ਚ ਭੇਜੋ"
#: data/50-mutter-navigation.xml:135
#: data/50-mutter-navigation.xml:123
msgid "Move to workspace above"
msgstr "ਉੱਤੇ ਵਰਕਸਪੇਸ 'ਚ ਭੇਜੋ"
#: data/50-mutter-navigation.xml:138
#: data/50-mutter-navigation.xml:126
msgid "Move to workspace below"
msgstr "ਹੇਠਾਂ ਵਰਕਸਪੇਸ 'ਚ ਭੇਜੋ"
#: data/50-mutter-system.xml:6
#: data/50-mutter-system.xml:6 data/50-mutter-wayland.xml:6
msgid "System"
msgstr "ਸਿਸਟਮ"
@@ -190,6 +173,10 @@ msgstr "ਕਮਾਂਡ ਚਲਾਉ ਪਰੋਉਟ ਵੇਖੋ"
msgid "Show the activities overview"
msgstr "ਸਰਗਰਮੀ ਸੰਖੇਪ ਜਾਣਕਾਰੀ ਵੇਖੋ"
#: data/50-mutter-wayland.xml:8
msgid "Restore the keyboard shortcuts"
msgstr "ਕੀ-ਬੋਰਡ ਸ਼ਾਰਟਕੱਟ ਬਹਾਲ ਕਰੋ"
#: data/50-mutter-windows.xml:6
msgid "Windows"
msgstr "ਵਿੰਡੋਜ਼"
@@ -215,54 +202,50 @@ msgid "Restore window"
msgstr "ਵਿੰਡੋ ਮੁੜ-ਸਟੋਰ"
#: data/50-mutter-windows.xml:18
msgid "Toggle shaded state"
msgstr "ਰੰਗਤ ਸਥਿਤੀ ਬਦਲੋ"
#: data/50-mutter-windows.xml:20
msgid "Close window"
msgstr "ਵਿੰਡੋ ਬੰਦ ਕਰੋ"
#: data/50-mutter-windows.xml:22
#: data/50-mutter-windows.xml:20
msgid "Hide window"
msgstr "ਵਿੰਡੋ ਓਹਲੇ"
#: data/50-mutter-windows.xml:24
#: data/50-mutter-windows.xml:22
msgid "Move window"
msgstr "ਵਿੰਡੋ ਹਿਲਾਓ"
#: data/50-mutter-windows.xml:26
#: data/50-mutter-windows.xml:24
msgid "Resize window"
msgstr "ਵਿੰਡੋ ਮੁੜ-ਅਕਾਰ"
#: data/50-mutter-windows.xml:29
#: data/50-mutter-windows.xml:27
msgid "Toggle window on all workspaces or one"
msgstr "ਵਿੰਡੋ ਸਭ ਵਰਕਸਪੇਸ ਜਾਂ ਇੱਕ ਵਿੱਚ ਬਦਲੋ"
#: data/50-mutter-windows.xml:31
#: data/50-mutter-windows.xml:29
msgid "Raise window if covered, otherwise lower it"
msgstr "ਵਿੰਡੋ ਉਭਾਰੋ, ਜੇ ਢੱਕੀ ਹੈ, ਨਹੀਂ ਤਾਂ ਹੇਠਾਂ ਭੇਜੋ"
#: data/50-mutter-windows.xml:33
#: data/50-mutter-windows.xml:31
msgid "Raise window above other windows"
msgstr "ਵਿੰਡੋ ਨੂੰ ਹੋਰ ਵਿੰਡੋਜ਼ ਤੋਂ ਉੱਤੇ ਲਿਆਓ"
#: data/50-mutter-windows.xml:35
#: data/50-mutter-windows.xml:33
msgid "Lower window below other windows"
msgstr "ਵਿੰਡੋ ਨੂੰ ਹੋਰ ਵਿੰਡੋ ਤੋਂ ਹੇਠਾਂ ਲੈ ਜਾਉ"
#: data/50-mutter-windows.xml:37
#: data/50-mutter-windows.xml:35
msgid "Maximize window vertically"
msgstr "ਵਿੰਡੋ ਖੜਵੇਂ ਰੂਪ ਵਿੱਚ ਵੱਧੋ-ਵੱਧ"
#: data/50-mutter-windows.xml:39
#: data/50-mutter-windows.xml:37
msgid "Maximize window horizontally"
msgstr "ਵਿੰਡੋ ਲੇਟਵੇਂ ਰੂਪ ਵਿੱਚ ਵੱਧੋ-ਵੱਧ"
#: data/50-mutter-windows.xml:43
#: data/50-mutter-windows.xml:41
msgid "View split on left"
msgstr "ਖੱਬੇ ਪਾਸੇ ਵੰਡ ਵੇਖੋ"
#: data/50-mutter-windows.xml:47
#: data/50-mutter-windows.xml:45
msgid "View split on right"
msgstr "ਸੱਜੇ ਪਾਸੇ ਵੰਡ ਵੇਖੋ"
@@ -275,11 +258,6 @@ msgid "Modifier to use for extended window management operations"
msgstr "ਵਾਧੂ ਵਿੰਡੋ ਪਰਬੰਧ ਓਪਰੇਸ਼ਨਾਂ ਲਈ ਵਰਤਣ ਵਾਸਤੇ ਮੋਡੀਫਾਇਰ"
#: data/org.gnome.mutter.gschema.xml.in:8
#| msgid ""
#| "This key will initiate the \"overlay\", which is a combination window "
#| "overview and application launching system. The default is intended to be "
#| "the \"Windows key\" on PC hardware. It's expected that this binding "
#| "either the default or set to the empty string."
msgid ""
"This key will initiate the “overlay”, which is a combination window overview "
"and application launching system. The default is intended to be the “Windows "
@@ -287,10 +265,10 @@ msgid ""
"set to the empty string."
msgstr ""
"ਇਹ ਸਵਿੱਚ ”ਓਵਰਲੇ” ਸ਼ੁਰੂ ਕਰਦੀ ਹੈ, ਜੋ ਕਿ ਵਿੰਡੋ ਸੰਖੇਪ ਤੇ ਐਪਲੀਕੇਸ਼ਨ ਚਲਾਉਣ ਸਿਸਟਮ ਦੀ"
" ਜੋੜ ਹੈ। "
"ਡਿਫਾਲਟ ਇਹ PC ਹਾਰਡਵੇਅਰ ਉੱਤੇ ”ਵਿੰਡੋਜ਼ ਸਵਿੱਚ” ਨਾਲ ਵਰਤਣ ਲਈ ਹੈ। ਇਹ ਉਮੀਦ ਕੀਤੀ ਜਾਂਦੀ"
" ਹੈ ਕਿ "
"ਜਾਂ ਤਾਂ ਡਿਫਾਲਟ ਬਾਈਡਿੰਗ ਰੱਖੀ ਜਾਵੇ ਜਾਂ ਖਾਲੀ ਲਾਈਨ ਵਰਤੀ ਜਾਵੇ।"
" ਜੋੜ ਹੈ। ਡਿਫਾਲਟ "
"ਇਹ PC ਹਾਰਡਵੇਅਰ ਉੱਤੇ ”ਵਿੰਡੋਜ਼ ਸਵਿੱਚ” ਨਾਲ ਵਰਤਣ ਲਈ ਹੈ। ਇਹ ਉਮੀਦ ਕੀਤੀ ਜਾਂਦੀ ਹੈ ਕਿ"
" ਜਾਂ ਤਾਂ "
"ਡਿਫਾਲਟ ਬਾਈਡਿੰਗ ਰੱਖੀ ਜਾਵੇ ਜਾਂ ਖਾਲੀ ਲਾਈਨ ਵਰਤੀ ਜਾਵੇ।"
#: data/org.gnome.mutter.gschema.xml.in:20
msgid "Attach modal dialogs"
@@ -327,10 +305,6 @@ msgid "Workspaces are managed dynamically"
msgstr "ਵਰਕਸਪੇਸ ਦਾ ਪਰਬੰਧ ਚਲਵੇਂ ਰੂਪ ਵਿੱਚ ਕੀਤਾ ਜਾਂਦਾ ਹੈ"
#: data/org.gnome.mutter.gschema.xml.in:41
#| msgid ""
#| "Determines whether workspaces are managed dynamically or whether there's "
#| "a static number of workspaces (determined by the num-workspaces key in "
#| "org.gnome.desktop.wm.preferences)."
msgid ""
"Determines whether workspaces are managed dynamically or whether theres a "
"static number of workspaces (determined by the num-workspaces key in org."
@@ -369,10 +343,6 @@ msgid "Delay focus changes until the pointer stops moving"
msgstr "ਪੁਆਇੰਟਰ ਦੇ ਰੁਕਣ ਤੱਕ ਫੋਕਸ ਬਦਲਣ ਨੂੰ ਰੋਕੋ"
#: data/org.gnome.mutter.gschema.xml.in:69
#| msgid ""
#| "If set to true, and the focus mode is either \"sloppy\" or \"mouse\" then "
#| "the focus will not be changed immediately when entering a window, but "
#| "only after the pointer stops moving."
msgid ""
"If set to true, and the focus mode is either “sloppy” or “mouse” then the "
"focus will not be changed immediately when entering a window, but only after "
@@ -387,9 +357,6 @@ msgid "Draggable border width"
msgstr "ਡਰੈਗ ਹੋਣ ਯੋਗ ਬਾਰਡਰ ਚੌੜਾਈ"
#: data/org.gnome.mutter.gschema.xml.in:80
#| msgid ""
#| "The amount of total draggable borders. If the theme's visible borders are "
#| "not enough, invisible borders will be added to meet this value."
msgid ""
"The amount of total draggable borders. If the themes visible borders are "
"not enough, invisible borders will be added to meet this value."
@@ -436,26 +403,46 @@ msgid ""
"proof. Currently possible keywords: • “scale-monitor-framebuffer” — makes "
"mutter default to layout logical monitors in a logical pixel coordinate "
"space, while scaling monitor framebuffers instead of window content, to "
"manage HiDPI monitors. Does not require a restart. • “remote-desktop” — "
"enables remote desktop support. To support remote desktop with screen "
"sharing, “screen-cast” must also be enabled. • “screen-cast” — enables "
"screen cast support."
"manage HiDPI monitors. Does not require a restart. • “rt-scheduler” — makes "
"mutter request a low priority real-time scheduling. The executable or user "
"must have CAP_SYS_NICE. Requires a restart. • “autostart-xwayland” — "
"initializes Xwayland lazily if there are X11 clients. Requires restart."
msgstr ""
#: data/org.gnome.mutter.gschema.xml.in:145
#: data/org.gnome.mutter.gschema.xml.in:134
msgid "Modifier to use to locate the pointer"
msgstr "ਪੁਆਇੰਟਰ ਲੱਭਣ ਲਈ ਵਰਤਣ ਵਾਸਤੇ ਸੋਧਣ"
#: data/org.gnome.mutter.gschema.xml.in:135
msgid "This key will initiate the “locate pointer” action."
msgstr "ਇਹ ਕੁੰਜੀ “ਪੁਆਇੰਟਰ ਲੱਭੋ“ ਕਾਰਵਾਈ ਸ਼ੁਰੂ ਕਰਦੀ ਹੈ।"
#: data/org.gnome.mutter.gschema.xml.in:142
msgid "Timeout for check-alive ping"
msgstr "ਚੈਕ-ਸਰਗਰਮ ਪਿੰਗ ਲਈ ਸਮਾਂ-ਅੰਤਰਾਲ"
#: data/org.gnome.mutter.gschema.xml.in:143
msgid ""
"Number of milliseconds a client has to respond to a ping request in order to "
"not be detected as frozen. Using 0 will disable the alive check completely."
msgstr ""
"ਮਿਲੀਸਕਿੰਟਾਂ ਦੀ ਗਿਣਤੀ, ਜਿਸ ਵਿੱਚ ਕਲਾਂਇਟ ਨੇ ਪਿੰਗ ਦੀ ਬੇਨਤੀ ਦਾ ਜਵਾਬ ਦੇਣਾ ਹੁੰਦਾ ਹੈ"
" ਤਾਂ ਕਿ ਜਕੜਿਆ "
"ਨਾ ਖੋਜਿਆ ਜਾਵੇ। 0 ਵਰਤਣ ਨਾਲ ਸਰਗਰਮੀ ਦੀ ਜਾਂਚ ਨੂੰ ਪੂਰੀ ਤਰ੍ਹਾਂ ਅਸਮਰੱਥ ਕੀਤਾ ਜਾਵੇਗਾ।"
#: data/org.gnome.mutter.gschema.xml.in:165
msgid "Select window from tab popup"
msgstr "ਟੈਬ ਪੋਪਅੱਪ ਤੋਂ ਵਿੰਡੋ ਚੁਣੋ"
#: data/org.gnome.mutter.gschema.xml.in:150
#: data/org.gnome.mutter.gschema.xml.in:170
msgid "Cancel tab popup"
msgstr "ਟੈਬ ਪੋਪਅੱਪ ਰੱਦ ਕਰੋ"
#: data/org.gnome.mutter.gschema.xml.in:155
#| msgid "Switch applications"
#: data/org.gnome.mutter.gschema.xml.in:175
msgid "Switch monitor configurations"
msgstr "ਮਾਨੀਟਰ ਸੰਰਚਨਾ ਨੂੰ ਬਦਲੋ"
#: data/org.gnome.mutter.gschema.xml.in:160
#: data/org.gnome.mutter.gschema.xml.in:180
msgid "Rotates the built-in monitor configuration"
msgstr "ਬਿਲਟ-ਇਨ ਮਾਨੀਟਰ ਸੰਰਚਨਾ ਨੂੰ ਘੁੰਮਾਓ"
@@ -511,10 +498,45 @@ msgstr "VT 12 ਲਈ ਬਦਲੋ"
msgid "Re-enable shortcuts"
msgstr "ਸ਼ਾਰਟਕੱਟ ਮੁੜ-ਸਮਰੱਥ ਕਰੋ"
#: data/org.gnome.mutter.wayland.gschema.xml.in:64
msgid "Allow X11 grabs to lock keyboard focus with Xwayland"
msgstr "X11 ਨੂੰ Xwayland ਨਾਲ ਲਾਕ ਕੀਤੇ ਕੀਬੋਰਡ ਫੋਕਸ ਨਾਲ ਫੜਨ ਦੀ ਇਜਾਜ਼ਤ ਦਿੰਦਾ ਹੈ"
#: data/org.gnome.mutter.wayland.gschema.xml.in:65
msgid ""
"Allow all keyboard events to be routed to X11 “override redirect” windows "
"with a grab when running in Xwayland. This option is to support X11 clients "
"which map an “override redirect” window (which do not receive keyboard "
"focus) and issue a keyboard grab to force all keyboard events to that "
"window. This option is seldom used and has no effect on regular X11 windows "
"which can receive keyboard focus under normal circumstances. For a X11 grab "
"to be taken into account under Wayland, the client must also either send a "
"specific X11 ClientMessage to the root window or be among the applications "
"white-listed in key “xwayland-grab-access-rules”."
msgstr ""
#: data/org.gnome.mutter.wayland.gschema.xml.in:84
msgid "Xwayland applications allowed to issue keyboard grabs"
msgstr "Xwayland ਐਪਲੀਕੇਸ਼ਨਾਂ ਕੀਬੋਰਡ ਫੜਨ ਦੀ ਇਜਾਜ਼ਤ ਦਿੰਦੀਆਂ ਹਨ"
#: data/org.gnome.mutter.wayland.gschema.xml.in:85
msgid ""
"List the resource names or resource class of X11 windows either allowed or "
"not allowed to issue X11 keyboard grabs under Xwayland. The resource name or "
"resource class of a given X11 window can be obtained using the command "
"“xprop WM_CLASS”. Wildcards “*” and jokers “?” in the values are supported. "
"Values starting with “!” are blacklisted, which has precedence over the "
"whitelist, to revoke applications from the default system list. The default "
"system list includes the following applications: "
"“@XWAYLAND_GRAB_DEFAULT_ACCESS_RULES@” Users can break an existing grab by "
"using the specific keyboard shortcut defined by the keybinding key “restore-"
"shortcuts”."
msgstr ""
#. TRANSLATORS: This string refers to a button that switches between
#. * different modes.
#.
#: src/backends/meta-input-settings.c:2151
#: src/backends/meta-input-settings.c:2567
#, c-format
msgid "Mode Switch (Group %d)"
msgstr "ਮੋਡ ਬਦਲੋ (ਗਰੁੱਪ %d)"
@@ -522,106 +544,118 @@ msgstr "ਮੋਡ ਬਦਲੋ (ਗਰੁੱਪ %d)"
#. TRANSLATORS: This string refers to an action, cycles drawing tablets'
#. * mapping through the available outputs.
#.
#: src/backends/meta-input-settings.c:2174
#| msgid "Switch system controls"
#: src/backends/meta-input-settings.c:2590
msgid "Switch monitor"
msgstr "ਮਾਨੀਟਰ ਨੂੰ ਬਦਲੋ"
#: src/backends/meta-input-settings.c:2176
#: src/backends/meta-input-settings.c:2592
msgid "Show on-screen help"
msgstr "ਆਨ-ਸਕਰੀਨ ਮਦਦ ਵੇਖੋ"
#: src/backends/meta-monitor-manager.c:903
#: src/backends/meta-monitor.c:223
msgid "Built-in display"
msgstr "ਬਿਲਟ-ਇਨ ਡਿਸਪਲੇਅ"
#: src/backends/meta-monitor-manager.c:926
#: src/backends/meta-monitor.c:252
msgid "Unknown"
msgstr "ਅਣਜਾਣ"
#: src/backends/meta-monitor-manager.c:928
#: src/backends/meta-monitor.c:254
msgid "Unknown Display"
msgstr "ਅਣਜਾਣ ਡਿਸਪਲੇਅ"
#. TRANSLATORS: this is a monitor vendor name, followed by a
#. * size in inches, like 'Dell 15"'
#.
#: src/backends/meta-monitor-manager.c:936
#: src/backends/meta-monitor.c:262
#, c-format
#| msgid "%s %s"
msgctxt ""
"This is a monitor vendor name, followed by a size in inches, like 'Dell 15\"'"
msgid "%s %s"
msgstr "%s %s"
#: src/backends/meta-monitor.c:270
#, c-format
#| msgid "%s %s"
msgctxt ""
"This is a monitor vendor name followed by product/model name where size in "
"inches could not be calculated, e.g. Dell U2414H"
msgid "%s %s"
msgstr "%s %s"
#. Translators: this string will appear in Sysprof
#: src/backends/meta-profiler.c:79
#| msgid "Compositing Manager"
msgid "Compositor"
msgstr "ਕੰਪੋਜੀਟਰ"
#. This probably means that a non-WM compositor like xcompmgr is running;
#. * we have no way to get it to exit
#: src/compositor/compositor.c:476
#: src/compositor/compositor.c:533
#, c-format
#| msgid ""
#| "Another compositing manager is already running on screen %i on display "
#| "\"%s\"."
msgid ""
"Another compositing manager is already running on screen %i on display “%s”."
msgstr ""
"ਇੱਕ ਹੋਰ ਕੰਪੋਜ਼ਟਿੰਗ ਮੈਨੇਜਰ %i ਸਕਰੀਨ ਉੱਤੇ ਡਿਸਪਲੇਅ ”%s” ਉੱਤੇ ਪਹਿਲਾਂ ਹੀ ਚੱਲ ਰਿਹਾ"
" ਹੈ।"
#: src/core/bell.c:194
#: src/core/bell.c:192
msgid "Bell event"
msgstr "ਘੰਟੀ ਈਵੈਂਟ"
#: src/core/display.c:608
#, c-format
#| msgid "Failed to open X Window System display '%s'\n"
msgid "Failed to open X Window System display “%s”\n"
msgstr "X ਵਿੰਡੋ ਸਿਸਟਮ ਡਿਸਪਲੇਅ ”%s” ਨੂੰ ਖੋਲਣ ਵਿੱਚ ਅਸਮਰਥ\n"
#: src/core/main.c:189
#: src/core/main.c:190
msgid "Disable connection to session manager"
msgstr "ਸ਼ੈਸ਼ਨ ਮੈਨੇਜਰ ਨਾਲ ਕੁਨੈਕਸ਼ਨ ਅਯੋਗ"
#: src/core/main.c:195
#: src/core/main.c:196
msgid "Replace the running window manager"
msgstr "ਚੱਲ ਰਹੇ ਵਿੰਡੋ ਮੈਨੇਜਰ ਨੂੰ ਬਦਲੋ"
#: src/core/main.c:201
#: src/core/main.c:202
msgid "Specify session management ID"
msgstr "ਸ਼ੈਸ਼ਨ ਪਰਬੰਧਨ ID ਦਿਓ"
#: src/core/main.c:206
#: src/core/main.c:207
msgid "X Display to use"
msgstr "ਵਰਤਣ ਲਈ X ਡਿਸਪਲੇਅ"
#: src/core/main.c:212
#: src/core/main.c:213
msgid "Initialize session from savefile"
msgstr "ਸੰਭਾਲੀ ਫਾਇਲ ਤੋਂ ਸ਼ੈਸ਼ਨ ਸ਼ੁਰੂ"
#: src/core/main.c:218
#: src/core/main.c:219
msgid "Make X calls synchronous"
msgstr "X ਕਾਲ ਸੈਕਰੋਨਸ ਬਣਾਓ"
#: src/core/main.c:225
#: src/core/main.c:226
msgid "Run as a wayland compositor"
msgstr "ਵੇਲੈਂਡ ਕੰਪੋਜ਼ਰ ਵਜੋਂ ਚਲਾਓ"
#: src/core/main.c:231
#| msgid "Run as a wayland compositor"
#: src/core/main.c:232
msgid "Run as a nested compositor"
msgstr "ਨੈਸਟਡ ਕੰਪੋਜ਼ਰ ਵਜੋਂ ਚਲਾਓ"
#: src/core/main.c:239
#: src/core/main.c:238
msgid "Run wayland compositor without starting Xwayland"
msgstr "Xwayland ਸ਼ੁਰੂ ਕੀਤੇ ਬਿਨਾਂ ਵੇਲੈਂਡ ਕੰਪੋਜ਼ੀਟਰ ਚਲਾਓ"
#: src/core/main.c:246
msgid "Run as a full display server, rather than nested"
msgstr "ਅੰਦਰੂਨੀ ਰੂਪ ਵਿੱਚ ਚਲਾਉਣ ਦੀ ਬਜਾਏ ਪੂਰੇ ਡਿਸਪਲੇਅ ਸਰਵਰ ਵਜੋਂ ਚਲਾਓ"
#: src/core/main.c:252
msgid "Run with X11 backend"
msgstr "X11 ਬੈਕਐਡ ਨਾਲ ਚਲਾਓ"
#. Translators: %s is a window title
#: src/core/meta-close-dialog-default.c:147
#: src/core/meta-close-dialog-default.c:151
#, c-format
msgid "“%s” is not responding."
msgstr "\"%s\" ਜਵਾਬ ਨਹੀਂ ਦੇ ਰਹੀ ਹੈ।"
#: src/core/meta-close-dialog-default.c:149
#: src/core/meta-close-dialog-default.c:153
msgid "Application is not responding."
msgstr "ਐਪਲੀਕੇਸ਼ਨ ਜਵਾਬ ਨਹੀਂ ਦੇ ਰਹੀ ਹੈ।"
#: src/core/meta-close-dialog-default.c:154
#: src/core/meta-close-dialog-default.c:158
msgid ""
"You may choose to wait a short while for it to continue or force the "
"application to quit entirely."
@@ -629,22 +663,16 @@ msgstr ""
"ਤੁਸੀਂ ਇਸ ਲਈ ਕੁਝ ਸਮੇਂ ਵਾਸਤੇ ਉਡੀਕ ਕਰ ਸਕਦੇ ਹੋ ਜਾਂ ਕਾਰਜ ਨੂੰ ਧੱਕੇ ਨਾਲ ਬੰਦ ਕਰ ਸਕਦੇ"
" ਹੋ।"
#: src/core/meta-close-dialog-default.c:161
#: src/core/meta-close-dialog-default.c:165
msgid "_Force Quit"
msgstr "ਧੱਕੇ ਨਾਲ ਬੰਦ(_F)"
#: src/core/meta-close-dialog-default.c:161
#: src/core/meta-close-dialog-default.c:165
msgid "_Wait"
msgstr "ਉਡੀਕੋ(_W)"
#: src/core/mutter.c:39
#: src/core/mutter.c:38
#, c-format
#| msgid ""
#| "mutter %s\n"
#| "Copyright (C) 2001-%d Havoc Pennington, Red Hat, Inc., and others\n"
#| "This is free software; see the source for copying conditions.\n"
#| "There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A "
#| "PARTICULAR PURPOSE.\n"
msgid ""
"mutter %s\n"
"Copyright © 2001-%d Havoc Pennington, Red Hat, Inc., and others\n"
@@ -657,64 +685,86 @@ msgstr ""
"ਇਹ ਮੁਫਤ ਸਾਫਟਵੇਅਰ ਹੈ; ਉਤਾਰਾ ਹਾਲਤਾਂ ਲਈ ਸਰੋਤ ਵੇਖੋ।\n"
"ਇਸ ਦੀ ਕੋਈ ਗਰੰਟੀ ਨਹੀ; ਇਥੋਂ ਤੱਕ ਕਿ ਖਰੀਦਦਾਰੀ ਜਾਂ ਖਾਸ ਮਕਸਦ ਦੀ ਪੂਰਤੀ ਲਈ ਵੀ।\n"
#: src/core/mutter.c:53
#: src/core/mutter.c:52
msgid "Print version"
msgstr "ਵਰਜਨ ਛਾਪੋ"
#: src/core/mutter.c:59
#: src/core/mutter.c:58
msgid "Mutter plugin to use"
msgstr "ਵਰਤਣ ਲਈ ਮੁੱਟਰ ਪਲੱਗਇਨ"
#: src/core/prefs.c:1997
#: src/core/prefs.c:1911
#, c-format
msgid "Workspace %d"
msgstr "ਵਰਕਸਪੇਸ %d"
#: src/core/screen.c:580
#: src/core/util.c:122
msgid "Mutter was compiled without support for verbose mode\n"
msgstr "ਮੱਟਰ, ਵਰਬੋਜ਼ ਮੋਡ ਲਈ ਸਹਾਰੇ ਤੋਂ ਬਿਨਾਂ ਕੰਪਾਇਲ ਹੋਇਆ\n"
#: src/wayland/meta-wayland-tablet-pad.c:568
#, c-format
msgid "Mode Switch: Mode %d"
msgstr "ਮੋਡ ਬਦਲੋ: ਮੋਡ %d"
#: src/x11/meta-x11-display.c:676
#, c-format
#| msgid ""
#| "Display \"%s\" already has a window manager; try using the --replace "
#| "option to replace the current window manager."
msgid ""
"Display “%s” already has a window manager; try using the --replace option to "
"replace the current window manager."
msgstr ""
"ਡਿਸਪਲੇਅ ”%s” ਉੱਤੇ ਪਹਿਲਾਂ ਹੀ ਵਿੰਡੋ ਮੈਨੇਜਰ ਮੌਜੂਦ ਹੈ; ਮੌਜੂਦਾ ਵਿੰਡੋ ਮੈਨੇਜਰ ਨੂੰ"
" ਬਦਲਣ ਲਈ --replace "
"ਚੋਣ ਵਰਤ ਕੇ ਦੇਖੋ।"
" ਬਦਲਣ ਲਈ --replace ਚੋਣ "
"ਵਰਤ ਕੇ ਦੇਖੋ।"
#: src/core/screen.c:665
#: src/x11/meta-x11-display.c:1089
msgid "Failed to initialize GDK\n"
msgstr "GDK ਸ਼ੁਰੂ ਕਰਨ ਲਈ ਅਸਫ਼ਲ ਹੈ\n"
#: src/x11/meta-x11-display.c:1113
#, c-format
msgid "Failed to open X Window System display “%s”\n"
msgstr "X ਵਿੰਡੋ ਸਿਸਟਮ ਡਿਸਪਲੇਅ ”%s” ਨੂੰ ਖੋਲਣ ਵਿੱਚ ਅਸਮਰਥ\n"
#: src/x11/meta-x11-display.c:1196
#, c-format
#| msgid "Screen %d on display '%s' is invalid\n"
msgid "Screen %d on display “%s” is invalid\n"
msgstr "ਡਿਸਪਲੇਅ ”%2$s” ਉੱਤੇ ਸਕਰੀਨ %1$d ਗਲਤ ਹੈ\n"
#: src/core/util.c:120
msgid "Mutter was compiled without support for verbose mode\n"
msgstr "ਮੱਟਰ, ਵਰਬੋਜ਼ ਮੋਡ ਲਈ ਸਹਾਰੇ ਤੋਂ ਬਿਨਾਂ ਕੰਪਾਇਲ ਹੋਇਆ\n"
#: src/wayland/meta-wayland-tablet-pad.c:563
#: src/x11/meta-x11-selection-input-stream.c:460
#, c-format
msgid "Mode Switch: Mode %d"
msgstr "ਮੋਡ ਬਦਲੋ: ਮੋਡ %d"
msgid "Format %s not supported"
msgstr "ਫਾਰਮੈਟ %s ਸਹਾਇਕ ਨਹੀਂ ਹੈ"
#: src/x11/session.c:1815
#| msgid ""
#| "These windows do not support &quot;save current setup&quot; and will have "
#| "to be restarted manually next time you log in."
#: src/x11/session.c:1821
msgid ""
"These windows do not support “save current setup” and will have to be "
"restarted manually next time you log in."
msgstr ""
"ਇਹ ਵਿੰਡੋ ”ਮੌਜੂਦਾ ਸੈਟਅੱਪ ਸੰਭਾਲੋ” ਵਾਸਤੇ ਸਹਾਇਕ ਨਹੀਂ ਅਤੇ ਅਗਲੀ ਵਾਰ ਜਦੋਂ ਤੁਸੀਂ"
" ਲਾਗਇਨ "
"ਕਰੋਗੇ ਤਾਂ ਮੁੜ ਸ਼ੁਰੂ ਕਰਨਾ ਪਵੇਗਾ।"
" ਲਾਗਇਨ ਕਰੋਗੇ ਤਾਂ ਮੁੜ ਸ਼ੁਰੂ "
"ਕਰਨਾ ਪਵੇਗਾ।"
#: src/x11/window-props.c:559
#: src/x11/window-props.c:569
#, c-format
msgid "%s (on %s)"
msgstr "%s (%s ਉੱਤੇ)"
#~ msgid "Move window one workspace to the left"
#~ msgstr "ਵਿੰਡੋ ਨੂੰ ਇੱਕ ਵਰਕਸਪੇਸ ਖੱਬੇ ਵੱਲ ਲਿਜਾਓ"
#~ msgid "Move window one workspace to the right"
#~ msgstr "ਵਿੰਡੋ ਨੂੰ ਇੱਕ ਵਰਕਸਪੇਸ ਸੱਜੇ ਵੱਲ ਲਿਜਾਓ"
#~ msgid "Move to workspace left"
#~ msgstr "ਖੱਬੇ ਵਰਕਸਪੇਸ 'ਚ ਭੇਜੋ"
#~ msgid "Move to workspace right"
#~ msgstr "ਸੱਜੇ ਵਰਕਸਪੇਸ 'ਚ ਭੇਜੋ"
#~ msgid "Toggle shaded state"
#~ msgstr "ਰੰਗਤ ਸਥਿਤੀ ਬਦਲੋ"
#~ msgid "Failed to scan themes directory: %s\n"
#~ msgstr "ਥੀਮ ਡਾਇਰੈਕਟਰੀ ਦੀ ਜਾਂਚ ਅਸਫਲ: %s\n"
@@ -1929,9 +1979,6 @@ msgstr "%s (%s ਉੱਤੇ)"
#~ msgid "Commands to run in response to keybindings"
#~ msgstr "ਸਵਿੱਚ ਸੰਬੰਧਾਂ ਦੇ ਉੱਤਰ ਵਿਚ ਚੱਲਣ ਵਾਲੀ ਕਮਾਂਡ"
#~ msgid "Compositing Manager"
#~ msgstr "ਕੰਪੋਜਿੰਗ ਮੈਨੇਜਰ"
#~ msgid "Control how new windows get focus"
#~ msgstr "ਕੰਟਰੋਲ ਕਿ ਕਿਵੇਂ ਨਵੀਂ ਵਿੰਡੋ ਫੋਕਸ ਹੋਣ"

View File

@@ -9,10 +9,9 @@ msgid ""
msgstr ""
"Project-Id-Version: metacity.HEAD.ro\n"
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/mutter/issues\n"
"POT-Creation-Date: 2019-08-06 00:49+0000\n"
"PO-Revision-Date: 2019-08-18 14:25+0300\n"
"Last-Translator: Florentina Mușat <florentina.musat.28 [at] gmail [dot] "
"com>\n"
"POT-Creation-Date: 2020-02-23 17:41+0000\n"
"PO-Revision-Date: 2020-03-19 11:58+0100\n"
"Last-Translator: Daniel Șerbănescu <daniel [at] serbanescu [dot] dk>\n"
"Language-Team: Gnome Romanian Translation Team <gnomero-list@lists."
"sourceforge.net>\n"
"Language: ro\n"
@@ -21,7 +20,7 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n==0 || (n!=1 && n%100>=1 && n"
"%100<=19) ? 1 : 2);\n"
"X-Generator: Poedit 2.2.3\n"
"X-Generator: Poedit 2.3\n"
"X-Project-Style: gnome\n"
"X-Poedit-SourceCharset: UTF-8\n"
@@ -433,19 +432,32 @@ msgstr "Modificator de utilizat pentru a localiza pointerul"
msgid "This key will initiate the “locate pointer” action."
msgstr "Această cheie va iniția acțiunea „localizează pointer”."
#: data/org.gnome.mutter.gschema.xml.in:155
#: data/org.gnome.mutter.gschema.xml.in:142
msgid "Timeout for check-alive ping"
msgstr "A expirat limita de timp pentru check-alive ping"
#: data/org.gnome.mutter.gschema.xml.in:143
msgid ""
"Number of milliseconds a client has to respond to a ping request in order to "
"not be detected as frozen. Using 0 will disable the alive check completely."
msgstr ""
"Număr de millisecunde în care un client trebuie să răspundă la o cerere de "
"ping pentru a nu fi detectat ca înghețat. Utilizând 0 va dezactiva check-"
"alive complet."
#: data/org.gnome.mutter.gschema.xml.in:165
msgid "Select window from tab popup"
msgstr "Selectează fereastra din popup-ul tabului"
#: data/org.gnome.mutter.gschema.xml.in:160
#: data/org.gnome.mutter.gschema.xml.in:170
msgid "Cancel tab popup"
msgstr "Elimină popup-ul pentru tab"
#: data/org.gnome.mutter.gschema.xml.in:165
#: data/org.gnome.mutter.gschema.xml.in:175
msgid "Switch monitor configurations"
msgstr "Comută configurațiile de monitor"
#: data/org.gnome.mutter.gschema.xml.in:170
#: data/org.gnome.mutter.gschema.xml.in:180
msgid "Rotates the built-in monitor configuration"
msgstr "Rotește configurarea de monitor integrat"
@@ -561,7 +573,7 @@ msgstr ""
#. TRANSLATORS: This string refers to a button that switches between
#. * different modes.
#.
#: src/backends/meta-input-settings.c:2531
#: src/backends/meta-input-settings.c:2567
#, c-format
msgid "Mode Switch (Group %d)"
msgstr "Comutator de mod (grupul %d)"
@@ -569,11 +581,11 @@ msgstr "Comutator de mod (grupul %d)"
#. TRANSLATORS: This string refers to an action, cycles drawing tablets'
#. * mapping through the available outputs.
#.
#: src/backends/meta-input-settings.c:2554
#: src/backends/meta-input-settings.c:2590
msgid "Switch monitor"
msgstr "Comută monitorul"
#: src/backends/meta-input-settings.c:2556
#: src/backends/meta-input-settings.c:2592
msgid "Show on-screen help"
msgstr "Arată ajutorul virtual"
@@ -605,13 +617,13 @@ msgid "%s %s"
msgstr "%s %s"
#. Translators: this string will appear in Sysprof
#: src/backends/meta-profiler.c:82
#: src/backends/meta-profiler.c:79
msgid "Compositor"
msgstr "Compunător"
#. This probably means that a non-WM compositor like xcompmgr is running;
#. * we have no way to get it to exit
#: src/compositor/compositor.c:510
#: src/compositor/compositor.c:533
#, c-format
msgid ""
"Another compositing manager is already running on screen %i on display “%s”."
@@ -623,47 +635,47 @@ msgstr ""
msgid "Bell event"
msgstr "Eveniment sonor"
#: src/core/main.c:185
#: src/core/main.c:190
msgid "Disable connection to session manager"
msgstr "Dezactivează conexiunea la administratorul de sesiune"
#: src/core/main.c:191
#: src/core/main.c:196
msgid "Replace the running window manager"
msgstr "Înlocuiește administratorul de ferestre curent"
#: src/core/main.c:197
#: src/core/main.c:202
msgid "Specify session management ID"
msgstr "Specifică ID-ul administrării de sesiune"
#: src/core/main.c:202
#: src/core/main.c:207
msgid "X Display to use"
msgstr "Ecranul X ce va fi folosit"
#: src/core/main.c:208
#: src/core/main.c:213
msgid "Initialize session from savefile"
msgstr "Inițializează sesiunea din fișierul salvat"
#: src/core/main.c:214
#: src/core/main.c:219
msgid "Make X calls synchronous"
msgstr "Realizează apelurile X sincron"
#: src/core/main.c:221
#: src/core/main.c:226
msgid "Run as a wayland compositor"
msgstr "Rulează ca un compunător wayland"
#: src/core/main.c:227
#: src/core/main.c:232
msgid "Run as a nested compositor"
msgstr "Rulează ca un compunător imbricat"
#: src/core/main.c:233
#: src/core/main.c:238
msgid "Run wayland compositor without starting Xwayland"
msgstr "Rulează compunătorul wayland fără a porni Xwayland"
#: src/core/main.c:241
#: src/core/main.c:246
msgid "Run as a full display server, rather than nested"
msgstr "Rulează ca server de afișare și nu ca server imbricat"
#: src/core/main.c:247
#: src/core/main.c:252
msgid "Run with X11 backend"
msgstr "Rulează cu backend X11"
@@ -717,21 +729,21 @@ msgstr "Afișează versiunea"
msgid "Mutter plugin to use"
msgstr "Modul Mutter de utilizat"
#: src/core/prefs.c:1849
#: src/core/prefs.c:1911
#, c-format
msgid "Workspace %d"
msgstr "Spațiu de lucru %d"
#: src/core/util.c:121
#: src/core/util.c:122
msgid "Mutter was compiled without support for verbose mode\n"
msgstr "Mutter a fost compilat fără suport pentru modul detaliat\n"
#: src/wayland/meta-wayland-tablet-pad.c:567
#: src/wayland/meta-wayland-tablet-pad.c:568
#, c-format
msgid "Mode Switch: Mode %d"
msgstr "Comutator de mod: modul %d"
#: src/x11/meta-x11-display.c:671
#: src/x11/meta-x11-display.c:676
#, c-format
msgid ""
"Display “%s” already has a window manager; try using the --replace option to "
@@ -741,21 +753,21 @@ msgstr ""
"opțiunea --replace (înlocuiește) pentru a înlocui administratorul de "
"ferestre curent."
#: src/x11/meta-x11-display.c:1032
#: src/x11/meta-x11-display.c:1089
msgid "Failed to initialize GDK\n"
msgstr "Nu s-a putut inițializa GDK\n"
#: src/x11/meta-x11-display.c:1056
#: src/x11/meta-x11-display.c:1113
#, c-format
msgid "Failed to open X Window System display “%s”\n"
msgstr "Nu s-a putut deschide afișajul sistemului de ferestre X „%s”\n"
#: src/x11/meta-x11-display.c:1140
#: src/x11/meta-x11-display.c:1196
#, c-format
msgid "Screen %d on display “%s” is invalid\n"
msgstr "Ecranul %d de pe afișajul „%s” nu este valid\n"
#: src/x11/meta-x11-selection-input-stream.c:445
#: src/x11/meta-x11-selection-input-stream.c:460
#, c-format
msgid "Format %s not supported"
msgstr "Formatul %s nu este suportat"

View File

@@ -10,8 +10,8 @@ msgid ""
msgstr ""
"Project-Id-Version: mutter\n"
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/mutter/issues\n"
"POT-Creation-Date: 2019-08-21 20:17+0000\n"
"PO-Revision-Date: 2019-08-22 19:56+0200\n"
"POT-Creation-Date: 2020-02-23 17:41+0000\n"
"PO-Revision-Date: 2020-03-08 21:20+0100\n"
"Last-Translator: Марко М. Костић <marko.m.kostic@gmail.com>\n"
"Language-Team: српски <gnome-sr@googlegroups.org>\n"
"Language: sr\n"
@@ -21,7 +21,7 @@ msgstr ""
"Plural-Forms: nplurals=4; plural=n==1? 3 : n%10==1 && n%100!=11 ? 0 : n"
"%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
"X-Project-Style: gnome\n"
"X-Generator: Poedit 2.2.3\n"
"X-Generator: Poedit 2.3\n"
#: data/50-mutter-navigation.xml:6
msgid "Navigation"
@@ -423,19 +423,32 @@ msgstr "Тастер који се користи за проналажење п
msgid "This key will initiate the “locate pointer” action."
msgstr "Овај тастер ће покренути „пронађи показивач“ радњу"
#: data/org.gnome.mutter.gschema.xml.in:155
#: data/org.gnome.mutter.gschema.xml.in:142
msgid "Timeout for check-alive ping"
msgstr "Време истицања провере живахности"
#: data/org.gnome.mutter.gschema.xml.in:143
msgid ""
"Number of milliseconds a client has to respond to a ping request in order to "
"not be detected as frozen. Using 0 will disable the alive check completely."
msgstr ""
"Број милисекунди за које клијент мора одговорити на пинг захтев да се не би "
"сматрао замрзнутим. Унос броја 0 ће онемогућити проверу живахности у "
"потпуности."
#: data/org.gnome.mutter.gschema.xml.in:165
msgid "Select window from tab popup"
msgstr "Бира прозор из језичка искакања"
#: data/org.gnome.mutter.gschema.xml.in:160
#: data/org.gnome.mutter.gschema.xml.in:170
msgid "Cancel tab popup"
msgstr "Отказивање језичка искакања"
#: data/org.gnome.mutter.gschema.xml.in:165
#: data/org.gnome.mutter.gschema.xml.in:175
msgid "Switch monitor configurations"
msgstr "Мења подешавања монитора"
#: data/org.gnome.mutter.gschema.xml.in:170
#: data/org.gnome.mutter.gschema.xml.in:180
msgid "Rotates the built-in monitor configuration"
msgstr "Заокреће уграђена подешавања монитора"
@@ -549,7 +562,7 @@ msgstr ""
#. TRANSLATORS: This string refers to a button that switches between
#. * different modes.
#.
#: src/backends/meta-input-settings.c:2531
#: src/backends/meta-input-settings.c:2567
#, c-format
msgid "Mode Switch (Group %d)"
msgstr "Режим прекидача (група %d)"
@@ -557,11 +570,11 @@ msgstr "Режим прекидача (група %d)"
#. TRANSLATORS: This string refers to an action, cycles drawing tablets'
#. * mapping through the available outputs.
#.
#: src/backends/meta-input-settings.c:2554
#: src/backends/meta-input-settings.c:2590
msgid "Switch monitor"
msgstr "Промени монитор"
#: src/backends/meta-input-settings.c:2556
#: src/backends/meta-input-settings.c:2592
msgid "Show on-screen help"
msgstr "Прикажи помоћ на екрану"
@@ -593,13 +606,13 @@ msgid "%s %s"
msgstr "%s %s"
#. Translators: this string will appear in Sysprof
#: src/backends/meta-profiler.c:82
#: src/backends/meta-profiler.c:79
msgid "Compositor"
msgstr "Састављач"
#. This probably means that a non-WM compositor like xcompmgr is running;
#. * we have no way to get it to exit
#: src/compositor/compositor.c:505
#: src/compositor/compositor.c:533
#, c-format
msgid ""
"Another compositing manager is already running on screen %i on display “%s”."
@@ -610,47 +623,47 @@ msgstr ""
msgid "Bell event"
msgstr "Звонца"
#: src/core/main.c:185
#: src/core/main.c:190
msgid "Disable connection to session manager"
msgstr "Искључује везу са управником сесије"
#: src/core/main.c:191
#: src/core/main.c:196
msgid "Replace the running window manager"
msgstr "Мења текућег управника прозорима"
#: src/core/main.c:197
#: src/core/main.c:202
msgid "Specify session management ID"
msgstr "Наводи ИБ управника сесије"
#: src/core/main.c:202
#: src/core/main.c:207
msgid "X Display to use"
msgstr "Икс екран који ће бити коришћен"
#: src/core/main.c:208
#: src/core/main.c:213
msgid "Initialize session from savefile"
msgstr "Покреће сесију из датотеке чувања"
#: src/core/main.c:214
#: src/core/main.c:219
msgid "Make X calls synchronous"
msgstr "Чини Икс позиве усклађеним"
#: src/core/main.c:221
#: src/core/main.c:226
msgid "Run as a wayland compositor"
msgstr "Ради као вејлендов композитор"
#: src/core/main.c:227
#: src/core/main.c:232
msgid "Run as a nested compositor"
msgstr "Ради као угнежђени композитор"
#: src/core/main.c:233
#: src/core/main.c:238
msgid "Run wayland compositor without starting Xwayland"
msgstr "Ради као вејлендов композитор без покретања Икс-вејленда"
#: src/core/main.c:241
#: src/core/main.c:246
msgid "Run as a full display server, rather than nested"
msgstr "Ради као пуни сервер приказа, уместо као угнеждени"
#: src/core/main.c:247
#: src/core/main.c:252
msgid "Run with X11 backend"
msgstr "Покрени на Икс11 позадинцу"
@@ -703,21 +716,21 @@ msgstr "Исписује издање"
msgid "Mutter plugin to use"
msgstr "Прикључци Матера за коришћење"
#: src/core/prefs.c:1849
#: src/core/prefs.c:1911
#, c-format
msgid "Workspace %d"
msgstr "%d. радни простор"
#: src/core/util.c:121
#: src/core/util.c:122
msgid "Mutter was compiled without support for verbose mode\n"
msgstr "Матер је преведен без подршке за опширан режим\n"
#: src/wayland/meta-wayland-tablet-pad.c:567
#: src/wayland/meta-wayland-tablet-pad.c:568
#, c-format
msgid "Mode Switch: Mode %d"
msgstr "Режим прекидача: Режим %d"
#: src/x11/meta-x11-display.c:678
#: src/x11/meta-x11-display.c:676
#, c-format
msgid ""
"Display “%s” already has a window manager; try using the --replace option to "
@@ -726,21 +739,21 @@ msgstr ""
"Приказ „%s“ већ има управника прозора; пробајте да користите опцију „--"
"replace“ да замените тренутног управника прозора."
#: src/x11/meta-x11-display.c:1039
#: src/x11/meta-x11-display.c:1089
msgid "Failed to initialize GDK\n"
msgstr "Нисам успео да покренем ГДК\n"
#: src/x11/meta-x11-display.c:1063
#: src/x11/meta-x11-display.c:1113
#, c-format
msgid "Failed to open X Window System display “%s”\n"
msgstr "Нисам успео да отворим екран „%s“ Икс система прозора\n"
#: src/x11/meta-x11-display.c:1146
#: src/x11/meta-x11-display.c:1196
#, c-format
msgid "Screen %d on display “%s” is invalid\n"
msgstr "Приказ „%d“ на екрану „%s“ није исправан\n"
#: src/x11/meta-x11-selection-input-stream.c:445
#: src/x11/meta-x11-selection-input-stream.c:460
#, c-format
msgid "Format %s not supported"
msgstr "Формат %s није подржан"

View File

@@ -10,15 +10,15 @@ msgid ""
msgstr ""
"Project-Id-Version: mutter\n"
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/mutter/issues\n"
"POT-Creation-Date: 2019-08-06 00:49+0000\n"
"PO-Revision-Date: 2019-08-27 20:40+0200\n"
"POT-Creation-Date: 2020-02-23 17:41+0000\n"
"PO-Revision-Date: 2020-03-02 19:49+0100\n"
"Last-Translator: Anders Jonsson <anders.jonsson@norsjovallen.se>\n"
"Language-Team: Swedish <tp-sv@listor.tp-sv.se>\n"
"Language: sv\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: Poedit 2.2.3\n"
"X-Generator: Poedit 2.3\n"
#: data/50-mutter-navigation.xml:6
msgid "Navigation"
@@ -421,19 +421,32 @@ msgstr "Modifierare att använda för att hitta muspekaren"
msgid "This key will initiate the “locate pointer” action."
msgstr "Denna tangent kommer att initiera åtgärden ”hitta muspekare”."
#: data/org.gnome.mutter.gschema.xml.in:155
#: data/org.gnome.mutter.gschema.xml.in:142
msgid "Timeout for check-alive ping"
msgstr "Tidsgräns för åtkomlighetstest med ping"
#: data/org.gnome.mutter.gschema.xml.in:143
msgid ""
"Number of milliseconds a client has to respond to a ping request in order to "
"not be detected as frozen. Using 0 will disable the alive check completely."
msgstr ""
"Antal millisekunder som en klient har på sig att svara på en pingförfrågan "
"för att inte anses vara frusen. Att använda 0 kommer inaktivera kontrollen "
"helt."
#: data/org.gnome.mutter.gschema.xml.in:165
msgid "Select window from tab popup"
msgstr "Välj fönster från flik-popup"
#: data/org.gnome.mutter.gschema.xml.in:160
#: data/org.gnome.mutter.gschema.xml.in:170
msgid "Cancel tab popup"
msgstr "Avbryt flik-popup"
#: data/org.gnome.mutter.gschema.xml.in:165
#: data/org.gnome.mutter.gschema.xml.in:175
msgid "Switch monitor configurations"
msgstr "Växla skärmkonfiguration"
#: data/org.gnome.mutter.gschema.xml.in:170
#: data/org.gnome.mutter.gschema.xml.in:180
msgid "Rotates the built-in monitor configuration"
msgstr "Roterar den inbyggda skärmkonfigurationen"
@@ -547,7 +560,7 @@ msgstr ""
#. TRANSLATORS: This string refers to a button that switches between
#. * different modes.
#.
#: src/backends/meta-input-settings.c:2531
#: src/backends/meta-input-settings.c:2567
#, c-format
msgid "Mode Switch (Group %d)"
msgstr "Lägesväxel (grupp %d)"
@@ -555,11 +568,11 @@ msgstr "Lägesväxel (grupp %d)"
#. TRANSLATORS: This string refers to an action, cycles drawing tablets'
#. * mapping through the available outputs.
#.
#: src/backends/meta-input-settings.c:2554
#: src/backends/meta-input-settings.c:2590
msgid "Switch monitor"
msgstr "Växla skärm"
#: src/backends/meta-input-settings.c:2556
#: src/backends/meta-input-settings.c:2592
msgid "Show on-screen help"
msgstr "Visa hjälp på skärmen"
@@ -591,13 +604,13 @@ msgid "%s %s"
msgstr "%s %s"
#. Translators: this string will appear in Sysprof
#: src/backends/meta-profiler.c:82
#: src/backends/meta-profiler.c:79
msgid "Compositor"
msgstr "Kompositionshanterare"
#. This probably means that a non-WM compositor like xcompmgr is running;
#. * we have no way to get it to exit
#: src/compositor/compositor.c:510
#: src/compositor/compositor.c:533
#, c-format
msgid ""
"Another compositing manager is already running on screen %i on display “%s”."
@@ -607,47 +620,47 @@ msgstr "En annan kompositionshanterare körs redan på skärm %i på display ”
msgid "Bell event"
msgstr "Ljudsignalhändelse"
#: src/core/main.c:185
#: src/core/main.c:190
msgid "Disable connection to session manager"
msgstr "Inaktivera anslutning till sessionshanteraren"
#: src/core/main.c:191
#: src/core/main.c:196
msgid "Replace the running window manager"
msgstr "Ersätt körande fönsterhanteraren"
#: src/core/main.c:197
#: src/core/main.c:202
msgid "Specify session management ID"
msgstr "Ange sessionshanteringsid"
#: src/core/main.c:202
#: src/core/main.c:207
msgid "X Display to use"
msgstr "X-display att använda"
#: src/core/main.c:208
#: src/core/main.c:213
msgid "Initialize session from savefile"
msgstr "Initiera session från sparandefil"
#: src/core/main.c:214
#: src/core/main.c:219
msgid "Make X calls synchronous"
msgstr "Gör X-anrop synkrona"
#: src/core/main.c:221
#: src/core/main.c:226
msgid "Run as a wayland compositor"
msgstr "Kör som en wayland-kompositionshanterare"
#: src/core/main.c:227
#: src/core/main.c:232
msgid "Run as a nested compositor"
msgstr "Kör som en nästlad kompositionshanterare"
#: src/core/main.c:233
#: src/core/main.c:238
msgid "Run wayland compositor without starting Xwayland"
msgstr "Kör wayland-kompositionshanteraren utan att starta Xwayland"
#: src/core/main.c:241
#: src/core/main.c:246
msgid "Run as a full display server, rather than nested"
msgstr "Kör som en full display-tjänst, i stället för nästlad"
#: src/core/main.c:247
#: src/core/main.c:252
msgid "Run with X11 backend"
msgstr "Kör med X11-gränssnitt"
@@ -700,21 +713,21 @@ msgstr "Skriv ut version"
msgid "Mutter plugin to use"
msgstr "Mutter-insticksmodul att använda"
#: src/core/prefs.c:1849
#: src/core/prefs.c:1911
#, c-format
msgid "Workspace %d"
msgstr "Arbetsyta %d"
#: src/core/util.c:121
#: src/core/util.c:122
msgid "Mutter was compiled without support for verbose mode\n"
msgstr "Mutter kompilerades utan stöd för utförligt läge\n"
#: src/wayland/meta-wayland-tablet-pad.c:567
#: src/wayland/meta-wayland-tablet-pad.c:568
#, c-format
msgid "Mode Switch: Mode %d"
msgstr "Lägesväxel: Läge %d"
#: src/x11/meta-x11-display.c:671
#: src/x11/meta-x11-display.c:676
#, c-format
msgid ""
"Display “%s” already has a window manager; try using the --replace option to "
@@ -723,21 +736,21 @@ msgstr ""
"Display ”%s” har redan en fönsterhanterare; försök med flaggan --replace för "
"att ersätta den aktuella fönsterhanteraren."
#: src/x11/meta-x11-display.c:1032
#: src/x11/meta-x11-display.c:1089
msgid "Failed to initialize GDK\n"
msgstr "Misslyckades med att initiera GDK\n"
#: src/x11/meta-x11-display.c:1056
#: src/x11/meta-x11-display.c:1113
#, c-format
msgid "Failed to open X Window System display “%s”\n"
msgstr "Misslyckades med att öppna X Window System-displayen ”%s”\n"
#: src/x11/meta-x11-display.c:1140
#: src/x11/meta-x11-display.c:1196
#, c-format
msgid "Screen %d on display “%s” is invalid\n"
msgstr "Skärm %d på display ”%s” är ogiltig\n"
#: src/x11/meta-x11-selection-input-stream.c:445
#: src/x11/meta-x11-selection-input-stream.c:460
#, c-format
msgid "Format %s not supported"
msgstr "Formatet %s stöds ej"

3470
po/uk.po

File diff suppressed because it is too large Load Diff

View File

@@ -114,6 +114,17 @@ struct _MetaInputSettingsClass
GDesktopStylusButtonAction primary,
GDesktopStylusButtonAction secondary,
GDesktopStylusButtonAction tertiary);
void (* set_mouse_middle_click_emulation) (MetaInputSettings *settings,
ClutterInputDevice *device,
gboolean enabled);
void (* set_touchpad_middle_click_emulation) (MetaInputSettings *settings,
ClutterInputDevice *device,
gboolean enabled);
void (* set_trackball_middle_click_emulation) (MetaInputSettings *settings,
ClutterInputDevice *device,
gboolean enabled);
gboolean (* has_two_finger_scroll) (MetaInputSettings *settings,
ClutterInputDevice *device);
gboolean (* is_trackball_device) (MetaInputSettings *settings,

View File

@@ -418,6 +418,39 @@ get_settings_for_device_type (MetaInputSettings *input_settings,
}
}
static void
update_middle_click_emulation (MetaInputSettings *input_settings,
GSettings *settings,
ClutterInputDevice *device)
{
ConfigBoolFunc func;
const gchar *key = "middle-click-emulation";
MetaInputSettingsPrivate *priv = meta_input_settings_get_instance_private (input_settings);
if (!settings)
return;
if (settings == priv->mouse_settings)
func = META_INPUT_SETTINGS_GET_CLASS (input_settings)->set_mouse_middle_click_emulation;
else if (settings == priv->touchpad_settings)
func = META_INPUT_SETTINGS_GET_CLASS (input_settings)->set_touchpad_middle_click_emulation;
else if (settings == priv->trackball_settings)
func = META_INPUT_SETTINGS_GET_CLASS (input_settings)->set_trackball_middle_click_emulation;
else
return;
if (device)
{
settings_device_set_bool_setting (input_settings, device, func,
g_settings_get_boolean (settings, key));
}
else
{
settings_set_bool_setting (input_settings, CLUTTER_POINTER_DEVICE, func,
g_settings_get_boolean (settings, key));
}
}
static void
update_device_speed (MetaInputSettings *input_settings,
ClutterInputDevice *device)
@@ -1141,6 +1174,8 @@ meta_input_settings_changed_cb (GSettings *settings,
update_device_natural_scroll (input_settings, NULL);
else if (strcmp (key, "accel-profile") == 0)
update_pointer_accel_profile (input_settings, settings, NULL);
else if (strcmp (key, "middle-click-emulation") == 0)
update_middle_click_emulation (input_settings, settings, NULL);
}
else if (settings == priv->touchpad_settings)
{
@@ -1164,6 +1199,8 @@ meta_input_settings_changed_cb (GSettings *settings,
update_touchpad_two_finger_scroll (input_settings, NULL);
else if (strcmp (key, "click-method") == 0)
update_touchpad_click_method (input_settings, NULL);
else if (strcmp (key, "middle-click-emulation") == 0)
update_middle_click_emulation (input_settings, settings, NULL);
}
else if (settings == priv->trackball_settings)
{
@@ -1171,6 +1208,8 @@ meta_input_settings_changed_cb (GSettings *settings,
update_trackball_scroll_button (input_settings, NULL);
else if (strcmp (key, "accel-profile") == 0)
update_pointer_accel_profile (input_settings, settings, NULL);
else if (strcmp (key, "middle-click-emulation") == 0)
update_middle_click_emulation (input_settings, settings, NULL);
}
else if (settings == priv->keyboard_settings)
{
@@ -1622,6 +1661,8 @@ check_add_mappable_device (MetaInputSettings *input_settings,
#ifdef HAVE_LIBWACOM
if (device_type == CLUTTER_TABLET_DEVICE ||
device_type == CLUTTER_PEN_DEVICE ||
device_type == CLUTTER_ERASER_DEVICE ||
device_type == CLUTTER_PAD_DEVICE)
{
WacomError *error = libwacom_error_new ();
@@ -1687,6 +1728,10 @@ apply_device_settings (MetaInputSettings *input_settings,
device);
load_keyboard_a11y_settings (input_settings, device);
load_pointer_a11y_settings (input_settings, device);
update_middle_click_emulation (input_settings, priv->mouse_settings, device);
update_middle_click_emulation (input_settings, priv->touchpad_settings, device);
update_middle_click_emulation (input_settings, priv->trackball_settings, device);
}
static void

View File

@@ -152,6 +152,7 @@ find_unassigned_crtc (MetaOutput *output,
typedef struct
{
MetaMonitorManager *monitor_manager;
MetaMonitorsConfig *config;
MetaLogicalMonitorConfig *logical_monitor_config;
MetaMonitorConfig *monitor_config;
GPtrArray *crtc_infos;
@@ -173,7 +174,7 @@ assign_monitor_crtc (MetaMonitor *monitor,
MetaMonitorTransform crtc_transform;
int crtc_x, crtc_y;
float x_offset, y_offset;
float scale;
float scale = 0.0;
float width, height;
MetaCrtcMode *crtc_mode;
graphene_rect_t crtc_layout;
@@ -209,7 +210,17 @@ assign_monitor_crtc (MetaMonitor *monitor,
x_offset = data->logical_monitor_config->layout.x;
y_offset = data->logical_monitor_config->layout.y;
scale = data->logical_monitor_config->scale;
switch (data->config->layout_mode)
{
case META_LOGICAL_MONITOR_LAYOUT_MODE_LOGICAL:
scale = data->logical_monitor_config->scale;
break;
case META_LOGICAL_MONITOR_LAYOUT_MODE_PHYSICAL:
scale = 1.0;
break;
}
crtc_mode = monitor_crtc_mode->crtc_mode;
if (meta_monitor_transform_is_rotated (crtc_transform))
@@ -272,6 +283,7 @@ assign_monitor_crtc (MetaMonitor *monitor,
static gboolean
assign_monitor_crtcs (MetaMonitorManager *manager,
MetaMonitorsConfig *config,
MetaLogicalMonitorConfig *logical_monitor_config,
MetaMonitorConfig *monitor_config,
GPtrArray *crtc_infos,
@@ -307,6 +319,7 @@ assign_monitor_crtcs (MetaMonitorManager *manager,
data = (MonitorAssignmentData) {
.monitor_manager = manager,
.config = config,
.logical_monitor_config = logical_monitor_config,
.monitor_config = monitor_config,
.crtc_infos = crtc_infos,
@@ -324,6 +337,7 @@ assign_monitor_crtcs (MetaMonitorManager *manager,
static gboolean
assign_logical_monitor_crtcs (MetaMonitorManager *manager,
MetaMonitorsConfig *config,
MetaLogicalMonitorConfig *logical_monitor_config,
GPtrArray *crtc_infos,
GPtrArray *output_infos,
@@ -337,6 +351,7 @@ assign_logical_monitor_crtcs (MetaMonitorManager *manager,
MetaMonitorConfig *monitor_config = l->data;
if (!assign_monitor_crtcs (manager,
config,
logical_monitor_config,
monitor_config,
crtc_infos, output_infos,
@@ -395,7 +410,8 @@ meta_monitor_config_manager_assign (MetaMonitorManager *manager,
{
MetaLogicalMonitorConfig *logical_monitor_config = l->data;
if (!assign_logical_monitor_crtcs (manager, logical_monitor_config,
if (!assign_logical_monitor_crtcs (manager,
config, logical_monitor_config,
crtc_infos, output_infos,
reserved_crtcs, error))
{

View File

@@ -714,8 +714,6 @@ meta_monitor_manager_dummy_get_capabilities (MetaMonitorManager *manager)
MetaMonitorManagerCapability capabilities =
META_MONITOR_MANAGER_CAPABILITY_NONE;
capabilities |= META_MONITOR_MANAGER_CAPABILITY_MIRRORING;
if (meta_settings_is_experimental_feature_enabled (
settings,
META_EXPERIMENTAL_FEATURE_SCALE_MONITOR_FRAMEBUFFER))

View File

@@ -43,9 +43,8 @@
typedef enum _MetaMonitorManagerCapability
{
META_MONITOR_MANAGER_CAPABILITY_NONE = 0,
META_MONITOR_MANAGER_CAPABILITY_MIRRORING = (1 << 0),
META_MONITOR_MANAGER_CAPABILITY_LAYOUT_MODE = (1 << 1),
META_MONITOR_MANAGER_CAPABILITY_GLOBAL_SCALE_REQUIRED = (1 << 2)
META_MONITOR_MANAGER_CAPABILITY_LAYOUT_MODE = (1 << 0),
META_MONITOR_MANAGER_CAPABILITY_GLOBAL_SCALE_REQUIRED = (1 << 1)
} MetaMonitorManagerCapability;
/* Equivalent to the 'method' enum in org.gnome.Mutter.DisplayConfig */

View File

@@ -1446,12 +1446,6 @@ meta_monitor_manager_handle_get_current_state (MetaDBusDisplayConfig *skeleton,
g_variant_builder_init (&properties_builder, G_VARIANT_TYPE ("a{sv}"));
capabilities = meta_monitor_manager_get_capabilities (manager);
if ((capabilities & META_MONITOR_MANAGER_CAPABILITY_MIRRORING) == 0)
{
g_variant_builder_add (&properties_builder, "{sv}",
"supports-mirroring",
g_variant_new_boolean (FALSE));
}
g_variant_builder_add (&properties_builder, "{sv}",
"layout-mode",

View File

@@ -456,10 +456,7 @@ meta_screen_cast_stream_src_maybe_record_frame (MetaScreenCastStreamSrc *src)
buffer = pw_stream_dequeue_buffer (priv->pipewire_stream);
if (!buffer)
{
g_warning ("Failed to dequeue at PipeWire buffer");
return;
}
return;
spa_buffer = buffer->buffer;
data = spa_buffer->datas[0].data;
@@ -888,7 +885,7 @@ create_pipewire_source (void)
pipewire_source->pipewire_loop = pw_loop_new (NULL);
if (!pipewire_source->pipewire_loop)
{
g_source_destroy ((GSource *) pipewire_source);
g_source_unref ((GSource *) pipewire_source);
return NULL;
}
@@ -983,6 +980,7 @@ meta_screen_cast_stream_src_finalize (GObject *object)
g_clear_pointer (&priv->pipewire_core, pw_core_disconnect);
g_clear_pointer (&priv->pipewire_context, pw_context_destroy);
g_source_destroy (&priv->pipewire_source->base);
g_source_unref (&priv->pipewire_source->base);
G_OBJECT_CLASS (meta_screen_cast_stream_src_parent_class)->finalize (object);
}

View File

@@ -2,6 +2,7 @@
/*
* Copyright (C) 2014 Red Hat
* Copyright 2020 DisplayLink (UK) Ltd.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
@@ -308,15 +309,16 @@ unset_crtc_cursor (MetaCursorRendererNative *native,
MetaKmsDevice *kms_device;
MetaKmsPlane *cursor_plane;
kms_crtc = meta_crtc_kms_get_kms_crtc (crtc);
kms_device = meta_kms_crtc_get_device (kms_crtc);
cursor_plane = meta_kms_device_get_cursor_plane_for (kms_device, kms_crtc);
g_return_if_fail (cursor_plane);
if (!priv->hw_state_invalidated && !crtc->cursor_renderer_private)
return;
meta_kms_update_unassign_plane (kms_update, kms_crtc, cursor_plane);
kms_crtc = meta_crtc_kms_get_kms_crtc (crtc);
kms_device = meta_kms_crtc_get_device (kms_crtc);
cursor_plane = meta_kms_device_get_cursor_plane_for (kms_device, kms_crtc);
if (cursor_plane)
meta_kms_update_unassign_plane (kms_update, kms_crtc, cursor_plane);
crtc->cursor_renderer_private = NULL;
}
@@ -645,6 +647,67 @@ get_current_relative_transform (MetaCursorSprite *cursor_sprite)
return cursor_priv->preprocess_state.current_relative_transform;
}
static void
has_cursor_plane (MetaLogicalMonitor *logical_monitor,
MetaMonitor *monitor,
MetaOutput *output,
MetaCrtc *crtc,
gpointer user_data)
{
gboolean *has_cursor_planes = user_data;
MetaKmsCrtc *kms_crtc = meta_crtc_kms_get_kms_crtc (crtc);
MetaKmsDevice *kms_device = meta_kms_crtc_get_device (kms_crtc);
*has_cursor_planes &= !!meta_kms_device_get_cursor_plane_for (kms_device,
kms_crtc);
}
static gboolean
crtcs_has_cursor_planes (MetaCursorRenderer *renderer,
MetaCursorSprite *cursor_sprite)
{
MetaCursorRendererNative *cursor_renderer_native =
META_CURSOR_RENDERER_NATIVE (renderer);
MetaCursorRendererNativePrivate *priv =
meta_cursor_renderer_native_get_instance_private (cursor_renderer_native);
MetaBackend *backend = priv->backend;
MetaMonitorManager *monitor_manager =
meta_backend_get_monitor_manager (backend);
GList *logical_monitors;
GList *l;
graphene_rect_t cursor_rect;
cursor_rect = meta_cursor_renderer_calculate_rect (renderer, cursor_sprite);
logical_monitors =
meta_monitor_manager_get_logical_monitors (monitor_manager);
for (l = logical_monitors; l; l = l->next)
{
MetaLogicalMonitor *logical_monitor = l->data;
MetaRectangle logical_monitor_layout;
graphene_rect_t logical_monitor_rect;
gboolean has_cursor_planes;
logical_monitor_layout =
meta_logical_monitor_get_layout (logical_monitor);
logical_monitor_rect =
meta_rectangle_to_graphene_rect (&logical_monitor_layout);
if (!graphene_rect_intersection (&cursor_rect, &logical_monitor_rect,
NULL))
continue;
has_cursor_planes = TRUE;
meta_logical_monitor_foreach_crtc (logical_monitor,
has_cursor_plane,
&has_cursor_planes);
if (!has_cursor_planes)
return FALSE;
}
return TRUE;
}
static gboolean
get_common_crtc_sprite_scale_for_logical_monitors (MetaCursorRenderer *renderer,
MetaCursorSprite *cursor_sprite,
@@ -784,6 +847,9 @@ should_have_hw_cursor (MetaCursorRenderer *renderer,
return FALSE;
}
if (!crtcs_has_cursor_planes (renderer, cursor_sprite))
return FALSE;
texture = meta_cursor_sprite_get_cogl_texture (cursor_sprite);
if (!texture)
return FALSE;
@@ -1327,6 +1393,26 @@ realize_cursor_sprite_from_wl_buffer_for_gpu (MetaCursorRenderer *renderer,
MetaMonitorTransform relative_transform;
uint32_t gbm_format;
if (!get_common_crtc_sprite_scale_for_logical_monitors (renderer,
cursor_sprite,
&relative_scale))
{
unset_can_preprocess (cursor_sprite);
return;
}
if (!get_common_crtc_sprite_transform_for_logical_monitors (renderer,
cursor_sprite,
&relative_transform))
{
unset_can_preprocess (cursor_sprite);
return;
}
set_can_preprocess (cursor_sprite,
relative_scale,
relative_transform);
wl_shm_buffer_begin_access (shm_buffer);
buffer_data = wl_shm_buffer_get_data (shm_buffer);
@@ -1346,18 +1432,6 @@ realize_cursor_sprite_from_wl_buffer_for_gpu (MetaCursorRenderer *renderer,
gbm_format = GBM_FORMAT_ARGB8888;
}
get_common_crtc_sprite_scale_for_logical_monitors (renderer,
cursor_sprite,
&relative_scale);
get_common_crtc_sprite_transform_for_logical_monitors (renderer,
cursor_sprite,
&relative_transform);
set_can_preprocess (cursor_sprite,
relative_scale,
relative_transform);
load_scaled_and_transformed_cursor_sprite (native,
gpu_kms,
cursor_sprite,
@@ -1436,20 +1510,28 @@ realize_cursor_sprite_from_xcursor_for_gpu (MetaCursorRenderer *renderer,
is_cursor_scale_and_transform_valid (renderer, cursor_sprite))
return;
xc_image = meta_cursor_sprite_xcursor_get_current_image (sprite_xcursor);
if (!get_common_crtc_sprite_scale_for_logical_monitors (renderer,
cursor_sprite,
&relative_scale))
{
unset_can_preprocess (cursor_sprite);
return;
}
get_common_crtc_sprite_scale_for_logical_monitors (renderer,
cursor_sprite,
&relative_scale);
get_common_crtc_sprite_transform_for_logical_monitors (renderer,
cursor_sprite,
&relative_transform);
if (!get_common_crtc_sprite_transform_for_logical_monitors (renderer,
cursor_sprite,
&relative_transform))
{
unset_can_preprocess (cursor_sprite);
return;
}
set_can_preprocess (cursor_sprite,
relative_scale,
relative_transform);
xc_image = meta_cursor_sprite_xcursor_get_current_image (sprite_xcursor);
load_scaled_and_transformed_cursor_sprite (native,
gpu_kms,
cursor_sprite,
@@ -1536,6 +1618,38 @@ on_monitors_changed (MetaMonitorManager *monitors,
force_update_hw_cursor (native);
}
static void
init_hw_cursor_support_for_gpu (MetaGpuKms *gpu_kms)
{
MetaKmsDevice *kms_device = meta_gpu_kms_get_kms_device (gpu_kms);
MetaCursorRendererNativeGpuData *cursor_renderer_gpu_data;
struct gbm_device *gbm_device;
uint64_t width, height;
gbm_device = meta_gbm_device_from_gpu (gpu_kms);
if (!gbm_device)
return;
cursor_renderer_gpu_data =
meta_create_cursor_renderer_native_gpu_data (gpu_kms);
if (!meta_kms_device_get_cursor_size (kms_device, &width, &height))
{
width = 64;
height = 64;
}
cursor_renderer_gpu_data->cursor_width = width;
cursor_renderer_gpu_data->cursor_height = height;
}
static void
on_gpu_added_for_cursor (MetaBackend *backend,
MetaGpuKms *gpu_kms)
{
init_hw_cursor_support_for_gpu (gpu_kms);
}
static void
init_hw_cursor_support (MetaCursorRendererNative *cursor_renderer_native)
{
@@ -1548,26 +1662,8 @@ init_hw_cursor_support (MetaCursorRendererNative *cursor_renderer_native)
for (l = gpus; l; l = l->next)
{
MetaGpuKms *gpu_kms = l->data;
MetaKmsDevice *kms_device = meta_gpu_kms_get_kms_device (gpu_kms);
MetaCursorRendererNativeGpuData *cursor_renderer_gpu_data;
struct gbm_device *gbm_device;
uint64_t width, height;
gbm_device = meta_gbm_device_from_gpu (gpu_kms);
if (!gbm_device)
continue;
cursor_renderer_gpu_data =
meta_create_cursor_renderer_native_gpu_data (gpu_kms);
if (!meta_kms_device_get_cursor_size (kms_device, &width, &height))
{
width = 64;
height = 64;
}
cursor_renderer_gpu_data->cursor_width = width;
cursor_renderer_gpu_data->cursor_height = height;
init_hw_cursor_support_for_gpu (gpu_kms);
}
}
@@ -1587,6 +1683,8 @@ meta_cursor_renderer_native_new (MetaBackend *backend)
g_signal_connect_object (monitor_manager, "monitors-changed-internal",
G_CALLBACK (on_monitors_changed),
cursor_renderer_native, 0);
g_signal_connect (backend, "gpu-added",
G_CALLBACK (on_gpu_added_for_cursor), NULL);
priv->backend = backend;
priv->hw_state_invalidated = TRUE;

View File

@@ -400,6 +400,13 @@ is_mouse_device (ClutterInputDevice *device)
!has_udev_property (device, "ID_INPUT_POINTINGSTICK"));
}
static gboolean
meta_input_settings_native_is_touchpad_device (MetaInputSettings *settings,
ClutterInputDevice *device)
{
return has_udev_property (device, "ID_INPUT_TOUCHPAD");
}
static gboolean
meta_input_settings_native_is_trackball_device (MetaInputSettings *settings,
ClutterInputDevice *device)
@@ -562,6 +569,60 @@ meta_input_settings_native_set_stylus_button_map (MetaInputSettings *se
action_to_evcode (tertiary));
}
static void
meta_input_settings_native_set_mouse_middle_click_emulation (MetaInputSettings *settings,
ClutterInputDevice *device,
gboolean enabled)
{
struct libinput_device *libinput_device;
if (!is_mouse_device (device))
return;
libinput_device = meta_input_device_native_get_libinput_device (device);
if (!libinput_device)
return;
if (libinput_device_config_middle_emulation_is_available (libinput_device))
libinput_device_config_middle_emulation_set_enabled (libinput_device, enabled);
}
static void
meta_input_settings_native_set_touchpad_middle_click_emulation (MetaInputSettings *settings,
ClutterInputDevice *device,
gboolean enabled)
{
struct libinput_device *libinput_device;
if (!meta_input_settings_native_is_touchpad_device (settings, device))
return;
libinput_device = meta_input_device_native_get_libinput_device (device);
if (!libinput_device)
return;
if (libinput_device_config_middle_emulation_is_available (libinput_device))
libinput_device_config_middle_emulation_set_enabled (libinput_device, enabled);
}
static void
meta_input_settings_native_set_trackball_middle_click_emulation (MetaInputSettings *settings,
ClutterInputDevice *device,
gboolean enabled)
{
struct libinput_device *libinput_device;
if (!meta_input_settings_native_is_trackball_device (settings, device))
return;
libinput_device = meta_input_device_native_get_libinput_device (device);
if (!libinput_device)
return;
if (libinput_device_config_middle_emulation_is_available (libinput_device))
libinput_device_config_middle_emulation_set_enabled (libinput_device, enabled);
}
static void
meta_input_settings_native_class_init (MetaInputSettingsNativeClass *klass)
{
@@ -591,6 +652,10 @@ meta_input_settings_native_class_init (MetaInputSettingsNativeClass *klass)
input_settings_class->set_stylus_pressure = meta_input_settings_native_set_stylus_pressure;
input_settings_class->set_stylus_button_map = meta_input_settings_native_set_stylus_button_map;
input_settings_class->set_mouse_middle_click_emulation = meta_input_settings_native_set_mouse_middle_click_emulation;
input_settings_class->set_touchpad_middle_click_emulation = meta_input_settings_native_set_touchpad_middle_click_emulation;
input_settings_class->set_trackball_middle_click_emulation = meta_input_settings_native_set_trackball_middle_click_emulation;
input_settings_class->has_two_finger_scroll = meta_input_settings_native_has_two_finger_scroll;
input_settings_class->is_trackball_device = meta_input_settings_native_is_trackball_device;
}

View File

@@ -29,4 +29,8 @@ void meta_kms_device_update_states_in_impl (MetaKmsDevice *device);
void meta_kms_device_predict_states_in_impl (MetaKmsDevice *device,
MetaKmsUpdate *update);
void meta_kms_device_add_fake_plane_in_impl (MetaKmsDevice *device,
MetaKmsPlaneType plane_type,
MetaKmsCrtc *crtc);
#endif /* META_KMS_DEVICE_PRIVATE_H */

View File

@@ -221,6 +221,22 @@ meta_kms_device_dispatch_sync (MetaKmsDevice *device,
return meta_kms_flush_callbacks (device->kms);
}
void
meta_kms_device_add_fake_plane_in_impl (MetaKmsDevice *device,
MetaKmsPlaneType plane_type,
MetaKmsCrtc *crtc)
{
MetaKmsImplDevice *impl_device = device->impl_device;
MetaKmsPlane *plane;
meta_assert_in_kms_impl (device->kms);
plane = meta_kms_impl_device_add_fake_plane (impl_device,
plane_type,
crtc);
device->planes = g_list_append (device->planes, plane);
}
typedef struct _CreateImplDeviceData
{
MetaKmsDevice *device;

View File

@@ -298,6 +298,19 @@ get_plane_type (MetaKmsImplDevice *impl_device,
}
}
MetaKmsPlane *
meta_kms_impl_device_add_fake_plane (MetaKmsImplDevice *impl_device,
MetaKmsPlaneType plane_type,
MetaKmsCrtc *crtc)
{
MetaKmsPlane *plane;
plane = meta_kms_plane_new_fake (plane_type, crtc);
impl_device->planes = g_list_append (impl_device->planes, plane);
return plane;
}
static void
init_planes (MetaKmsImplDevice *impl_device)
{
@@ -352,6 +365,16 @@ meta_kms_impl_device_update_states (MetaKmsImplDevice *impl_device)
meta_assert_in_kms_impl (meta_kms_impl_get_kms (impl_device->impl));
drm_resources = drmModeGetResources (impl_device->fd);
if (!drm_resources)
{
g_list_free_full (impl_device->planes, g_object_unref);
g_list_free_full (impl_device->crtcs, g_object_unref);
g_list_free_full (impl_device->connectors, g_object_unref);
impl_device->planes = NULL;
impl_device->crtcs = NULL;
impl_device->connectors = NULL;
return;
}
update_connectors (impl_device, drm_resources);

View File

@@ -67,6 +67,10 @@ void meta_kms_impl_device_update_states (MetaKmsImplDevice *impl_device);
void meta_kms_impl_device_predict_states (MetaKmsImplDevice *impl_device,
MetaKmsUpdate *update);
MetaKmsPlane * meta_kms_impl_device_add_fake_plane (MetaKmsImplDevice *impl_device,
MetaKmsPlaneType plane_type,
MetaKmsCrtc *crtc);
int meta_kms_impl_device_close (MetaKmsImplDevice *impl_device);
MetaKmsImplDevice * meta_kms_impl_device_new (MetaKmsDevice *device,

View File

@@ -567,7 +567,12 @@ mode_set_fallback (MetaKmsImplSimple *impl_simple,
cached_mode_set = g_hash_table_lookup (impl_simple->cached_mode_sets,
crtc);
g_assert (cached_mode_set);
if (!cached_mode_set)
{
g_set_error (error, G_IO_ERROR, G_IO_ERROR_FAILED,
"Missing mode set for page flip fallback");
return FALSE;
}
fill_connector_ids_array (cached_mode_set->connectors,
&connectors,
@@ -1018,6 +1023,27 @@ meta_kms_impl_simple_dispatch_idle (MetaKmsImpl *impl)
mode_set_fallback_feedback_idle (impl_simple);
}
static void
meta_kms_impl_simple_notify_device_created (MetaKmsImpl *impl,
MetaKmsDevice *device)
{
GList *l;
for (l = meta_kms_device_get_crtcs (device); l; l = l->next)
{
MetaKmsCrtc *crtc = l->data;
MetaKmsPlane *plane;
plane = meta_kms_device_get_cursor_plane_for (device, crtc);
if (plane)
continue;
meta_kms_device_add_fake_plane_in_impl (device,
META_KMS_PLANE_TYPE_CURSOR,
crtc);
}
}
static void
meta_kms_impl_simple_finalize (GObject *object)
{
@@ -1058,4 +1084,5 @@ meta_kms_impl_simple_class_init (MetaKmsImplSimpleClass *klass)
impl_class->handle_page_flip_callback = meta_kms_impl_simple_handle_page_flip_callback;
impl_class->discard_pending_page_flips = meta_kms_impl_simple_discard_pending_page_flips;
impl_class->dispatch_idle = meta_kms_impl_simple_dispatch_idle;
impl_class->notify_device_created = meta_kms_impl_simple_notify_device_created;
}

View File

@@ -71,6 +71,13 @@ meta_kms_impl_dispatch_idle (MetaKmsImpl *impl)
META_KMS_IMPL_GET_CLASS (impl)->dispatch_idle (impl);
}
void
meta_kms_impl_notify_device_created (MetaKmsImpl *impl,
MetaKmsDevice *device)
{
META_KMS_IMPL_GET_CLASS (impl)->notify_device_created (impl, device);
}
static void
meta_kms_impl_set_property (GObject *object,
guint prop_id,

View File

@@ -39,6 +39,8 @@ struct _MetaKmsImplClass
MetaKmsPageFlipData *page_flip_data);
void (* discard_pending_page_flips) (MetaKmsImpl *impl);
void (* dispatch_idle) (MetaKmsImpl *impl);
void (* notify_device_created) (MetaKmsImpl *impl,
MetaKmsDevice *impl_device);
};
MetaKms * meta_kms_impl_get_kms (MetaKmsImpl *impl);
@@ -53,4 +55,7 @@ void meta_kms_impl_discard_pending_page_flips (MetaKmsImpl *impl);
void meta_kms_impl_dispatch_idle (MetaKmsImpl *impl);
void meta_kms_impl_notify_device_created (MetaKmsImpl *impl,
MetaKmsDevice *impl_device);
#endif /* META_KMS_IMPL_H */

View File

@@ -30,4 +30,8 @@ MetaKmsPlane * meta_kms_plane_new (MetaKmsPlaneType type,
MetaKmsImplDevice *impl_device,
drmModePlane *drm_plane,
drmModeObjectProperties *drm_plane_props);
MetaKmsPlane * meta_kms_plane_new_fake (MetaKmsPlaneType type,
MetaKmsCrtc *crtc);
#endif /* META_KMS_PLANE_PRIVATE_H */

View File

@@ -35,6 +35,8 @@ struct _MetaKmsPlane
GObject parent;
MetaKmsPlaneType type;
gboolean is_fake;
uint32_t id;
uint32_t possible_crtcs;
@@ -64,6 +66,8 @@ meta_kms_plane_get_device (MetaKmsPlane *plane)
uint32_t
meta_kms_plane_get_id (MetaKmsPlane *plane)
{
g_return_val_if_fail (!plane->is_fake, 0);
return plane->id;
}
@@ -332,12 +336,6 @@ init_formats (MetaKmsPlane *plane,
drmModePropertyPtr prop;
int idx;
plane->formats_modifiers =
g_hash_table_new_full (g_direct_hash,
g_direct_equal,
NULL,
(GDestroyNotify) free_modifier_array);
prop = meta_kms_impl_device_find_property (impl_device, drm_plane_props,
"IN_FORMATS", &idx);
if (prop)
@@ -385,6 +383,36 @@ meta_kms_plane_new (MetaKmsPlaneType type,
return plane;
}
MetaKmsPlane *
meta_kms_plane_new_fake (MetaKmsPlaneType type,
MetaKmsCrtc *crtc)
{
MetaKmsPlane *plane;
static const uint32_t fake_plane_drm_formats[] =
{
DRM_FORMAT_XRGB8888,
DRM_FORMAT_ARGB8888,
#if G_BYTE_ORDER == G_LITTLE_ENDIAN
/* OpenGL GL_RGBA, GL_UNSIGNED_BYTE format, hopefully supported */
DRM_FORMAT_XBGR8888,
DRM_FORMAT_ABGR8888
#endif
};
plane = g_object_new (META_TYPE_KMS_PLANE, NULL);
plane->type = type;
plane->is_fake = TRUE;
plane->possible_crtcs = 1 << meta_kms_crtc_get_idx (crtc);
plane->device = meta_kms_crtc_get_device (crtc);
set_formats_from_array (plane,
fake_plane_drm_formats,
G_N_ELEMENTS (fake_plane_drm_formats));
return plane;
}
static void
meta_kms_plane_finalize (GObject *object)
{
@@ -398,6 +426,11 @@ meta_kms_plane_finalize (GObject *object)
static void
meta_kms_plane_init (MetaKmsPlane *plane)
{
plane->formats_modifiers =
g_hash_table_new_full (g_direct_hash,
g_direct_equal,
NULL,
(GDestroyNotify) free_modifier_array);
}
static void

View File

@@ -27,12 +27,12 @@
#include "backends/native/meta-kms-types.h"
#include "backends/meta-monitor-transform.h"
typedef enum _MetaKmsPlaneType
enum _MetaKmsPlaneType
{
META_KMS_PLANE_TYPE_PRIMARY,
META_KMS_PLANE_TYPE_CURSOR,
META_KMS_PLANE_TYPE_OVERLAY,
} MetaKmsPlaneType;
};
#define META_TYPE_KMS_PLANE meta_kms_plane_get_type ()
G_DECLARE_FINAL_TYPE (MetaKmsPlane, meta_kms_plane,

View File

@@ -58,4 +58,6 @@ typedef enum _MetaKmsDeviceFlag
META_KMS_DEVICE_FLAG_PLATFORM_DEVICE = 1 << 1,
} MetaKmsDeviceFlag;
typedef enum _MetaKmsPlaneType MetaKmsPlaneType;
#endif /* META_KMS_IMPL_TYPES_H */

View File

@@ -530,6 +530,18 @@ meta_kms_get_backend (MetaKms *kms)
return kms->backend;
}
static gpointer
notify_device_created_in_impl (MetaKmsImpl *impl,
gpointer user_data,
GError **error)
{
MetaKmsDevice *device = user_data;
meta_kms_impl_notify_device_created (impl, device);
return GINT_TO_POINTER (TRUE);
}
MetaKmsDevice *
meta_kms_create_device (MetaKms *kms,
const char *path,
@@ -542,6 +554,9 @@ meta_kms_create_device (MetaKms *kms,
if (!device)
return NULL;
meta_kms_run_impl_task_sync (kms, notify_device_created_in_impl,
device, NULL);
kms->devices = g_list_append (kms->devices, device);
return device;

View File

@@ -547,8 +547,6 @@ meta_monitor_manager_kms_get_capabilities (MetaMonitorManager *manager)
{
MetaBackend *backend = meta_monitor_manager_get_backend (manager);
MetaSettings *settings = meta_backend_get_settings (backend);
MetaRenderer *renderer = meta_backend_get_renderer (backend);
MetaRendererNative *renderer_native = META_RENDERER_NATIVE (renderer);
MetaMonitorManagerCapability capabilities =
META_MONITOR_MANAGER_CAPABILITY_NONE;
@@ -557,9 +555,6 @@ meta_monitor_manager_kms_get_capabilities (MetaMonitorManager *manager)
META_EXPERIMENTAL_FEATURE_SCALE_MONITOR_FRAMEBUFFER))
capabilities |= META_MONITOR_MANAGER_CAPABILITY_LAYOUT_MODE;
if (meta_renderer_native_supports_mirroring (renderer_native))
capabilities |= META_MONITOR_MANAGER_CAPABILITY_MIRRORING;
return capabilities;
}

View File

@@ -2793,34 +2793,6 @@ _cogl_winsys_egl_vtable = {
.context_init = meta_renderer_native_init_egl_context
};
gboolean
meta_renderer_native_supports_mirroring (MetaRendererNative *renderer_native)
{
MetaRenderer *renderer = META_RENDERER (renderer_native);
MetaBackend *backend = meta_renderer_get_backend (renderer);
GList *l;
for (l = meta_backend_get_gpus (backend); l; l = l->next)
{
MetaGpuKms *gpu_kms = META_GPU_KMS (l->data);
MetaRendererNativeGpuData *renderer_gpu_data;
renderer_gpu_data = meta_renderer_native_get_gpu_data (renderer_native,
gpu_kms);
switch (renderer_gpu_data->mode)
{
case META_RENDERER_NATIVE_MODE_GBM:
break;
#ifdef HAVE_EGL_DEVICE
case META_RENDERER_NATIVE_MODE_EGL_DEVICE:
return FALSE;
#endif
}
}
return TRUE;
}
static void
meta_renderer_native_queue_modes_reset (MetaRendererNative *renderer_native)
{

View File

@@ -51,8 +51,6 @@ MetaRendererNative * meta_renderer_native_new (MetaBackendNative *backend_nativ
struct gbm_device * meta_gbm_device_from_gpu (MetaGpuKms *gpu_kms);
gboolean meta_renderer_native_supports_mirroring (MetaRendererNative *renderer_native);
void meta_renderer_native_finish_frame (MetaRendererNative *renderer_native);
int64_t meta_renderer_native_get_frame_counter (MetaRendererNative *renderer_native);

View File

@@ -195,7 +195,7 @@ meta_crtc_xrandr_is_assignment_changed (MetaCrtc *crtc,
if (crtc_xrandr->rect.x != (int) roundf (crtc_info->layout.origin.x))
return TRUE;
if (crtc_xrandr->rect.y != (int) roundf (crtc_info->layout.origin.x))
if (crtc_xrandr->rect.y != (int) roundf (crtc_info->layout.origin.y))
return TRUE;
if (crtc_xrandr->transform != crtc_info->transform)

View File

@@ -393,6 +393,57 @@ meta_input_device_x11_get_pad_group_mode (ClutterInputDevice *device,
return g_array_index (device_xi2->group_modes, uint32_t, group);
}
static gboolean
pad_switch_mode (ClutterInputDevice *device,
uint32_t button,
uint32_t group,
uint32_t *mode)
{
MetaInputDeviceX11 *device_x11 = META_INPUT_DEVICE_X11 (device);
uint32_t n_buttons, n_modes, button_group, next_mode, i;
GList *switch_buttons = NULL;
n_buttons = libwacom_get_num_buttons (device_x11->wacom_device);
for (i = 0; i < n_buttons; i++)
{
button_group = meta_input_device_x11_get_button_group (device, i);
if (button_group == group)
switch_buttons = g_list_prepend (switch_buttons, GINT_TO_POINTER (button));
}
switch_buttons = g_list_reverse (switch_buttons);
n_modes = clutter_input_device_get_group_n_modes (device, group);
if (g_list_length (switch_buttons) > 1)
{
/* If there's multiple switch buttons, we don't toggle but assign a mode
* to each of those buttons.
*/
next_mode = g_list_index (switch_buttons, GINT_TO_POINTER (button));
}
else if (switch_buttons)
{
uint32_t cur_mode;
/* If there is a single button, have it toggle across modes */
cur_mode = g_array_index (device_x11->group_modes, uint32_t, group);
next_mode = (cur_mode + 1) % n_modes;
}
else
{
return FALSE;
}
g_list_free (switch_buttons);
if (next_mode < 0 || next_mode > n_modes)
return FALSE;
*mode = next_mode;
return TRUE;
}
void
meta_input_device_x11_update_pad_state (ClutterInputDevice *device,
uint32_t button,
@@ -402,26 +453,26 @@ meta_input_device_x11_update_pad_state (ClutterInputDevice *device,
{
MetaInputDeviceX11 *device_xi2 = META_INPUT_DEVICE_X11 (device);
uint32_t button_group, *group_mode;
gboolean is_mode_switch = FALSE;
button_group = meta_input_device_x11_get_button_group (device, button);
is_mode_switch = button_group >= 0;
/* Assign all non-mode-switch buttons to group 0 so far */
button_group = MAX (0, button_group);
if (button_group >= device_xi2->group_modes->len)
return;
if (button_group < 0 || button_group >= device_xi2->group_modes->len)
{
if (group)
*group = 0;
if (mode)
*mode = 0;
return;
}
group_mode = &g_array_index (device_xi2->group_modes, uint32_t, button_group);
if (is_mode_switch && state)
if (state)
{
uint32_t next, n_modes;
uint32_t next_mode;
n_modes = clutter_input_device_get_group_n_modes (device, button_group);
next = (*group_mode + 1) % n_modes;
*group_mode = next;
if (pad_switch_mode (device, button, button_group, &next_mode))
*group_mode = next_mode;
}
if (group)

View File

@@ -496,7 +496,7 @@ has_udev_property (MetaInputSettings *settings,
if (!warned_once)
{
g_warning ("Failed to set acceleration profile: no udev support");
g_warning ("Failed to query property: no udev support");
warned_once = TRUE;
}
@@ -512,6 +512,13 @@ is_mouse (MetaInputSettings *settings,
!has_udev_property (settings, device, "ID_INPUT_POINTINGSTICK"));
}
static gboolean
meta_input_settings_x11_is_touchpad_device (MetaInputSettings *settings,
ClutterInputDevice *device)
{
return has_udev_property (settings, device, "ID_INPUT_TOUCHPAD");
}
static gboolean
meta_input_settings_x11_is_trackball_device (MetaInputSettings *settings,
ClutterInputDevice *device)
@@ -820,6 +827,48 @@ meta_input_settings_x11_set_stylus_button_map (MetaInputSettings *setti
}
}
static void
meta_input_settings_x11_set_mouse_middle_click_emulation (MetaInputSettings *settings,
ClutterInputDevice *device,
gboolean enabled)
{
guchar value = enabled ? 1 : 0;
if (!is_mouse (settings, device))
return;
change_property (device, "libinput Middle Click Emulation Enabled",
XA_INTEGER, 8, &value, 1);
}
static void
meta_input_settings_x11_set_touchpad_middle_click_emulation (MetaInputSettings *settings,
ClutterInputDevice *device,
gboolean enabled)
{
guchar value = enabled ? 1 : 0;
if (!meta_input_settings_x11_is_touchpad_device (settings, device))
return;
change_property (device, "libinput Middle Click Emulation Enabled",
XA_INTEGER, 8, &value, 1);
}
static void
meta_input_settings_x11_set_trackball_middle_click_emulation (MetaInputSettings *settings,
ClutterInputDevice *device,
gboolean enabled)
{
guchar value = enabled ? 1 : 0;
if (!meta_input_settings_x11_is_trackball_device (settings, device))
return;
change_property (device, "libinput Middle Click Emulation Enabled",
XA_INTEGER, 8, &value, 1);
}
static void
meta_input_settings_x11_set_stylus_pressure (MetaInputSettings *settings,
ClutterInputDevice *device,
@@ -864,6 +913,10 @@ meta_input_settings_x11_class_init (MetaInputSettingsX11Class *klass)
input_settings_class->set_stylus_pressure = meta_input_settings_x11_set_stylus_pressure;
input_settings_class->set_stylus_button_map = meta_input_settings_x11_set_stylus_button_map;
input_settings_class->set_mouse_middle_click_emulation = meta_input_settings_x11_set_mouse_middle_click_emulation;
input_settings_class->set_touchpad_middle_click_emulation = meta_input_settings_x11_set_touchpad_middle_click_emulation;
input_settings_class->set_trackball_middle_click_emulation = meta_input_settings_x11_set_trackball_middle_click_emulation;
input_settings_class->has_two_finger_scroll = meta_input_settings_x11_has_two_finger_scroll;
input_settings_class->is_trackball_device = meta_input_settings_x11_is_trackball_device;
}

View File

@@ -959,8 +959,7 @@ meta_monitor_manager_xrandr_calculate_supported_scales (MetaMonitorManager
static MetaMonitorManagerCapability
meta_monitor_manager_xrandr_get_capabilities (MetaMonitorManager *manager)
{
return (META_MONITOR_MANAGER_CAPABILITY_MIRRORING |
META_MONITOR_MANAGER_CAPABILITY_GLOBAL_SCALE_REQUIRED);
return META_MONITOR_MANAGER_CAPABILITY_GLOBAL_SCALE_REQUIRED;
}
static gboolean

View File

@@ -28,6 +28,7 @@ struct _MetaWindowActorClass
void (*queue_destroy) (MetaWindowActor *actor);
void (*set_frozen) (MetaWindowActor *actor,
gboolean frozen);
void (*update_regions) (MetaWindowActor *actor);
};
typedef enum
@@ -88,4 +89,6 @@ gboolean meta_window_actor_is_frozen (MetaWindowActor *self);
gboolean meta_window_actor_is_opaque (MetaWindowActor *self);
void meta_window_actor_update_regions (MetaWindowActor *self);
#endif /* META_WINDOW_ACTOR_PRIVATE_H */

View File

@@ -162,6 +162,11 @@ meta_window_actor_wayland_get_paint_volume (ClutterActor *actor,
return TRUE;
}
static void
meta_window_actor_wayland_update_regions (MetaWindowActor *actor)
{
}
static void
meta_window_actor_wayland_class_init (MetaWindowActorWaylandClass *klass)
{
@@ -177,6 +182,7 @@ meta_window_actor_wayland_class_init (MetaWindowActorWaylandClass *klass)
window_actor_class->post_paint = meta_window_actor_wayland_post_paint;
window_actor_class->queue_destroy = meta_window_actor_wayland_queue_destroy;
window_actor_class->set_frozen = meta_window_actor_wayland_set_frozen;
window_actor_class->update_regions = meta_window_actor_wayland_update_regions;
}
static void

View File

@@ -99,8 +99,6 @@ struct _MetaWindowActorX11
gboolean recompute_focused_shadow;
gboolean recompute_unfocused_shadow;
gboolean is_frozen;
cairo_rectangle_int_t client_area;
};
static MetaCullableInterface *cullable_parent_iface;
@@ -839,6 +837,41 @@ scan_visible_region (guchar *mask_data,
return meta_region_builder_finish (&builder);
}
static void
get_client_area_rect_from_texture (MetaWindowActorX11 *actor_x11,
MetaShapedTexture *shaped_texture,
cairo_rectangle_int_t *client_area)
{
MetaWindow *window =
meta_window_actor_get_meta_window (META_WINDOW_ACTOR (actor_x11));
cairo_rectangle_int_t surface_rect = { 0 };
surface_rect.width = meta_shaped_texture_get_width (shaped_texture);
surface_rect.height = meta_shaped_texture_get_height (shaped_texture);
meta_window_x11_surface_rect_to_client_rect (window,
&surface_rect,
client_area);
}
static void
get_client_area_rect (MetaWindowActorX11 *actor_x11,
cairo_rectangle_int_t *client_area)
{
MetaSurfaceActor *surface =
meta_window_actor_get_surface (META_WINDOW_ACTOR (actor_x11));
MetaWindow *window =
meta_window_actor_get_meta_window (META_WINDOW_ACTOR (actor_x11));
MetaShapedTexture *stex = meta_surface_actor_get_texture (surface);
if (!meta_window_x11_always_update_shape (window) || !stex)
{
meta_window_get_client_area_rect (window, client_area);
return;
}
get_client_area_rect_from_texture (actor_x11, stex, client_area);
}
static void
build_and_scan_frame_mask (MetaWindowActorX11 *actor_x11,
cairo_region_t *shape_region)
@@ -852,7 +885,6 @@ build_and_scan_frame_mask (MetaWindowActorX11 *actor_x11,
uint8_t *mask_data;
unsigned int tex_width, tex_height;
MetaShapedTexture *stex;
CoglTexture *paint_tex;
CoglTexture2D *mask_texture;
int stride;
cairo_t *cr;
@@ -864,12 +896,8 @@ build_and_scan_frame_mask (MetaWindowActorX11 *actor_x11,
meta_shaped_texture_set_mask_texture (stex, NULL);
paint_tex = meta_shaped_texture_get_texture (stex);
if (paint_tex == NULL)
return;
tex_width = cogl_texture_get_width (paint_tex);
tex_height = cogl_texture_get_height (paint_tex);
tex_width = meta_shaped_texture_get_width (stex);
tex_height = meta_shaped_texture_get_height (stex);
stride = cairo_format_stride_for_width (CAIRO_FORMAT_A8, tex_width);
@@ -890,6 +918,7 @@ build_and_scan_frame_mask (MetaWindowActorX11 *actor_x11,
{
cairo_region_t *frame_paint_region, *scanned_region;
cairo_rectangle_int_t rect = { 0, 0, tex_width, tex_height };
cairo_rectangle_int_t client_area;
cairo_rectangle_int_t frame_rect;
/* If we update the shape regardless of the frozen state of the actor,
@@ -899,14 +928,19 @@ build_and_scan_frame_mask (MetaWindowActorX11 *actor_x11,
* point.
*/
if (meta_window_x11_always_update_shape (window))
meta_window_x11_buffer_rect_to_frame_rect (window, &rect, &frame_rect);
{
meta_window_x11_surface_rect_to_frame_rect (window, &rect, &frame_rect);
get_client_area_rect_from_texture (actor_x11, stex, &client_area);
}
else
meta_window_get_frame_rect (window, &frame_rect);
{
meta_window_get_frame_rect (window, &frame_rect);
meta_window_get_client_area_rect (window, &client_area);
}
/* Make sure we don't paint the frame over the client window. */
frame_paint_region = cairo_region_create_rectangle (&rect);
cairo_region_subtract_rectangle (frame_paint_region,
&actor_x11->client_area);
cairo_region_subtract_rectangle (frame_paint_region, &client_area);
gdk_cairo_region (cr, frame_paint_region);
cairo_clip (cr);
@@ -964,13 +998,14 @@ update_shape_region (MetaWindowActorX11 *actor_x11)
MetaWindow *window =
meta_window_actor_get_meta_window (META_WINDOW_ACTOR (actor_x11));
cairo_region_t *region = NULL;
cairo_rectangle_int_t client_area;
get_client_area_rect (actor_x11, &client_area);
if (window->frame && window->shape_region)
{
region = cairo_region_copy (window->shape_region);
cairo_region_translate (region,
actor_x11->client_area.x,
actor_x11->client_area.y);
cairo_region_translate (region, client_area.x, client_area.y);
}
else if (window->shape_region != NULL)
{
@@ -981,7 +1016,7 @@ update_shape_region (MetaWindowActorX11 *actor_x11)
/* If we don't have a shape on the server, that means that
* we have an implicit shape of one rectangle covering the
* entire window. */
region = cairo_region_create_rectangle (&actor_x11->client_area);
region = cairo_region_create_rectangle (&client_area);
}
if (window->shape_region || window->frame)
@@ -1059,6 +1094,10 @@ update_opaque_region (MetaWindowActorX11 *actor_x11)
is_maybe_transparent = is_actor_maybe_transparent (actor_x11);
if (is_maybe_transparent && window->opaque_region)
{
cairo_rectangle_int_t client_area;
get_client_area_rect (actor_x11, &client_area);
/* The opaque region is defined to be a part of the
* window which ARGB32 will always paint with opaque
* pixels. For these regions, we want to avoid painting
@@ -1070,9 +1109,7 @@ update_opaque_region (MetaWindowActorX11 *actor_x11)
* case, graphical glitches will occur.
*/
opaque_region = cairo_region_copy (window->opaque_region);
cairo_region_translate (opaque_region,
actor_x11->client_area.x,
actor_x11->client_area.y);
cairo_region_translate (opaque_region, client_area.x, client_area.y);
cairo_region_intersect (opaque_region, actor_x11->shape_region);
}
else if (is_maybe_transparent)
@@ -1090,7 +1127,7 @@ update_opaque_region (MetaWindowActorX11 *actor_x11)
}
static void
check_needs_reshape (MetaWindowActorX11 *actor_x11)
update_regions (MetaWindowActorX11 *actor_x11)
{
if (!actor_x11->needs_reshape)
return;
@@ -1102,6 +1139,18 @@ check_needs_reshape (MetaWindowActorX11 *actor_x11)
actor_x11->needs_reshape = FALSE;
}
static void
check_needs_reshape (MetaWindowActorX11 *actor_x11)
{
MetaWindow *window =
meta_window_actor_get_meta_window (META_WINDOW_ACTOR (actor_x11));
if (meta_window_x11_always_update_shape (window))
return;
update_regions (actor_x11);
}
void
meta_window_actor_x11_update_shape (MetaWindowActorX11 *actor_x11)
{
@@ -1138,10 +1187,7 @@ handle_updates (MetaWindowActorX11 *actor_x11)
* which causes the shadows to look bad.
*/
if (surface && meta_window_x11_always_update_shape (window))
{
update_opaque_region (actor_x11);
update_shape_region (actor_x11);
}
check_needs_reshape (actor_x11);
return;
}
@@ -1151,7 +1197,6 @@ handle_updates (MetaWindowActorX11 *actor_x11)
if (!meta_surface_actor_is_visible (surface))
return;
meta_window_get_client_area_rect (window, &actor_x11->client_area);
check_needs_reshape (actor_x11);
check_needs_shadow (actor_x11);
}
@@ -1356,6 +1401,12 @@ meta_window_actor_x11_set_frozen (MetaWindowActor *actor,
meta_window_x11_thaw_commits (window);
}
static void
meta_window_actor_x11_update_regions (MetaWindowActor *actor)
{
update_regions (META_WINDOW_ACTOR_X11 (actor));
}
static void
meta_window_actor_x11_set_property (GObject *object,
guint prop_id,
@@ -1528,6 +1579,7 @@ meta_window_actor_x11_class_init (MetaWindowActorX11Class *klass)
window_actor_class->post_paint = meta_window_actor_x11_post_paint;
window_actor_class->queue_destroy = meta_window_actor_x11_queue_destroy;
window_actor_class->set_frozen = meta_window_actor_x11_set_frozen;
window_actor_class->update_regions = meta_window_actor_x11_update_regions;
actor_class->paint = meta_window_actor_x11_paint;
actor_class->get_paint_volume = meta_window_actor_x11_get_paint_volume;

View File

@@ -251,6 +251,12 @@ meta_window_actor_is_frozen (MetaWindowActor *self)
return priv->surface == NULL || priv->freeze_count > 0;
}
void
meta_window_actor_update_regions (MetaWindowActor *self)
{
META_WINDOW_ACTOR_GET_CLASS (self)->update_regions (self);
}
static void
meta_window_actor_set_frozen (MetaWindowActor *self,
gboolean frozen)

View File

@@ -701,7 +701,13 @@ meta_display_init_x11_finish (MetaDisplay *display,
g_assert (g_task_get_source_tag (G_TASK (result)) == meta_display_init_x11);
if (!g_task_propagate_boolean (G_TASK (result), error))
return FALSE;
{
if (*error == NULL)
g_set_error (error, G_IO_ERROR, G_IO_ERROR_FAILED, "Unknown error");
return FALSE;
}
if (display->x11_display)
return TRUE;
@@ -778,8 +784,10 @@ on_x11_initialized (MetaDisplay *display,
GAsyncResult *result,
gpointer user_data)
{
if (!meta_display_init_x11_finish (display, result, NULL))
g_critical ("Failed to init X11 display");
g_autoptr (GError) error = NULL;
if (!meta_display_init_x11_finish (display, result, &error))
g_critical ("Failed to init X11 display: %s", error->message);
}
#endif

View File

@@ -63,6 +63,15 @@
#define META_KEY_BINDING_PRIMARY_LAYOUT 0
#define META_KEY_BINDING_SECONDARY_LAYOUT 1
/* Only for special modifier keys */
#define IGNORED_MODIFIERS (CLUTTER_LOCK_MASK | \
CLUTTER_MOD2_MASK | \
CLUTTER_BUTTON1_MASK | \
CLUTTER_BUTTON2_MASK | \
CLUTTER_BUTTON3_MASK | \
CLUTTER_BUTTON4_MASK | \
CLUTTER_BUTTON5_MASK)
static gboolean add_builtin_keybinding (MetaDisplay *display,
const char *name,
GSettings *settings,
@@ -1820,12 +1829,12 @@ meta_window_grab_all_keys (MetaWindow *window,
meta_topic (META_DEBUG_KEYBINDINGS,
"Grabbing all keys on window %s\n", window->desc);
retval = grab_keyboard (grabwindow, timestamp, XIGrabModeAsync);
if (retval)
{
window->keys_grabbed = FALSE;
window->all_keys_grabbed = TRUE;
window->grab_on_frame = window->frame != NULL;
}
}
if (retval)
{
window->keys_grabbed = FALSE;
window->all_keys_grabbed = TRUE;
window->grab_on_frame = window->frame != NULL;
}
return retval;
@@ -1835,9 +1844,10 @@ void
meta_window_ungrab_all_keys (MetaWindow *window,
guint32 timestamp)
{
if (!meta_is_wayland_compositor () && window->all_keys_grabbed)
if (window->all_keys_grabbed)
{
ungrab_keyboard (timestamp);
if (!meta_is_wayland_compositor())
ungrab_keyboard (timestamp);
window->grab_on_frame = FALSE;
window->all_keys_grabbed = FALSE;
@@ -2036,6 +2046,13 @@ process_special_modifier_key (MetaDisplay *display,
{
*modifier_press_only = FALSE;
/* If this is a wayland session, we can avoid the shenanigans
* about passive grabs below, and let the event continue to
* be processed through the regular paths.
*/
if (!xdisplay)
return FALSE;
/* OK, the user hit modifier+key rather than pressing and
* releasing the modifier key alone. We want to handle the key
* sequence "normally". Unfortunately, using
@@ -2068,8 +2085,6 @@ process_special_modifier_key (MetaDisplay *display,
XIAllowEvents (xdisplay,
clutter_input_device_get_device_id (event->device),
XIReplayDevice, event->time);
return FALSE;
}
}
else if (event->type == CLUTTER_KEY_RELEASE)
@@ -2114,6 +2129,7 @@ process_special_modifier_key (MetaDisplay *display,
return TRUE;
}
else if (event->type == CLUTTER_KEY_PRESS &&
(event->modifier_state & ~(IGNORED_MODIFIERS)) == 0 &&
resolved_key_combo_has_keycode (resolved_key_combo,
event->hardware_keycode))
{

View File

@@ -371,8 +371,6 @@ meta_monitor_manager_test_get_capabilities (MetaMonitorManager *manager)
MetaMonitorManagerCapability capabilities =
META_MONITOR_MANAGER_CAPABILITY_NONE;
capabilities |= META_MONITOR_MANAGER_CAPABILITY_MIRRORING;
if (is_monitor_framebuffer_scaled ())
capabilities |= META_MONITOR_MANAGER_CAPABILITY_LAYOUT_MODE;

View File

@@ -439,7 +439,7 @@ zxdg_toplevel_v6_set_fullscreen (struct wl_client *client,
if (output_resource)
{
MetaWaylandOutput *output = wl_resource_get_user_data (output_resource);
if (output)
if (output && output->logical_monitor)
meta_window_move_to_monitor (window, output->logical_monitor->number);
}

View File

@@ -207,12 +207,14 @@ meta_wayland_text_input_focus_set_preedit_text (ClutterInputFocus *focus,
{
MetaWaylandTextInput *text_input;
struct wl_resource *resource;
gsize pos;
text_input = META_WAYLAND_TEXT_INPUT_FOCUS (focus)->text_input;
pos = g_utf8_offset_to_pointer (text, cursor) - text;
wl_resource_for_each (resource, &text_input->focus_resource_list)
{
zwp_text_input_v3_send_preedit_string (resource, text, cursor, cursor);
zwp_text_input_v3_send_preedit_string (resource, text, pos, pos);
}
meta_wayland_text_input_focus_defer_done (focus);

View File

@@ -456,7 +456,7 @@ xdg_toplevel_set_fullscreen (struct wl_client *client,
{
MetaWaylandOutput *output = wl_resource_get_user_data (output_resource);
if (output)
if (output && output->logical_monitor)
{
meta_window_move_to_monitor (window,
output->logical_monitor->number);

View File

@@ -634,6 +634,10 @@ appears_focused_changed (GObject *object,
gpointer user_data)
{
MetaWindow *window = META_WINDOW (object);
if (window->placement.rule)
return;
surface_state_changed (window);
}
@@ -1001,6 +1005,10 @@ void
meta_window_place_with_placement_rule (MetaWindow *window,
MetaPlacementRule *placement_rule)
{
gboolean first_placement;
first_placement = !window->placement.rule;
g_clear_pointer (&window->placement.rule, g_free);
window->placement.rule = g_new0 (MetaPlacementRule, 1);
*window->placement.rule = *placement_rule;
@@ -1009,12 +1017,15 @@ meta_window_place_with_placement_rule (MetaWindow *window,
window->unconstrained_rect.y = window->rect.y;
window->unconstrained_rect.width = placement_rule->width;
window->unconstrained_rect.height = placement_rule->height;
window->calc_placement = first_placement;
meta_window_move_resize_internal (window,
(META_MOVE_RESIZE_MOVE_ACTION |
META_MOVE_RESIZE_RESIZE_ACTION |
META_MOVE_RESIZE_PLACEMENT_CHANGED),
META_GRAVITY_NORTH_WEST,
window->unconstrained_rect);
window->calc_placement = FALSE;
}
void

View File

@@ -171,7 +171,7 @@ xdnd_send_enter (MetaXWaylandDnd *dnd,
/* We have more than 3 mimetypes, we must set up
* the mimetype list as a XdndTypeList property.
*/
Atom *atomlist;
g_autofree Atom *atomlist = NULL;
gint i = 0;
xev.xclient.data.l[1] |= 1;

View File

@@ -232,7 +232,13 @@ meta_xwayland_surface_sync_actor_state (MetaWaylandActorSurface *actor_surface)
META_WAYLAND_ACTOR_SURFACE_CLASS (meta_xwayland_surface_parent_class);
if (xwayland_surface->window)
actor_surface_class->sync_actor_state (actor_surface);
{
MetaWindowActor *window_actor =
meta_window_actor_from_window (xwayland_surface->window);
actor_surface_class->sync_actor_state (actor_surface);
meta_window_actor_update_regions (window_actor);
}
}
static void

View File

@@ -53,6 +53,7 @@ struct _MetaX11SelectionOutputStreamPrivate
guint incr : 1;
guint delete_pending : 1;
guint pipe_error : 1;
};
G_DEFINE_TYPE_WITH_PRIVATE (MetaX11SelectionOutputStream,
@@ -167,6 +168,25 @@ get_element_size (int format)
}
}
static gboolean
meta_x11_selection_output_stream_check_pipe (MetaX11SelectionOutputStream *stream,
GError **error)
{
MetaX11SelectionOutputStreamPrivate *priv =
meta_x11_selection_output_stream_get_instance_private (stream);
if (priv->pipe_error)
{
g_set_error (error,
G_IO_ERROR,
G_IO_ERROR_BROKEN_PIPE,
"Connection with client was broken");
return FALSE;
}
return TRUE;
}
static void
meta_x11_selection_output_stream_perform_flush (MetaX11SelectionOutputStream *stream)
{
@@ -174,6 +194,7 @@ meta_x11_selection_output_stream_perform_flush (MetaX11SelectionOutputStream *st
meta_x11_selection_output_stream_get_instance_private (stream);
Display *xdisplay;
size_t element_size, n_elements;
int error_code;
g_assert (!priv->delete_pending);
@@ -230,18 +251,28 @@ meta_x11_selection_output_stream_perform_flush (MetaX11SelectionOutputStream *st
g_cond_broadcast (&priv->cond);
g_mutex_unlock (&priv->mutex);
/* XXX: handle failure here and report EPIPE for future operations on the stream? */
if (meta_x11_error_trap_pop_with_return (priv->x11_display))
g_warning ("Failed to flush selection output stream");
error_code = meta_x11_error_trap_pop_with_return (priv->x11_display);
if (priv->pending_task)
if (error_code != Success)
{
char error_str[100];
XGetErrorText (xdisplay, error_code, error_str, sizeof (error_str));
g_task_return_new_error (priv->pending_task,
G_IO_ERROR,
G_IO_ERROR_BROKEN_PIPE,
"Failed to flush selection output stream: %s",
error_str);
g_clear_object (&priv->pending_task);
priv->pipe_error = TRUE;
}
else if (priv->pending_task)
{
size_t result;
result = GPOINTER_TO_SIZE (g_task_get_task_data (priv->pending_task));
g_task_return_int (priv->pending_task, result);
g_object_unref (priv->pending_task);
priv->pending_task = NULL;
g_clear_object (&priv->pending_task);
}
}
@@ -270,6 +301,9 @@ meta_x11_selection_output_stream_write (GOutputStream *output_stream,
MetaX11SelectionOutputStreamPrivate *priv =
meta_x11_selection_output_stream_get_instance_private (stream);
if (!meta_x11_selection_output_stream_check_pipe (stream, error))
return -1;
g_mutex_lock (&priv->mutex);
g_byte_array_append (priv->data, buffer, count);
g_mutex_unlock (&priv->mutex);
@@ -297,12 +331,19 @@ meta_x11_selection_output_stream_write_async (GOutputStream *output_stream
META_X11_SELECTION_OUTPUT_STREAM (output_stream);
MetaX11SelectionOutputStreamPrivate *priv =
meta_x11_selection_output_stream_get_instance_private (stream);
GError *error = NULL;
GTask *task;
task = g_task_new (stream, cancellable, callback, user_data);
g_task_set_source_tag (task, meta_x11_selection_output_stream_write_async);
g_task_set_priority (task, io_priority);
if (!meta_x11_selection_output_stream_check_pipe (stream, &error))
{
g_task_return_error (task, error);
return;
}
g_mutex_lock (&priv->mutex);
g_byte_array_append (priv->data, buffer, count);
g_mutex_unlock (&priv->mutex);
@@ -369,6 +410,8 @@ meta_x11_selection_output_stream_flush (GOutputStream *output_stream,
MetaX11SelectionOutputStreamPrivate *priv =
meta_x11_selection_output_stream_get_instance_private (stream);
if (!meta_x11_selection_output_stream_check_pipe (stream, error))
return FALSE;
if (!meta_x11_selection_output_request_flush (stream))
return TRUE;
@@ -394,12 +437,19 @@ meta_x11_selection_output_stream_flush_async (GOutputStream *output_stream
META_X11_SELECTION_OUTPUT_STREAM (output_stream);
MetaX11SelectionOutputStreamPrivate *priv =
meta_x11_selection_output_stream_get_instance_private (stream);
GError *error = NULL;
GTask *task;
task = g_task_new (stream, cancellable, callback, user_data);
g_task_set_source_tag (task, meta_x11_selection_output_stream_flush_async);
g_task_set_priority (task, io_priority);
if (!meta_x11_selection_output_stream_check_pipe (stream, &error))
{
g_task_return_error (task, error);
return;
}
if (!meta_x11_selection_output_stream_can_flush (stream))
{
if (meta_x11_selection_output_request_flush (stream))

View File

@@ -4075,9 +4075,9 @@ meta_window_x11_always_update_shape (MetaWindow *window)
}
void
meta_window_x11_buffer_rect_to_frame_rect (MetaWindow *window,
MetaRectangle *buffer_rect,
MetaRectangle *frame_rect)
meta_window_x11_surface_rect_to_frame_rect (MetaWindow *window,
MetaRectangle *surface_rect,
MetaRectangle *frame_rect)
{
MetaFrameBorders borders;
@@ -4086,9 +4086,25 @@ meta_window_x11_buffer_rect_to_frame_rect (MetaWindow *window,
meta_frame_calc_borders (window->frame, &borders);
*frame_rect = *buffer_rect;
*frame_rect = *surface_rect;
frame_rect->x += borders.invisible.left;
frame_rect->y += borders.invisible.top;
frame_rect->width -= borders.invisible.left + borders.invisible.right;
frame_rect->height -= borders.invisible.top + borders.invisible.bottom;
}
void
meta_window_x11_surface_rect_to_client_rect (MetaWindow *window,
MetaRectangle *surface_rect,
MetaRectangle *client_rect)
{
MetaFrameBorders borders;
meta_frame_calc_borders (window->frame, &borders);
*client_rect = *surface_rect;
client_rect->x += borders.total.left;
client_rect->y += borders.total.top;
client_rect->width -= borders.total.left + borders.total.right;
client_rect->height -= borders.total.top + borders.total.bottom;
}

View File

@@ -89,8 +89,10 @@ void meta_window_x11_set_thaw_after_paint (MetaWindow *window,
gboolean meta_window_x11_should_thaw_after_paint (MetaWindow *window);
gboolean meta_window_x11_always_update_shape (MetaWindow *window);
void meta_window_x11_buffer_rect_to_frame_rect (MetaWindow *window,
MetaRectangle *buffer_rect,
void meta_window_x11_surface_rect_to_frame_rect (MetaWindow *window,
MetaRectangle *surface_rect,
MetaRectangle *frame_rect);
void meta_window_x11_surface_rect_to_client_rect (MetaWindow *window,
MetaRectangle *surface_rect,
MetaRectangle *client_rect);
#endif