Compare commits

...

114 Commits

Author SHA1 Message Date
Armin Krezović
25fd9e005b Fix cursor size update on non-wayland 2017-08-28 10:50:44 +08:00
Armin Krezović
114bfc04ef Move workspace related code from MetaDisplay to MetaWorkspaceManager 2017-08-28 10:50:44 +08:00
Armin Krezović
26dde9dfe0 Add MetaWorkspaceManager skeleton 2017-08-28 10:50:44 +08:00
Armin Krezović
25c9ce2dad Rename errors.[ch] to meta-x11-errors.[ch]
Also rename meta_error_trap_* to meta_x11_error_trap_* and
move meta-x11-errors.c to src/x11
2017-08-28 10:50:44 +08:00
Armin Krezović
7d2ef2d821 Add --no-x11 flag so mutter wayland can be started without X11 2017-08-28 10:50:44 +08:00
Armin Krezović
1838ec08a2 Use MetaMonitorManager insted of MetaDisplay where possible
This drops display's monitors-changed signal and makes all
the code rely on MetaMonitorManager.
2017-08-28 10:50:44 +08:00
Armin Krezović
9a405fb943 Fix XDND handling to work without GDK and MetaX11Display
This fixes mutter --nested --wayland without X11
2017-08-28 10:50:44 +08:00
Armin Krezović
7515c80d7a Split GDK initialization from MetaUI
Get rid of the deprecated gdk_display_get_default_screen ()
2017-08-28 10:50:44 +08:00
Armin Krezović
6ff46b5f64 Don't use gtk_settings callback to set shell_shows_app_menu
GTK+ won't be initialized if X11 is not available

Instead, when setting gtk-shell-shows-app-menu,
meta_prefs_set_show_fallback_app_menu should be
called as well.
2017-08-28 10:50:44 +08:00
Armin Krezović
703f05f6e3 Make stack tracker work without X11 2017-08-28 10:50:44 +08:00
Armin Krezović
d2c2fe6e09 Move workarea hint setting to MetaX11Display 2017-08-28 10:50:44 +08:00
Armin Krezović
e2c02c6014 Make bell and libstartup-notification bits work without X11 2017-08-28 10:50:44 +08:00
Armin Krezović
c0e6128182 Make workspace management work without X11 2017-08-28 10:50:44 +08:00
Armin Krezović
4c40b7591d Prepare for making MetaX11Display conditional
- Stop using CurrentTime, introduce META_CURRENT_TIME
- Add signals for signaling when MetaX11Display is opened
  or closed down
- Use g_get_monotonic_time () instead of relying on an
  X server running and making roundtrip to it
2017-08-28 10:50:44 +08:00
Armin Krezović
6c0e889a85 Get rid of MetaScreen 2017-08-28 10:50:44 +08:00
Armin Krezović
046712a28b Stop using MetaScreen where it is unnecessary 2017-08-28 10:50:44 +08:00
Armin Krezović
91c9d5182d Move workspace handing to MetaDisplay/MetaX11Display 2017-08-28 10:50:44 +08:00
Armin Krezović
e0105ee425 Move UI and key grabs to MetaX11Display 2017-08-28 10:50:44 +08:00
Armin Krezović
773aab96bf Move mouse window tracking to MetaDisplay 2017-08-28 10:50:44 +08:00
Armin Krezović
f53a605c4f Move xinerama management to MetaX11Display 2017-08-28 10:50:44 +08:00
Armin Krezović
383f2ed815 Move MetaScreen monitor API to MetaDisplay 2017-08-28 10:50:38 +08:00
Armin Krezović
38a8559fbe Move rest of non-X11 specific objects from MetaScreen
This moves following objects from MetaScreen to MetaDisplay

- workareas_later and in_fullscreen_later signals and functions
- startup_sequences signals and functions
- tile_preview functions
2017-08-26 21:10:38 +02:00
Armin Krezović
b24136d0d5 Move X11 event, icon cache and property handling to MetaX11Display 2017-08-26 20:54:39 +02:00
Armin Krezović
90826dd660 Move X11 helper windows and xprops to MetaX11Display 2017-08-26 20:51:28 +02:00
Armin Krezović
467a6fa8fc Move stack tracking and guard_window outside of MetaScreen
stack, stack_tracker to MetaDisplay
guard_window to MetaX11Display
2017-08-26 19:03:51 +02:00
Armin Krezović
3974925819 Move groups and window/group prop hooks to MetaX11Display 2017-08-26 18:58:29 +02:00
Armin Krezović
b157d34417 Move alarm and xids management to MetaX11Display 2017-08-26 18:56:44 +02:00
Armin Krezović
a2d13e76cc Move screen size and cursor setting to MetaDisplay
Split X11 specific parts into MetaX11Display
2017-08-26 18:49:51 +02:00
Armin Krezović
a72a2381de Move X11 extension queries to MetaX11Display
Also split extension queries into their own functions
2017-08-26 18:28:53 +02:00
Armin Krezović
2d0a1b8179 Switch meta_error_trap functions to MetaX11Display
They are X11 specific functions, used for X11 code. They have been
improved per jadahl's suggestion to use gdk_x11_lookup_xdisplay and
gdk_x11_display_error_trap_* functions, instead of current code.
2017-08-26 18:27:50 +02:00
Armin Krezović
1d97da1631 Start populating MetaX11Display
- Moved xdisplay, name and various atoms from MetaDisplay
- Moved xroot, screen_name, default_depth and default_xvisual
  from MetaScreen

- Moved some X11 specific functions from screen.c and display.c
  to meta-x11-display.c
2017-08-26 18:26:30 +02:00
Armin Krezović
88b5580af7 Add MetaX11Display skeleton
Also reorder meta_display_open () and meta_display_close ()
to sort X11 and non-X11 specific members.
2017-08-26 18:24:46 +02:00
Jordi Mas
98fcd616a3 Update Catalan translation 2017-08-25 13:23:23 +02:00
Daniel Stone
06d0989014 wayland-dma-buf: Fix 32bpp channel order inversion
Apparently my understanding of Cogl pixel formats, or at least their
use, was somewhat shaky.

Un-invert the inversion of the DRM FourCC -> Cogl pixel format mapping
when creating dmabufs from clients, fixing inverted channel ordering
seen from GL clients, e.g. gold highlights in gtk4-demo when using the
GSK GL backend when they should be blue.

https://bugzilla.gnome.org/show_bug.cgi?id=786677
2017-08-24 15:11:37 +02:00
Milo Casagrande
c248feb3c1 Update Italian translation 2017-08-24 07:45:30 +00:00
Dušan Kazik
3f2c5ca9bd Update Slovak translation 2017-08-23 17:50:59 +00:00
gogo
520c56fe53 Update Croatian translation 2017-08-23 15:40:53 +00:00
Fran Dieguez
d3a670b043 Update Galician translation 2017-08-23 10:22:13 +00:00
Piotr Drąg
6eca267eee Update Polish translation 2017-08-23 04:16:46 +02:00
Aurimas Černius
fdefe776d3 Updated Lithuanian translation 2017-08-22 23:18:07 +03:00
Marek Cernocky
bba8776184 Updated Czech translation 2017-08-22 18:48:01 +02:00
Mario Sanchez Prada
e075242801 egl: Don't require eglGetPlatformDisplayEXT
Trying to unilaterally require eglGetPlatformDisplayEXT causes problems in
scenarios where this method is not available. Besides, this should only be
required on Wayland, so we can stop requiring it always and simply let the
eglGetPlatformDisplay() function error accordingly when needed.

https://bugzilla.gnome.org/show_bug.cgi?id=786619
2017-08-22 18:33:13 +02:00
Florian Müllner
0f9686fb5a Bump version to 3.25.91
Update NEWS.
2017-08-22 00:21:48 +02:00
Alessandro Bono
168479862d meta-background-actor: Unset flags when they are not valid anymore
Currently, the flags that describe what is changed are never unsetted.
Unset each flag just after using them.

https://bugzilla.gnome.org/show_bug.cgi?id=783512
2017-08-21 22:18:28 +02:00
Mario Sanchez Prada
483ed98777 cogl: Only do the swizzling hack for GL contexts
The GL_BGRA definition is not available for GLES2 contexts, which use
the EXT_texture_format_BGRA8888 instead, causing a build failure when
trying to use it in those contexts.

Fortunately, this hack is only relevant for GL, so let's guard it to
prevent the failure in GLES2, where that extension is used instead.

https://bugzilla.gnome.org/show_bug.cgi?id=786568
2017-08-21 16:29:39 +02:00
Jonas Ådahl
14fe6e9c95 cursor-renderer-native: Don't use HW cursor on transformed logical monitor
The HW cursor plane can't do any transformations, and as we still don't
pre-transform any buffer before uploading to the cursor plane, we must
disable the HW cursor when a logical monitor is transformed.

This worked previously because the transform of a MetaCrtc did not
correspond to the transform of a CRTC, but the transform of the logical
monitor the CRTC was assigned to.

https://bugzilla.gnome.org/show_bug.cgi?id=786023
2017-08-21 21:20:19 +08:00
Jonas Ådahl
6584d06bb5 monitor-manager: Don't cancel confirm dialog on verifying
When another D-Bus call that just tries to verify a configuration is
made, don't cancel any active monitor configuration dialog, as doing so
would effectively confirm queried configuration.

https://bugzilla.gnome.org/show_bug.cgi?id=786023
2017-08-21 21:20:19 +08:00
Jonas Ådahl
92a53f08f4 keybindings: Only resolve keysyms for the current layout group
When resolving what keycodes a key binding resolves to, only look up
key codes from the current layout group. Without this, unwanted
overlaps may occur. For example when a keymap has both a dvorak and a
qwerty layout on different layout groups, one keybinding may be bound
on multiple keys, arbitrarily "shadowing" another.

https://bugzilla.gnome.org/show_bug.cgi?id=786408
2017-08-21 21:19:18 +08:00
Jonas Ådahl
a81d4aed7a backend/x11: Notify whenever the layout group changes
Will be used to trigger keyboard binding rebuild.

https://bugzilla.gnome.org/show_bug.cgi?id=786408
2017-08-21 21:19:18 +08:00
Jonas Ådahl
517488ef67 backends/native: Only emit layout group changed event when changed
Check that the layout group changed before emitting a changed event.
2017-08-21 21:19:18 +08:00
Jonas Ådahl
33f1706634 backend: Add API to get layout group
Add API to get the layout group (layout index) currently active. In the
native backend this is done by fetching the state directly from the
evdev backend; on X11 this works by listening for XkbStateNotify
events, caching the layout group value.

https://bugzilla.gnome.org/show_bug.cgi?id=786408
2017-08-21 21:19:18 +08:00
Jonas Ådahl
5685449e15 clutter/evdev: Add API to get current layout index
We set the layout index when changing keyboard layout, but have no way
to get it back would so be needed. Add that.

https://bugzilla.gnome.org/show_bug.cgi?id=786408
2017-08-21 21:19:18 +08:00
Jonas Ådahl
a6d67b164a x11: Open backend X11 connection ourself
Don't wait for clutter to initialize for connecting to X11; do it when
constructing the backend instance. This way we can later depend on
having an X11 connection earlier during initialization.

https://bugzilla.gnome.org/show_bug.cgi?id=786408
2017-08-21 21:19:18 +08:00
Jonas Ådahl
f950380202 monitor-manager-xrandr: Use G_DECLARE_FINAL_TYPE macro
Declare the MetaMonitorManagerXrandr type using the helper macro,
instead of manually.

https://bugzilla.gnome.org/show_bug.cgi?id=786408
2017-08-21 21:19:18 +08:00
Kukuh Syafaat
a4270fa7ac Update Indonesian translation 2017-08-21 07:33:47 +00:00
Jonas Ådahl
35c9280fb6 monitor-manager: Try to restore previous config before regenerating
When opening a laptop lid, one will likely want to restore the
configuration one had prior to closing it, so when ensuring monitor
configuration, first try to see if the previously set configuration is
both complete (all connected monitors are configured) and applicable
(it is a valid configuration) and only try to generate a new from
scratch if that failed.

https://bugzilla.gnome.org/show_bug.cgi?id=777732
2017-08-21 12:23:51 +08:00
Jonas Ådahl
8b92ad1d4b tests/monitor-unit-tests: Clear config history before each test
To not let different tests interfere with each other, clear the config
history before each run.
2017-08-21 12:23:51 +08:00
Jonas Ådahl
0d6e3fd675 tests/monitor-unit-tests: Use special purpose add test helper
Will later be used to set a setup function.
2017-08-21 12:23:51 +08:00
Jonas Ådahl
b140e7fbeb monitor-config-manager: Keep short history of configurations
In order to go back in monitor configurations, save them to a history.
The history is implemented as a max 3 element long queue, where newly
set configurations are pushed to the head, and old are popped from the
tail.

The difference between using a single previous config reference and a
queue is that we can now remember the configuration used prior to a
D-Bus triggered configuration when the user discarded the configuration.

This will later be used to restore a previous configuration when a
laptop lid is opened.

https://bugzilla.gnome.org/show_bug.cgi?id=777732
2017-08-21 12:23:51 +08:00
Jonas Ådahl
6c0f107db0 tests: Add rotated multi head monitor config migration test
https://bugzilla.gnome.org/show_bug.cgi?id=777732
2017-08-21 12:23:51 +08:00
Jonas Ådahl
61950755ec tests: Add monitor config migration tests
So far some basic testing, including:

 * Test that the migrated configuration is applicable
 * Test that a monitors.xml with multiple configurations are translated
 * Test rotation
 * Test tiled monitor discovery (well, test a made up tiled monitor
   configuration since I don't have a real one)

https://bugzilla.gnome.org/show_bug.cgi?id=777732
2017-08-21 12:23:51 +08:00
Jonas Ådahl
bc3162460f Migrate old monitor configuration files to new system
This commit changes the new configuration system to use monitors.xml
instead of monitors-experimental.xml. When starting up and the
monitors.xml file is loaded, if a legacy monitors.xml file is
discovered (it has the version number 1), an attempt is made to migrate
the stored configuration onto the new system.

This is done in two steps:

1) Parsing and translation of the old configuration. This works by
parsing file using the mostly the old parser, but then translating the
resulting configuration structs into the new configuration system. As
the legacy configuration system doesn't carry over some state (such as
tiling and scale used), some things are not available. For tiling, the
migration paths makes an attempt to discover tiled monitors by
comparing EDID data, and guessing what the main tile is. Determination
of the scale of a migrated configuration is postponed until the
configuration is actually applied. This works by flagging the
configuration as 'migrated'.

2) Finishing the migration when applying. When a configuration with the
'migrated' flag is retrieved from the configuration store, the final
step of the migration is taken place. This involves calculating the
preferred scale given the mode configured, while making sure this
doesn't result in any overlapping logical monitor regions etc.

https://bugzilla.gnome.org/show_bug.cgi?id=777732
2017-08-21 12:23:51 +08:00
Jonas Ådahl
27a4f9f862 monitor-manager/kms: Use connector id to find old output
The zero-initialized winsys id was incorrectly used as the key to find
the old output to base active/primary state from, which would never
succeed unless the winsys id happened to be 0. Fix this by using the
winsys id that will be used, i.e. the connector id.

https://bugzilla.gnome.org/show_bug.cgi?id=777732
2017-08-21 12:23:51 +08:00
Jonas Ådahl
88f2441330 monitor-manager: Fix output variable naming
Fix the last case of using the variable name "meta_output" for a
MetaOutput.

https://bugzilla.gnome.org/show_bug.cgi?id=777732
2017-08-21 12:23:51 +08:00
Jonas Ådahl
ab04286c6b monitor-manager/x11: Don't complain about 'normal' transform
The 'normal' transform has the value 0, so the g_warn_if_fail()
expression failed. Correct it so that it doesn't complain when no
transform is checked.

https://bugzilla.gnome.org/show_bug.cgi?id=777732
2017-08-21 12:23:51 +08:00
Jonas Ådahl
e8a62861c9 Remove old monitor configuration system
Remove the old MetaMonitorConfig system and mark the new one as
non-experimental. This also removes the D-Bus property.

https://bugzilla.gnome.org/show_bug.cgi?id=777732
2017-08-21 12:20:53 +08:00
Jonas Ådahl
9ac87b36c1 monitor-manager/xrandr: Fix name inconsistencies
MetaOutputs should be "output" and external types should be named as
such, i.e. XRandr outputs are renamed to "xrandr_output".

https://bugzilla.gnome.org/show_bug.cgi?id=777732
2017-08-21 12:20:30 +08:00
Pawan Chitrakar
ce7819949f Update Nepali translation 2017-08-20 09:01:04 +00:00
freeroot
12792f99a0 Add tag-and-drag setting from libinput into mutter
The problem is that libinput offers the possibility to not enabled
dragging when tap-to-click is enabled but mutter doesn't. For people who
have a sensitive touchpad and who like tap-to-click option, dragging is
launched even when you don't want it : for example, when you select a
folder, most of the time the folder is dragging whereas just selected or
when you want to select some lines of a text file, several lines are
moved as a cut-paste which is not expected and erase datas.

To fix it, you need to have the possibility to desactivate the drag
option when you use tap-to-click in mutter. Because it's already a
specification of libinput, it remains to add it to mutter.
Implementation with X11 is added too.

https://bugzilla.gnome.org/show_bug.cgi?id=775755
2017-08-20 09:27:28 +08:00
Jonas Ådahl
66996dee4b wayland/inhibit-shortcuts-dialog: Destroy the dialog after response
We'll never actually show it again, but just use the last response, so
we can just destroy it now already.

https://bugzilla.gnome.org/show_bug.cgi?id=786385
2017-08-19 17:24:06 +08:00
Jonas Ådahl
2f45e88f06 wayland/inhibit-shortcuts-dialog: Just hide the dialog when hiding
The meta_wayland_surface_hide_inhibit_shortcuts_dialog() function
disconnected the "destroy" handler, but we'd still be listening on
response events. Change this to just hide the dialog, leaving the data
intact with the proper life time signal in place.

https://bugzilla.gnome.org/show_bug.cgi?id=786385
2017-08-19 17:24:06 +08:00
Jonas Ådahl
c1439e141e wayland/inhibit-shortcuts-dialog: Make the dialog ownership clearer
Make it clear that the data object is the owner of the dialog; it
creates it, and eventually destroys it.

https://bugzilla.gnome.org/show_bug.cgi?id=786385
2017-08-19 17:24:02 +08:00
Jonas Ådahl
dceb0f1f1f wayland/inhibit-shortcuts-dialog: Make data life cycle a bit clearer
The 'data' object is attached to the MetaWaylandSurface as a GObject
qdata. It is created once, and stays allocated until the surface is
destroyed. To make things clearer, connect to the "destroy" signal just
after creating, and from a on_surface_destroyed() callback call the
.._free() function.

https://bugzilla.gnome.org/show_bug.cgi?id=786385
2017-08-19 17:23:07 +08:00
Jonas Ådahl
a7915ff8ae wayland/inhibit-shortcuts-dialog: Only reuse last reply if there was one
We might have hidden the dialog, without a response. To avoid using the
not answered response, make sure we have actually got one before
reusing.

https://bugzilla.gnome.org/show_bug.cgi?id=786385
2017-08-19 17:11:21 +08:00
Rui Matos
420a712ad5 meta-monitor: Make supported scales determination saner
Scales below 1 and scales that result in a too small logical monitor
size don't make sense. We also don't need so many intermediate scales.

https://bugzilla.gnome.org/show_bug.cgi?id=786474
2017-08-18 18:41:01 +02:00
Jonas Ådahl
9a47e5c832 wayland/buffer: Add missing breaks in switch statement
We'd process damage, and no matter whether it succeeded or not we'd
pretend it succeeded, meaning any potential GError would be leaked.

https://bugzilla.gnome.org/show_bug.cgi?id=786300
2017-08-16 13:33:17 +08:00
Jonas Ådahl
dbc63430d8 renderer-native: Destroy monitor framebuffers when suspending
When suspending (i.e. VT switching away, the GDM gnome-shell instance
gets hidden, or changing user), destroy the onscreen and offscreen
monitor framebuffers. When resuming, the stage views and framebuffers
will be recreated anyway.

https://bugzilla.gnome.org/show_bug.cgi?id=786299
2017-08-16 13:17:43 +08:00
Мирослав Николић
0f861cecac Updated Serbian translation 2017-08-15 20:57:06 +02:00
Claude Paroz
586f9666d7 Updated French translation 2017-08-15 09:16:45 +02:00
Muhammet Kara
05a2331052 Update Turkish translation 2017-08-13 15:55:41 +00:00
Muhammet Kara
9f8bee7781 Update Turkish translation 2017-08-13 15:54:17 +00:00
Muhammet Kara
d9505315da Update Turkish translation 2017-08-13 15:46:57 +00:00
Carlos Garnacho
c9937faf1e clutter: Fix build with --enable-debug
Message was poking stage_x11, which doesn't exist in this context.
Just print the Window that is receiving the event, the event will be
emitted into the only existing stage anyway.
2017-08-12 11:55:19 +02:00
Alberts Muktupāvels
98606bc046 data: fix gettext domain
https://bugzilla.gnome.org/show_bug.cgi?id=691611
2017-08-10 22:17:55 +03:00
Florian Müllner
49096f0530 Bump version to 3.25.90
Update NEWS.
2017-08-10 18:30:08 +02:00
Balázs Meskó
ff6eb86bb4 Update Hungarian translation 2017-08-10 08:27:55 +00:00
Fran Dieguez
c735eab216 Update Galician translation 2017-08-09 15:56:33 +00:00
Kukuh Syafaat
299aa9759c Update Indonesian translation 2017-08-08 23:53:08 +00:00
Matej Urbančič
35e9020f4c Updated Slovenian translation 2017-08-07 10:06:34 +02:00
Daniel Mustieles
6d4234e300 Updated Spanish translation 2017-08-05 12:03:45 +02:00
gogo
0457870ff1 Update Croatian translation 2017-08-03 19:58:02 +00:00
gogo
a52c4c2795 Update Croatian translation 2017-08-03 19:37:50 +00:00
Marek Cernocky
bb8c388a37 Updated Czech translation 2017-08-03 09:42:45 +02:00
Olivier Fourdan
46cb506f8f wayland: use the inhibit shortcuts dialog
Plug the new MetaInhbitShortcutsDialog to the relevant Wayland protocol
implementation.

Also, remember the last user choice for a given surface to avoid asking
continuously the same question.

https://bugzilla.gnome.org/show_bug.cgi?id=783342
2017-08-02 11:58:55 +02:00
Olivier Fourdan
ce20c964a6 compositor: add vmethod to override inhibit shortcut dialog
A MetaPlugin implementation of the MetaInhibitShortcutsDialog can be
used in place of the default inhibit shortcut.

https://bugzilla.gnome.org/show_bug.cgi?id=783342
2017-08-02 11:58:55 +02:00
Olivier Fourdan
e3f76e9482 core: implement MetaInhibitShortcutsDialogDefault
this is the default implementation of the inhibit shortcuts dialog,
does nothing but allowing the shortcut inhibit request.

https://bugzilla.gnome.org/show_bug.cgi?id=783342
2017-08-02 11:58:55 +02:00
Olivier Fourdan
b894fbd9ff core: add MetaInhibitShortcutsDialog
Add a new interface for allowing or denying shortcuts inhibit requests.

https://bugzilla.gnome.org/show_bug.cgi?id=783342
2017-08-02 11:58:55 +02:00
Olivier Fourdan
2ca0871724 wayland: add keyboard shortcuts inhibitor protocol
https://bugzilla.gnome.org/show_bug.cgi?id=783342
2017-08-02 11:58:55 +02:00
Olivier Fourdan
dd12f569d9 wayland: add inhibit shortcut mechanism
Add a mechanism to MetaWaylandSurface that inhibits compositor's own
shortcuts when the surface has input focus, so that clients can receive
all key events regardless of the compositor own shortcuts.

This will help with implementing "fake" active grabs in Wayland and
XWayland clients.

https://bugzilla.gnome.org/show_bug.cgi?id=783342
2017-08-02 11:58:55 +02:00
Olivier Fourdan
c54377e3ba configure.ac: update wayland-server requirement
Raise wayland-server requirement to 1.13.0 to use the new API to control
wl_global visibility, so that we can hide Xwayland specific protocols
from other regular clients.

https://bugzilla.gnome.org/show_bug.cgi?id=783342
2017-08-02 11:58:55 +02:00
Matej Urbančič
346acaf7f6 Updated Slovenian translation 2017-08-02 10:29:57 +02:00
Jordi Mas
3343a199c2 Update Catalan translation 2017-08-02 06:45:02 +02:00
Jonas Ådahl
1fb3c9f8bf configure.ac: Bump the API version
We added/changed various API for example the DisplayConfig D-Bus API,
so bump the API version.
2017-08-01 23:55:45 +08:00
Daniel Stone
b7b5fb293d wayland: Add zwp_linux_dmabuf_v1 support
https://bugzilla.gnome.org/show_bug.cgi?id=785262
Signed-off-by: Daniel Stone <daniels@collabora.com>
2017-08-01 19:05:50 +08:00
Cosimo Cecchi
1455c402b9 monitor-manager: add API to get the display configuration timeout
Instead of hardcoding this into two different places, add an API so that
gnome-shell can fetch it.

https://bugzilla.gnome.org/show_bug.cgi?id=767805
2017-07-31 15:41:15 +01:00
Cosimo Cecchi
4c1fe4c30d prefs: fix a couple of typos
It's "threshold", not "trheshold". Also, make sure to add the enum value
to the documentation section.

https://bugzilla.gnome.org/show_bug.cgi?id=767805
2017-07-31 15:21:06 +01:00
Baurzhan Muftakhidinov
9b97a44760 Update Kazakh translation 2017-07-27 12:30:06 +00:00
Carlos Garnacho
26fa7b8f6a wayland: Reset tablet tool cursor surface on proximity out
The cursor surface would be remembered until the next proximity in
event, causing flashing of the old cursor till the client underneath
the tablet tool sent the zwp_tablet_tool.set_cursor request.

Forgetting about the cursor surface on proximity out makes the cursor
invisible till the request is made.
2017-07-26 15:41:28 +02:00
Daniel Mustieles
7486783692 Updated Spanish translation 2017-07-25 20:17:32 +02:00
Aurimas Černius
9929efb65e Updated Lithuanian translation 2017-07-24 23:59:50 +03:00
Carlos Garnacho
5db48faca4 wayland: Update button state on motion/button events
More specifically, avoid crossing events, since clutter does not set
modifier/button state on those. Fixes implicit grabs being broken when
the pointer moves past the surface boundaries.

https://bugzilla.gnome.org/show_bug.cgi?id=785347
2017-07-24 17:57:31 +02:00
Kukuh Syafaat
b0c54b6675 Update Indonesian translation 2017-07-23 02:46:38 +00:00
Fabio Tomat
d8354cb153 Update Friulian translation 2017-07-22 20:54:15 +00:00
Daniel Stone
9a348aa859 wayland/buffer: Create EGLImage with no context
Since a wl_buffer is independent of the GL context in use (unlike, e.g.,
a GL renderbuffer), EGLImages with the EGL_WAYLAND_BUFFER_WL target must
pass EGL_NO_CONTEXT as the context. Quoting from the
EGL_WL_bind_wayland_display spec:

    After querying the wl_buffer layout, create EGLImages for the
    planes by calling eglCreateImageKHR with wl_buffer as
    EGLClientBuffer, EGL_WAYLAND_BUFFER_WL as the target, NULL
    context.

The check was already present inside _cogl_egl_create_image.

https://bugzilla.gnome.org/show_bug.cgi?id=785263
Signed-off-by: Daniel Stone <daniels@collabora.com>
2017-07-22 11:44:44 +02:00
192 changed files with 18720 additions and 17349 deletions

34
NEWS
View File

@@ -1,3 +1,37 @@
3.25.91
=======
* Reduce memory use of suspended instances [Jonas; #786299]
* Make supported scales determination saner [Rui; #786474]
* Fix crash on inhibit-shortcuts dialog reponse [Jonas; #786385]
* Support libinput's tag-and-drag setting [freeroot; #775755]
* Avoid overlapping keybindings with multiple layouts [Jonas; #786408]
* Fix non-transformed cursor on rotated monitors [Jonas; #786023]
* Avoid unnecessary work during background painting [Alessandro; #783512]
* Misc. bug fixes [Alberts, Jonas, Mario; #691611, #786300, #777732, #786568]
Contributors:
freeroot, Jonas Ådahl, Alessandro Bono, Carlos Garnacho, Rui Matos,
Alberts Muktupāvels, Mario Sanchez Prada
Translations:
Muhammet Kara [tr], Claude Paroz [fr], Мирослав Николић [sr, sr@latin],
Pawan Chitrakar [ne], Kukuh Syafaat [id]
3.25.90
=======
* Add zwp_linux_dmabuf_v1 support [Daniel; #785262]
* Add (x)wayland shortcut inhibitor support [Olivier; #783342]
* Misc. bug fixes [Daniel, Carlos, Cosimo; #785263, #785347, #767805]
Contributors:
Jonas Ådahl, Cosimo Cecchi, Olivier Fourdan, Carlos Garnacho, Daniel Stone
Translations:
Fabio Tomat [fur], Kukuh Syafaat [id], Aurimas Černius [lt],
Daniel Mustieles [es], Baurzhan Muftakhidinov [kk], Jordi Mas [ca],
Matej Urbančič [sl], Marek Cernocky [cs], gogo [hr], Fran Dieguez [gl],
Balázs Meskó [hu]
3.25.4
======
* Do not throttle motion events on tablet tools [Carlos; #783535]

View File

@@ -267,6 +267,7 @@ clutter_stage_view_set_property (GObject *object,
priv->layout = *layout;
break;
case PROP_FRAMEBUFFER:
g_clear_pointer (&priv->framebuffer, cogl_object_unref);
priv->framebuffer = g_value_dup_boxed (value);
#ifndef G_DISABLE_CHECKS
if (priv->framebuffer)
@@ -284,6 +285,7 @@ clutter_stage_view_set_property (GObject *object,
#endif
break;
case PROP_OFFSCREEN:
g_clear_pointer (&priv->offscreen, cogl_object_unref);
priv->offscreen = g_value_dup_boxed (value);
break;
case PROP_SCALE:
@@ -355,7 +357,7 @@ clutter_stage_view_class_init (ClutterStageViewClass *klass)
"Framebuffer used as intermediate buffer",
COGL_TYPE_HANDLE,
G_PARAM_READWRITE |
G_PARAM_CONSTRUCT_ONLY |
G_PARAM_CONSTRUCT |
G_PARAM_STATIC_STRINGS);
obj_props[PROP_SCALE] =

View File

@@ -2602,6 +2602,21 @@ clutter_evdev_set_keyboard_layout_index (ClutterDeviceManager *evdev,
xkb_state_update_mask (state, depressed_mods, latched_mods, locked_mods, 0, 0, idx);
}
/**
* clutter_evdev_get_keyboard_layout_index: (skip)
*/
xkb_layout_index_t
clutter_evdev_get_keyboard_layout_index (ClutterDeviceManager *evdev)
{
ClutterDeviceManagerEvdev *manager_evdev;
struct xkb_state *state;
manager_evdev = CLUTTER_DEVICE_MANAGER_EVDEV (evdev);
state = manager_evdev->priv->main_seat->xkb;
return xkb_state_serialize_layout (state, XKB_STATE_LAYOUT_LOCKED);
}
/**
* clutter_evdev_set_keyboard_numlock: (skip)
* @evdev: the #ClutterDeviceManager created by the evdev backend

View File

@@ -120,6 +120,9 @@ CLUTTER_AVAILABLE_IN_1_20
void clutter_evdev_set_keyboard_layout_index (ClutterDeviceManager *evdev,
xkb_layout_index_t idx);
CLUTTER_AVAILABLE_IN_MUTTER
xkb_layout_index_t clutter_evdev_get_keyboard_layout_index (ClutterDeviceManager *evdev);
CLUTTER_AVAILABLE_IN_1_26
void clutter_evdev_set_keyboard_numlock (ClutterDeviceManager *evdev,
gboolean numlock_state);

View File

@@ -1160,7 +1160,7 @@ translate_pad_event (ClutterEvent *event,
event->any.type == CLUTTER_PAD_RING
? "pad ring "
: "pad strip",
(unsigned int) stage_x11->xwin,
(unsigned int) xev->event,
device->id,
device->device_name,
event->any.time, value);

View File

@@ -1417,15 +1417,17 @@ _cogl_framebuffer_gl_read_pixels_into_bitmap (CoglFramebuffer *framebuffer,
&gl_intformat,
&gl_format,
&gl_type);
#if HAVE_COGL_GL
/* As we are reading pixels, we want to consider the bitmap according to
* its real pixel format, not the swizzled channels we pretend face to the
* pipeline.
*/
if ((format == COGL_PIXEL_FORMAT_BGRA_8888 ||
if ((ctx->driver == COGL_DRIVER_GL || ctx->driver == COGL_DRIVER_GL3) &&
(format == COGL_PIXEL_FORMAT_BGRA_8888 ||
format == COGL_PIXEL_FORMAT_BGRA_8888_PRE) &&
_cogl_has_private_feature (ctx, COGL_PRIVATE_FEATURE_TEXTURE_SWIZZLE))
gl_format = GL_BGRA;
#endif
/* NB: All offscreen rendering is done upside down so there is no need
* to flip in this case... */

View File

@@ -2,14 +2,14 @@ AC_PREREQ(2.62)
m4_define([mutter_major_version], [3])
m4_define([mutter_minor_version], [25])
m4_define([mutter_micro_version], [4])
m4_define([mutter_micro_version], [91])
m4_define([mutter_version],
[mutter_major_version.mutter_minor_version.mutter_micro_version])
m4_define([mutter_plugin_api_version], [3])
m4_define([libmutter_api_version], [0])
m4_define([libmutter_api_version], [1])
AC_INIT([mutter], [mutter_version],
[http://bugzilla.gnome.org/enter_bug.cgi?product=mutter])
@@ -275,7 +275,7 @@ AS_IF([test "$enable_egl_device" = "yes"], [
AC_DEFINE([HAVE_EGL_DEVICE],[1], [Defined if EGLDevice support is enabled])
])
MUTTER_WAYLAND_MODULES="wayland-server >= 1.6.90"
MUTTER_WAYLAND_MODULES="wayland-server >= 1.13.0"
AC_ARG_ENABLE(wayland,
AS_HELP_STRING([--disable-wayland], [disable mutter on wayland support]),,
@@ -292,7 +292,7 @@ AS_IF([test "$have_wayland" = "yes"], [
AC_SUBST([WAYLAND_SCANNER])
AC_DEFINE([HAVE_WAYLAND],[1],[Define if you want to enable Wayland support])
PKG_CHECK_MODULES(WAYLAND_PROTOCOLS, [wayland-protocols >= 1.7],
PKG_CHECK_MODULES(WAYLAND_PROTOCOLS, [wayland-protocols >= 1.9],
[ac_wayland_protocols_pkgdatadir=`$PKG_CONFIG --variable=pkgdatadir wayland-protocols`])
AC_SUBST(WAYLAND_PROTOCOLS_DATADIR, $ac_wayland_protocols_pkgdatadir)
])

View File

@@ -18,7 +18,7 @@ gschema_in_files = \
gsettings_SCHEMAS = $(gschema_in_files:.xml.in=.xml)
%.gschema.xml: %.gschema.xml.in Makefile
$(AM_V_GEN) sed -e 's|@GETTEXT_DOMAIN[@]|$(GETTEXT_DOMAIN)|g' \
$(AM_V_GEN) sed -e 's|@GETTEXT_DOMAIN[@]|$(GETTEXT_PACKAGE)|g' \
$< > $@ || rm $@
@GSETTINGS_RULES@

View File

@@ -1,6 +1,6 @@
<schemalist>
<schema id="org.gnome.mutter" path="/org/gnome/mutter/"
gettext-domain="@GETTEXT_DOMAIN">
gettext-domain="@GETTEXT_DOMAIN@">
<key name="overlay-key" type="s">
<default>'Super_L'</default>
@@ -103,7 +103,7 @@
</key>
<key name="experimental-features" type="as">
<default>['monitor-config-manager']</default>
<default>[]</default>
<summary>Enable experimental features</summary>
<description>
To enable experimental features, add the feature keyword to the list.
@@ -114,22 +114,12 @@
Currently possible keywords:
• “monitor-config-manager” — use the new monitor configuration
system, aimed to replace the old one.
This enables a higher level configuration
API to be used by configuration
applications, as well as the ability to
configure per logical monitor scale.
• “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.
Also enabling “monitor-config-manager”
is required for this feature to be
enabled.
</description>
</key>

View File

@@ -49,5 +49,9 @@
<default><![CDATA[['<Primary><Alt>F12']]]></default>
<summary>Switch to VT 12</summary>
</key>
<key name="restore-shortcuts" type="as">
<default><![CDATA[['<Shift><Control>Escape']]]></default>
<summary>Re-enable shortcuts</summary>
</key>
</schema>
</schemalist>

View File

@@ -13,18 +13,18 @@ src/compositor/meta-background.c
src/core/bell.c
src/core/core.c
src/core/display.c
src/core/errors.c
src/core/keybindings.c
src/core/main.c
src/core/meta-close-dialog-default.c
src/core/mutter.c
src/core/prefs.c
src/core/screen.c
src/core/util.c
src/core/window.c
src/ui/frames.c
src/ui/theme.c
src/wayland/meta-wayland-tablet-pad.c
src/x11/meta-x11-display.c
src/x11/meta-x11-errors.c
src/x11/session.c
src/x11/window-props.c
src/x11/xprops.c

116
po/ca.po
View File

@@ -13,16 +13,16 @@ msgstr ""
"Project-Id-Version: metacity 2.24\n"
"Report-Msgid-Bugs-To: https://bugzilla.gnome.org/enter_bug.cgi?"
"product=mutter&keywords=I18N+L10N&component=general\n"
"POT-Creation-Date: 2017-04-21 21:33+0000\n"
"PO-Revision-Date: 2016-03-13 14:45+0100\n"
"Last-Translator: Gil Forcada <gilforcada@guifi.net>\n"
"POT-Creation-Date: 2017-08-21 04:46+0000\n"
"PO-Revision-Date: 2017-08-25 13:23+0200\n"
"Last-Translator: Jordi Mas <jmas@softcatala.org>\n"
"Language-Team: Catalan <tradgnome@softcatala.org>\n"
"Language: ca\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bits\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Gtranslator 2.91.6\n"
"X-Generator: Poedit 2.0.1\n"
#: data/50-mutter-navigation.xml:6
msgid "Navigation"
@@ -105,10 +105,8 @@ msgid "Switch to previous window of an application"
msgstr "Canvia a la finestra anterior d'una aplicació"
#: data/50-mutter-navigation.xml:76
#, fuzzy
#| msgid "Switch system controls directly"
msgid "Switch system controls"
msgstr "Canvia immediatament entre els controls del sistema"
msgstr "Canvia els controls del sistema"
#: data/50-mutter-navigation.xml:81
msgid "Switch to previous system control"
@@ -279,12 +277,6 @@ msgstr ""
"finestres"
#: data/org.gnome.mutter.gschema.xml.in:8
#, fuzzy
#| 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 "
@@ -333,11 +325,6 @@ msgid "Workspaces are managed dynamically"
msgstr "Els espais de treball es gestionen dinàmicament"
#: data/org.gnome.mutter.gschema.xml.in:41
#, fuzzy
#| 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."
@@ -376,11 +363,6 @@ msgid "Delay focus changes until the pointer stops moving"
msgstr "Retarda el canvi del focus fins que s'aturi el punter"
#: data/org.gnome.mutter.gschema.xml.in:69
#, fuzzy
#| 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 "
@@ -395,10 +377,6 @@ msgid "Draggable border width"
msgstr "Amplada del contorn arrossegable"
#: data/org.gnome.mutter.gschema.xml.in:80
#, fuzzy
#| 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."
@@ -435,7 +413,7 @@ msgstr ""
#: data/org.gnome.mutter.gschema.xml.in:107
msgid "Enable experimental features"
msgstr ""
msgstr "Habilita les funcionalitats experimentals"
#: data/org.gnome.mutter.gschema.xml.in:108
msgid ""
@@ -457,6 +435,14 @@ msgstr "Selecció de finestra entre les emergents d'una pestanya"
msgid "Cancel tab popup"
msgstr "Cancel·lació de les finestres emergents a les pestanyes"
#: data/org.gnome.mutter.gschema.xml.in:151
msgid "Switch monitor configurations"
msgstr "Canvia configuracions de monitor"
#: data/org.gnome.mutter.gschema.xml.in:156
msgid "Rotates the built-in monitor configuration"
msgstr "Gira la configuració del monitor integrada"
#: data/org.gnome.mutter.wayland.gschema.xml.in:6
msgid "Switch to VT 1"
msgstr "Canvia al terminal virtual 1"
@@ -505,10 +491,14 @@ msgstr "Canvia al terminal virtual 11"
msgid "Switch to VT 12"
msgstr "Canvia al terminal virtual 12"
#: data/org.gnome.mutter.wayland.gschema.xml.in:54
msgid "Re-enable shortcuts"
msgstr "Torna a habilitar les dreceres"
#. TRANSLATORS: This string refers to a button that switches between
#. * different modes.
#.
#: src/backends/meta-input-settings.c:1848
#: src/backends/meta-input-settings.c:2151
#, c-format
msgid "Mode Switch (Group %d)"
msgstr "Mode de commutació (grup %d)"
@@ -516,37 +506,37 @@ msgstr "Mode de commutació (grup %d)"
#. TRANSLATORS: This string refers to an action, cycles drawing tablets'
#. * mapping through the available outputs.
#.
#: src/backends/meta-input-settings.c:1870
#: src/backends/meta-input-settings.c:2174
msgid "Switch monitor"
msgstr "Commuta el monitor"
#: src/backends/meta-input-settings.c:1872
#: src/backends/meta-input-settings.c:2176
msgid "Show on-screen help"
msgstr "Mostra l'ajuda en pantalla"
#: src/backends/meta-monitor-manager.c:783
#: src/backends/meta-monitor-manager.c:903
msgid "Built-in display"
msgstr "Pantalla integrada"
#: src/backends/meta-monitor-manager.c:806
#: src/backends/meta-monitor-manager.c:926
msgid "Unknown"
msgstr "Desconeguda"
#: src/backends/meta-monitor-manager.c:808
#: src/backends/meta-monitor-manager.c:928
msgid "Unknown Display"
msgstr "Pantalla desconeguda"
#. TRANSLATORS: this is a monitor vendor name, followed by a
#. * size in inches, like 'Dell 15"'
#.
#: src/backends/meta-monitor-manager.c:816
#: src/backends/meta-monitor-manager.c:936
#, c-format
msgid "%s %s"
msgstr "%s %s"
#. 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:474
#: src/compositor/compositor.c:476
#, c-format
msgid ""
"Another compositing manager is already running on screen %i on display “%s”."
@@ -558,32 +548,6 @@ msgstr ""
msgid "Bell event"
msgstr "Esdeveniment de campana"
#. Translators: %s is a window title
#: src/core/delete.c:127
#, c-format
msgid "“%s” is not responding."
msgstr "«%s» no està responent."
#: src/core/delete.c:129
msgid "Application is not responding."
msgstr "L'aplicació no està responent."
#: src/core/delete.c:134
msgid ""
"You may choose to wait a short while for it to continue or force the "
"application to quit entirely."
msgstr ""
"Podeu esperar un moment perquè continuï o podeu forçar-ne la sortida "
"completa."
#: src/core/delete.c:141
msgid "_Force Quit"
msgstr "_Força'n la sortida"
#: src/core/delete.c:141
msgid "_Wait"
msgstr "_Espera"
#: src/core/display.c:608
#, c-format
msgid "Failed to open X Window System display “%s”\n"
@@ -631,6 +595,32 @@ msgstr "Funciona com a compositor imbricat"
msgid "Run as a full display server, rather than nested"
msgstr "Funciona com a servidor de pantalla completa, en comptes d'imbricat"
#. Translators: %s is a window title
#: src/core/meta-close-dialog-default.c:147
#, c-format
msgid "“%s” is not responding."
msgstr "«%s» no està responent."
#: src/core/meta-close-dialog-default.c:149
msgid "Application is not responding."
msgstr "L'aplicació no està responent."
#: src/core/meta-close-dialog-default.c:154
msgid ""
"You may choose to wait a short while for it to continue or force the "
"application to quit entirely."
msgstr ""
"Podeu esperar un moment perquè continuï o podeu forçar-ne la sortida "
"completa."
#: src/core/meta-close-dialog-default.c:161
msgid "_Force Quit"
msgstr "_Força'n la sortida"
#: src/core/meta-close-dialog-default.c:161
msgid "_Wait"
msgstr "_Espera"
#: src/core/mutter.c:39
#, c-format
msgid ""

126
po/cs.po
View File

@@ -13,10 +13,10 @@ msgstr ""
"Project-Id-Version: mutter\n"
"Report-Msgid-Bugs-To: https://bugzilla.gnome.org/enter_bug.cgi?"
"product=mutter&keywords=I18N+L10N&component=general\n"
"POT-Creation-Date: 2017-03-07 12:40+0000\n"
"PO-Revision-Date: 2017-03-09 07:51+0100\n"
"POT-Creation-Date: 2017-08-21 04:46+0000\n"
"PO-Revision-Date: 2017-08-22 18:29+0200\n"
"Last-Translator: Marek Černocký <marek@manet.cz>\n"
"Language-Team: čeština <gnome-cs-list@gnome.org>\n"
"Language-Team: čeština <gnome-cs-list@gnome.org>>\n"
"Language: cs\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@@ -361,9 +361,8 @@ msgid ""
"focus will not be changed immediately when entering a window, but only after "
"the pointer stops moving."
msgstr ""
"Je-li zapnuto a režim zaměření je buď „sloppy“ nebo „mouse“, pak se "
"zaměření nezmění hned, když vstoupíte do kona, ale až se přestane pohybovat "
"ukazatel."
"Je-li zapnuto a režim zaměření je buď „sloppy“ nebo „mouse“, pak se zaměření "
"nezmění hned, když vstoupíte do kona, ale až se přestane pohybovat ukazatel."
#: data/org.gnome.mutter.gschema.xml.in:79
msgid "Draggable border width"
@@ -401,14 +400,48 @@ msgstr ""
"Je-li zapnuto, nová okna budou vždy umístěna ve středu aktivní obrazovky "
"monitoru."
#: data/org.gnome.mutter.gschema.xml.in:120
#: data/org.gnome.mutter.gschema.xml.in:107
msgid "Enable experimental features"
msgstr "Povolit experimentální funkce"
#: 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."
msgstr ""
"Chcete-li povolit experimentální funkce, přidejte klíčové slovo funkce do "
"seznamu. Zda funkce vyžaduje restartování kompozitoru, závisí na dané "
"funkci. Ne u každé experimentální funkce je vyžadováno, aby byla stále "
"dostupná nebo konfigurovatelná. Neočekávejte, že by bylo v tomto nastavení "
"přidáno něco, co by do budoucna přineslo vylepšení. V současné době jsou "
"možná tato klíčová slova: • „scale-monitor-framebuffer“ zajistí, "
"aby byl mutter výchozí pro logické uspořádání monitorů v logickém "
"souřadnicovém prostoru pixelů, zatímco škáluje přímo v grafické vyrovnávací "
"paměti, namísto v obsahu oken, aby se postaral o správu montorů s HiDPI. "
"Nevyžaduje restart."
#: data/org.gnome.mutter.gschema.xml.in:141
msgid "Select window from tab popup"
msgstr "Vybrat okno z překryvné nabídky tabulátoru"
#: data/org.gnome.mutter.gschema.xml.in:125
#: data/org.gnome.mutter.gschema.xml.in:146
msgid "Cancel tab popup"
msgstr "Zrušit překryvné okno tabulátoru"
#: data/org.gnome.mutter.gschema.xml.in:151
msgid "Switch monitor configurations"
msgstr "Přepnout nastavení monitoru"
#: data/org.gnome.mutter.gschema.xml.in:156
msgid "Rotates the built-in monitor configuration"
msgstr "Postupně mění vestavěná nastavení monitoru"
#: data/org.gnome.mutter.wayland.gschema.xml.in:6
msgid "Switch to VT 1"
msgstr "Přepnout na VT 1"
@@ -457,10 +490,14 @@ msgstr "Přepnout na VT 11"
msgid "Switch to VT 12"
msgstr "Přepnout na VT 12"
#: data/org.gnome.mutter.wayland.gschema.xml.in:54
msgid "Re-enable shortcuts"
msgstr "Znovu povolit klávesové zkratky"
#. TRANSLATORS: This string refers to a button that switches between
#. * different modes.
#.
#: src/backends/meta-input-settings.c:1800
#: src/backends/meta-input-settings.c:2151
#, c-format
msgid "Mode Switch (Group %d)"
msgstr "Přepínač režimu (skupina %d)"
@@ -468,37 +505,37 @@ msgstr "Přepínač režimu (skupina %d)"
#. TRANSLATORS: This string refers to an action, cycles drawing tablets'
#. * mapping through the available outputs.
#.
#: src/backends/meta-input-settings.c:1822
#: src/backends/meta-input-settings.c:2174
msgid "Switch monitor"
msgstr "Přepnout monitor"
#: src/backends/meta-input-settings.c:1824
#: src/backends/meta-input-settings.c:2176
msgid "Show on-screen help"
msgstr "Zobrazit nápovědu na obrazovce"
#: src/backends/meta-monitor-manager.c:675
#: src/backends/meta-monitor-manager.c:903
msgid "Built-in display"
msgstr "Vestavěný displej"
#: src/backends/meta-monitor-manager.c:698
#: src/backends/meta-monitor-manager.c:926
msgid "Unknown"
msgstr "Neznámý"
#: src/backends/meta-monitor-manager.c:700
#: src/backends/meta-monitor-manager.c:928
msgid "Unknown Display"
msgstr "Neznámý displej"
#. TRANSLATORS: this is a monitor vendor name, followed by a
#. * size in inches, like 'Dell 15"'
#.
#: src/backends/meta-monitor-manager.c:708
#: src/backends/meta-monitor-manager.c:936
#, c-format
msgid "%s %s"
msgstr "%s %s"
#. 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:474
#: src/compositor/compositor.c:476
#, c-format
msgid ""
"Another compositing manager is already running on screen %i on display “%s”."
@@ -508,32 +545,6 @@ msgstr "Jiný kompozitní správce již běží na obrazovce %i displeje „%s
msgid "Bell event"
msgstr "Událost zvonku"
#. Translators: %s is a window title
#: src/core/delete.c:127
#, c-format
msgid "“%s” is not responding."
msgstr "„%s“ nereaguje."
#: src/core/delete.c:129
msgid "Application is not responding."
msgstr "Aplikace nereaguje."
#: src/core/delete.c:134
msgid ""
"You may choose to wait a short while for it to continue or force the "
"application to quit entirely."
msgstr ""
"Je možné chvíli počkat, aby aplikace mohla pokračovat, nebo si vynutit úplné "
"ukončení aplikace."
#: src/core/delete.c:141
msgid "_Force Quit"
msgstr "_Vynutit ukončení"
#: src/core/delete.c:141
msgid "_Wait"
msgstr "_Počkat"
#: src/core/display.c:608
#, c-format
msgid "Failed to open X Window System display “%s”\n"
@@ -575,6 +586,32 @@ msgstr "Spustit jako podkladový kompozitor"
msgid "Run as a full display server, rather than nested"
msgstr "Spustit jako plnohodnotný server displeje, nikoliv vnořeně"
#. Translators: %s is a window title
#: src/core/meta-close-dialog-default.c:147
#, c-format
msgid "“%s” is not responding."
msgstr "„%s“ nereaguje."
#: src/core/meta-close-dialog-default.c:149
msgid "Application is not responding."
msgstr "Aplikace nereaguje."
#: src/core/meta-close-dialog-default.c:154
msgid ""
"You may choose to wait a short while for it to continue or force the "
"application to quit entirely."
msgstr ""
"Je možné chvíli počkat, aby aplikace mohla pokračovat, nebo si vynutit úplné "
"ukončení aplikace."
#: src/core/meta-close-dialog-default.c:161
msgid "_Force Quit"
msgstr "_Vynutit ukončení"
#: src/core/meta-close-dialog-default.c:161
msgid "_Wait"
msgstr "_Počkat"
#: src/core/mutter.c:39
#, c-format
msgid ""
@@ -632,11 +669,10 @@ msgid ""
"These windows do not support “save current setup” and will have to be "
"restarted manually next time you log in."
msgstr ""
"Tato okna nepodporují „uložení aktuálního nastavení“ a po svém "
"příštím přihlášení je budete muset spustit ručně."
"Tato okna nepodporují „uložení aktuálního nastavení“ a po svém příštím "
"přihlášení je budete muset spustit ručně."
#: src/x11/window-props.c:559
#, c-format
msgid "%s (on %s)"
msgstr "%s (na %s)"

View File

@@ -14,8 +14,8 @@ msgstr ""
"Project-Id-Version: mutter.master\n"
"Report-Msgid-Bugs-To: https://bugzilla.gnome.org/enter_bug.cgi?"
"product=mutter&keywords=I18N+L10N&component=general\n"
"POT-Creation-Date: 2017-06-01 06:38+0000\n"
"PO-Revision-Date: 2017-06-19 13:47+0200\n"
"POT-Creation-Date: 2017-08-02 10:05+0000\n"
"PO-Revision-Date: 2017-08-03 09:59+0200\n"
"Last-Translator: Daniel Mustieles <daniel.mustieles@gmail.com>\n"
"Language-Team: es <gnome-es-list@gnome.org>\n"
"Language: es\n"
@@ -414,7 +414,6 @@ msgid "Enable experimental features"
msgstr "Activar las características experimentales"
#: data/org.gnome.mutter.gschema.xml.in:108
#, fuzzy
msgid ""
"To enable experimental features, add the feature keyword to the list. "
"Whether the feature requires restarting the compositor depends on the given "
@@ -432,7 +431,18 @@ msgstr ""
"Para activar las características experimentales, añada la palabra clave de "
"la característica a la lista. Depende de la característica que se deba "
"reiniciar o no el compositor. Cualquier característica experimental puede no "
"estar disponible o ser configurable. "
"estar disponible o ser configurable. No espere que lo que se añada en este "
"escenario sirva como prueba futura. Las palabras clave actualmente "
"disponibles son: • \"monitor-config-manager\" - utiliza el nuevo sistema de "
"configuración del monitor, destinado a sustituir el antiguo. Esto permite "
"que las aplicaciones de configuración usen una API de configuración de nivel "
"superior, así como la capacidad de configurar el escalado de monitores "
"lógicos. • \"scale-monitor-framebuffer\" - convierte a mutter en ña manera "
"predeterminada de disponer monitores lógicos en un espacio lógico de "
"coordenadas de píxeles, al escalar framebuffers de monitores framebuffers en "
"lugar del contenido de ventana, para administrar monitores HiDPI. No "
"requiere un reinicio. También es necesario activar \"monitor-config-manager"
"\" para activar esta función."
#: data/org.gnome.mutter.gschema.xml.in:151
msgid "Select window from tab popup"
@@ -442,6 +452,14 @@ msgstr "Seleccionar ventana de la pestaña emergente"
msgid "Cancel tab popup"
msgstr "Cancelar pestaña emergente"
#: data/org.gnome.mutter.gschema.xml.in:161
msgid "Switch monitor configurations"
msgstr "Cambiar la configuración del monitor"
#: data/org.gnome.mutter.gschema.xml.in:166
msgid "Rotates the built-in monitor configuration"
msgstr "Rota la configuración del monitor empotrado"
#: data/org.gnome.mutter.wayland.gschema.xml.in:6
msgid "Switch to VT 1"
msgstr "Cambiar al VT 1"
@@ -490,10 +508,14 @@ msgstr "Cambiar al VT 11"
msgid "Switch to VT 12"
msgstr "Cambiar al VT 12"
#: data/org.gnome.mutter.wayland.gschema.xml.in:54
msgid "Re-enable shortcuts"
msgstr "Volver a activar los atajos"
#. TRANSLATORS: This string refers to a button that switches between
#. * different modes.
#.
#: src/backends/meta-input-settings.c:1866
#: src/backends/meta-input-settings.c:2118
#, c-format
msgid "Mode Switch (Group %d)"
msgstr "Cambiar modo (grupo %d)"
@@ -501,30 +523,30 @@ msgstr "Cambiar modo (grupo %d)"
#. TRANSLATORS: This string refers to an action, cycles drawing tablets'
#. * mapping through the available outputs.
#.
#: src/backends/meta-input-settings.c:1888
#: src/backends/meta-input-settings.c:2141
msgid "Switch monitor"
msgstr "Cambiar monitor"
#: src/backends/meta-input-settings.c:1890
#: src/backends/meta-input-settings.c:2143
msgid "Show on-screen help"
msgstr "Mostrar la ayuda en pantalla"
#: src/backends/meta-monitor-manager.c:879
#: src/backends/meta-monitor-manager.c:927
msgid "Built-in display"
msgstr "Pantalla integrada"
#: src/backends/meta-monitor-manager.c:902
#: src/backends/meta-monitor-manager.c:950
msgid "Unknown"
msgstr "Desconocida"
#: src/backends/meta-monitor-manager.c:904
#: src/backends/meta-monitor-manager.c:952
msgid "Unknown Display"
msgstr "Pantalla desconocida"
#. TRANSLATORS: this is a monitor vendor name, followed by a
#. * size in inches, like 'Dell 15"'
#.
#: src/backends/meta-monitor-manager.c:912
#: src/backends/meta-monitor-manager.c:960
#, c-format
msgid "%s %s"
msgstr "%s %s"

125
po/fr.po
View File

@@ -17,10 +17,10 @@
msgid ""
msgstr ""
"Project-Id-Version: mutter master\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?"
"Report-Msgid-Bugs-To: https://bugzilla.gnome.org/enter_bug.cgi?"
"product=mutter&keywords=I18N+L10N&component=general\n"
"POT-Creation-Date: 2017-02-16 01:44+0000\n"
"PO-Revision-Date: 2017-02-17 21:09+0100\n"
"POT-Creation-Date: 2017-08-13 15:47+0000\n"
"PO-Revision-Date: 2017-08-15 09:16+0200\n"
"Last-Translator: Claude Paroz <claude@2xlibre.net>\n"
"Language-Team: GNOME French Team <gnomefr@traduc.org>\n"
"Language: fr\n"
@@ -410,16 +410,59 @@ msgstr ""
"Si true (vrai), les nouvelles fenêtres seront toujours placées au centre de "
"l'écran actif du moniteur."
#: data/org.gnome.mutter.gschema.xml.in:120
#: data/org.gnome.mutter.gschema.xml.in:107
msgid "Enable experimental features"
msgstr "Activer les fonctionnalités expérimentales"
#: 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: • “monitor-config-manager” — use the new "
"monitor configuration system, aimed to replace the old one. This enables a "
"higher level configuration API to be used by configuration applications, as "
"well as the ability to configure per logical monitor scale. • “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. Also enabling "
"“monitor-config-manager” is required for this feature to be enabled."
msgstr ""
"Pour activer les fonctionnalités expérimentales, ajoutez le mot-clé de la "
"fonctionnalité dans la liste. Selon la fonctionnalité, il peut être nécessaire "
"de redémarrer le compositeur. Chaque fonctionnalité expérimentale peut "
"disparaître ou ne plus être configurable. N'attendez pas à ce que le contenu de "
"ce réglage soit stable dans le temps. Les mots-clés actuellement possibles "
"sont : • « monitor-config-manager » — utiliser le nouveau système de "
"configuration de moniteur qui remplacera l'ancien à terme. Cela active une "
"API de configuration de plus haut niveau exploitable par les applications de "
"configuration. Il permet aussi de configurer par échelle de moniteur logique. "
"• « scale-monitor-framebuffer » — demande à mutter d'utiliser par défaut une "
"disposition par moniteur logique dans un espace de coordonnées de pixels logique, "
"tout en mettant à l'échelle les « framebuffers » de moniteur au lieu des contenus "
"de fenêtre pour pouvoir gérer les moniteurs à haute densité. Cela ne nécessite "
"pas de redémarrage. L'activation de « monitor-config-manager » est requis pour "
"que cette fonctionnalité soit activée."
#: data/org.gnome.mutter.gschema.xml.in:151
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:125
#: data/org.gnome.mutter.gschema.xml.in:156
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:161
msgid "Switch monitor configurations"
msgstr "Changer de configuration de moniteur"
#: data/org.gnome.mutter.gschema.xml.in:166
msgid "Rotates the built-in monitor configuration"
msgstr "Passe à la prochaine configuration intégrée de moniteur"
#: data/org.gnome.mutter.wayland.gschema.xml.in:6
msgid "Switch to VT 1"
msgstr "Passer à l'émulateur de terminal 1"
@@ -468,10 +511,14 @@ msgstr "Passer à l'émulateur de terminal 11"
msgid "Switch to VT 12"
msgstr "Passer à l'émulateur de terminal 12"
#: data/org.gnome.mutter.wayland.gschema.xml.in:54
msgid "Re-enable shortcuts"
msgstr "Réactiver les raccourcis"
#. TRANSLATORS: This string refers to a button that switches between
#. * different modes.
#.
#: src/backends/meta-input-settings.c:1759
#: src/backends/meta-input-settings.c:2118
#, c-format
msgid "Mode Switch (Group %d)"
msgstr "Changement de mode (groupe %d)"
@@ -479,37 +526,37 @@ 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:1781
#: src/backends/meta-input-settings.c:2141
msgid "Switch monitor"
msgstr "Changer de moniteur"
#: src/backends/meta-input-settings.c:1783
#: src/backends/meta-input-settings.c:2143
msgid "Show on-screen help"
msgstr "Afficher l'aide à l'écran"
#: src/backends/meta-monitor-manager.c:675
#: src/backends/meta-monitor-manager.c:927
msgid "Built-in display"
msgstr "Affichage intégré"
#: src/backends/meta-monitor-manager.c:698
#: src/backends/meta-monitor-manager.c:950
msgid "Unknown"
msgstr "Inconnu"
#: src/backends/meta-monitor-manager.c:700
#: src/backends/meta-monitor-manager.c:952
msgid "Unknown Display"
msgstr "Affichage inconnu"
#. TRANSLATORS: this is a monitor vendor name, followed by a
#. * size in inches, like 'Dell 15"'
#.
#: src/backends/meta-monitor-manager.c:708
#: src/backends/meta-monitor-manager.c:960
#, c-format
msgid "%s %s"
msgstr "%s %s"
#. 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:471
#: src/compositor/compositor.c:476
#, c-format
msgid ""
"Another compositing manager is already running on screen %i on display “%s”."
@@ -521,32 +568,6 @@ msgstr ""
msgid "Bell event"
msgstr "Évènement sonore"
#. Translators: %s is a window title
#: src/core/delete.c:127
#, c-format
msgid "“%s” is not responding."
msgstr "« %s » ne répond pas."
#: src/core/delete.c:129
msgid "Application is not responding."
msgstr "L'application ne répond pas."
#: src/core/delete.c:134
msgid ""
"You may choose to wait a short while for it to continue or force the "
"application to quit entirely."
msgstr ""
"Vous pouvez patienter un instant pour continuer ou forcer l'application à "
"quitter définitivement."
#: src/core/delete.c:141
msgid "_Force Quit"
msgstr "_Forcer à quitter"
#: src/core/delete.c:141
msgid "_Wait"
msgstr "_Attendre"
#: src/core/display.c:608
#, c-format
msgid "Failed to open X Window System display “%s”\n"
@@ -588,6 +609,32 @@ msgstr "Lancer comme un compositeur imbriqué"
msgid "Run as a full display server, rather than nested"
msgstr "Lancer comme un serveur d'affichage complet, plutôt qu'imbriqué"
#. Translators: %s is a window title
#: src/core/meta-close-dialog-default.c:147
#, c-format
msgid "“%s” is not responding."
msgstr "« %s » ne répond pas."
#: src/core/meta-close-dialog-default.c:149
msgid "Application is not responding."
msgstr "L'application ne répond pas."
#: src/core/meta-close-dialog-default.c:154
msgid ""
"You may choose to wait a short while for it to continue or force the "
"application to quit entirely."
msgstr ""
"Vous pouvez patienter un instant pour continuer ou forcer l'application à "
"quitter définitivement."
#: src/core/meta-close-dialog-default.c:161
msgid "_Force Quit"
msgstr "_Forcer à quitter"
#: src/core/meta-close-dialog-default.c:161
msgid "_Wait"
msgstr "_Attendre"
#: src/core/mutter.c:39
#, c-format
msgid ""

View File

@@ -8,15 +8,15 @@ msgstr ""
"Project-Id-Version: mutter master\n"
"Report-Msgid-Bugs-To: https://bugzilla.gnome.org/enter_bug.cgi?"
"product=mutter&keywords=I18N+L10N&component=general\n"
"POT-Creation-Date: 2017-05-26 14:16+0000\n"
"PO-Revision-Date: 2017-05-27 22:55+0200\n"
"POT-Creation-Date: 2017-07-22 09:45+0000\n"
"PO-Revision-Date: 2017-07-22 22:53+0200\n"
"Last-Translator: Fabio Tomat <f.t.public@gmail.com>\n"
"Language-Team: Friulian <fur@li.org>\n"
"Language: fur\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: Poedit 1.8.12\n"
"X-Generator: Poedit 2.0.2\n"
#: data/50-mutter-navigation.xml:6
msgid "Navigation"
@@ -439,6 +439,14 @@ msgstr "Selezione barcon dal tab popup"
msgid "Cancel tab popup"
msgstr "Anule tab popup"
#: data/org.gnome.mutter.gschema.xml.in:161
msgid "Switch monitor configurations"
msgstr "Cambie configurazions visôr"
#: data/org.gnome.mutter.gschema.xml.in:166
msgid "Rotates the built-in monitor configuration"
msgstr "Al volte la configurazion dal visôr integrât"
#: data/org.gnome.mutter.wayland.gschema.xml.in:6
msgid "Switch to VT 1"
msgstr "Passe al VT 1"
@@ -490,7 +498,7 @@ msgstr "Passe al VT 12"
#. TRANSLATORS: This string refers to a button that switches between
#. * different modes.
#.
#: src/backends/meta-input-settings.c:1866
#: src/backends/meta-input-settings.c:2118
#, c-format
msgid "Mode Switch (Group %d)"
msgstr "Cambie mût (Grup %d)"
@@ -498,30 +506,30 @@ msgstr "Cambie mût (Grup %d)"
#. TRANSLATORS: This string refers to an action, cycles drawing tablets'
#. * mapping through the available outputs.
#.
#: src/backends/meta-input-settings.c:1888
#: src/backends/meta-input-settings.c:2141
msgid "Switch monitor"
msgstr "Cambie visôr"
#: src/backends/meta-input-settings.c:1890
#: src/backends/meta-input-settings.c:2143
msgid "Show on-screen help"
msgstr "Mostre jutori a schermi"
#: src/backends/meta-monitor-manager.c:876
#: src/backends/meta-monitor-manager.c:925
msgid "Built-in display"
msgstr "Display integrât"
#: src/backends/meta-monitor-manager.c:899
#: src/backends/meta-monitor-manager.c:948
msgid "Unknown"
msgstr "No cognossût"
#: src/backends/meta-monitor-manager.c:901
#: src/backends/meta-monitor-manager.c:950
msgid "Unknown Display"
msgstr "Display no cognossût"
#. TRANSLATORS: this is a monitor vendor name, followed by a
#. * size in inches, like 'Dell 15"'
#.
#: src/backends/meta-monitor-manager.c:909
#: src/backends/meta-monitor-manager.c:958
#, c-format
msgid "%s %s"
msgstr "%s %s"

170
po/gl.po
View File

@@ -10,22 +10,21 @@
# Fran Diéguez <frandieguez@gnome.org>, 2009, 2010, 2011, 2012.
# Leandro Regueiro <leandro.regueiro@gmail.com>, 2012.
# Fran Dieguez <frandieguez@gnome.org>, 2012, 2013, 2014, 2015, 2016, 2017.
#
msgid ""
msgstr ""
"Project-Id-Version: gl\n"
"Report-Msgid-Bugs-To: https://bugzilla.gnome.org/enter_bug.cgi?"
"product=mutter&keywords=I18N+L10N&component=general\n"
"POT-Creation-Date: 2017-02-28 06:20+0000\n"
"PO-Revision-Date: 2017-03-11 03:02+0100\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-21 04:46+0000\n"
"PO-Revision-Date: 2017-08-23 12:21+0200\n"
"Last-Translator: Fran Dieguez <frandieguez@gnome.org>\n"
"Language-Team: Galician <gnome-l10n-gl@gnome.org>\n"
"Language-Team: Galician\n"
"Language: gl\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: Gtranslator 2.91.7\n"
"X-Generator: Virtaal 0.7.1\n"
"X-Project-Style: gnome\n"
#: data/50-mutter-navigation.xml:6
@@ -278,11 +277,6 @@ msgstr ""
"Modificador que se vai usar para as accións modificadas de xestión de xanela"
#: 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 "
@@ -328,10 +322,6 @@ msgid "Workspaces are managed dynamically"
msgstr "Os espazos de traballo xestiónanse dinamicamente"
#: 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."
@@ -370,10 +360,6 @@ msgid "Delay focus changes until the pointer stops moving"
msgstr "Retrasar o cambio de enfoque até que o punteiro se deteña ao moverse"
#: 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 "
@@ -388,9 +374,6 @@ msgid "Draggable border width"
msgstr "Anchura arrastrábel do bordo"
#: 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."
@@ -423,14 +406,61 @@ msgstr ""
"Cando está verdadeiro, as novas xanelas sempre se porán no centro da "
"pantalla activa."
#: data/org.gnome.mutter.gschema.xml.in:120
#: data/org.gnome.mutter.gschema.xml.in:107
msgid "Enable experimental features"
msgstr "Activar as características experimentais"
#: 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: • “monitor-config-"
#| "manager” — use the new monitor configuration system, aimed to replace the "
#| "old one. This enables a higher level configuration API to be used by "
#| "configuration applications, as well as the ability to configure per "
#| "logical monitor scale. • “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. Also enabling “monitor-config-"
#| "manager” is required for this feature to be enabled."
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."
msgstr ""
"Para activar as características experimentais, engada a palabra chave da "
"característica á lista. Depende da característica que se deba reiniciar ou "
"non o compositor. Calquera característica experimental pode non estar "
"dispoñíbel ou ser configurábel. Non agarde que o que se engada neste "
"escenario sirva como proba futura. As palabras chave actualmente dispoñíbeis "
"son: “scale-monitor-framebuffer” — convirte a mutter na maneira "
"predeterminada de dispor monitores lóxicos nun espacio lóxico de coordenadas "
"de íxeles, a escalar framebuffers de monitores framebuffers no lugar do "
"contido de xnalea, para administrar monitores HiDPI. Non require un reinicio."
#: data/org.gnome.mutter.gschema.xml.in:141
msgid "Select window from tab popup"
msgstr "Seleccionar xanela da lapela emerxente"
#: data/org.gnome.mutter.gschema.xml.in:125
#: data/org.gnome.mutter.gschema.xml.in:146
msgid "Cancel tab popup"
msgstr "Cancelar lapela emerxente"
#: data/org.gnome.mutter.gschema.xml.in:151
msgid "Switch monitor configurations"
msgstr "Cambiar preferencias do monitor"
#: data/org.gnome.mutter.gschema.xml.in:156
msgid "Rotates the built-in monitor configuration"
msgstr "Rota a configuración do monitor embebido"
#: data/org.gnome.mutter.wayland.gschema.xml.in:6
msgid "Switch to VT 1"
msgstr "Cambiar á VT 1"
@@ -479,53 +509,53 @@ msgstr "Cambiar á VT 11"
msgid "Switch to VT 12"
msgstr "Cambiar á VT 12"
#: data/org.gnome.mutter.wayland.gschema.xml.in:54
msgid "Re-enable shortcuts"
msgstr "Reactivar os atallos"
#. TRANSLATORS: This string refers to a button that switches between
#. * different modes.
#.
#: src/backends/meta-input-settings.c:1800
#: src/backends/meta-input-settings.c:2151
#, c-format
#| msgid "Mode Switch: Mode %d"
msgid "Mode Switch (Group %d)"
msgstr "Modo conmutador (Grupo %d)"
#. TRANSLATORS: This string refers to an action, cycles drawing tablets'
#. * mapping through the available outputs.
#.
#: src/backends/meta-input-settings.c:1822
#: src/backends/meta-input-settings.c:2174
msgid "Switch monitor"
msgstr "Cambiar monitor"
#: src/backends/meta-input-settings.c:1824
#: src/backends/meta-input-settings.c:2176
msgid "Show on-screen help"
msgstr "Mostrar axuda en pantalla"
#: src/backends/meta-monitor-manager.c:675
#: src/backends/meta-monitor-manager.c:903
msgid "Built-in display"
msgstr "Pantalla embebida"
#: src/backends/meta-monitor-manager.c:698
#: src/backends/meta-monitor-manager.c:926
msgid "Unknown"
msgstr "Descoñecido"
#: src/backends/meta-monitor-manager.c:700
#: src/backends/meta-monitor-manager.c:928
msgid "Unknown Display"
msgstr "Pantalla descoñecida"
#. TRANSLATORS: this is a monitor vendor name, followed by a
#. * size in inches, like 'Dell 15"'
#.
#: src/backends/meta-monitor-manager.c:708
#: src/backends/meta-monitor-manager.c:936
#, c-format
msgid "%s %s"
msgstr "%s %s"
#. 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:471
#: src/compositor/compositor.c:476
#, 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 ""
@@ -536,35 +566,8 @@ msgstr ""
msgid "Bell event"
msgstr "Evento de campá"
#. Translators: %s is a window title
#: src/core/delete.c:127
#, c-format
msgid "“%s” is not responding."
msgstr "«%s» non está respondendo."
#: src/core/delete.c:129
msgid "Application is not responding."
msgstr "O Aplicativo non está respondendo."
#: src/core/delete.c:134
msgid ""
"You may choose to wait a short while for it to continue or force the "
"application to quit entirely."
msgstr ""
"Pode elixir esperar un momento para ver se continúa ou forzar ao aplicativo "
"a pechar completamente."
#: src/core/delete.c:141
msgid "_Force Quit"
msgstr "_Forzar a saída"
#: src/core/delete.c:141
msgid "_Wait"
msgstr "Espe_rar"
#: 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 "Produciuse un erro ao abrir a visualización do X Window System «%s»\n"
@@ -604,14 +607,34 @@ msgstr "Executar como compositor anidado"
msgid "Run as a full display server, rather than nested"
msgstr "Executar como un servidor de pantalla completo, fronte a un aniñado"
#. Translators: %s is a window title
#: src/core/meta-close-dialog-default.c:147
#, c-format
msgid "“%s” is not responding."
msgstr "«%s» non está respondendo."
#: src/core/meta-close-dialog-default.c:149
msgid "Application is not responding."
msgstr "O Aplicativo non está respondendo."
#: src/core/meta-close-dialog-default.c:154
msgid ""
"You may choose to wait a short while for it to continue or force the "
"application to quit entirely."
msgstr ""
"Pode elixir esperar un momento para ver se continúa ou forzar ao aplicativo "
"a pechar completamente."
#: src/core/meta-close-dialog-default.c:161
msgid "_Force Quit"
msgstr "_Forzar a saída"
#: src/core/meta-close-dialog-default.c:161
msgid "_Wait"
msgstr "Espe_rar"
#: src/core/mutter.c:39
#, 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"
@@ -640,9 +663,6 @@ msgstr "Espazo de traballo %d"
#: src/core/screen.c:580
#, 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."
@@ -652,7 +672,6 @@ msgstr ""
#: src/core/screen.c:665
#, c-format
#| msgid "Screen %d on display '%s' is invalid\n"
msgid "Screen %d on display “%s” is invalid\n"
msgstr "A pantalla %d na visualización «%s» non é válida\n"
@@ -666,9 +685,6 @@ msgid "Mode Switch: Mode %d"
msgstr "Modo conmutador: Modo %d"
#: 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."
msgid ""
"These windows do not support “save current setup” and will have to be "
"restarted manually next time you log in."

6442
po/hr.po

File diff suppressed because it is too large Load Diff

125
po/hu.po
View File

@@ -12,15 +12,15 @@ msgstr ""
"Project-Id-Version: mutter master\n"
"Report-Msgid-Bugs-To: https://bugzilla.gnome.org/enter_bug.cgi?"
"product=mutter&keywords=I18N+L10N&component=general\n"
"POT-Creation-Date: 2017-05-14 09:49+0000\n"
"PO-Revision-Date: 2017-05-14 21:36+0200\n"
"Last-Translator: Balázs Úr <urbalazs@gmail.com>\n"
"POT-Creation-Date: 2017-08-02 10:05+0000\n"
"PO-Revision-Date: 2017-08-09 08:51+0200\n"
"Last-Translator: Meskó Balázs <meskobalazs@fedoraproject.org>\n"
"Language-Team: Hungarian <gnome-hu-list at gnome dot org>\n"
"Language: hu\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: Lokalize 1.2\n"
"X-Generator: Poedit 2.0.3\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: data/50-mutter-navigation.xml:6
@@ -409,30 +409,46 @@ msgid ""
"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."
"proof. Currently possible keywords: • “monitor-config-manager” — use the new "
"monitor configuration system, aimed to replace the old one. This enables a "
"higher level configuration API to be used by configuration applications, as "
"well as the ability to configure per logical monitor scale. • “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. Also enabling "
"“monitor-config-manager” is required for this feature to be enabled."
msgstr ""
"A kísérleti funkciók engedélyezéséhez adja hozzá a funkció kulcsszavát a "
"listához. A funkció a betűszedő újraindítását igényelheti az adott funkciótól "
"függően. Egyik kísérleti funkciónál sem szükséges, hogy továbbra is elérhető "
"vagy beállítható legyen. Ne várja el azt, hogy ha bármit hozzáad ehhez a "
"beállításhoz, akkor az a jövőben is elérhető lesz. Jelenleg lehetséges "
"kulcsszavak: • „scale-monitor-framebuffer” alapértelmezetté teszi a mutter "
"programot a logikai monitorok elrendezéséhez egy logikai "
"képpontkoordináta-térben, miközben átméretezi a monitor keretpufferét az "
"ablaktartalom helyett azért, hogy kezelje a HiDPI monitorokat. Nem igényel "
"újraindítást."
"listához. A funkció a betűszedő újraindítását igényelheti az adott "
"funkciótól függően. Egyik kísérleti funkciónál sem szükséges, hogy továbbra "
"is elérhető vagy beállítható legyen. Ne várja el azt, hogy ha bármit hozzáad "
"ehhez a beállításhoz, akkor az a jövőben is elérhető lesz. Jelenleg "
"lehetséges kulcsszavak: • „monitor-config-manager” az új monitor "
"konfigurációs rendszer használata, amely a régi leváltására készül. Ez egy "
"magasabb szintű konfigurációs API-t biztosít a beállító alkalmazásoknak, "
"valamint lehetővé teszi a logikai monitorok különálló méretezését. • „scale-"
"monitor-framebuffer” — alapértelmezetté teszi a mutter programot a logikai "
"monitorok elrendezéséhez egy logikai képpontkoordináta-térben, miközben "
"átméretezi a monitor keretpufferét az ablaktartalom helyett azért, hogy "
"kezelje a HiDPI monitorokat. Nem igényel újraindítást. Ezen funkció "
"bekapcsolásához a „monitor-config-manager” engedélyezése is szükséges."
#: data/org.gnome.mutter.gschema.xml.in:141
#: data/org.gnome.mutter.gschema.xml.in:151
msgid "Select window from tab popup"
msgstr "Ablakok kiválasztása tab billentyűre felugró ablakból"
#: data/org.gnome.mutter.gschema.xml.in:146
#: data/org.gnome.mutter.gschema.xml.in:156
msgid "Cancel tab popup"
msgstr "Tab felugró kikapcsolása"
#: data/org.gnome.mutter.gschema.xml.in:161
msgid "Switch monitor configurations"
msgstr "Monitorkonfiguráció átváltása"
#: data/org.gnome.mutter.gschema.xml.in:166
msgid "Rotates the built-in monitor configuration"
msgstr "Cserélgeti a beépített monitorkonfigurációkat"
#: data/org.gnome.mutter.wayland.gschema.xml.in:6
msgid "Switch to VT 1"
msgstr "Váltás az 1. VT-re"
@@ -481,10 +497,14 @@ msgstr "Váltás a 11. VT-re"
msgid "Switch to VT 12"
msgstr "Váltás a 12. VT-re"
#: data/org.gnome.mutter.wayland.gschema.xml.in:54
msgid "Re-enable shortcuts"
msgstr "Gyorsbillentyűk újraengedélyezése"
#. TRANSLATORS: This string refers to a button that switches between
#. * different modes.
#.
#: src/backends/meta-input-settings.c:1848
#: src/backends/meta-input-settings.c:2118
#, c-format
msgid "Mode Switch (Group %d)"
msgstr "Módkapcsoló (%d. csoport)"
@@ -492,30 +512,30 @@ msgstr "Módkapcsoló (%d. csoport)"
#. TRANSLATORS: This string refers to an action, cycles drawing tablets'
#. * mapping through the available outputs.
#.
#: src/backends/meta-input-settings.c:1870
#: src/backends/meta-input-settings.c:2141
msgid "Switch monitor"
msgstr "Monitorváltás"
#: src/backends/meta-input-settings.c:1872
#: src/backends/meta-input-settings.c:2143
msgid "Show on-screen help"
msgstr "Képernyősúgó megjelenítése"
#: src/backends/meta-monitor-manager.c:783
#: src/backends/meta-monitor-manager.c:927
msgid "Built-in display"
msgstr "Beépített kijelző"
#: src/backends/meta-monitor-manager.c:806
#: src/backends/meta-monitor-manager.c:950
msgid "Unknown"
msgstr "Ismeretlen"
#: src/backends/meta-monitor-manager.c:808
#: src/backends/meta-monitor-manager.c:952
msgid "Unknown Display"
msgstr "Ismeretlen kijelző"
#. TRANSLATORS: this is a monitor vendor name, followed by a
#. * size in inches, like 'Dell 15"'
#.
#: src/backends/meta-monitor-manager.c:816
#: src/backends/meta-monitor-manager.c:960
#, c-format
msgid "%s %s"
msgstr "%s %s"
@@ -534,32 +554,6 @@ msgstr ""
msgid "Bell event"
msgstr "Csengetés esemény"
#. Translators: %s is a window title
#: src/core/delete.c:127
#, c-format
msgid "“%s” is not responding."
msgstr "„%s” nem válaszol."
#: src/core/delete.c:129
msgid "Application is not responding."
msgstr "Az alkalmazás nem válaszol."
#: src/core/delete.c:134
msgid ""
"You may choose to wait a short while for it to continue or force the "
"application to quit entirely."
msgstr ""
"Várhat egy kicsit a folytatódására, vagy kikényszerítheti az alkalmazás "
"teljes kilépését."
#: src/core/delete.c:141
msgid "_Force Quit"
msgstr "_Erőltetett kilépés"
#: src/core/delete.c:141
msgid "_Wait"
msgstr "Vá_rakozás"
#: src/core/display.c:608
#, c-format
msgid "Failed to open X Window System display “%s”\n"
@@ -602,6 +596,32 @@ msgid "Run as a full display server, rather than nested"
msgstr ""
"Futtatás teljes megjelenítő kiszolgálóként az egymásba ágyazott helyett"
#. Translators: %s is a window title
#: src/core/meta-close-dialog-default.c:147
#, c-format
msgid "“%s” is not responding."
msgstr "„%s” nem válaszol."
#: src/core/meta-close-dialog-default.c:149
msgid "Application is not responding."
msgstr "Az alkalmazás nem válaszol."
#: src/core/meta-close-dialog-default.c:154
msgid ""
"You may choose to wait a short while for it to continue or force the "
"application to quit entirely."
msgstr ""
"Várhat egy kicsit a folytatódására, vagy kikényszerítheti az alkalmazás "
"teljes kilépését."
#: src/core/meta-close-dialog-default.c:161
msgid "_Force Quit"
msgstr "_Erőltetett kilépés"
#: src/core/meta-close-dialog-default.c:161
msgid "_Wait"
msgstr "Vá_rakozás"
#: src/core/mutter.c:39
#, c-format
msgid ""
@@ -665,4 +685,3 @@ msgstr ""
#, c-format
msgid "%s (on %s)"
msgstr "%s (ezen: %s)"

View File

@@ -11,15 +11,15 @@ msgstr ""
"Project-Id-Version: mutter master\n"
"Report-Msgid-Bugs-To: https://bugzilla.gnome.org/enter_bug.cgi?"
"product=mutter&keywords=I18N+L10N&component=general\n"
"POT-Creation-Date: 2017-05-31 14:13+0000\n"
"PO-Revision-Date: 2017-06-07 15:00+0700\n"
"Last-Translator: Andika Triwidada <andika@gmail.com>\n"
"POT-Creation-Date: 2017-08-21 04:46+0000\n"
"PO-Revision-Date: 2017-08-21 13:42+0700\n"
"Last-Translator: Kukuh Syafaat <syafaatkukuh@gmail.com>\n"
"Language-Team: Indonesian <gnome-l10n-id@googlegroups.com>\n"
"Language: id\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: Poedit 1.6.10\n"
"X-Generator: Poedit 2.0.3\n"
"Plural-Forms: nplurals=1; plural=0;\n"
#: data/50-mutter-navigation.xml:6
@@ -408,38 +408,37 @@ msgid ""
"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: • “monitor-config-manager” — use the new "
"monitor configuration system, aimed to replace the old one. This enables a "
"higher level configuration API to be used by configuration applications, as "
"well as the ability to configure per logical monitor scale. • “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. Also enabling "
"“monitor-config-manager” is required for this feature to be enabled."
"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."
msgstr ""
"Untuk mengaktifkan fitur eksperimental, tambahkan kata kunci fitur ke dalam "
"daftar. Apakah fitur memerlukan nyala ulang kompositor tergantung pada fitur "
"yang diberikan. Setiap fitur eksperimental tidak diharuskan tetap tersedia, "
"atau dapat dikonfigurasi. Jangan berharap menambahkan apapun dalam "
"pengaturan ini kebal perubahan di masa depan. Saat ini kata kunci yang "
"mungkin: • \"monitor-config-manager\" — gunakan sistem konfigurasi monitor "
"baru, yang ditujukan untuk mengganti yang lama. Hal ini memungkinkan tingkat "
"konfigurasi API yang lebih tinggi untuk digunakan oleh aplikasi konfigurasi, "
"serta kemampuan untuk mengkonfigurasi per skala monitor logikal. • “scale-"
"monitor-framebuffer” — membuat bawaan mutter untuk tata letak monitor "
"logikal dalam ruang koordinat pixel logikal, sambil menskalakan framebuffer "
"monitor alih-alih konten jendela, untuk mengelola monitor HiDPI. Tidak perlu "
"mulai ulang. Juga mengaktifkan “monitor-config-manager” diperlukan agar "
"fitur ini diaktifkan."
"mungkin: • “scale-monitor-framebuffer” — membuat bawaan mutter untuk tata "
"letak monitor logikal dalam ruang koordinat pixel logikal, sambil "
"menskalakan framebuffer monitor alih-alih konten jendela, untuk mengelola "
"monitor HiDPI. Tidak perlu mulai ulang."
#: data/org.gnome.mutter.gschema.xml.in:151
#: data/org.gnome.mutter.gschema.xml.in:141
msgid "Select window from tab popup"
msgstr "Pilih jendela dari popup tab"
#: data/org.gnome.mutter.gschema.xml.in:156
#: data/org.gnome.mutter.gschema.xml.in:146
msgid "Cancel tab popup"
msgstr "Batalkan popup tab"
#: data/org.gnome.mutter.gschema.xml.in:151
msgid "Switch monitor configurations"
msgstr "Tukar konfigurasi monitor bawaan"
#: data/org.gnome.mutter.gschema.xml.in:156
msgid "Rotates the built-in monitor configuration"
msgstr "Memutar konfigurasi monitor bawaan"
#: data/org.gnome.mutter.wayland.gschema.xml.in:6
msgid "Switch to VT 1"
msgstr "Bertukar ke VT 1"
@@ -488,10 +487,14 @@ msgstr "Bertukar ke VT 11"
msgid "Switch to VT 12"
msgstr "Bertukar ke VT 12"
#: data/org.gnome.mutter.wayland.gschema.xml.in:54
msgid "Re-enable shortcuts"
msgstr "Aktifkan kembali pintasan"
#. TRANSLATORS: This string refers to a button that switches between
#. * different modes.
#.
#: src/backends/meta-input-settings.c:1866
#: src/backends/meta-input-settings.c:2151
#, c-format
msgid "Mode Switch (Group %d)"
msgstr "Tukar Mode: (Grup %d)"
@@ -499,30 +502,30 @@ msgstr "Tukar Mode: (Grup %d)"
#. TRANSLATORS: This string refers to an action, cycles drawing tablets'
#. * mapping through the available outputs.
#.
#: src/backends/meta-input-settings.c:1888
#: src/backends/meta-input-settings.c:2174
msgid "Switch monitor"
msgstr "Berpindah monitor"
#: src/backends/meta-input-settings.c:1890
#: src/backends/meta-input-settings.c:2176
msgid "Show on-screen help"
msgstr "Tampilkan bantuan pada layar"
#: src/backends/meta-monitor-manager.c:879
#: src/backends/meta-monitor-manager.c:903
msgid "Built-in display"
msgstr "Tampilan bawaan"
#: src/backends/meta-monitor-manager.c:902
#: src/backends/meta-monitor-manager.c:926
msgid "Unknown"
msgstr "Tak Dikenal"
#: src/backends/meta-monitor-manager.c:904
#: src/backends/meta-monitor-manager.c:928
msgid "Unknown Display"
msgstr "Tampilan Tak Dikenal"
#. TRANSLATORS: this is a monitor vendor name, followed by a
#. * size in inches, like 'Dell 15"'
#.
#: src/backends/meta-monitor-manager.c:912
#: src/backends/meta-monitor-manager.c:936
#, c-format
msgid "%s %s"
msgstr "%s %s"

118
po/it.po
View File

@@ -10,10 +10,10 @@
msgid ""
msgstr ""
"Project-Id-Version: mutter\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?"
"Report-Msgid-Bugs-To: https://bugzilla.gnome.org/enter_bug.cgi?"
"product=mutter&keywords=I18N+L10N&component=general\n"
"POT-Creation-Date: 2017-02-16 15:52+0000\n"
"PO-Revision-Date: 2017-02-17 22:11+0100\n"
"POT-Creation-Date: 2017-08-21 04:46+0000\n"
"PO-Revision-Date: 2017-08-24 09:45+0200\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.0beta3\n"
"X-Generator: Poedit 1.8.12\n"
#: data/50-mutter-navigation.xml:6
msgid "Navigation"
@@ -410,14 +410,48 @@ msgstr ""
"Se impostata a VERO, le nuove finestre verranno sempre posizionate al centro "
"dello schermo attivo."
#: data/org.gnome.mutter.gschema.xml.in:120
#: data/org.gnome.mutter.gschema.xml.in:107
msgid "Enable experimental features"
msgstr "Abilita funzionalità sperimentali"
#: 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."
msgstr ""
"Per abilitare le funzionalità sperimentali, aggiungere la parola chiave di "
"tale funzionalità nella lista. Se la funzionalità desiderata richiede il "
"riavvio del compositor, dipende dalla funzionalità stessa. Una qualsiasi "
"funzionalità sperimentale non è richiesta, ma può essere disponibile e "
"configurabile. Le funzionalità offerte potrebbero rendere il sistema "
"instabile. I possibili valori sono: • \"scale-monitor-framebuffer\" — Fa in "
"modo che mutter disponga gli schermi logici secondo uno spazio logico di "
"coordinate pixel, applicando il ridimensionamento ai framebuffer invece che "
"al contenuto della finestra, per gestire schermi HiDPI (non richiede il "
"riavvio)."
#: data/org.gnome.mutter.gschema.xml.in:141
msgid "Select window from tab popup"
msgstr "Seleziona finestra dal tab popup"
#: data/org.gnome.mutter.gschema.xml.in:125
#: data/org.gnome.mutter.gschema.xml.in:146
msgid "Cancel tab popup"
msgstr "Annulla tab popup"
#: data/org.gnome.mutter.gschema.xml.in:151
msgid "Switch monitor configurations"
msgstr "Cambia le configurazioni del monitor"
#: data/org.gnome.mutter.gschema.xml.in:156
msgid "Rotates the built-in monitor configuration"
msgstr "Passa da una configurazione integrata all'altra del monitor"
#: data/org.gnome.mutter.wayland.gschema.xml.in:6
msgid "Switch to VT 1"
msgstr "Passa al VT 1"
@@ -466,10 +500,14 @@ msgstr "Passa al VT 11"
msgid "Switch to VT 12"
msgstr "Passa al VT 12"
#: data/org.gnome.mutter.wayland.gschema.xml.in:54
msgid "Re-enable shortcuts"
msgstr "Riabilita scorciatoie"
#. TRANSLATORS: This string refers to a button that switches between
#. * different modes.
#.
#: src/backends/meta-input-settings.c:1800
#: src/backends/meta-input-settings.c:2151
#, c-format
msgid "Mode Switch (Group %d)"
msgstr "Cambio modalità (gruppo %d)"
@@ -477,37 +515,37 @@ 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:1822
#: src/backends/meta-input-settings.c:2174
msgid "Switch monitor"
msgstr "Cambia monitor"
#: src/backends/meta-input-settings.c:1824
#: src/backends/meta-input-settings.c:2176
msgid "Show on-screen help"
msgstr "Mostra aiuto sullo schermo"
#: src/backends/meta-monitor-manager.c:675
#: src/backends/meta-monitor-manager.c:903
msgid "Built-in display"
msgstr "Display integrato"
#: src/backends/meta-monitor-manager.c:698
#: src/backends/meta-monitor-manager.c:926
msgid "Unknown"
msgstr "Sconosciuto"
#: src/backends/meta-monitor-manager.c:700
#: src/backends/meta-monitor-manager.c:928
msgid "Unknown Display"
msgstr "Display sconosciuto"
#. TRANSLATORS: this is a monitor vendor name, followed by a
#. * size in inches, like 'Dell 15"'
#.
#: src/backends/meta-monitor-manager.c:708
#: src/backends/meta-monitor-manager.c:936
#, c-format
msgid "%s %s"
msgstr "%s %s"
#. 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:471
#: src/compositor/compositor.c:476
#, c-format
msgid ""
"Another compositing manager is already running on screen %i on display “%s”."
@@ -519,32 +557,6 @@ msgstr ""
msgid "Bell event"
msgstr "Evento campanella"
#. Translators: %s is a window title
#: src/core/delete.c:127
#, c-format
msgid "“%s” is not responding."
msgstr "Nessuna risposta da %s."
#: src/core/delete.c:129
msgid "Application is not responding."
msgstr "L'applicazione non risponde."
#: src/core/delete.c:134
msgid ""
"You may choose to wait a short while for it to continue or force the "
"application to quit entirely."
msgstr ""
"È possibile scegliere di attendere un po' lasciando che l'applicazione "
"continui, oppure forzare la terminazione dell'applicazione."
#: src/core/delete.c:141
msgid "_Force Quit"
msgstr "_Forza uscita"
#: src/core/delete.c:141
msgid "_Wait"
msgstr "_Attendi"
#: src/core/display.c:608
#, c-format
msgid "Failed to open X Window System display “%s”\n"
@@ -586,6 +598,32 @@ msgstr "Esegui come compositor annidato"
msgid "Run as a full display server, rather than nested"
msgstr "Esegui come display server invece che annidato"
#. Translators: %s is a window title
#: src/core/meta-close-dialog-default.c:147
#, c-format
msgid "“%s” is not responding."
msgstr "Nessuna risposta da %s."
#: src/core/meta-close-dialog-default.c:149
msgid "Application is not responding."
msgstr "L'applicazione non risponde."
#: src/core/meta-close-dialog-default.c:154
msgid ""
"You may choose to wait a short while for it to continue or force the "
"application to quit entirely."
msgstr ""
"È possibile scegliere di attendere un po' lasciando che l'applicazione "
"continui, oppure forzare la terminazione dell'applicazione."
#: src/core/meta-close-dialog-default.c:161
msgid "_Force Quit"
msgstr "_Forza uscita"
#: src/core/meta-close-dialog-default.c:161
msgid "_Wait"
msgstr "_Attendi"
#: src/core/mutter.c:39
#, c-format
msgid ""

203
po/kk.po
View File

@@ -6,17 +6,17 @@
msgid ""
msgstr ""
"Project-Id-Version: mutter master\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?"
"Report-Msgid-Bugs-To: https://bugzilla.gnome.org/enter_bug.cgi?"
"product=mutter&keywords=I18N+L10N&component=general\n"
"POT-Creation-Date: 2016-09-07 09:27+0000\n"
"PO-Revision-Date: 2016-09-09 21:12+0500\n"
"POT-Creation-Date: 2017-07-19 09:20+0000\n"
"PO-Revision-Date: 2017-07-27 17:28+0500\n"
"Last-Translator: Baurzhan Muftakhidinov <baurthefirst@gmail.com>\n"
"Language-Team: Kazakh <kk@li.org>\n"
"Language: kk\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: Poedit 1.8.9\n"
"X-Generator: Poedit 1.8.12\n"
#: data/50-mutter-navigation.xml:6
msgid "Navigation"
@@ -270,10 +270,10 @@ 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."
"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. Its expected that this binding either the default or "
"set to the empty string."
msgstr ""
#: data/org.gnome.mutter.gschema.xml.in:20
@@ -306,7 +306,7 @@ msgstr "Жұмыс орындары динамикалы түрде басқар
#: data/org.gnome.mutter.gschema.xml.in:41
msgid ""
"Determines whether workspaces are managed dynamically or whether there's a "
"Determines whether workspaces are managed dynamically or whether theres a "
"static number of workspaces (determined by the num-workspaces key in org."
"gnome.desktop.wm.preferences)."
msgstr ""
@@ -337,9 +337,9 @@ 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."
"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."
msgstr ""
#: data/org.gnome.mutter.gschema.xml.in:79
@@ -348,7 +348,7 @@ msgstr ""
#: data/org.gnome.mutter.gschema.xml.in:80
msgid ""
"The amount of total draggable borders. If the theme's visible borders are "
"The amount of total draggable borders. If the themes visible borders are "
"not enough, invisible borders will be added to meet this value."
msgstr ""
@@ -372,14 +372,42 @@ msgid ""
"screen of the monitor."
msgstr ""
#: data/org.gnome.mutter.gschema.xml.in:120
#: data/org.gnome.mutter.gschema.xml.in:107
msgid "Enable experimental features"
msgstr ""
#: 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: • “monitor-config-manager” — use the new "
"monitor configuration system, aimed to replace the old one. This enables a "
"higher level configuration API to be used by configuration applications, as "
"well as the ability to configure per logical monitor scale. • “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. Also enabling "
"“monitor-config-manager” is required for this feature to be enabled."
msgstr ""
#: data/org.gnome.mutter.gschema.xml.in:151
msgid "Select window from tab popup"
msgstr ""
#: data/org.gnome.mutter.gschema.xml.in:125
#: data/org.gnome.mutter.gschema.xml.in:156
msgid "Cancel tab popup"
msgstr ""
#: data/org.gnome.mutter.gschema.xml.in:161
msgid "Switch monitor configurations"
msgstr "Монитор баптауларын ауыстыру"
#: data/org.gnome.mutter.gschema.xml.in:166
msgid "Rotates the built-in monitor configuration"
msgstr ""
#: data/org.gnome.mutter.wayland.gschema.xml.in:6
msgid "Switch to VT 1"
msgstr "Бірінші виртуалды терминалына ауысу"
@@ -428,57 +456,109 @@ msgstr "Он бірінші виртуалды терминалына ауысу
msgid "Switch to VT 12"
msgstr "Он екінші виртуалды терминалына ауысу"
#: src/backends/meta-input-settings.c:1707
#. TRANSLATORS: This string refers to a button that switches between
#. * different modes.
#.
#: src/backends/meta-input-settings.c:2118
#, c-format
msgid "Mode Switch (Group %d)"
msgstr ""
#. TRANSLATORS: This string refers to an action, cycles drawing tablets'
#. * mapping through the available outputs.
#.
#: src/backends/meta-input-settings.c:2141
msgid "Switch monitor"
msgstr "Мониторды ауыстыру"
#: src/backends/meta-input-settings.c:1709
#: src/backends/meta-input-settings.c:2143
msgid "Show on-screen help"
msgstr "Экрандағы көмекті көрсету"
#: src/backends/meta-monitor-manager.c:514
#: src/backends/meta-monitor-manager.c:925
msgid "Built-in display"
msgstr "Құрамындағы экран"
#: src/backends/meta-monitor-manager.c:537
#: src/backends/meta-monitor-manager.c:948
msgid "Unknown"
msgstr "Белгісіз"
#: src/backends/meta-monitor-manager.c:539
#: src/backends/meta-monitor-manager.c:950
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:547
#: src/backends/meta-monitor-manager.c:958
#, c-format
msgid "%s %s"
msgstr "%s %s"
#. 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:463
#: src/compositor/compositor.c:476
#, c-format
msgid ""
"Another compositing manager is already running on screen %i on display \"%s"
"\"."
"Another compositing manager is already running on screen %i on display “%s”."
msgstr ""
#: src/core/bell.c:194
msgid "Bell event"
msgstr ""
#: src/core/delete.c:127
#: src/core/display.c:608
#, c-format
msgid "Failed to open X Window System display “%s”\n"
msgstr ""
#: src/core/main.c:189
msgid "Disable connection to session manager"
msgstr "Сессиялар менеджеріне байланыстарды сөндіру"
#: src/core/main.c:195
msgid "Replace the running window manager"
msgstr ""
#: src/core/main.c:201
msgid "Specify session management ID"
msgstr "Сессия менеджментінің ID-ін көрсету"
#: src/core/main.c:206
msgid "X Display to use"
msgstr "Қолданылатын X дисплейі"
#: src/core/main.c:212
msgid "Initialize session from savefile"
msgstr ""
#: src/core/main.c:218
msgid "Make X calls synchronous"
msgstr "X сервер шақыруларын синхронды қылу"
#: src/core/main.c:225
msgid "Run as a wayland compositor"
msgstr ""
#: src/core/main.c:231
msgid "Run as a nested compositor"
msgstr ""
#: src/core/main.c:239
msgid "Run as a full display server, rather than nested"
msgstr ""
#. Translators: %s is a window title
#: src/core/meta-close-dialog-default.c:147
#, c-format
msgid "“%s” is not responding."
msgstr "“%s” жауап бермейді."
#: src/core/delete.c:129
#: src/core/meta-close-dialog-default.c:149
msgid "Application is not responding."
msgstr "Қолданба жауап бермейді."
#: src/core/delete.c:134
#: src/core/meta-close-dialog-default.c:154
msgid ""
"You may choose to wait a short while for it to continue or force the "
"application to quit entirely."
@@ -486,60 +566,19 @@ msgstr ""
"Сіз қолданба өз жұмысын жалғастырғанды күтіп, немесе оны мәжбүрлетіп жаба "
"аласыз."
#: src/core/delete.c:141
msgid "_Wait"
msgstr "_Күту"
#: src/core/delete.c:141
#: src/core/meta-close-dialog-default.c:161
msgid "_Force Quit"
msgstr "_Мәжбүрлі шығу"
#: src/core/display.c:590
#, c-format
msgid "Failed to open X Window System display '%s'\n"
msgstr ""
#: src/core/main.c:182
msgid "Disable connection to session manager"
msgstr "Сессиялар менеджеріне байланыстарды сөндіру"
#: src/core/main.c:188
msgid "Replace the running window manager"
msgstr ""
#: src/core/main.c:194
msgid "Specify session management ID"
msgstr "Сессия менеджментінің ID-ін көрсету"
#: src/core/main.c:199
msgid "X Display to use"
msgstr "Қолданылатын X дисплейі"
#: src/core/main.c:205
msgid "Initialize session from savefile"
msgstr ""
#: src/core/main.c:211
msgid "Make X calls synchronous"
msgstr "X сервер шақыруларын синхронды қылу"
#: src/core/main.c:218
msgid "Run as a wayland compositor"
msgstr ""
#: src/core/main.c:224
msgid "Run as a nested compositor"
msgstr ""
#: src/core/main.c:232
msgid "Run as a full display server, rather than nested"
msgstr ""
#: src/core/meta-close-dialog-default.c:161
msgid "_Wait"
msgstr "_Күту"
#: src/core/mutter.c:39
#, c-format
msgid ""
"mutter %s\n"
"Copyright (C) 2001-%d Havoc Pennington, Red Hat, Inc., and others\n"
"Copyright © 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"
@@ -558,34 +597,34 @@ msgstr ""
msgid "Workspace %d"
msgstr "Жұмыс орны %d"
#: src/core/screen.c:521
#: src/core/screen.c:580
#, c-format
msgid ""
"Display \"%s\" already has a window manager; try using the --replace option "
"to replace the current window manager."
"Display “%s” already has a window manager; try using the --replace option to "
"replace the current window manager."
msgstr ""
#: src/core/screen.c:606
#: src/core/screen.c:665
#, c-format
msgid "Screen %d on display '%s' is invalid\n"
msgid "Screen %d on display %s is invalid\n"
msgstr ""
#: src/core/util.c:120
msgid "Mutter was compiled without support for verbose mode\n"
msgstr ""
#: src/wayland/meta-wayland-tablet-pad.c:595
#: src/wayland/meta-wayland-tablet-pad.c:563
#, c-format
msgid "Mode Switch: Mode %d"
msgstr ""
#: 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."
"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:548
#: src/x11/window-props.c:559
#, c-format
msgid "%s (on %s)"
msgstr "%s (%s жерінде)"

129
po/lt.po
View File

@@ -6,16 +6,16 @@
# 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, 2014, 2015, 2016.
# Aurimas Černius <aurisc4@gmail.com>, 2013, 2014, 2015, 2016, 2017.
#
msgid ""
msgstr ""
"Project-Id-Version: lt\n"
"Report-Msgid-Bugs-To: https://bugzilla.gnome.org/enter_bug.cgi?"
"product=mutter&keywords=I18N+L10N&component=general\n"
"POT-Creation-Date: 2017-03-02 18:41+0000\n"
"PO-Revision-Date: 2017-03-03 20:29+0200\n"
"Last-Translator: Moo\n"
"POT-Creation-Date: 2017-08-21 04:46+0000\n"
"PO-Revision-Date: 2017-08-22 23:17+0300\n"
"Last-Translator: Aurimas Černius <aurisc4@gmail.com>\n"
"Language-Team: Lietuvių <gnome-lt@lists.akl.lt>\n"
"Language: lt\n"
"MIME-Version: 1.0\n"
@@ -23,7 +23,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: Poedit 1.8.11\n"
"X-Generator: Gtranslator 2.91.7\n"
#: data/50-mutter-navigation.xml:6
msgid "Navigation"
@@ -401,14 +401,61 @@ msgstr ""
"Kai teigiama, nauji langai bus visada patalpinti aktyvaus monitoriaus ekrano "
"viduryje."
#: data/org.gnome.mutter.gschema.xml.in:120
#: data/org.gnome.mutter.gschema.xml.in:107
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: • “monitor-config-"
#| "manager” — use the new monitor configuration system, aimed to replace the "
#| "old one. This enables a higher level configuration API to be used by "
#| "configuration applications, as well as the ability to configure per "
#| "logical monitor scale. • “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. Also enabling “monitor-config-"
#| "manager” is required for this feature to be enabled."
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."
msgstr ""
"Norėdami įjungti eksperimentines savybes, pridėkite į sąrašą raktinį žodį. "
"Ar savybė reikalauja kompozitoriaus paleidimo iš naujo priklauso nuo "
"konkrečios savybės. Nei viena eksperimentinė savybė privalo būti prieinama "
"ar konfigūruojama. Nesitikėkite, kad ką nors pridėjus į šį sąrašą, tai "
"išliks ir ateityje. Šiuo metu galimi raktažodžiai: • „scale-monitor-"
"framebuffer“ — mutter numatytai išdėsto loginius monitorius loginėje "
"pikselių koordinačių erdvėje, tuo pat ištempiant monitorių kadrų buferius "
"vietoje langų turinio, tokiu būdu valdant didelio tankio monitorius. "
"Nereikalauja paleisti iš naujo."
#: data/org.gnome.mutter.gschema.xml.in:141
msgid "Select window from tab popup"
msgstr "Pasirinkti langą iš tab iššokimo"
#: data/org.gnome.mutter.gschema.xml.in:125
#: data/org.gnome.mutter.gschema.xml.in:146
msgid "Cancel tab popup"
msgstr "Atšaukti tab iššokimą"
#: data/org.gnome.mutter.gschema.xml.in:151
msgid "Switch monitor configurations"
msgstr "Perjungti monitorių konfigūracijas"
#: data/org.gnome.mutter.gschema.xml.in:156
msgid "Rotates the built-in monitor configuration"
msgstr "Suka integruotas monitorių konfigūracijas"
#: data/org.gnome.mutter.wayland.gschema.xml.in:6
msgid "Switch to VT 1"
msgstr "Persijungti į VT 1"
@@ -457,10 +504,14 @@ msgstr "Persijungti į VT 11"
msgid "Switch to VT 12"
msgstr "Persijungti į VT 12"
#: data/org.gnome.mutter.wayland.gschema.xml.in:54
msgid "Re-enable shortcuts"
msgstr "Iš naujo įjungti trumpinius"
#. TRANSLATORS: This string refers to a button that switches between
#. * different modes.
#.
#: src/backends/meta-input-settings.c:1800
#: src/backends/meta-input-settings.c:2151
#, c-format
msgid "Mode Switch (Group %d)"
msgstr "Veiksenos perjungimas (Grupė %d)"
@@ -468,37 +519,37 @@ 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:1822
#: src/backends/meta-input-settings.c:2174
msgid "Switch monitor"
msgstr "Perjungti monitorių"
#: src/backends/meta-input-settings.c:1824
#: src/backends/meta-input-settings.c:2176
msgid "Show on-screen help"
msgstr "Rodyti pagalbą ekrane"
#: src/backends/meta-monitor-manager.c:675
#: src/backends/meta-monitor-manager.c:903
msgid "Built-in display"
msgstr "Integruotas vaizduoklis"
#: src/backends/meta-monitor-manager.c:698
#: src/backends/meta-monitor-manager.c:926
msgid "Unknown"
msgstr "Nežinomas"
#: src/backends/meta-monitor-manager.c:700
#: src/backends/meta-monitor-manager.c:928
msgid "Unknown Display"
msgstr "Nežinomas vaizduoklis"
#. TRANSLATORS: this is a monitor vendor name, followed by a
#. * size in inches, like 'Dell 15"'
#.
#: src/backends/meta-monitor-manager.c:708
#: src/backends/meta-monitor-manager.c:936
#, c-format
msgid "%s %s"
msgstr "%s %s"
#. 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:471
#: src/compositor/compositor.c:476
#, c-format
msgid ""
"Another compositing manager is already running on screen %i on display “%s”."
@@ -508,30 +559,6 @@ msgstr "Kita kompozicijos tvarkytuvė jau veikia ekrane %i vaizduoklyje „%s“
msgid "Bell event"
msgstr "Skambučio įvykis"
#. Translators: %s is a window title
#: src/core/delete.c:127
#, c-format
msgid "“%s” is not responding."
msgstr "%s neatsiliepia į komandas."
#: src/core/delete.c:129
msgid "Application is not responding."
msgstr "Programa neatsiliepia į komandas."
#: src/core/delete.c:134
msgid ""
"You may choose to wait a short while for it to continue or force the "
"application to quit entirely."
msgstr "Galite šiek tiek palaukti arba priverstinai uždaryti programą."
#: src/core/delete.c:141
msgid "_Force Quit"
msgstr "_Priverstinai išeiti"
#: src/core/delete.c:141
msgid "_Wait"
msgstr "_Laukti"
#: src/core/display.c:608
#, c-format
msgid "Failed to open X Window System display “%s”\n"
@@ -573,6 +600,30 @@ msgstr "Vykdyti kaip įdėtinį kompozitorių"
msgid "Run as a full display server, rather than nested"
msgstr "Vykdyti kaip visą vaizduoklio serverį, o ne įdėtinį"
#. Translators: %s is a window title
#: src/core/meta-close-dialog-default.c:147
#, c-format
msgid "“%s” is not responding."
msgstr "%s neatsiliepia į komandas."
#: src/core/meta-close-dialog-default.c:149
msgid "Application is not responding."
msgstr "Programa neatsiliepia į komandas."
#: src/core/meta-close-dialog-default.c:154
msgid ""
"You may choose to wait a short while for it to continue or force the "
"application to quit entirely."
msgstr "Galite šiek tiek palaukti arba priverstinai uždaryti programą."
#: src/core/meta-close-dialog-default.c:161
msgid "_Force Quit"
msgstr "_Priverstinai išeiti"
#: src/core/meta-close-dialog-default.c:161
msgid "_Wait"
msgstr "_Laukti"
#: src/core/mutter.c:39
#, c-format
msgid ""

6165
po/ne.po

File diff suppressed because it is too large Load Diff

112
po/pl.po
View File

@@ -12,10 +12,10 @@
msgid ""
msgstr ""
"Project-Id-Version: mutter\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?"
"Report-Msgid-Bugs-To: https://bugzilla.gnome.org/enter_bug.cgi?"
"product=mutter&keywords=I18N+L10N&component=general\n"
"POT-Creation-Date: 2017-02-16 21:09+0000\n"
"PO-Revision-Date: 2017-02-19 21:52+0100\n"
"POT-Creation-Date: 2017-08-21 04:46+0000\n"
"PO-Revision-Date: 2017-08-23 04:15+0200\n"
"Last-Translator: Piotr Drąg <piotrdrag@gmail.com>\n"
"Language-Team: Polish <community-poland@mozilla.org>\n"
"Language: pl\n"
@@ -409,14 +409,46 @@ msgstr ""
"Jeśli wynosi wartość „true”, to nowe okna będą zawsze umieszczane na środku "
"aktywnego ekranu monitora."
#: data/org.gnome.mutter.gschema.xml.in:120
#: data/org.gnome.mutter.gschema.xml.in:107
msgid "Enable experimental features"
msgstr "Funkcje eksperymentalne"
#: 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."
msgstr ""
"Aby włączyć eksperymentalne funkcje, należy dodać słowo kluczowe funkcji do "
"tej listy. Niektóre funkcje wymagają ponownego uruchomienia menedżera okien. "
"Dostępność funkcji eksperymentalnych nie jest gwarantowana. W przyszłości "
"każda funkcja może zostać usunięta. Obecnie obsługiwane słowa kluczowe: • "
"„scale-monitor-framebuffer” — sprawia, że menedżer okien do zarządzania "
"monitorami o wysokiej rozdzielczości domyślnie układa logiczne monitory "
"w przestrzeni współrzędnych logicznych pikseli, jednocześnie skalując bufory "
"ramki monitorów zamiast zawartości okien. Nie wymaga ponownego uruchomienia."
#: data/org.gnome.mutter.gschema.xml.in:141
msgid "Select window from tab popup"
msgstr "Wybór okna z wyskakującego okna dla tabulacji"
#: data/org.gnome.mutter.gschema.xml.in:125
#: data/org.gnome.mutter.gschema.xml.in:146
msgid "Cancel tab popup"
msgstr "Anulowanie wyskakującego okna dla tabulacji"
#: data/org.gnome.mutter.gschema.xml.in:151
msgid "Switch monitor configurations"
msgstr "Przełączenie konfiguracji monitorów"
#: data/org.gnome.mutter.gschema.xml.in:156
msgid "Rotates the built-in monitor configuration"
msgstr "Obrócenie wbudowanego monitora"
#: data/org.gnome.mutter.wayland.gschema.xml.in:6
msgid "Switch to VT 1"
msgstr "Przełączenie na 1. konsolę wirtualną"
@@ -465,10 +497,14 @@ msgstr "Przełączenie na 11. konsolę wirtualną"
msgid "Switch to VT 12"
msgstr "Przełączenie na 12. konsolę wirtualną"
#: data/org.gnome.mutter.wayland.gschema.xml.in:54
msgid "Re-enable shortcuts"
msgstr "Ponowne włączenie skrótów"
#. TRANSLATORS: This string refers to a button that switches between
#. * different modes.
#.
#: src/backends/meta-input-settings.c:1800
#: src/backends/meta-input-settings.c:2151
#, c-format
msgid "Mode Switch (Group %d)"
msgstr "Przełącznik trybu (%d. grupa)"
@@ -476,37 +512,37 @@ msgstr "Przełącznik trybu (%d. grupa)"
#. TRANSLATORS: This string refers to an action, cycles drawing tablets'
#. * mapping through the available outputs.
#.
#: src/backends/meta-input-settings.c:1822
#: src/backends/meta-input-settings.c:2174
msgid "Switch monitor"
msgstr "Przełączenie monitora"
#: src/backends/meta-input-settings.c:1824
#: src/backends/meta-input-settings.c:2176
msgid "Show on-screen help"
msgstr "Wyświetlenie pomocy na ekranie"
msgstr "Ekran pomocy"
#: src/backends/meta-monitor-manager.c:675
#: src/backends/meta-monitor-manager.c:903
msgid "Built-in display"
msgstr "Wbudowany ekran"
#: src/backends/meta-monitor-manager.c:698
#: src/backends/meta-monitor-manager.c:926
msgid "Unknown"
msgstr "Nieznany"
#: src/backends/meta-monitor-manager.c:700
#: src/backends/meta-monitor-manager.c:928
msgid "Unknown Display"
msgstr "Nieznany ekran"
#. TRANSLATORS: this is a monitor vendor name, followed by a
#. * size in inches, like 'Dell 15"'
#.
#: src/backends/meta-monitor-manager.c:708
#: src/backends/meta-monitor-manager.c:936
#, c-format
msgid "%s %s"
msgstr "%s %s"
#. 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:471
#: src/compositor/compositor.c:476
#, c-format
msgid ""
"Another compositing manager is already running on screen %i on display “%s”."
@@ -517,30 +553,6 @@ msgstr ""
msgid "Bell event"
msgstr "Zdarzenie sygnału dźwiękowego"
#. Translators: %s is a window title
#: src/core/delete.c:127
#, c-format
msgid "“%s” is not responding."
msgstr "Okno „%s” nie odpowiada."
#: src/core/delete.c:129
msgid "Application is not responding."
msgstr "Program nie odpowiada."
#: src/core/delete.c:134
msgid ""
"You may choose to wait a short while for it to continue or force the "
"application to quit entirely."
msgstr "Można poczekać chwilę dłużej lub wymusić zakończenie programu."
#: src/core/delete.c:141
msgid "_Force Quit"
msgstr "_Zakończ"
#: src/core/delete.c:141
msgid "_Wait"
msgstr "_Czekaj"
#: src/core/display.c:608
#, c-format
msgid "Failed to open X Window System display “%s”\n"
@@ -582,6 +594,30 @@ msgstr "Uruchamia jako osadzony menedżer składania"
msgid "Run as a full display server, rather than nested"
msgstr "Uruchamia jako pełny serwer wyświetlania zamiast osadzonego"
#. Translators: %s is a window title
#: src/core/meta-close-dialog-default.c:147
#, c-format
msgid "“%s” is not responding."
msgstr "Okno „%s” nie odpowiada."
#: src/core/meta-close-dialog-default.c:149
msgid "Application is not responding."
msgstr "Program nie odpowiada."
#: src/core/meta-close-dialog-default.c:154
msgid ""
"You may choose to wait a short while for it to continue or force the "
"application to quit entirely."
msgstr "Można poczekać chwilę dłużej lub wymusić zakończenie programu."
#: src/core/meta-close-dialog-default.c:161
msgid "_Force Quit"
msgstr "_Zakończ"
#: src/core/meta-close-dialog-default.c:161
msgid "_Wait"
msgstr "_Czekaj"
#: src/core/mutter.c:39
#, c-format
msgid ""

108
po/sk.po
View File

@@ -14,8 +14,8 @@ msgstr ""
"Project-Id-Version: mutter\n"
"Report-Msgid-Bugs-To: https://bugzilla.gnome.org/enter_bug.cgi?"
"product=mutter&keywords=I18N+L10N&component=general\n"
"POT-Creation-Date: 2017-03-07 12:40+0000\n"
"PO-Revision-Date: 2017-03-12 10:28+0100\n"
"POT-Creation-Date: 2017-08-21 04:46+0000\n"
"PO-Revision-Date: 2017-08-23 19:50+0200\n"
"Last-Translator: Dušan Kazik <prescott66@gmail.com>\n"
"Language-Team: Slovak <gnome-sk-list@gnome.org>\n"
"Language: sk\n"
@@ -23,7 +23,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=(n==1) ? 1 : (n>=2 && n<=4) ? 2 : 0;\n"
"X-Generator: Poedit 1.8.12\n"
"X-Generator: Poedit 2.0.3\n"
#: data/50-mutter-navigation.xml:6
msgid "Navigation"
@@ -477,16 +477,42 @@ msgstr ""
"Ak je nastavené na true, budú nové okná vždy umiestnené v strede aktívnej "
"obrazovky monitoru."
#: data/org.gnome.mutter.gschema.xml.in:107
msgid "Enable experimental features"
msgstr "Povoliť experimentálne funkcie"
#: 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."
msgstr ""
# summary
#: data/org.gnome.mutter.gschema.xml.in:120
#: data/org.gnome.mutter.gschema.xml.in:141
msgid "Select window from tab popup"
msgstr "Vybrať okno z rozbaľovacej ponuky tabulátora"
# summary
#: data/org.gnome.mutter.gschema.xml.in:125
#: data/org.gnome.mutter.gschema.xml.in:146
msgid "Cancel tab popup"
msgstr "Zrušit rozbaľovaciu ponuku tabulátora"
# PK: predpokladam ze to prepisane medzi tlacidlami
# description
#: data/org.gnome.mutter.gschema.xml.in:151
msgid "Switch monitor configurations"
msgstr "Prepnúť nastavenia monitorov"
#: data/org.gnome.mutter.gschema.xml.in:156
msgid "Rotates the built-in monitor configuration"
msgstr "Otočí nastavenie vstavaného monitora"
# description
#: data/org.gnome.mutter.wayland.gschema.xml.in:6
msgid "Switch to VT 1"
@@ -542,10 +568,14 @@ msgstr "Prepnúť na VT č. 11"
msgid "Switch to VT 12"
msgstr "Prepnúť na VT č. 12"
#: data/org.gnome.mutter.wayland.gschema.xml.in:54
msgid "Re-enable shortcuts"
msgstr "Znovu povoliť klávesové skratky"
#. TRANSLATORS: This string refers to a button that switches between
#. * different modes.
#.
#: src/backends/meta-input-settings.c:1800
#: src/backends/meta-input-settings.c:2151
#, c-format
msgid "Mode Switch (Group %d)"
msgstr "Prepínač režimu (skupina č. %d)"
@@ -555,37 +585,37 @@ msgstr "Prepínač režimu (skupina č. %d)"
#. TRANSLATORS: This string refers to an action, cycles drawing tablets'
#. * mapping through the available outputs.
#.
#: src/backends/meta-input-settings.c:1822
#: src/backends/meta-input-settings.c:2174
msgid "Switch monitor"
msgstr "Prepnúť monitor"
#: src/backends/meta-input-settings.c:1824
#: src/backends/meta-input-settings.c:2176
msgid "Show on-screen help"
msgstr "Zobraziť pomocníka na obrazovke"
#: src/backends/meta-monitor-manager.c:675
#: src/backends/meta-monitor-manager.c:903
msgid "Built-in display"
msgstr "Vstavaný displej"
#: src/backends/meta-monitor-manager.c:698
#: src/backends/meta-monitor-manager.c:926
msgid "Unknown"
msgstr "Neznámy"
#: src/backends/meta-monitor-manager.c:700
#: src/backends/meta-monitor-manager.c:928
msgid "Unknown Display"
msgstr "Neznámy displej"
#. TRANSLATORS: this is a monitor vendor name, followed by a
#. * size in inches, like 'Dell 15"'
#.
#: src/backends/meta-monitor-manager.c:708
#: src/backends/meta-monitor-manager.c:936
#, c-format
msgid "%s %s"
msgstr "%s %s"
#. 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:474
#: src/compositor/compositor.c:476
#, c-format
msgid ""
"Another compositing manager is already running on screen %i on display “%s”."
@@ -596,32 +626,6 @@ msgstr ""
msgid "Bell event"
msgstr "Udalosť zvončeka"
# %s is a window title
#. Translators: %s is a window title
#: src/core/delete.c:127
#, c-format
msgid "“%s” is not responding."
msgstr "„%s“ neodpovedá."
#: src/core/delete.c:129
msgid "Application is not responding."
msgstr "Aplikácia neodpovedá."
#: src/core/delete.c:134
msgid ""
"You may choose to wait a short while for it to continue or force the "
"application to quit entirely."
msgstr ""
"Môžete chvíľu počkať na pokračovanie aplikácie, alebo ju môžete ukončiť."
#: src/core/delete.c:141
msgid "_Force Quit"
msgstr "_Vynútiť ukončenie"
#: src/core/delete.c:141
msgid "_Wait"
msgstr "_Počkať"
# X window system preloz, napr. system na spravu okien X
#: src/core/display.c:608
#, c-format
@@ -671,6 +675,32 @@ msgstr "Spustí ako kompozitor s vnoreným režimom"
msgid "Run as a full display server, rather than nested"
msgstr "Spustí ako plnohodnotný zobrazovací server, namiesto vnoreného režimu"
# %s is a window title
#. Translators: %s is a window title
#: src/core/meta-close-dialog-default.c:147
#, c-format
msgid "“%s” is not responding."
msgstr "„%s“ neodpovedá."
#: src/core/meta-close-dialog-default.c:149
msgid "Application is not responding."
msgstr "Aplikácia neodpovedá."
#: src/core/meta-close-dialog-default.c:154
msgid ""
"You may choose to wait a short while for it to continue or force the "
"application to quit entirely."
msgstr ""
"Môžete chvíľu počkať na pokračovanie aplikácie, alebo ju môžete ukončiť."
#: src/core/meta-close-dialog-default.c:161
msgid "_Force Quit"
msgstr "_Vynútiť ukončenie"
#: src/core/meta-close-dialog-default.c:161
msgid "_Wait"
msgstr "_Počkať"
#: src/core/mutter.c:39
#, c-format
msgid ""

230
po/sl.po
View File

@@ -9,19 +9,20 @@
msgid ""
msgstr ""
"Project-Id-Version: mutter master\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?"
"Report-Msgid-Bugs-To: https://bugzilla.gnome.org/enter_bug.cgi?"
"product=mutter&keywords=I18N+L10N&component=general\n"
"POT-Creation-Date: 2017-02-14 08:48+0100\n"
"PO-Revision-Date: 2017-02-14 08:48+0100\n"
"POT-Creation-Date: 2017-08-07 10:01+0200\n"
"PO-Revision-Date: 2017-08-07 10:02+0200\n"
"Last-Translator: Matej Urbančič <mateju@svn.gnome.org>\n"
"Language-Team: Slovenian GNOME Translation Team <gnome-si@googlegroups.com>\n"
"Language: sl_SI\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=4; plural=(n%100==1 ? 1 : n%100==2 ? 2 : n%100==3 || n%100==4 ? 3 : 0);\n"
"Plural-Forms: nplurals=4; plural=(n%100==1 ? 1 : n%100==2 ? 2 : n%100==3 || n"
"%100==4 ? 3 : 0);\n"
"X-Poedit-SourceCharset: utf-8\n"
"X-Generator: Poedit 1.8.9\n"
"X-Generator: Poedit 2.0.1\n"
#: data/50-mutter-navigation.xml:6
msgid "Navigation"
@@ -274,15 +275,15 @@ msgstr "Spremenilnik, ki naj se uporabi za upravljanje oken"
#: 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."
"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. Its expected that this binding either the default or "
"set to the empty string."
msgstr ""
"Ta vrednost določa \"prevleko\", ki združuje predogled okna in zaganjalnik "
"programa. Vrednost je zamišljena kot \"ključ oken\" na strojni opremi "
"računalnika. Pričakovano je, da je vrednost določena privzeto ali pa ni "
"določena."
"Ta vrednost določa »prekrivno plast«, ki združuje predogled okna in "
"zaganjalnik programa. Vrednost je zamišljena kot »ključ oken« na strojni "
"opremi računalnika. Pričakovano je, da je vrednost določena privzeto ali pa "
"ni določena."
#: data/org.gnome.mutter.gschema.xml.in:20
msgid "Attach modal dialogs"
@@ -317,7 +318,7 @@ msgstr "Število delovnih površin je spremenljivo"
#: data/org.gnome.mutter.gschema.xml.in:41
msgid ""
"Determines whether workspaces are managed dynamically or whether there's a "
"Determines whether workspaces are managed dynamically or whether theres a "
"static number of workspaces (determined by the num-workspaces key in org."
"gnome.desktop.wm.preferences)."
msgstr ""
@@ -355,12 +356,12 @@ msgstr "Zamakni spremembe žarišča, dokler se kazalnik še premika"
#: 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."
"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."
msgstr ""
"Izbrana možnost omogoča, da se žarišče, v kolikor je izbran način \"sloppy\" "
"ali \"miška\", ne spremeni takoj ob izbiri okna. Žarišče se spremeni, ko se "
"Izbrana možnost omogoča, da se žarišče, v kolikor je izbran način »sloppy« "
"ali »miška«, ne spremeni takoj ob izbiri okna. Žarišče se spremeni, ko se "
"kazalnik preneha premikati."
#: data/org.gnome.mutter.gschema.xml.in:79
@@ -369,11 +370,11 @@ msgstr "Prilagodljiva obroba pravokotnika"
#: data/org.gnome.mutter.gschema.xml.in:80
msgid ""
"The amount of total draggable borders. If the theme's visible borders are "
"The amount of total draggable borders. If the themes visible borders are "
"not enough, invisible borders will be added to meet this value."
msgstr ""
"Delež skupne prilagodljive obrobe. V kolikor vidni robovi teme niso dovolj, "
"so dodane nevidne obrobe, za dodatno prilagajanje."
"so dodane nevidne obrobe za dodatno prilagajanje."
#: data/org.gnome.mutter.gschema.xml.in:89
msgid "Auto maximize nearly monitor sized windows"
@@ -398,14 +399,53 @@ msgid ""
msgstr ""
"Izbrana možnost določa, da bo novo okno vedno v središču dejavnega zaslona."
#: data/org.gnome.mutter.gschema.xml.in:120
#: data/org.gnome.mutter.gschema.xml.in:107
msgid "Enable experimental features"
msgstr "Omogoči preizkusne možnosti"
#: 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: • “monitor-config-manager” — use the new "
"monitor configuration system, aimed to replace the old one. This enables a "
"higher level configuration API to be used by configuration applications, as "
"well as the ability to configure per logical monitor scale. • “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. Also enabling "
"“monitor-config-manager” is required for this feature to be enabled."
msgstr ""
"Za omogočanje preizkusnih možnosti, dodajte ključno besedo možnosti na "
"seznam. Ali zahteva možnost ponovni zagon sestavljalnika, je odvisno od "
"posamezne možnosti. Te možnosti niso zahtevane niti nastavljive. Trenutno so "
"na voljo ključne besede: • »monitor-config-manager« uporablja nov sistem "
"nastavitev, ki naj bi zamenjal obstoječega. Omogoča večjo nastavljivost API, "
"za uporabo pri prigramih za nastavitve lastnosti zaslona. • »scale-monitor-"
"framebuffer« določi privzeto rabo sistema mutter za logične zaslone v "
"logičnem točkovnem koordinatnem prostoru, pri čemer prilagaja predpomnilnik "
"in ne vsebine za upravljanje z zasloni HiDPI. Možnost ne zahteva ponovnega "
"zagona. Za omogočanje te možnosti, mora biti omogočena tudi možnost »monitor-"
"config-manager«."
#: data/org.gnome.mutter.gschema.xml.in:151
msgid "Select window from tab popup"
msgstr "Izbor okna iz pojavnega zavihka"
#: data/org.gnome.mutter.gschema.xml.in:125
#: data/org.gnome.mutter.gschema.xml.in:156
msgid "Cancel tab popup"
msgstr "Prekliči pojavni zavihek"
#: data/org.gnome.mutter.gschema.xml.in:161
msgid "Switch monitor configurations"
msgstr "Nastavitve nadzornika preklopa"
#: data/org.gnome.mutter.gschema.xml.in:166
msgid "Rotates the built-in monitor configuration"
msgstr "Zavrti vgrajene nastavitve zaslona"
#: data/org.gnome.mutter.wayland.gschema.xml.in:6
msgid "Switch to VT 1"
msgstr "Preklopi na VT 1"
@@ -454,10 +494,14 @@ msgstr "Preklopi na VT 11"
msgid "Switch to VT 12"
msgstr "Preklopi na VT 12"
#: data/org.gnome.mutter.wayland.gschema.xml.in:54
msgid "Re-enable shortcuts"
msgstr "Ponovno omogoči tipkovne bližnjice"
#. TRANSLATORS: This string refers to a button that switches between
#. * different modes.
#.
#: src/backends/meta-input-settings.c:1759
#: src/backends/meta-input-settings.c:2118
#, c-format
msgid "Mode Switch (Group %d)"
msgstr "Preklop načina (skupina %d)"
@@ -465,59 +509,99 @@ msgstr "Preklop načina (skupina %d)"
#. TRANSLATORS: This string refers to an action, cycles drawing tablets'
#. * mapping through the available outputs.
#.
#: src/backends/meta-input-settings.c:1781
#: src/backends/meta-input-settings.c:2141
msgid "Switch monitor"
msgstr "Nadzornik preklopa"
#: src/backends/meta-input-settings.c:1783
#: src/backends/meta-input-settings.c:2143
msgid "Show on-screen help"
msgstr "Pokaži zaslonsko pomoč"
#: src/backends/meta-monitor-manager.c:675
#: src/backends/meta-monitor-manager.c:927
msgid "Built-in display"
msgstr "Vgrajen zaslon"
#: src/backends/meta-monitor-manager.c:698
#: src/backends/meta-monitor-manager.c:950
msgid "Unknown"
msgstr "Neznano"
#: src/backends/meta-monitor-manager.c:700
#: src/backends/meta-monitor-manager.c:952
msgid "Unknown Display"
msgstr "Neznan zaslon"
#. TRANSLATORS: this is a monitor vendor name, followed by a
#. * size in inches, like 'Dell 15"'
#.
#: src/backends/meta-monitor-manager.c:708
#: src/backends/meta-monitor-manager.c:960
#, c-format
msgid "%s %s"
msgstr "%s %s"
#. 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:471
#: src/compositor/compositor.c:476
#, c-format
msgid ""
"Another compositing manager is already running on screen %i on display \"%s"
"\"."
"Another compositing manager is already running on screen %i on display “%s”."
msgstr ""
"Drug upravljalnik sestavljanja je že zagnan na zaslonu %i prikaza \"%s\"."
"Drug upravljalnik sestavljanja je že zagnan na zaslonu %i prikaza »%s«."
#: src/core/bell.c:194
msgid "Bell event"
msgstr "Dogodek zvonjenja"
#: src/core/display.c:608
#, c-format
msgid "Failed to open X Window System display “%s”\n"
msgstr "Odpiranje zaslona »%s« okenskega sistema X je spodletelo\n"
#: src/core/main.c:189
msgid "Disable connection to session manager"
msgstr "Onemogoči povezavo z upravljalnikom sej"
#: src/core/main.c:195
msgid "Replace the running window manager"
msgstr "Zamenjaj trenutni upravljalnik oken"
#: src/core/main.c:201
msgid "Specify session management ID"
msgstr "Navedite ID upravljanja seje"
#: src/core/main.c:206
msgid "X Display to use"
msgstr "Zaslon X za uporabo"
#: src/core/main.c:212
msgid "Initialize session from savefile"
msgstr "Začni sejo iz shranjene datoteke"
#: src/core/main.c:218
msgid "Make X calls synchronous"
msgstr "Uskladi klice X"
#: src/core/main.c:225
msgid "Run as a wayland compositor"
msgstr "Zaženi izbirnik wayland"
#: src/core/main.c:231
msgid "Run as a nested compositor"
msgstr "Zaženi kot gnezden vpisovalnik"
#: src/core/main.c:239
msgid "Run as a full display server, rather than nested"
msgstr "Zaženi kot polni strežnik zaslona in ne vstavljeno"
#. Translators: %s is a window title
#: src/core/delete.c:127
#: src/core/meta-close-dialog-default.c:147
#, c-format
msgid "“%s” is not responding."
msgstr "%s se ne odziva."
msgstr "Okno »%s« se ne odziva."
#: src/core/delete.c:129
#: src/core/meta-close-dialog-default.c:149
msgid "Application is not responding."
msgstr "Program se ne odziva."
#: src/core/delete.c:134
#: src/core/meta-close-dialog-default.c:154
msgid ""
"You may choose to wait a short while for it to continue or force the "
"application to quit entirely."
@@ -525,68 +609,26 @@ msgstr ""
"Lahko še malo počakate, če program morda spet začne delovati, ali pa vsilite "
"končanje delovanja."
#: src/core/delete.c:141
#: src/core/meta-close-dialog-default.c:161
msgid "_Force Quit"
msgstr "_Vsili konec"
#: src/core/delete.c:141
#: src/core/meta-close-dialog-default.c:161
msgid "_Wait"
msgstr "_Počakaj"
#: src/core/display.c:608
#, c-format
msgid "Failed to open X Window System display '%s'\n"
msgstr "Ni mogoče odpreti zaslona '%s' okenskega sistema X\n"
#: src/core/main.c:187
msgid "Disable connection to session manager"
msgstr "Onemogoči povezavo z upravljalnikom sej"
#: src/core/main.c:193
msgid "Replace the running window manager"
msgstr "Zamenjaj trenutni upravljalnik oken"
#: src/core/main.c:199
msgid "Specify session management ID"
msgstr "Navedite ID upravljanja seje"
#: src/core/main.c:204
msgid "X Display to use"
msgstr "Zaslon X za uporabo"
#: src/core/main.c:210
msgid "Initialize session from savefile"
msgstr "Začni sejo iz shranjene datoteke"
#: src/core/main.c:216
msgid "Make X calls synchronous"
msgstr "Uskladi klice X"
#: src/core/main.c:223
msgid "Run as a wayland compositor"
msgstr "Zaženi izbirnik wayland"
#: src/core/main.c:229
msgid "Run as a nested compositor"
msgstr "Zaženi kot gnezden vpisovalnik"
#: src/core/main.c:237
msgid "Run as a full display server, rather than nested"
msgstr "Zaženi kot polni strežnik zaslona in ne vstavljeno"
#: src/core/mutter.c:39
#, c-format
msgid ""
"mutter %s\n"
"Copyright (C) 2001-%d Havoc Pennington, Red Hat, Inc., and others\n"
"Copyright © 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"
msgstr ""
"mutter %s\n"
"Avtorske pravice pridržane (C) 2001-%d Havoc Pennington, Red Hat in drugi\n"
"To je prosta programska oprema; za pogoje kopiranja si poglejte izvorno "
"kodo.\n"
"To je prosta programska oprema; za pogoje kopiranja si oglejte dovoljenje.\n"
"Program je na voljo BREZ KAKRŠNIHKOLI ZAGOTOVIL.\n"
#: src/core/mutter.c:53
@@ -606,16 +648,16 @@ msgstr "Delovna površina %d"
#: src/core/screen.c:580
#, c-format
msgid ""
"Display \"%s\" already has a window manager; try using the --replace option "
"to replace the current window manager."
"Display “%s” already has a window manager; try using the --replace option to "
"replace the current window manager."
msgstr ""
"Zaslon \"%s\" že ima določen upravljalnik oken; poskušajte uporabiti možnost "
"--replace za zamenjavo trenutnega upravljalnika zaslona."
"Zaslon »%s« že ima določen upravljalnik oken; poskušajte uporabiti možnost --"
"replace za zamenjavo trenutnega upravljalnika zaslona."
#: src/core/screen.c:665
#, c-format
msgid "Screen %d on display '%s' is invalid\n"
msgstr "Zaslon %d na prikazu '%s' ni veljaven\n"
msgid "Screen %d on display %s is invalid\n"
msgstr "Zaslon %d na prikazu »%s« ni veljaven\n"
#: src/core/util.c:120
msgid "Mutter was compiled without support for verbose mode\n"
@@ -630,11 +672,11 @@ msgstr "Način preklopa: način %d"
# G:2 K:6 O:0
#: 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."
"These windows do not support save current setup and will have to be "
"restarted manually next time you log in."
msgstr ""
"Ta okna ne podpirajo možnosti &quot;shranjevanja trenutnih nastavitev&quot;, "
"zato jih bo treba ob naslednji prijavi zagnati ročno."
"Ta okna ne podpirajo možnosti »shranjevanja trenutnih nastavitev«, zato jih "
"bo treba ob naslednji prijavi zagnati ročno."
#: src/x11/window-props.c:559
#, c-format

170
po/sr.po
View File

@@ -9,12 +9,12 @@
msgid ""
msgstr ""
"Project-Id-Version: mutter\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=mutter&"
"keywords=I18N+L10N&component=general\n"
"POT-Creation-Date: 2017-02-16 01:44+0000\n"
"PO-Revision-Date: 2017-02-21 07:16+0200\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-13 15:47+0000\n"
"PO-Revision-Date: 2017-08-15 20:40+0200\n"
"Last-Translator: Мирослав Николић <miroslavnikolic@rocketmail.com>\n"
"Language-Team: Serbian <(nothing)>\n"
"Language-Team: српски <gnome-sr@googlegroups.org>\n"
"Language: sr\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@@ -272,11 +272,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 "
@@ -322,18 +317,14 @@ 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."
"gnome.desktop.wm.preferences)."
msgstr ""
"Одређује да ли се радним просторима управља динамички или ће постојати "
"стални број радних простора (одређен бројем радних простора у "
"„org.gnome.desktop.wm.preferences“)."
"стални број радних простора (одређен бројем радних простора у „org.gnome."
"desktop.wm.preferences“)."
#: data/org.gnome.mutter.gschema.xml.in:50
msgid "Workspaces only on primary"
@@ -364,10 +355,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 "
@@ -382,9 +369,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."
@@ -416,14 +400,56 @@ msgstr ""
"Ако је изабрано, нови прозори ће увек бити постављени на средину радног "
"екрана монитора."
#: data/org.gnome.mutter.gschema.xml.in:120
#: data/org.gnome.mutter.gschema.xml.in:107
msgid "Enable experimental features"
msgstr "Укључује експерименталне функције"
#: 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: • “monitor-config-manager” — use the new "
"monitor configuration system, aimed to replace the old one. This enables a "
"higher level configuration API to be used by configuration applications, as "
"well as the ability to configure per logical monitor scale. • “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. Also enabling "
"“monitor-config-manager” is required for this feature to be enabled."
msgstr ""
"Да укључите експерименталне функције, додајте кључну реч функције на списак. "
"Да ли функција захтева поновно покретање састављача зависи од дате функције. "
"Није потребно да нека експериментална функција буде и даље доступна или "
"подесива. Немојте очекивати да додавање било чега у овом подешавању буде "
"будући доказ. Тренутно могуће кључне речи су: • „monitor-config-manager“ — "
"користи нови систем подешавања монитора, који треба да замени стари. Ово "
"омогућава да АПИ подешавања вишег нивоа буде коришћен програмима подешавања, "
"као и могућност подешавања скале монитора на нивоу логике. • „scale-monitor-"
"framebuffer“ — чини да матер пређе на распоред логичких монитора у логичком "
"координатном простору пиксела, док врши сразмеравање оквира монитора уместо "
"садржаја прозора, за управљање ХиДПИ мониторима. Не захтева поновно "
"покретање. Такође је потребно укључити „monitor-config-manager“ да би ова "
"функција била укључена."
#: data/org.gnome.mutter.gschema.xml.in:151
msgid "Select window from tab popup"
msgstr "Бира прозор из језичка искакања"
#: data/org.gnome.mutter.gschema.xml.in:125
#: data/org.gnome.mutter.gschema.xml.in:156
msgid "Cancel tab popup"
msgstr "Отказивање језичка искакања"
#: data/org.gnome.mutter.gschema.xml.in:161
#| msgid "Switch monitor"
msgid "Switch monitor configurations"
msgstr "Мења подешавања монитора"
#: data/org.gnome.mutter.gschema.xml.in:166
msgid "Rotates the built-in monitor configuration"
msgstr "Заокреће уграђена подешавања монитора"
#: data/org.gnome.mutter.wayland.gschema.xml.in:6
msgid "Switch to VT 1"
msgstr "Прелазак на ВТ 1"
@@ -472,53 +498,53 @@ msgstr "Прелазак на ВТ 11"
msgid "Switch to VT 12"
msgstr "Прелазак на ВТ 12"
#: data/org.gnome.mutter.wayland.gschema.xml.in:54
msgid "Re-enable shortcuts"
msgstr "Поново укључивање пречица"
#. TRANSLATORS: This string refers to a button that switches between
#. * different modes.
#.
#: src/backends/meta-input-settings.c:1759
#: src/backends/meta-input-settings.c:2118
#, c-format
#| msgid "Mode Switch: Mode %d"
msgid "Mode Switch (Group %d)"
msgstr "Режим прекидача (група %d)"
#. TRANSLATORS: This string refers to an action, cycles drawing tablets'
#. * mapping through the available outputs.
#.
#: src/backends/meta-input-settings.c:1781
#: src/backends/meta-input-settings.c:2141
msgid "Switch monitor"
msgstr "Промени монитор"
#: src/backends/meta-input-settings.c:1783
#: src/backends/meta-input-settings.c:2143
msgid "Show on-screen help"
msgstr "Прикажи помоћ на екрану"
#: src/backends/meta-monitor-manager.c:675
#: src/backends/meta-monitor-manager.c:927
msgid "Built-in display"
msgstr "Уграђени дисплеј"
#: src/backends/meta-monitor-manager.c:698
#: src/backends/meta-monitor-manager.c:950
msgid "Unknown"
msgstr "Непознато"
#: src/backends/meta-monitor-manager.c:700
#: src/backends/meta-monitor-manager.c:952
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:708
#: src/backends/meta-monitor-manager.c:960
#, c-format
msgid "%s %s"
msgstr "%s %s"
#. 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:471
#: src/compositor/compositor.c:476
#, 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 ""
@@ -528,35 +554,8 @@ msgstr ""
msgid "Bell event"
msgstr "Звонца"
#. Translators: %s is a window title
#: src/core/delete.c:127
#, c-format
msgid "“%s” is not responding."
msgstr "„%s“ не даје одзив."
#: src/core/delete.c:129
msgid "Application is not responding."
msgstr "Програм не даје одзив."
#: src/core/delete.c:134
msgid ""
"You may choose to wait a short while for it to continue or force the "
"application to quit entirely."
msgstr ""
"Можете мало сачекати док се програм не сабере или приморати програм да "
"комплетно прекине са радом."
#: src/core/delete.c:141
msgid "_Force Quit"
msgstr "_Приморај излаз"
#: src/core/delete.c:141
msgid "_Wait"
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 "Нисам успео да отворим екран „%s“ Икс система прозора\n"
@@ -596,14 +595,34 @@ msgstr "Ради као угнеждени саставник"
msgid "Run as a full display server, rather than nested"
msgstr "Ради као пуни сервер приказа, уместо као угнеждени"
#. Translators: %s is a window title
#: src/core/meta-close-dialog-default.c:147
#, c-format
msgid "“%s” is not responding."
msgstr "„%s“ не даје одзив."
#: src/core/meta-close-dialog-default.c:149
msgid "Application is not responding."
msgstr "Програм не даје одзив."
#: src/core/meta-close-dialog-default.c:154
msgid ""
"You may choose to wait a short while for it to continue or force the "
"application to quit entirely."
msgstr ""
"Можете мало сачекати док се програм не сабере или приморати програм да "
"комплетно прекине са радом."
#: src/core/meta-close-dialog-default.c:161
msgid "_Force Quit"
msgstr "_Приморај излаз"
#: src/core/meta-close-dialog-default.c:161
msgid "_Wait"
msgstr "_Сачекај"
#: src/core/mutter.c:39
#, 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"
@@ -632,19 +651,15 @@ msgstr "%d. радни простор"
#: src/core/screen.c:580
#, 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“ да замените тренутног управника прозора."
"Приказ „%s“ већ има управника прозора; пробајте да користите опцију „--"
"replace“ да замените тренутног управника прозора."
#: src/core/screen.c:665
#, c-format
#| msgid "Screen %d on display '%s' is invalid\n"
msgid "Screen %d on display “%s” is invalid\n"
msgstr "Приказ „%d“ на екрану „%s“ није исправан\n"
@@ -658,9 +673,6 @@ msgid "Mode Switch: Mode %d"
msgstr "Режим прекидача: Режим %d"
#: 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."
msgid ""
"These windows do not support “save current setup” and will have to be "
"restarted manually next time you log in."

View File

@@ -9,12 +9,12 @@
msgid ""
msgstr ""
"Project-Id-Version: mutter\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=mutter&"
"keywords=I18N+L10N&component=general\n"
"POT-Creation-Date: 2017-02-16 01:44+0000\n"
"PO-Revision-Date: 2017-02-21 07:16+0200\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-13 15:47+0000\n"
"PO-Revision-Date: 2017-08-15 20:40+0200\n"
"Last-Translator: Miroslav Nikolić <miroslavnikolic@rocketmail.com>\n"
"Language-Team: Serbian <(nothing)>\n"
"Language-Team: srpski <gnome-sr@googlegroups.org>\n"
"Language: sr\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@@ -272,11 +272,6 @@ msgid "Modifier to use for extended window management operations"
msgstr "Taster koji se koristi za proširene radnje upravnika prozorima"
#: 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 "
@@ -322,18 +317,14 @@ msgid "Workspaces are managed dynamically"
msgstr "Radnim prostorima se upravlja dinamički"
#: 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."
"gnome.desktop.wm.preferences)."
msgstr ""
"Određuje da li se radnim prostorima upravlja dinamički ili će postojati "
"stalni broj radnih prostora (određen brojem radnih prostora u "
"„org.gnome.desktop.wm.preferences“)."
"stalni broj radnih prostora (određen brojem radnih prostora u „org.gnome."
"desktop.wm.preferences“)."
#: data/org.gnome.mutter.gschema.xml.in:50
msgid "Workspaces only on primary"
@@ -364,10 +355,6 @@ msgid "Delay focus changes until the pointer stops moving"
msgstr "Zastoj prvog plana se menja dok se pokazivač ne zaustavi"
#: 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 "
@@ -382,9 +369,6 @@ msgid "Draggable border width"
msgstr "Širina ivice za prevlačenje"
#: 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."
@@ -416,14 +400,56 @@ msgstr ""
"Ako je izabrano, novi prozori će uvek biti postavljeni na sredinu radnog "
"ekrana monitora."
#: data/org.gnome.mutter.gschema.xml.in:120
#: data/org.gnome.mutter.gschema.xml.in:107
msgid "Enable experimental features"
msgstr "Uključuje eksperimentalne funkcije"
#: 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: • “monitor-config-manager” — use the new "
"monitor configuration system, aimed to replace the old one. This enables a "
"higher level configuration API to be used by configuration applications, as "
"well as the ability to configure per logical monitor scale. • “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. Also enabling "
"“monitor-config-manager” is required for this feature to be enabled."
msgstr ""
"Da uključite eksperimentalne funkcije, dodajte ključnu reč funkcije na spisak. "
"Da li funkcija zahteva ponovno pokretanje sastavljača zavisi od date funkcije. "
"Nije potrebno da neka eksperimentalna funkcija bude i dalje dostupna ili "
"podesiva. Nemojte očekivati da dodavanje bilo čega u ovom podešavanju bude "
"budući dokaz. Trenutno moguće ključne reči su: • „monitor-config-manager“ — "
"koristi novi sistem podešavanja monitora, koji treba da zameni stari. Ovo "
"omogućava da API podešavanja višeg nivoa bude korišćen programima podešavanja, "
"kao i mogućnost podešavanja skale monitora na nivou logike. • „scale-monitor-"
"framebuffer“ — čini da mater pređe na raspored logičkih monitora u logičkom "
"koordinatnom prostoru piksela, dok vrši srazmeravanje okvira monitora umesto "
"sadržaja prozora, za upravljanje HiDPI monitorima. Ne zahteva ponovno "
"pokretanje. Takođe je potrebno uključiti „monitor-config-manager“ da bi ova "
"funkcija bila uključena."
#: data/org.gnome.mutter.gschema.xml.in:151
msgid "Select window from tab popup"
msgstr "Bira prozor iz jezička iskakanja"
#: data/org.gnome.mutter.gschema.xml.in:125
#: data/org.gnome.mutter.gschema.xml.in:156
msgid "Cancel tab popup"
msgstr "Otkazivanje jezička iskakanja"
#: data/org.gnome.mutter.gschema.xml.in:161
#| msgid "Switch monitor"
msgid "Switch monitor configurations"
msgstr "Menja podešavanja monitora"
#: data/org.gnome.mutter.gschema.xml.in:166
msgid "Rotates the built-in monitor configuration"
msgstr "Zaokreće ugrađena podešavanja monitora"
#: data/org.gnome.mutter.wayland.gschema.xml.in:6
msgid "Switch to VT 1"
msgstr "Prelazak na VT 1"
@@ -472,53 +498,53 @@ msgstr "Prelazak na VT 11"
msgid "Switch to VT 12"
msgstr "Prelazak na VT 12"
#: data/org.gnome.mutter.wayland.gschema.xml.in:54
msgid "Re-enable shortcuts"
msgstr "Ponovo uključivanje prečica"
#. TRANSLATORS: This string refers to a button that switches between
#. * different modes.
#.
#: src/backends/meta-input-settings.c:1759
#: src/backends/meta-input-settings.c:2118
#, c-format
#| msgid "Mode Switch: Mode %d"
msgid "Mode Switch (Group %d)"
msgstr "Režim prekidača (grupa %d)"
#. TRANSLATORS: This string refers to an action, cycles drawing tablets'
#. * mapping through the available outputs.
#.
#: src/backends/meta-input-settings.c:1781
#: src/backends/meta-input-settings.c:2141
msgid "Switch monitor"
msgstr "Promeni monitor"
#: src/backends/meta-input-settings.c:1783
#: src/backends/meta-input-settings.c:2143
msgid "Show on-screen help"
msgstr "Prikaži pomoć na ekranu"
#: src/backends/meta-monitor-manager.c:675
#: src/backends/meta-monitor-manager.c:927
msgid "Built-in display"
msgstr "Ugrađeni displej"
#: src/backends/meta-monitor-manager.c:698
#: src/backends/meta-monitor-manager.c:950
msgid "Unknown"
msgstr "Nepoznato"
#: src/backends/meta-monitor-manager.c:700
#: src/backends/meta-monitor-manager.c:952
msgid "Unknown Display"
msgstr "Nepoznat displej"
#. TRANSLATORS: this is a monitor vendor name, followed by a
#. * size in inches, like 'Dell 15"'
#.
#: src/backends/meta-monitor-manager.c:708
#: src/backends/meta-monitor-manager.c:960
#, c-format
msgid "%s %s"
msgstr "%s %s"
#. 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:471
#: src/compositor/compositor.c:476
#, 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 ""
@@ -528,35 +554,8 @@ msgstr ""
msgid "Bell event"
msgstr "Zvonca"
#. Translators: %s is a window title
#: src/core/delete.c:127
#, c-format
msgid "“%s” is not responding."
msgstr "„%s“ ne daje odziv."
#: src/core/delete.c:129
msgid "Application is not responding."
msgstr "Program ne daje odziv."
#: src/core/delete.c:134
msgid ""
"You may choose to wait a short while for it to continue or force the "
"application to quit entirely."
msgstr ""
"Možete malo sačekati dok se program ne sabere ili primorati program da "
"kompletno prekine sa radom."
#: src/core/delete.c:141
msgid "_Force Quit"
msgstr "_Primoraj izlaz"
#: src/core/delete.c:141
msgid "_Wait"
msgstr "_Sačekaj"
#: 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 "Nisam uspeo da otvorim ekran „%s“ Iks sistema prozora\n"
@@ -596,14 +595,34 @@ msgstr "Radi kao ugneždeni sastavnik"
msgid "Run as a full display server, rather than nested"
msgstr "Radi kao puni server prikaza, umesto kao ugneždeni"
#. Translators: %s is a window title
#: src/core/meta-close-dialog-default.c:147
#, c-format
msgid "“%s” is not responding."
msgstr "„%s“ ne daje odziv."
#: src/core/meta-close-dialog-default.c:149
msgid "Application is not responding."
msgstr "Program ne daje odziv."
#: src/core/meta-close-dialog-default.c:154
msgid ""
"You may choose to wait a short while for it to continue or force the "
"application to quit entirely."
msgstr ""
"Možete malo sačekati dok se program ne sabere ili primorati program da "
"kompletno prekine sa radom."
#: src/core/meta-close-dialog-default.c:161
msgid "_Force Quit"
msgstr "_Primoraj izlaz"
#: src/core/meta-close-dialog-default.c:161
msgid "_Wait"
msgstr "_Sačekaj"
#: src/core/mutter.c:39
#, 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"
@@ -632,19 +651,15 @@ msgstr "%d. radni prostor"
#: src/core/screen.c:580
#, 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 ""
"Prikaz „%s“ već ima upravnika prozora; probajte da koristite opciju "
"„--replace“ da zamenite trenutnog upravnika prozora."
"Prikaz „%s“ već ima upravnika prozora; probajte da koristite opciju „--"
"replace“ da zamenite trenutnog upravnika prozora."
#: src/core/screen.c:665
#, c-format
#| msgid "Screen %d on display '%s' is invalid\n"
msgid "Screen %d on display “%s” is invalid\n"
msgstr "Prikaz „%d“ na ekranu „%s“ nije ispravan\n"
@@ -658,9 +673,6 @@ msgid "Mode Switch: Mode %d"
msgstr "Režim prekidača: Režim %d"
#: 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."
msgid ""
"These windows do not support “save current setup” and will have to be "
"restarted manually next time you log in."

142
po/tr.po
View File

@@ -6,25 +6,26 @@
# Baris Cicek <baris@teamforce.name.tr>, 2004, 2005, 2008, 2009.
# İlker DAĞLI <ilker@ilkerdagli.info>, 2011.
# Muhammed EKEN <gnome@m-eken.com>, 2011.
# Muhammet Kara <muhammetk@gmail.com>, 2011, 2012, 2014, 2015, 2016.
# Furkan Ahmet Kara <furkanahmetkara.fk@gmail.com>, 2017.
# Emin Tufan Çetin <etcetin@gmail.com>, 2017.
# Muhammet Kara <muhammetk@gmail.com>, 2011, 2012, 2014, 2015, 2016, 2017.
#
msgid ""
msgstr ""
"Project-Id-Version: mutter master\n"
"Report-Msgid-Bugs-To: https://bugzilla.gnome.org/enter_bug.cgi?"
"product=mutter&keywords=I18N+L10N&component=general\n"
"POT-Creation-Date: 2017-05-11 12:29+0000\n"
"PO-Revision-Date: 2017-05-13 17:23+0300\n"
"Last-Translator: Emin Tufan Çetin <etcetin@gmail.com>\n"
"Language-Team: Türkçe <>\n"
"POT-Creation-Date: 2017-08-13 15:47+0000\n"
"PO-Revision-Date: 2017-08-13 18:55+0300\n"
"Last-Translator: Muhammet Kara <muhammetk@gmail.com>\n"
"Language-Team: Turkish <gnometurk@gnome.org>\n"
"Language: tr\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: Gtranslator 2.91.7\n"
"Plural-Forms: nplurals=1; plural=0;\n"
"X-DamnedLies-Scope: partial\n"
"X-Generator: Gtranslator 2.91.7\n"
#: data/50-mutter-navigation.xml:6
msgid "Navigation"
@@ -277,11 +278,6 @@ msgid "Modifier to use for extended window management operations"
msgstr "Genişletilmiş pencere yönetimi işlemleri için kullanılacak değiştirici"
#: 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 "
@@ -366,10 +362,6 @@ msgid "Delay focus changes until the pointer stops moving"
msgstr "Odak değişikliklerini işaretçi hareketi durana kadar ertele"
#: 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 "
@@ -426,29 +418,46 @@ msgid ""
"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."
"proof. Currently possible keywords: • “monitor-config-manager” — use the new "
"monitor configuration system, aimed to replace the old one. This enables a "
"higher level configuration API to be used by configuration applications, as "
"well as the ability to configure per logical monitor scale. • “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. Also enabling "
"“monitor-config-manager” is required for this feature to be enabled."
msgstr ""
"Deneysel özellikleri etkinleştirmek için özelliğin anahtar sözcüğünü listeye "
"ekleyin. Özelliğin yeniden başlatmayı gerektirip gerektirmeyeceği verilen "
"özelliğe bağlıdır. Hiçbir deneysel özellik hala kullanılabilir veya "
"yapılandırılabilir olmak zorunda değildir. Bu ayara eklenecek herhangi bir "
"şeyin gelecekte olabilecek değişikliklerden etkilenmeyeceğini düşünmeyin. Şu "
"anda kullanılabilir anahtar sözcükler: • “scale-monitor-framebuffer” — "
"mutterin HiDPI monitörleri yönetmesi için pencere içeriği yerine monitör "
"çerçeve arabelleğini ölçeklendirirken, mantıksal monitörleri mantıksal "
"piksel koordinat aralığına yerleştirmesini öntanımlı yapar."
"anda kullanılabilir anahtar sözcükler: • “monitor-config-manager” — "
"eskisinin yerini alması amaçlanan yeni monitör yapılandırma sistemini "
"kullan. Bu, yapılandırma uygulamaları tarafından kullanılmak üzere daha "
"ksek düzeyde bir yapılandırma API'sini etkinleştirir ve ayrıca mantıksal "
"monitör ölçeğinde yapılandırma yapmaya olanak tanır.• “scale-monitor-"
"framebuffer” — mutterin HiDPI monitörleri yönetmesi için pencere içeriği "
"yerine monitör çerçeve arabelleğini ölçeklendirirken, mantıksal monitörleri "
"mantıksal piksel koordinat aralığına yerleştirmesini öntanımlı yapar."
#: data/org.gnome.mutter.gschema.xml.in:141
#: data/org.gnome.mutter.gschema.xml.in:151
msgid "Select window from tab popup"
msgstr "Pencereyi, sekme açılır penceresinden seç"
#: data/org.gnome.mutter.gschema.xml.in:146
#: data/org.gnome.mutter.gschema.xml.in:156
msgid "Cancel tab popup"
msgstr "Sekmeyi yeni pencerede açmayı iptal et"
#: data/org.gnome.mutter.gschema.xml.in:161
msgid "Switch monitor configurations"
msgstr "Monitör yapılandırmaları arasında geçiş yap"
#: data/org.gnome.mutter.gschema.xml.in:166
#| msgid "Switch monitor configurations"
msgid "Rotates the built-in monitor configuration"
msgstr "Yerleşik monitör yapılandırmaları arasında geçiş yapar"
#: data/org.gnome.mutter.wayland.gschema.xml.in:6
msgid "Switch to VT 1"
msgstr "VT 1e geç"
@@ -497,10 +506,14 @@ msgstr "VT 11e geç"
msgid "Switch to VT 12"
msgstr "VT 12ye geç"
#: data/org.gnome.mutter.wayland.gschema.xml.in:54
msgid "Re-enable shortcuts"
msgstr ""
#. TRANSLATORS: This string refers to a button that switches between
#. * different modes.
#.
#: src/backends/meta-input-settings.c:1848
#: src/backends/meta-input-settings.c:2118
#, c-format
msgid "Mode Switch (Group %d)"
msgstr "Kip anahtarı (Group %d)"
@@ -508,30 +521,30 @@ msgstr "Kip anahtarı (Group %d)"
#. TRANSLATORS: This string refers to an action, cycles drawing tablets'
#. * mapping through the available outputs.
#.
#: src/backends/meta-input-settings.c:1870
#: src/backends/meta-input-settings.c:2141
msgid "Switch monitor"
msgstr "Monitör değiştir"
#: src/backends/meta-input-settings.c:1872
#: src/backends/meta-input-settings.c:2143
msgid "Show on-screen help"
msgstr "Ekranda yardımı göster"
#: src/backends/meta-monitor-manager.c:783
#: src/backends/meta-monitor-manager.c:927
msgid "Built-in display"
msgstr "Yerleşik ekran"
#: src/backends/meta-monitor-manager.c:806
#: src/backends/meta-monitor-manager.c:950
msgid "Unknown"
msgstr "Bilinmiyor"
#: src/backends/meta-monitor-manager.c:808
#: src/backends/meta-monitor-manager.c:952
msgid "Unknown Display"
msgstr "Bilinmeyen Ekran"
#. TRANSLATORS: this is a monitor vendor name, followed by a
#. * size in inches, like 'Dell 15"'
#.
#: src/backends/meta-monitor-manager.c:816
#: src/backends/meta-monitor-manager.c:960
#, c-format
msgid "%s %s"
msgstr "%s %s"
@@ -540,44 +553,16 @@ msgstr "%s %s"
#. * we have no way to get it to exit
#: src/compositor/compositor.c:476
#, 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 ""
"“%2$s” monitöründeki %1$i ekranında zaten başka bir birleştirme yöneticisi çalışıyor."
"“%2$s” monitöründeki %1$i ekranında zaten başka bir birleştirme yöneticisi "
"çalışıyor."
#: src/core/bell.c:194
msgid "Bell event"
msgstr "Etkinlik zili"
#. Translators: %s is a window title
#: src/core/delete.c:127
#, c-format
msgid "“%s” is not responding."
msgstr "“%s” yanıt vermiyor."
#: src/core/delete.c:129
msgid "Application is not responding."
msgstr "Uygulama cevap vermiyor"
#: src/core/delete.c:134
msgid ""
"You may choose to wait a short while for it to continue or force the "
"application to quit entirely."
msgstr ""
"Uygulamanın devam etmesi için bir müddet bekleyi seçebilirsiniz ya da "
"uygulamanın tamamen çıkması için onu zorlayabilirsiniz."
#: src/core/delete.c:141
msgid "_Force Quit"
msgstr "_Sonlandır"
#: src/core/delete.c:141
msgid "_Wait"
msgstr "_Bekle"
#: src/core/display.c:608
#, c-format
msgid "Failed to open X Window System display “%s”\n"
@@ -619,14 +604,34 @@ msgstr "Yuvalanmış dizgici olarak çalıştır"
msgid "Run as a full display server, rather than nested"
msgstr "İç içe değil tam ekran sunucusu olarak çalıştır"
#. Translators: %s is a window title
#: src/core/meta-close-dialog-default.c:147
#, c-format
msgid "“%s” is not responding."
msgstr "“%s” yanıt vermiyor."
#: src/core/meta-close-dialog-default.c:149
msgid "Application is not responding."
msgstr "Uygulama cevap vermiyor"
#: src/core/meta-close-dialog-default.c:154
msgid ""
"You may choose to wait a short while for it to continue or force the "
"application to quit entirely."
msgstr ""
"Uygulamanın devam etmesi için bir müddet bekleyi seçebilirsiniz ya da "
"uygulamanın tamamen çıkması için onu zorlayabilirsiniz."
#: src/core/meta-close-dialog-default.c:161
msgid "_Force Quit"
msgstr "_Sonlandır"
#: src/core/meta-close-dialog-default.c:161
msgid "_Wait"
msgstr "_Bekle"
#: src/core/mutter.c:39
#, 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"
@@ -665,7 +670,6 @@ msgstr ""
#: src/core/screen.c:665
#, c-format
#| msgid "Screen %d on display '%s' is invalid\n"
msgid "Screen %d on display “%s” is invalid\n"
msgstr "“%2$s” monitöründeki %1$d ekranı geçersiz\n"

View File

@@ -38,6 +38,8 @@ mutter_test_unit_tests_SOURCES = \
tests/meta-backend-test.h \
tests/meta-monitor-manager-test.c \
tests/meta-monitor-manager-test.h \
tests/monitor-config-migration-unit-tests.c \
tests/monitor-config-migration-unit-tests.h \
tests/monitor-store-unit-tests.c \
tests/monitor-store-unit-tests.h \
tests/monitor-test-utils.c \

View File

@@ -71,6 +71,10 @@ mutter_built_sources += \
tablet-unstable-v2-server-protocol.h \
xdg-foreign-unstable-v1-protocol.c \
xdg-foreign-unstable-v1-server-protocol.h \
linux-dmabuf-unstable-v1-protocol.c \
linux-dmabuf-unstable-v1-server-protocol.h \
keyboard-shortcuts-inhibit-unstable-v1-protocol.c \
keyboard-shortcuts-inhibit-unstable-v1-server-protocol.h \
$(NULL)
endif
@@ -105,10 +109,10 @@ libmutter_@LIBMUTTER_API_VERSION@_la_SOURCES = \
backends/meta-input-settings-private.h \
backends/meta-logical-monitor.c \
backends/meta-logical-monitor.h \
backends/meta-monitor-config.c \
backends/meta-monitor-config.h \
backends/meta-monitor-config-manager.c \
backends/meta-monitor-config-manager.h \
backends/meta-monitor-config-migration.c \
backends/meta-monitor-config-migration.h \
backends/meta-monitor-config-store.c \
backends/meta-monitor-config-store.h \
backends/meta-monitor.c \
@@ -231,6 +235,10 @@ libmutter_@LIBMUTTER_API_VERSION@_la_SOURCES = \
meta/meta-close-dialog.h \
core/meta-close-dialog-default.c \
core/meta-close-dialog-default-private.h \
core/meta-inhibit-shortcuts-dialog.c \
meta/meta-inhibit-shortcuts-dialog.h \
core/meta-inhibit-shortcuts-dialog-default.c \
core/meta-inhibit-shortcuts-dialog-default-private.h \
core/delete.c \
core/display.c \
core/display-private.h \
@@ -239,12 +247,13 @@ libmutter_@LIBMUTTER_API_VERSION@_la_SOURCES = \
core/edge-resistance.h \
core/events.c \
core/events.h \
core/errors.c \
meta/errors.h \
core/frame.c \
core/frame.h \
core/meta-gesture-tracker.c \
core/meta-gesture-tracker-private.h \
core/meta-workspace-manager.c \
core/meta-workspace-manager-private.h \
meta/meta-workspace-manager.h \
core/keybindings.c \
core/keybindings-private.h \
core/main-private.h \
@@ -253,9 +262,6 @@ libmutter_@LIBMUTTER_API_VERSION@_la_SOURCES = \
core/place.h \
core/prefs.c \
meta/prefs.h \
core/screen.c \
core/screen-private.h \
meta/screen.h \
core/startup-notification.c \
core/startup-notification-private.h \
meta/types.h \
@@ -282,6 +288,11 @@ libmutter_@LIBMUTTER_API_VERSION@_la_SOURCES = \
ui/theme-private.h \
ui/ui.c \
x11/atomnames.h \
x11/meta-x11-display.c \
x11/meta-x11-display-private.h \
meta/meta-x11-display.h \
x11/meta-x11-errors.c \
meta/meta-x11-errors.h \
x11/events.c \
x11/events.h \
x11/group-private.h \
@@ -317,6 +328,8 @@ libmutter_@LIBMUTTER_API_VERSION@_la_SOURCES += \
wayland/meta-xwayland-private.h \
wayland/meta-wayland-buffer.c \
wayland/meta-wayland-buffer.h \
wayland/meta-wayland-dma-buf.c \
wayland/meta-wayland-dma-buf.h \
wayland/meta-wayland-region.c \
wayland/meta-wayland-region.h \
wayland/meta-wayland-data-device.c \
@@ -384,6 +397,10 @@ libmutter_@LIBMUTTER_API_VERSION@_la_SOURCES += \
wayland/meta-wayland-wl-shell.h \
wayland/meta-wayland-gtk-shell.c \
wayland/meta-wayland-gtk-shell.h \
wayland/meta-wayland-inhibit-shortcuts.c \
wayland/meta-wayland-inhibit-shortcuts.h \
wayland/meta-wayland-inhibit-shortcuts-dialog.c \
wayland/meta-wayland-inhibit-shortcuts-dialog.h \
$(NULL)
endif
@@ -435,7 +452,6 @@ libmutterinclude_headers = \
meta/compositor-mutter.h \
meta/compositor.h \
meta/display.h \
meta/errors.h \
meta/group.h \
meta/keybindings.h \
meta/main.h \
@@ -445,6 +461,7 @@ libmutterinclude_headers = \
meta/meta-background-image.h \
meta/meta-background-group.h \
meta/meta-close-dialog.h \
meta/meta-inhibit-shortcuts-dialog.h \
meta/meta-cursor-tracker.h \
meta/meta-dnd.h \
meta/meta-idle-monitor.h \
@@ -455,8 +472,10 @@ libmutterinclude_headers = \
meta/meta-shadow-factory.h \
meta/meta-window-actor.h \
meta/meta-window-shape.h \
meta/meta-workspace-manager.h \
meta/meta-x11-display.h \
meta/meta-x11-errors.h \
meta/prefs.h \
meta/screen.h \
meta/theme.h \
meta/types.h \
meta/util.h \
@@ -646,3 +665,7 @@ endef
$(AM_V_GEN)$(WAYLAND_SCANNER) code $< $@
%-server-protocol.h : $(srcdir)/wayland/protocol/%.xml
$(AM_V_GEN)$(WAYLAND_SCANNER) server-header $< $@
keyboard-shortcuts-inhibit-unstable-v1-protocol.c : $(WAYLAND_PROTOCOLS_DATADIR)/unstable/keyboard-shortcuts-inhibit/keyboard-shortcuts-inhibit-unstable-v1.xml
$(AM_V_GEN)$(WAYLAND_SCANNER) code < $< > $@
keyboard-shortcuts-inhibit-unstable-v1-server-protocol.h : $(WAYLAND_PROTOCOLS_DATADIR)/unstable/keyboard-shortcuts-inhibit/keyboard-shortcuts-inhibit-unstable-v1.xml
$(AM_V_GEN)$(WAYLAND_SCANNER) server-header < $< > $@

View File

@@ -83,6 +83,8 @@ struct _MetaBackendClass
struct xkb_keymap * (* get_keymap) (MetaBackend *backend);
xkb_layout_index_t (* get_keymap_layout_group) (MetaBackend *backend);
void (* lock_layout_group) (MetaBackend *backend,
guint idx);
@@ -102,8 +104,6 @@ struct _MetaBackendClass
void meta_init_backend (GType backend_gtype);
void meta_backend_x11_display_opened (MetaBackend *backend);
ClutterBackend * meta_backend_get_clutter_backend (MetaBackend *backend);
MetaIdleMonitor * meta_backend_get_idle_monitor (MetaBackend *backend,
@@ -135,6 +135,8 @@ MetaLogicalMonitor * meta_backend_get_current_logical_monitor (MetaBackend *back
struct xkb_keymap * meta_backend_get_keymap (MetaBackend *backend);
xkb_layout_index_t meta_backend_get_keymap_layout_group (MetaBackend *backend);
void meta_backend_update_last_device (MetaBackend *backend,
int device_id);

View File

@@ -52,7 +52,6 @@ enum
KEYMAP_CHANGED,
KEYMAP_LAYOUT_GROUP_CHANGED,
LAST_DEVICE_CHANGED,
X11_DISPLAY_OPENED,
N_SIGNALS
};
@@ -499,13 +498,6 @@ meta_backend_class_init (MetaBackendClass *klass)
0,
NULL, NULL, NULL,
G_TYPE_NONE, 1, G_TYPE_INT);
signals[X11_DISPLAY_OPENED] =
g_signal_new ("x11-display-opened",
G_TYPE_FROM_CLASS (object_class),
G_SIGNAL_RUN_LAST,
0,
NULL, NULL, NULL,
G_TYPE_NONE, 0);
mutter_stage_views = g_getenv ("MUTTER_STAGE_VIEWS");
stage_views_disabled = g_strcmp0 (mutter_stage_views, "0") == 0;
@@ -707,6 +699,12 @@ meta_backend_get_keymap (MetaBackend *backend)
return META_BACKEND_GET_CLASS (backend)->get_keymap (backend);
}
xkb_layout_index_t
meta_backend_get_keymap_layout_group (MetaBackend *backend)
{
return META_BACKEND_GET_CLASS (backend)->get_keymap_layout_group (backend);
}
void
meta_backend_lock_layout_group (MetaBackend *backend,
guint idx)
@@ -944,12 +942,6 @@ meta_clutter_init (void)
meta_backend_post_init (_backend);
}
void
meta_backend_x11_display_opened (MetaBackend *backend)
{
g_signal_emit (backend, signals[X11_DISPLAY_OPENED], 0);
}
gboolean
meta_is_stage_views_enabled (void)
{

View File

@@ -31,7 +31,6 @@
#include <wayland-server.h>
#endif
#include <meta/screen.h>
#include "meta-cursor.h"
#define META_TYPE_CURSOR_RENDERER (meta_cursor_renderer_get_type ())

View File

@@ -31,9 +31,10 @@
#include "meta-cursor-tracker-private.h"
#include <string.h>
#include <meta/meta-x11-display.h>
#include <meta/main.h>
#include <meta/util.h>
#include <meta/errors.h>
#include <meta/meta-x11-errors.h>
#include <cogl/cogl.h>
#include <clutter/clutter.h>
@@ -43,6 +44,7 @@
#include <X11/extensions/Xfixes.h>
#include "meta-backend-private.h"
#include "x11/meta-x11-display-private.h"
G_DEFINE_TYPE (MetaCursorTracker, meta_cursor_tracker, G_TYPE_OBJECT);
@@ -131,15 +133,15 @@ meta_cursor_tracker_class_init (MetaCursorTrackerClass *klass)
}
/**
* meta_cursor_tracker_get_for_screen:
* @screen: the #MetaScreen
* meta_cursor_tracker_get_for_display:
* @display: the #MetaDisplay
*
* Retrieves the cursor tracker object for @screen.
* Retrieves the cursor tracker object for @display.
*
* Returns: (transfer none):
*/
MetaCursorTracker *
meta_cursor_tracker_get_for_screen (MetaScreen *screen)
meta_cursor_tracker_get_for_display (MetaDisplay *display)
{
MetaBackend *backend = meta_get_backend ();
MetaCursorTracker *tracker = meta_backend_get_cursor_tracker (backend);
@@ -165,13 +167,13 @@ gboolean
meta_cursor_tracker_handle_xevent (MetaCursorTracker *tracker,
XEvent *xevent)
{
MetaDisplay *display = meta_get_display ();
MetaX11Display *x11_display = meta_get_display ()->x11_display;
XFixesCursorNotifyEvent *notify_event;
if (meta_is_wayland_compositor ())
return FALSE;
if (xevent->xany.type != display->xfixes_event_base + XFixesCursorNotify)
if (xevent->xany.type != x11_display->xfixes_event_base + XFixesCursorNotify)
return FALSE;
notify_event = (XFixesCursorNotifyEvent *)xevent;
@@ -188,6 +190,7 @@ static void
ensure_xfixes_cursor (MetaCursorTracker *tracker)
{
MetaDisplay *display = meta_get_display ();
Display *xdisplay = meta_x11_display_get_xdisplay (display->x11_display);
XFixesCursorImage *cursor_image;
CoglTexture2D *sprite;
guint8 *cursor_data;
@@ -198,7 +201,7 @@ ensure_xfixes_cursor (MetaCursorTracker *tracker)
if (tracker->xfixes_cursor)
return;
cursor_image = XFixesGetCursorImage (display->xdisplay);
cursor_image = XFixesGetCursorImage (xdisplay);
if (!cursor_image)
return;

View File

@@ -23,10 +23,9 @@
#include "meta-cursor.h"
#include <meta/errors.h>
#include <meta/meta-x11-errors.h>
#include "display-private.h"
#include "screen-private.h"
#include "meta-backend-private.h"
#include <string.h>

View File

@@ -24,7 +24,7 @@
gboolean meta_dnd_handle_xdnd_event (MetaBackend *backend,
MetaCompositor *compositor,
MetaDisplay *display,
Display *xdisplay,
XEvent *xev);
#ifdef HAVE_WAYLAND

View File

@@ -66,6 +66,9 @@ struct _MetaEgl
PFNEGLSTREAMCONSUMERACQUIREKHRPROC eglStreamConsumerAcquireKHR;
PFNEGLSTREAMCONSUMERACQUIREATTRIBNVPROC eglStreamConsumerAcquireAttribNV;
PFNEGLQUERYDMABUFFORMATSEXTPROC eglQueryDmaBufFormatsEXT;
PFNEGLQUERYDMABUFMODIFIERSEXTPROC eglQueryDmaBufModifiersEXT;
};
G_DEFINE_TYPE (MetaEgl, meta_egl, G_TYPE_OBJECT)
@@ -711,22 +714,60 @@ meta_egl_stream_consumer_acquire (MetaEgl *egl,
return TRUE;
}
gboolean
meta_egl_query_dma_buf_formats (MetaEgl *egl,
EGLDisplay display,
EGLint max_formats,
EGLint *formats,
EGLint *num_formats,
GError **error)
{
if (!is_egl_proc_valid (egl->eglQueryDmaBufFormatsEXT, error))
return FALSE;
if (!egl->eglQueryDmaBufFormatsEXT (display, max_formats, formats,
num_formats))
{
set_egl_error (error);
return FALSE;
}
return TRUE;
}
gboolean
meta_egl_query_dma_buf_modifiers (MetaEgl *egl,
EGLDisplay display,
EGLint format,
EGLint max_modifiers,
EGLuint64KHR *modifiers,
EGLBoolean *external_only,
EGLint *num_modifiers,
GError **error)
{
if (!is_egl_proc_valid (egl->eglQueryDmaBufModifiersEXT, error))
return FALSE;
if (!egl->eglQueryDmaBufModifiersEXT (display, format, max_modifiers,
modifiers, external_only,
num_modifiers))
{
set_egl_error (error);
return FALSE;
}
return TRUE;
}
#define GET_EGL_PROC_ADDR(proc) \
egl->proc = (void *) eglGetProcAddress (#proc);
#define GET_EGL_PROC_ADDR_REQUIRED(proc) \
GET_EGL_PROC_ADDR(proc) \
if (!egl->proc) \
{ \
meta_fatal ("Failed to get proc address for '%s'\n", #proc); \
}
static void
meta_egl_constructed (GObject *object)
{
MetaEgl *egl = META_EGL (object);
GET_EGL_PROC_ADDR_REQUIRED (eglGetPlatformDisplayEXT);
GET_EGL_PROC_ADDR (eglGetPlatformDisplayEXT);
GET_EGL_PROC_ADDR (eglCreateImageKHR);
GET_EGL_PROC_ADDR (eglDestroyImageKHR);
@@ -753,6 +794,9 @@ meta_egl_constructed (GObject *object)
GET_EGL_PROC_ADDR (eglStreamConsumerAcquireKHR);
GET_EGL_PROC_ADDR (eglStreamConsumerAcquireAttribNV);
GET_EGL_PROC_ADDR (eglQueryDmaBufFormatsEXT);
GET_EGL_PROC_ADDR (eglQueryDmaBufModifiersEXT);
}
#undef GET_EGL_PROC_ADDR

View File

@@ -167,4 +167,20 @@ gboolean meta_egl_stream_consumer_gl_texture_external (MetaEgl *egl,
EGLStreamKHR stream,
GError **error);
gboolean meta_egl_query_dma_buf_formats (MetaEgl *egl,
EGLDisplay display,
EGLint max_formats,
EGLint *formats,
EGLint *num_formats,
GError **error);
gboolean meta_egl_query_dma_buf_modifiers (MetaEgl *egl,
EGLDisplay display,
EGLint format,
EGLint max_modifiers,
EGLuint64KHR *modifiers,
EGLBoolean *external_only,
EGLint *num_formats,
GError **error);
#endif /* META_EGL_H */

View File

@@ -54,6 +54,9 @@ struct _MetaInputSettingsClass
void (* set_tap_enabled) (MetaInputSettings *settings,
ClutterInputDevice *device,
gboolean enabled);
void (* set_tap_and_drag_enabled) (MetaInputSettings *settings,
ClutterInputDevice *device,
gboolean enabled);
void (* set_disable_while_typing) (MetaInputSettings *settings,
ClutterInputDevice *device,
gboolean enabled);

View File

@@ -528,6 +528,36 @@ update_touchpad_tap_enabled (MetaInputSettings *input_settings,
}
}
static void
update_touchpad_tap_and_drag_enabled (MetaInputSettings *input_settings,
ClutterInputDevice *device)
{
MetaInputSettingsClass *input_settings_class;
MetaInputSettingsPrivate *priv;
gboolean enabled;
if (device &&
clutter_input_device_get_device_type (device) != CLUTTER_TOUCHPAD_DEVICE)
return;
priv = meta_input_settings_get_instance_private (input_settings);
input_settings_class = META_INPUT_SETTINGS_GET_CLASS (input_settings);
enabled = g_settings_get_boolean (priv->touchpad_settings, "tap-and-drag");
if (device)
{
settings_device_set_bool_setting (input_settings, device,
input_settings_class->set_tap_and_drag_enabled,
enabled);
}
else
{
settings_set_bool_setting (input_settings, CLUTTER_TOUCHPAD_DEVICE,
input_settings_class->set_tap_and_drag_enabled,
enabled);
}
}
static void
update_touchpad_edge_scroll (MetaInputSettings *input_settings,
ClutterInputDevice *device)
@@ -1039,6 +1069,8 @@ meta_input_settings_changed_cb (GSettings *settings,
update_device_natural_scroll (input_settings, NULL);
else if (strcmp (key, "tap-to-click") == 0)
update_touchpad_tap_enabled (input_settings, NULL);
else if (strcmp (key, "tap-and_drag") == 0)
update_touchpad_tap_and_drag_enabled (input_settings, NULL);
else if (strcmp(key, "disable-while-typing") == 0)
update_touchpad_disable_while_typing (input_settings, NULL);
else if (strcmp (key, "send-events") == 0)
@@ -1338,6 +1370,7 @@ apply_device_settings (MetaInputSettings *input_settings,
update_touchpad_left_handed (input_settings, device);
update_touchpad_tap_enabled (input_settings, device);
update_touchpad_tap_and_drag_enabled (input_settings, device);
update_touchpad_disable_while_typing (input_settings, device);
update_touchpad_send_events (input_settings, device);
update_touchpad_two_finger_scroll (input_settings, device);

View File

@@ -181,6 +181,18 @@ meta_logical_monitor_get_scale (MetaLogicalMonitor *logical_monitor)
return logical_monitor->scale;
}
MetaMonitorTransform
meta_logical_monitor_get_transform (MetaLogicalMonitor *logical_monitor)
{
return logical_monitor->transform;
}
MetaRectangle
meta_logical_monitor_get_layout (MetaLogicalMonitor *logical_monitor)
{
return logical_monitor->rect;
}
GList *
meta_logical_monitor_get_monitors (MetaLogicalMonitor *logical_monitor)
{
@@ -198,34 +210,34 @@ meta_logical_monitor_class_init (MetaLogicalMonitorClass *klass)
}
gboolean
meta_logical_monitor_has_neighbor (MetaLogicalMonitor *logical_monitor,
MetaLogicalMonitor *neighbor,
MetaScreenDirection neighbor_direction)
meta_logical_monitor_has_neighbor (MetaLogicalMonitor *logical_monitor,
MetaLogicalMonitor *neighbor,
MetaDisplayDirection neighbor_direction)
{
switch (neighbor_direction)
{
case META_SCREEN_RIGHT:
case META_DISPLAY_RIGHT:
if (neighbor->rect.x == (logical_monitor->rect.x +
logical_monitor->rect.width) &&
meta_rectangle_vert_overlap (&neighbor->rect,
&logical_monitor->rect))
return TRUE;
break;
case META_SCREEN_LEFT:
case META_DISPLAY_LEFT:
if (logical_monitor->rect.x == (neighbor->rect.x +
neighbor->rect.width) &&
meta_rectangle_vert_overlap (&neighbor->rect,
&logical_monitor->rect))
return TRUE;
break;
case META_SCREEN_UP:
case META_DISPLAY_UP:
if (logical_monitor->rect.y == (neighbor->rect.y +
neighbor->rect.height) &&
meta_rectangle_horiz_overlap (&neighbor->rect,
&logical_monitor->rect))
return TRUE;
break;
case META_SCREEN_DOWN:
case META_DISPLAY_DOWN:
if (neighbor->rect.y == (logical_monitor->rect.y +
logical_monitor->rect.height) &&
meta_rectangle_horiz_overlap (&neighbor->rect,

View File

@@ -80,10 +80,14 @@ void meta_logical_monitor_make_primary (MetaLogicalMonitor *logical_monitor);
float meta_logical_monitor_get_scale (MetaLogicalMonitor *logical_monitor);
MetaMonitorTransform meta_logical_monitor_get_transform (MetaLogicalMonitor *logical_monitor);
MetaRectangle meta_logical_monitor_get_layout (MetaLogicalMonitor *logical_monitor);
GList * meta_logical_monitor_get_monitors (MetaLogicalMonitor *logical_monitor);
gboolean meta_logical_monitor_has_neighbor (MetaLogicalMonitor *logical_monitor,
MetaLogicalMonitor *neighbor,
MetaScreenDirection neighbor_dir);
gboolean meta_logical_monitor_has_neighbor (MetaLogicalMonitor *logical_monitor,
MetaLogicalMonitor *neighbor,
MetaDisplayDirection neighbor_dir);
#endif /* META_LOGICAL_MONITOR_H */

View File

@@ -23,10 +23,13 @@
#include "backends/meta-monitor-config-manager.h"
#include "backends/meta-monitor-config-migration.h"
#include "backends/meta-monitor-config-store.h"
#include "backends/meta-monitor-manager-private.h"
#include "core/boxes-private.h"
#define CONFIG_HISTORY_MAX_SIZE 3
struct _MetaMonitorConfigManager
{
GObject parent;
@@ -36,7 +39,7 @@ struct _MetaMonitorConfigManager
MetaMonitorConfigStore *config_store;
MetaMonitorsConfig *current_config;
MetaMonitorsConfig *previous_config;
GQueue config_history;
};
G_DEFINE_TYPE (MetaMonitorConfigManager, meta_monitor_config_manager,
@@ -45,6 +48,12 @@ G_DEFINE_TYPE (MetaMonitorConfigManager, meta_monitor_config_manager,
G_DEFINE_TYPE (MetaMonitorsConfig, meta_monitors_config,
G_TYPE_OBJECT)
static void
meta_crtc_info_free (MetaCrtcInfo *info);
static void
meta_output_info_free (MetaOutputInfo *info);
MetaMonitorConfigManager *
meta_monitor_config_manager_new (MetaMonitorManager *monitor_manager)
{
@@ -355,10 +364,12 @@ create_key_for_current_state (MetaMonitorManager *monitor_manager)
MetaMonitorsConfig *
meta_monitor_config_manager_get_stored (MetaMonitorConfigManager *config_manager)
{
MetaMonitorManager *monitor_manager = config_manager->monitor_manager;
MetaMonitorsConfigKey *config_key;
MetaMonitorsConfig *config;
GError *error = NULL;
config_key = create_key_for_current_state (config_manager->monitor_manager);
config_key = create_key_for_current_state (monitor_manager);
if (!config_key)
return NULL;
@@ -366,6 +377,22 @@ meta_monitor_config_manager_get_stored (MetaMonitorConfigManager *config_manager
config_key);
meta_monitors_config_key_free (config_key);
if (!config)
return NULL;
if (config->flags & META_MONITORS_CONFIG_FLAG_MIGRATED)
{
if (!meta_finish_monitors_config_migration (monitor_manager, config,
&error))
{
g_warning ("Failed to finish monitors config migration: %s",
error->message);
g_error_free (error);
meta_monitor_config_store_remove (config_manager->config_store, config);
return NULL;
}
}
return config;
}
@@ -585,7 +612,8 @@ meta_monitor_config_manager_create_linear (MetaMonitorConfigManager *config_mana
x += logical_monitor_config->layout.width;
}
return meta_monitors_config_new (logical_monitor_configs, layout_mode);
return meta_monitors_config_new (logical_monitor_configs, layout_mode,
META_MONITORS_CONFIG_FLAG_NONE);
}
MetaMonitorsConfig *
@@ -613,7 +641,8 @@ meta_monitor_config_manager_create_fallback (MetaMonitorConfigManager *config_ma
logical_monitor_configs = g_list_append (NULL,
primary_logical_monitor_config);
return meta_monitors_config_new (logical_monitor_configs, layout_mode);
return meta_monitors_config_new (logical_monitor_configs, layout_mode,
META_MONITORS_CONFIG_FLAG_NONE);
}
MetaMonitorsConfig *
@@ -688,7 +717,8 @@ meta_monitor_config_manager_create_suggested (MetaMonitorConfigManager *config_m
if (!logical_monitor_configs)
return NULL;
return meta_monitors_config_new (logical_monitor_configs, layout_mode);
return meta_monitors_config_new (logical_monitor_configs, layout_mode,
META_MONITORS_CONFIG_FLAG_NONE);
}
static MetaMonitorsConfig *
@@ -735,7 +765,8 @@ create_for_builtin_display_rotation (MetaMonitorConfigManager *config_manager,
logical_monitor_config->transform = transform;
return meta_monitors_config_new (g_list_append (NULL, logical_monitor_config),
config_manager->current_config->layout_mode);
config_manager->current_config->layout_mode,
META_MONITORS_CONFIG_FLAG_NONE);
}
MetaMonitorsConfig *
@@ -755,6 +786,7 @@ static MetaMonitorsConfig *
create_for_switch_config_all_mirror (MetaMonitorConfigManager *config_manager)
{
MetaMonitorManager *monitor_manager = config_manager->monitor_manager;
MetaLogicalMonitorLayoutMode layout_mode;
MetaLogicalMonitorConfig *logical_monitor_config = NULL;
GList *monitor_configs = NULL;
gint common_mode_w = 0, common_mode_h = 0;
@@ -853,8 +885,10 @@ create_for_switch_config_all_mirror (MetaMonitorConfigManager *config_manager)
.monitor_configs = monitor_configs
};
layout_mode = meta_monitor_manager_get_default_layout_mode (monitor_manager);
return meta_monitors_config_new (g_list_append (NULL, logical_monitor_config),
meta_monitor_manager_get_default_layout_mode (monitor_manager));
layout_mode,
META_MONITORS_CONFIG_FLAG_NONE);
}
static MetaMonitorsConfig *
@@ -893,7 +927,8 @@ create_for_switch_config_external (MetaMonitorConfigManager *config_manager)
x += logical_monitor_config->layout.width;
}
return meta_monitors_config_new (logical_monitor_configs, layout_mode);
return meta_monitors_config_new (logical_monitor_configs, layout_mode,
META_MONITORS_CONFIG_FLAG_NONE);
}
static MetaMonitorsConfig *
@@ -921,7 +956,8 @@ create_for_switch_config_builtin (MetaMonitorConfigManager *config_manager)
logical_monitor_configs = g_list_append (NULL,
primary_logical_monitor_config);
return meta_monitors_config_new (logical_monitor_configs, layout_mode);
return meta_monitors_config_new (logical_monitor_configs, layout_mode,
META_MONITORS_CONFIG_FLAG_NONE);
}
MetaMonitorsConfig *
@@ -954,8 +990,15 @@ void
meta_monitor_config_manager_set_current (MetaMonitorConfigManager *config_manager,
MetaMonitorsConfig *config)
{
g_set_object (&config_manager->previous_config,
config_manager->current_config);
if (config_manager->current_config)
{
g_queue_push_head (&config_manager->config_history,
g_object_ref (config_manager->current_config));
if (g_queue_get_length (&config_manager->config_history) >
CONFIG_HISTORY_MAX_SIZE)
g_object_unref (g_queue_pop_tail (&config_manager->config_history));
}
g_set_object (&config_manager->current_config, config);
}
@@ -974,10 +1017,23 @@ meta_monitor_config_manager_get_current (MetaMonitorConfigManager *config_manage
return config_manager->current_config;
}
MetaMonitorsConfig *
meta_monitor_config_manager_pop_previous (MetaMonitorConfigManager *config_manager)
{
return g_queue_pop_head (&config_manager->config_history);
}
MetaMonitorsConfig *
meta_monitor_config_manager_get_previous (MetaMonitorConfigManager *config_manager)
{
return config_manager->previous_config;
return g_queue_peek_head (&config_manager->config_history);
}
void
meta_monitor_config_manager_clear_history (MetaMonitorConfigManager *config_manager)
{
g_queue_foreach (&config_manager->config_history, (GFunc) g_object_unref, NULL);
g_queue_clear (&config_manager->config_history);
}
static void
@@ -987,7 +1043,7 @@ meta_monitor_config_manager_dispose (GObject *object)
META_MONITOR_CONFIG_MANAGER (object);
g_clear_object (&config_manager->current_config);
g_clear_object (&config_manager->previous_config);
meta_monitor_config_manager_clear_history (config_manager);
G_OBJECT_CLASS (meta_monitor_config_manager_parent_class)->dispose (object);
}
@@ -995,6 +1051,7 @@ meta_monitor_config_manager_dispose (GObject *object)
static void
meta_monitor_config_manager_init (MetaMonitorConfigManager *config_manager)
{
g_queue_init (&config_manager->config_history);
}
static void
@@ -1111,7 +1168,8 @@ meta_monitors_config_key_equal (gconstpointer data_a,
MetaMonitorsConfig *
meta_monitors_config_new (GList *logical_monitor_configs,
MetaLogicalMonitorLayoutMode layout_mode)
MetaLogicalMonitorLayoutMode layout_mode,
MetaMonitorsConfigFlag flags)
{
MetaMonitorsConfig *config;
@@ -1119,6 +1177,7 @@ meta_monitors_config_new (GList *logical_monitor_configs,
config->logical_monitor_configs = logical_monitor_configs;
config->key = meta_monitors_config_key_new (logical_monitor_configs);
config->layout_mode = layout_mode;
config->flags = flags;
return config;
}
@@ -1146,6 +1205,19 @@ meta_monitors_config_class_init (MetaMonitorsConfigClass *klass)
object_class->finalize = meta_monitors_config_finalize;
}
static void
meta_crtc_info_free (MetaCrtcInfo *info)
{
g_ptr_array_free (info->outputs, TRUE);
g_slice_free (MetaCrtcInfo, info);
}
static void
meta_output_info_free (MetaOutputInfo *info)
{
g_slice_free (MetaOutputInfo, info);
}
gboolean
meta_verify_monitor_mode_spec (MetaMonitorModeSpec *monitor_mode_spec,
GError **error)

View File

@@ -51,6 +51,12 @@ typedef struct _MetaMonitorsConfigKey
GList *monitor_specs;
} MetaMonitorsConfigKey;
typedef enum _MetaMonitorsConfigFlag
{
META_MONITORS_CONFIG_FLAG_NONE = 0,
META_MONITORS_CONFIG_FLAG_MIGRATED = (1 << 0),
} MetaMonitorsConfigFlag;
struct _MetaMonitorsConfig
{
GObject parent;
@@ -58,6 +64,8 @@ struct _MetaMonitorsConfig
MetaMonitorsConfigKey *key;
GList *logical_monitor_configs;
MetaMonitorsConfigFlag flags;
MetaLogicalMonitorLayoutMode layout_mode;
};
@@ -96,12 +104,17 @@ void meta_monitor_config_manager_set_current (MetaMonitorConfigManager *config_m
MetaMonitorsConfig * meta_monitor_config_manager_get_current (MetaMonitorConfigManager *config_manager);
MetaMonitorsConfig * meta_monitor_config_manager_pop_previous (MetaMonitorConfigManager *config_manager);
MetaMonitorsConfig * meta_monitor_config_manager_get_previous (MetaMonitorConfigManager *config_manager);
void meta_monitor_config_manager_clear_history (MetaMonitorConfigManager *config_manager);
void meta_monitor_config_manager_save_current (MetaMonitorConfigManager *config_manager);
MetaMonitorsConfig * meta_monitors_config_new (GList *logical_monitor_configs,
MetaLogicalMonitorLayoutMode layout_mode);
MetaLogicalMonitorLayoutMode layout_mode,
MetaMonitorsConfigFlag flags);
unsigned int meta_monitors_config_key_hash (gconstpointer config_key);

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,38 @@
/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */
/*
* Copyright (C) 2017 Red Hat
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
* published by the Free Software Foundation; either version 2 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
* 02111-1307, USA.
*/
#ifndef META_MONITOR_CONFIG_MIGRATION_H
#define META_MONITOR_CONFIG_MIGRATION_H
#include "backends/meta-monitor-manager-private.h"
gboolean meta_migrate_old_monitors_config (MetaMonitorConfigStore *config_store,
GFile *in_file,
GError **error);
gboolean meta_migrate_old_user_monitors_config (MetaMonitorConfigStore *config_store,
GError **error);
gboolean meta_finish_monitors_config_migration (MetaMonitorManager *monitor_manager,
MetaMonitorsConfig *config,
GError **error);
#endif /* META_MONITOR_CONFIG_MIGRATION_H */

View File

@@ -27,6 +27,7 @@
#include <string.h>
#include "backends/meta-monitor-config-manager.h"
#include "backends/meta-monitor-config-migration.h"
#define MONITORS_CONFIG_XML_FORMAT_VERSION 2
@@ -109,14 +110,27 @@ struct _MetaMonitorConfigStore
GCancellable *save_cancellable;
GFile *user_file;
GFile *custom_file;
GFile *custom_read_file;
GFile *custom_write_file;
};
#define META_MONITOR_CONFIG_STORE_ERROR (meta_monitor_config_store_error_quark ())
static GQuark meta_monitor_config_store_error_quark (void);
enum
{
META_MONITOR_CONFIG_STORE_ERROR_NEEDS_MIGRATION
};
G_DEFINE_QUARK (meta-monitor-config-store-error-quark,
meta_monitor_config_store_error)
typedef enum
{
STATE_INITIAL,
STATE_MONITORS,
STATE_CONFIGURATION,
STATE_MIGRATED,
STATE_LOGICAL_MONITOR,
STATE_LOGICAL_MONITOR_X,
STATE_LOGICAL_MONITOR_Y,
@@ -145,6 +159,7 @@ typedef struct
ParserState state;
MetaMonitorConfigStore *config_store;
gboolean current_was_migrated;
GList *current_logical_monitor_configs;
MetaMonitorSpec *current_monitor_spec;
gboolean current_transform_flipped;
@@ -189,7 +204,14 @@ handle_start_element (GMarkupParseContext *context,
"Missing config file format version");
}
/* TODO: Handle converting version 1 configuration files. */
if (g_str_equal (version, "1"))
{
g_set_error_literal (error,
META_MONITOR_CONFIG_STORE_ERROR,
META_MONITOR_CONFIG_STORE_ERROR_NEEDS_MIGRATION,
"monitors.xml has the old format");
return;
}
if (!g_str_equal (version, QUOTE (MONITORS_CONFIG_XML_FORMAT_VERSION)))
{
@@ -212,22 +234,40 @@ handle_start_element (GMarkupParseContext *context,
}
parser->state = STATE_CONFIGURATION;
parser->current_was_migrated = FALSE;
return;
}
case STATE_CONFIGURATION:
{
if (!g_str_equal (element_name, "logicalmonitor"))
if (g_str_equal (element_name, "logicalmonitor"))
{
parser->current_logical_monitor_config =
g_new0 (MetaLogicalMonitorConfig, 1);
parser->state = STATE_LOGICAL_MONITOR;
}
else if (g_str_equal (element_name, "migrated"))
{
parser->current_was_migrated = TRUE;
parser->state = STATE_MIGRATED;
}
else
{
g_set_error (error, G_MARKUP_ERROR, G_MARKUP_ERROR_UNKNOWN_ELEMENT,
"Invalid configuration element '%s'", element_name);
return;
}
parser->current_logical_monitor_config =
g_new0 (MetaLogicalMonitorConfig, 1);
return;
}
parser->state = STATE_LOGICAL_MONITOR;
case STATE_MIGRATED:
{
g_set_error (error, G_MARKUP_ERROR, G_MARKUP_ERROR_UNKNOWN_ELEMENT,
"Unexpected element '%s'", element_name);
return;
}
@@ -603,7 +643,9 @@ handle_end_element (GMarkupParseContext *context,
g_assert (g_str_equal (element_name, "logicalmonitor"));
if (logical_monitor_config->scale == 0)
if (parser->current_was_migrated)
logical_monitor_config->scale = -1;
else if (logical_monitor_config->scale == 0)
logical_monitor_config->scale = 1;
parser->current_logical_monitor_configs =
@@ -615,17 +657,29 @@ handle_end_element (GMarkupParseContext *context,
return;
}
case STATE_MIGRATED:
{
g_assert (g_str_equal (element_name, "migrated"));
parser->state = STATE_CONFIGURATION;
return;
}
case STATE_CONFIGURATION:
{
MetaMonitorConfigStore *store = parser->config_store;
MetaMonitorsConfig *config;
GList *l;
MetaLogicalMonitorLayoutMode layout_mode;
MetaMonitorsConfigFlag config_flags = META_MONITORS_CONFIG_FLAG_NONE;
g_assert (g_str_equal (element_name, "configuration"));
layout_mode =
meta_monitor_manager_get_default_layout_mode (store->monitor_manager);
if (parser->current_was_migrated)
layout_mode = META_LOGICAL_MONITOR_LAYOUT_MODE_PHYSICAL;
else
layout_mode =
meta_monitor_manager_get_default_layout_mode (store->monitor_manager);
for (l = parser->current_logical_monitor_configs; l; l = l->next)
{
@@ -643,9 +697,13 @@ handle_end_element (GMarkupParseContext *context,
return;
}
if (parser->current_was_migrated)
config_flags |= META_MONITORS_CONFIG_FLAG_MIGRATED;
config =
meta_monitors_config_new (parser->current_logical_monitor_configs,
layout_mode);
layout_mode,
config_flags);
parser->current_logical_monitor_configs = NULL;
@@ -785,6 +843,7 @@ handle_text (GMarkupParseContext *context,
case STATE_INITIAL:
case STATE_MONITORS:
case STATE_CONFIGURATION:
case STATE_MIGRATED:
case STATE_LOGICAL_MONITOR:
case STATE_MONITOR:
case STATE_MONITOR_SPEC:
@@ -1094,6 +1153,7 @@ append_transform (GString *buffer,
static void
append_logical_monitor_xml (GString *buffer,
MetaMonitorsConfig *config,
MetaLogicalMonitorConfig *logical_monitor_config)
{
char scale_str[G_ASCII_DTOSTR_BUF_SIZE];
@@ -1105,8 +1165,9 @@ append_logical_monitor_xml (GString *buffer,
logical_monitor_config->layout.y);
g_ascii_dtostr (scale_str, G_ASCII_DTOSTR_BUF_SIZE,
logical_monitor_config->scale);
g_string_append_printf (buffer, " <scale>%s</scale>\n",
scale_str);
if ((config->flags & META_MONITORS_CONFIG_FLAG_MIGRATED) == 0)
g_string_append_printf (buffer, " <scale>%s</scale>\n",
scale_str);
if (logical_monitor_config->is_primary)
g_string_append (buffer, " <primary>yes</primary>\n");
if (logical_monitor_config->is_presentation)
@@ -1134,11 +1195,14 @@ generate_config_xml (MetaMonitorConfigStore *config_store)
g_string_append (buffer, " <configuration>\n");
if (config->flags & META_MONITORS_CONFIG_FLAG_MIGRATED)
g_string_append (buffer, " <migrated/>\n");
for (l = config->logical_monitor_configs; l; l = l->next)
{
MetaLogicalMonitorConfig *logical_monitor_config = l->data;
append_logical_monitor_xml (buffer, logical_monitor_config);
append_logical_monitor_xml (buffer, config, logical_monitor_config);
}
g_string_append (buffer, " </configuration>\n");
@@ -1204,6 +1268,31 @@ meta_monitor_config_store_save (MetaMonitorConfigStore *config_store)
.buffer = buffer
};
/*
* Custom write file is only ever used by the test suite, and the test suite
* will want to have be able to read back the content immediately, so for
* custom write files, do the content replacement synchronously.
*/
if (config_store->custom_write_file)
{
GError *error = NULL;
if (!g_file_replace_contents (config_store->custom_write_file,
buffer->str, buffer->len,
NULL,
FALSE,
G_FILE_CREATE_REPLACE_DESTINATION,
NULL,
NULL,
&error))
{
g_warning ("Saving monitor configuration failed: %s\n",
error->message);
g_error_free (error);
}
return;
}
g_file_replace_contents_async (config_store->user_file,
buffer->str, buffer->len,
NULL,
@@ -1213,6 +1302,18 @@ meta_monitor_config_store_save (MetaMonitorConfigStore *config_store)
saved_cb, data);
}
static void
maybe_save_configs (MetaMonitorConfigStore *config_store)
{
/*
* If a custom file is used, it means we are run by the test suite. When this
* is done, avoid replacing the user configuration file with test data,
* except if a custom write file is set as well.
*/
if (!config_store->custom_read_file || config_store->custom_write_file)
meta_monitor_config_store_save (config_store);
}
void
meta_monitor_config_store_add (MetaMonitorConfigStore *config_store,
MetaMonitorsConfig *config)
@@ -1220,21 +1321,33 @@ meta_monitor_config_store_add (MetaMonitorConfigStore *config_store,
g_hash_table_replace (config_store->configs,
config->key, g_object_ref (config));
if (!config_store->custom_file)
meta_monitor_config_store_save (config_store);
maybe_save_configs (config_store);
}
void
meta_monitor_config_store_remove (MetaMonitorConfigStore *config_store,
MetaMonitorsConfig *config)
{
g_hash_table_remove (config_store->configs, config->key);
maybe_save_configs (config_store);
}
gboolean
meta_monitor_config_store_set_custom (MetaMonitorConfigStore *config_store,
const char *path,
const char *read_path,
const char *write_path,
GError **error)
{
g_clear_object (&config_store->custom_file);
g_clear_object (&config_store->custom_read_file);
g_clear_object (&config_store->custom_write_file);
g_hash_table_remove_all (config_store->configs);
config_store->custom_file = g_file_new_for_path (path);
config_store->custom_read_file = g_file_new_for_path (read_path);
if (write_path)
config_store->custom_write_file = g_file_new_for_path (write_path);
return read_config_file (config_store, config_store->custom_file, error);
return read_config_file (config_store, config_store->custom_read_file, error);
}
int
@@ -1243,6 +1356,12 @@ meta_monitor_config_store_get_config_count (MetaMonitorConfigStore *config_store
return (int) g_hash_table_size (config_store->configs);
}
MetaMonitorManager *
meta_monitor_config_store_get_monitor_manager (MetaMonitorConfigStore *config_store)
{
return config_store->monitor_manager;
}
MetaMonitorConfigStore *
meta_monitor_config_store_new (MetaMonitorManager *monitor_manager)
{
@@ -1259,7 +1378,7 @@ meta_monitor_config_store_constructed (GObject *object)
GError *error = NULL;
user_file_path = g_build_filename (g_get_user_config_dir (),
"monitors-experimental.xml",
"monitors.xml",
NULL);
config_store->user_file = g_file_new_for_path (user_file_path);
@@ -1267,9 +1386,23 @@ meta_monitor_config_store_constructed (GObject *object)
{
if (!read_config_file (config_store, config_store->user_file, &error))
{
g_warning ("Failed to read monitors config file '%s': %s",
user_file_path, error->message);
g_error_free (error);
if (error->domain == META_MONITOR_CONFIG_STORE_ERROR &&
error->code == META_MONITOR_CONFIG_STORE_ERROR_NEEDS_MIGRATION)
{
g_clear_error (&error);
if (!meta_migrate_old_user_monitors_config (config_store, &error))
{
g_warning ("Failed to migrate old monitors config file: %s",
error->message);
g_error_free (error);
}
}
else
{
g_warning ("Failed to read monitors config file '%s': %s",
user_file_path, error->message);
g_error_free (error);
}
}
}
@@ -1284,7 +1417,8 @@ meta_monitor_config_store_dispose (GObject *object)
g_clear_pointer (&config_store->configs, g_hash_table_destroy);
g_clear_object (&config_store->user_file);
g_clear_object (&config_store->custom_file);
g_clear_object (&config_store->custom_read_file);
g_clear_object (&config_store->custom_write_file);
G_OBJECT_CLASS (meta_monitor_config_store_parent_class)->dispose (object);
}

View File

@@ -38,10 +38,16 @@ MetaMonitorsConfig * meta_monitor_config_store_lookup (MetaMonitorConfigStore *c
void meta_monitor_config_store_add (MetaMonitorConfigStore *config_store,
MetaMonitorsConfig *config);
void meta_monitor_config_store_remove (MetaMonitorConfigStore *config_store,
MetaMonitorsConfig *config);
gboolean meta_monitor_config_store_set_custom (MetaMonitorConfigStore *config_store,
const char *path,
const char *read_path,
const char *write_path,
GError **error);
int meta_monitor_config_store_get_config_count (MetaMonitorConfigStore *config_store);
MetaMonitorManager * meta_monitor_config_store_get_monitor_manager (MetaMonitorConfigStore *config_store);
#endif /* META_MONITOR_CONFIG_STORE_H */

File diff suppressed because it is too large Load Diff

View File

@@ -1,60 +0,0 @@
/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */
/*
* Copyright (C) 2001 Havoc Pennington
* Copyright (C) 2003 Rob Adams
* Copyright (C) 2004-2006 Elijah Newren
* Copyright (C) 2013 Red Hat Inc.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
* published by the Free Software Foundation; either version 2 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, see <http://www.gnu.org/licenses/>.
*/
#ifndef META_MONITOR_CONFIG_H
#define META_MONITOR_CONFIG_H
#include "meta-monitor-manager-private.h"
#define META_TYPE_MONITOR_CONFIG (meta_monitor_config_get_type ())
G_DECLARE_FINAL_TYPE (MetaMonitorConfig, meta_monitor_config,
META, MONITOR_CONFIG, GObject)
MetaMonitorConfig *meta_monitor_config_new (MetaMonitorManager *manager);
gboolean meta_monitor_config_apply_stored (MetaMonitorConfig *config,
MetaMonitorManager *manager);
void meta_monitor_config_make_default (MetaMonitorConfig *config,
MetaMonitorManager *manager);
void meta_monitor_config_update_current (MetaMonitorConfig *config,
MetaMonitorManager *manager);
void meta_monitor_config_make_persistent (MetaMonitorConfig *config);
void meta_monitor_config_restore_previous (MetaMonitorConfig *config,
MetaMonitorManager *manager);
gboolean meta_monitor_config_get_is_builtin_display_on (MetaMonitorConfig *config);
void meta_monitor_config_lid_is_closed_changed (MetaMonitorConfig *self,
MetaMonitorManager *manager);
void meta_monitor_config_orientation_changed (MetaMonitorConfig *self,
MetaMonitorTransform transform);
void meta_monitor_config_rotate_monitor (MetaMonitorConfig *self);
gboolean meta_monitor_config_switch_config (MetaMonitorConfig *self,
MetaMonitorSwitchConfigType config_type);
#endif /* META_MONITOR_CONFIG_H */

View File

@@ -350,10 +350,8 @@ meta_monitor_manager_dummy_ensure_initial_config (MetaMonitorManager *manager)
config = meta_monitor_manager_ensure_configured (manager);
if (meta_is_monitor_config_manager_enabled ())
{
meta_monitor_manager_update_logical_state (manager, config);
}
if (meta_is_stage_views_enabled ())
meta_monitor_manager_update_logical_state (manager, config);
else
{
MetaMonitorManagerDeriveFlag flags =
@@ -541,41 +539,6 @@ meta_monitor_manager_dummy_apply_monitors_config (MetaMonitorManager *manag
return TRUE;
}
static void
legacy_calculate_screen_size (MetaMonitorManager *manager)
{
unsigned int i;
int width = 0, height = 0;
for (i = 0; i < manager->n_crtcs; i++)
{
MetaCrtc *crtc = &manager->crtcs[i];
width = MAX (width, crtc->rect.x + crtc->rect.width);
height = MAX (height, crtc->rect.y + crtc->rect.height);
}
manager->screen_width = width;
manager->screen_height = height;
}
static void
meta_monitor_manager_dummy_apply_config (MetaMonitorManager *manager,
MetaCrtcInfo **crtcs,
unsigned int n_crtcs,
MetaOutputInfo **outputs,
unsigned int n_outputs)
{
MetaMonitorManagerDeriveFlag flags =
META_MONITOR_MANAGER_DERIVE_FLAG_NONE;
apply_crtc_assignments (manager, crtcs, n_crtcs, outputs, n_outputs);
legacy_calculate_screen_size (manager);
meta_monitor_manager_rebuild_derived (manager, flags);
}
static gboolean
meta_monitor_manager_dummy_is_transform_handled (MetaMonitorManager *manager,
MetaCrtc *crtc,
@@ -687,7 +650,6 @@ meta_monitor_manager_dummy_class_init (MetaMonitorManagerDummyClass *klass)
manager_class->read_current = meta_monitor_manager_dummy_read_current;
manager_class->ensure_initial_config = meta_monitor_manager_dummy_ensure_initial_config;
manager_class->apply_monitors_config = meta_monitor_manager_dummy_apply_monitors_config;
manager_class->apply_configuration = meta_monitor_manager_dummy_apply_config;
manager_class->is_transform_handled = meta_monitor_manager_dummy_is_transform_handled;
manager_class->calculate_monitor_mode_scale = meta_monitor_manager_dummy_calculate_monitor_mode_scale;
manager_class->calculate_supported_scales = meta_monitor_manager_dummy_calculate_supported_scales;

View File

@@ -40,7 +40,6 @@
#include <libupower-glib/upower.h>
#include "display-private.h"
#include <meta/screen.h>
#include "stack-tracker.h"
#include <meta/meta-monitor-manager.h>
@@ -48,7 +47,6 @@
#include "meta-dbus-display-config.h"
#include "meta-cursor.h"
typedef struct _MetaMonitorConfig MetaMonitorConfig;
typedef struct _MetaMonitorConfigManager MetaMonitorConfigManager;
typedef struct _MetaMonitorConfigStore MetaMonitorConfigStore;
typedef struct _MetaMonitorsConfig MetaMonitorsConfig;
@@ -261,11 +259,9 @@ struct _MetaCrtcMode
/*
* MetaCrtcInfo:
* This represents the writable part of a CRTC, as deserialized from DBus
* or built by MetaMonitorConfig
*
* Note: differently from the other structures in this file, MetaCrtcInfo
* is handled by pointer. This is to accomodate the usage in MetaMonitorConfig
* A representation of a CRTC configuration, generated by
* MetaMonitorConfigManager.
*/
struct _MetaCrtcInfo
{
@@ -279,7 +275,9 @@ struct _MetaCrtcInfo
/*
* MetaOutputInfo:
* this is the same as MetaCrtcInfo, but for outputs
*
* A representation of a connector configuration, generated by
* MetaMonitorConfigManager.
*/
struct _MetaOutputInfo
{
@@ -289,12 +287,6 @@ struct _MetaOutputInfo
gboolean is_underscanning;
};
typedef enum _MetaMonitorConfigSystem
{
META_MONITOR_CONFIG_SYSTEM_LEGACY,
META_MONITOR_CONFIG_SYSTEM_MANAGER
} MetaMonitorConfigSystem;
#define META_TYPE_MONITOR_MANAGER (meta_monitor_manager_get_type ())
#define META_MONITOR_MANAGER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), META_TYPE_MONITOR_MANAGER, MetaMonitorManager))
#define META_MONITOR_MANAGER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), META_TYPE_MONITOR_MANAGER, MetaMonitorManagerClass))
@@ -343,11 +335,8 @@ struct _MetaMonitorManager
int dbus_name_id;
MetaMonitorConfigSystem pending_persistent_system;
int persistent_timeout_id;
MetaMonitorConfig *legacy_config;
MetaMonitorConfigManager *config_manager;
GnomePnpIds *pnp_ids;
@@ -378,12 +367,6 @@ struct _MetaMonitorManagerClass
MetaMonitorsConfigMethod ,
GError **);
void (*apply_configuration) (MetaMonitorManager *,
MetaCrtcInfo **,
unsigned int ,
MetaOutputInfo **,
unsigned int);
void (*set_power_save_mode) (MetaMonitorManager *,
MetaPowerSave);
@@ -433,8 +416,6 @@ struct _MetaMonitorManagerClass
MetaLogicalMonitorLayoutMode (*get_default_layout_mode) (MetaMonitorManager *);
};
gboolean meta_is_monitor_config_manager_enabled (void);
void meta_monitor_manager_rebuild (MetaMonitorManager *manager,
MetaMonitorsConfig *config);
void meta_monitor_manager_rebuild_derived (MetaMonitorManager *manager,
@@ -456,9 +437,9 @@ MetaLogicalMonitor *meta_monitor_manager_get_logical_monitor_at (MetaMonitorMana
MetaLogicalMonitor *meta_monitor_manager_get_logical_monitor_from_rect (MetaMonitorManager *manager,
MetaRectangle *rect);
MetaLogicalMonitor *meta_monitor_manager_get_logical_monitor_neighbor (MetaMonitorManager *manager,
MetaLogicalMonitor *logical_monitor,
MetaScreenDirection direction);
MetaLogicalMonitor *meta_monitor_manager_get_logical_monitor_neighbor (MetaMonitorManager *manager,
MetaLogicalMonitor *logical_monitor,
MetaDisplayDirection direction);
MetaMonitor * meta_monitor_manager_get_primary_monitor (MetaMonitorManager *manager);
@@ -484,12 +465,6 @@ void meta_monitor_manager_get_screen_size (MetaMonitorManager *
int *width,
int *height);
void meta_monitor_manager_apply_configuration (MetaMonitorManager *manager,
MetaCrtcInfo **crtcs,
unsigned int n_crtcs,
MetaOutputInfo **outputs,
unsigned int n_outputs);
void meta_monitor_manager_confirm_configuration (MetaMonitorManager *manager,
gboolean ok);
@@ -497,9 +472,6 @@ void meta_output_parse_edid (MetaOutput *output,
GBytes *edid);
gboolean meta_output_is_laptop (MetaOutput *output);
void meta_crtc_info_free (MetaCrtcInfo *info);
void meta_output_info_free (MetaOutputInfo *info);
gboolean meta_monitor_manager_has_hotplug_mode_update (MetaMonitorManager *manager);
void meta_monitor_manager_read_current_state (MetaMonitorManager *manager);
void meta_monitor_manager_on_hotplug (MetaMonitorManager *manager);

View File

@@ -34,9 +34,8 @@
#include <meta/main.h>
#include "util-private.h"
#include <meta/errors.h>
#include <meta/meta-x11-errors.h>
#include "edid.h"
#include "meta-monitor-config.h"
#include "backends/meta-logical-monitor.h"
#include "backends/meta-monitor.h"
#include "backends/meta-monitor-config-manager.h"
@@ -44,6 +43,8 @@
#include "backends/x11/meta-monitor-manager-xrandr.h"
#include "meta-backend-private.h"
#define DEFAULT_DISPLAY_CONFIGURATION_TIMEOUT 20
enum {
CONFIRM_DISPLAY_CHANGE,
SIGNALS_LAST
@@ -70,22 +71,15 @@ G_DEFINE_ABSTRACT_TYPE_WITH_CODE (MetaMonitorManager, meta_monitor_manager, META
static void initialize_dbus_interface (MetaMonitorManager *manager);
static gboolean
meta_monitor_manager_is_config_complete (MetaMonitorManager *manager,
MetaMonitorsConfig *config);
static void
meta_monitor_manager_init (MetaMonitorManager *manager)
{
}
gboolean
meta_is_monitor_config_manager_enabled (void)
{
MetaBackend *backend = meta_get_backend ();
MetaSettings *settings = meta_backend_get_settings (backend);
return meta_settings_is_experimental_feature_enabled (
settings,
META_EXPERIMENTAL_FEATURE_MONITOR_CONFIG_MANAGER);
}
static void
meta_monitor_manager_set_primary_logical_monitor (MetaMonitorManager *manager,
MetaLogicalMonitor *logical_monitor)
@@ -330,10 +324,7 @@ power_save_mode_changed (MetaMonitorManager *manager,
void
meta_monitor_manager_lid_is_closed_changed (MetaMonitorManager *manager)
{
if (meta_is_monitor_config_manager_enabled ())
meta_monitor_manager_ensure_configured (manager);
else
meta_monitor_config_lid_is_closed_changed (manager->legacy_config, manager);
meta_monitor_manager_ensure_configured (manager);
}
static void
@@ -442,6 +433,9 @@ meta_monitor_manager_apply_monitors_config (MetaMonitorManager *manager,
MetaMonitorManagerClass *manager_class =
META_MONITOR_MANAGER_GET_CLASS (manager);
g_assert (!config ||
!(config->flags & META_MONITORS_CONFIG_FLAG_MIGRATED));
if (!manager_class->apply_monitors_config (manager, config, method, error))
return FALSE;
@@ -481,13 +475,6 @@ should_use_stored_config (MetaMonitorManager *manager)
!meta_monitor_manager_has_hotplug_mode_update (manager));
}
static void
legacy_ensure_configured (MetaMonitorManager *manager)
{
if (!meta_monitor_config_apply_stored (manager->legacy_config, manager))
meta_monitor_config_make_default (manager->legacy_config, manager);
}
MetaMonitorsConfig *
meta_monitor_manager_ensure_configured (MetaMonitorManager *manager)
{
@@ -498,12 +485,6 @@ meta_monitor_manager_ensure_configured (MetaMonitorManager *manager)
MetaMonitorsConfigMethod fallback_method =
META_MONITORS_CONFIG_METHOD_TEMPORARY;
if (!meta_is_monitor_config_manager_enabled ())
{
legacy_ensure_configured (manager);
return NULL;
}
use_stored_config = should_use_stored_config (manager);
if (use_stored_config)
method = META_MONITORS_CONFIG_METHOD_PERSISTENT;
@@ -552,6 +533,31 @@ meta_monitor_manager_ensure_configured (MetaMonitorManager *manager)
}
}
config = meta_monitor_config_manager_get_previous (manager->config_manager);
if (config)
{
config = g_object_ref (config);
if (meta_monitor_manager_is_config_complete (manager, config))
{
if (!meta_monitor_manager_apply_monitors_config (manager,
config,
method,
&error))
{
g_warning ("Failed to use suggested monitor configuration: %s",
error->message);
g_clear_error (&error);
}
else
{
goto done;
}
}
g_clear_object (&config);
}
config = meta_monitor_config_manager_create_linear (manager->config_manager);
if (config)
{
@@ -610,6 +616,8 @@ orientation_changed (MetaOrientationManager *orientation_manager,
MetaMonitorManager *manager)
{
MetaMonitorTransform transform;
GError *error = NULL;
MetaMonitorsConfig *config;
switch (meta_orientation_manager_get_orientation (orientation_manager))
{
@@ -631,30 +639,22 @@ orientation_changed (MetaOrientationManager *orientation_manager,
return;
}
if (!meta_is_monitor_config_manager_enabled ())
{
meta_monitor_config_orientation_changed (manager->legacy_config, transform);
}
else
{
GError *error = NULL;
MetaMonitorsConfig *config =
meta_monitor_config_manager_create_for_orientation (manager->config_manager,
transform);
if (!config)
return;
config =
meta_monitor_config_manager_create_for_orientation (manager->config_manager,
transform);
if (!config)
return;
if (!meta_monitor_manager_apply_monitors_config (manager,
config,
META_MONITORS_CONFIG_METHOD_TEMPORARY,
&error))
{
g_warning ("Failed to use orientation monitor configuration: %s",
error->message);
g_error_free (error);
}
g_object_unref (config);
if (!meta_monitor_manager_apply_monitors_config (manager,
config,
META_MONITORS_CONFIG_METHOD_TEMPORARY,
&error))
{
g_warning ("Failed to use orientation monitor configuration: %s",
error->message);
g_error_free (error);
}
g_object_unref (config);
}
static void
@@ -662,21 +662,10 @@ experimental_features_changed (MetaSettings *settings,
MetaExperimentalFeature old_experimental_features,
MetaMonitorManager *manager)
{
MetaDBusDisplayConfig *skeleton = META_DBUS_DISPLAY_CONFIG (manager);
gboolean was_config_manager_enabled;
gboolean was_stage_views_scaled;
gboolean is_config_manager_enabled;
gboolean is_stage_views_scaled;
gboolean should_reconfigure = FALSE;
is_config_manager_enabled = meta_is_monitor_config_manager_enabled ();
was_config_manager_enabled =
meta_dbus_display_config_get_is_experimental_api_enabled (skeleton);
if (was_config_manager_enabled != is_config_manager_enabled)
meta_dbus_display_config_set_is_experimental_api_enabled (
skeleton, is_config_manager_enabled);
was_stage_views_scaled =
!!(old_experimental_features &
META_EXPERIMENTAL_FEATURE_SCALE_MONITOR_FRAMEBUFFER);
@@ -685,8 +674,7 @@ experimental_features_changed (MetaSettings *settings,
settings,
META_EXPERIMENTAL_FEATURE_SCALE_MONITOR_FRAMEBUFFER);
if (is_config_manager_enabled != was_config_manager_enabled ||
is_stage_views_scaled != was_stage_views_scaled)
if (is_stage_views_scaled != was_stage_views_scaled)
should_reconfigure = TRUE;
if (should_reconfigure)
@@ -699,7 +687,6 @@ static void
meta_monitor_manager_constructed (GObject *object)
{
MetaMonitorManager *manager = META_MONITOR_MANAGER (object);
MetaDBusDisplayConfig *skeleton = META_DBUS_DISPLAY_CONFIG (manager);
MetaMonitorManagerClass *manager_class =
META_MONITOR_MANAGER_GET_CLASS (manager);
MetaBackend *backend = meta_get_backend ();
@@ -721,10 +708,6 @@ meta_monitor_manager_constructed (GObject *object)
g_signal_connect_object (manager, "notify::power-save-mode",
G_CALLBACK (power_save_mode_changed), manager, 0);
meta_dbus_display_config_set_is_experimental_api_enabled (
skeleton,
meta_is_monitor_config_manager_enabled ());
g_signal_connect_object (meta_backend_get_orientation_manager (backend),
"orientation-changed",
G_CALLBACK (orientation_changed),
@@ -733,12 +716,7 @@ meta_monitor_manager_constructed (GObject *object)
manager->current_switch_config = META_MONITOR_SWITCH_CONFIG_UNKNOWN;
manager->in_init = TRUE;
/*
* MetaMonitorConfigManager will only be used if the corresponding
* experimental feature is enabled.
*/
manager->config_manager = meta_monitor_config_manager_new (manager);
manager->legacy_config = meta_monitor_config_new (manager);
meta_monitor_manager_read_current_state (manager);
@@ -1155,61 +1133,6 @@ meta_monitor_manager_handle_get_resources (MetaDBusDisplayConfig *skeleton,
return TRUE;
}
static gboolean
output_can_config (MetaOutput *output,
MetaCrtc *crtc,
MetaCrtcMode *mode)
{
unsigned int i;
gboolean ok = FALSE;
for (i = 0; i < output->n_possible_crtcs && !ok; i++)
ok = output->possible_crtcs[i] == crtc;
if (!ok)
return FALSE;
if (mode == NULL)
return TRUE;
ok = FALSE;
for (i = 0; i < output->n_modes && !ok; i++)
ok = output->modes[i] == mode;
return ok;
}
static gboolean
output_can_clone (MetaOutput *output,
MetaOutput *clone)
{
unsigned int i;
gboolean ok = FALSE;
for (i = 0; i < output->n_possible_clones && !ok; i++)
ok = output->possible_clones[i] == clone;
return ok;
}
void
meta_monitor_manager_apply_configuration (MetaMonitorManager *manager,
MetaCrtcInfo **crtcs,
unsigned int n_crtcs,
MetaOutputInfo **outputs,
unsigned int n_outputs)
{
META_MONITOR_MANAGER_GET_CLASS (manager)->apply_configuration (manager,
crtcs, n_crtcs,
outputs, n_outputs);
}
static void
legacy_restore_previous_config (MetaMonitorManager *manager)
{
meta_monitor_config_restore_previous (manager->legacy_config, manager);
}
static void
restore_previous_config (MetaMonitorManager *manager)
{
@@ -1217,14 +1140,13 @@ restore_previous_config (MetaMonitorManager *manager)
GError *error = NULL;
previous_config =
meta_monitor_config_manager_get_previous (manager->config_manager);
meta_monitor_config_manager_pop_previous (manager->config_manager);
if (previous_config)
{
MetaMonitorsConfigMethod method;
method = META_MONITORS_CONFIG_METHOD_TEMPORARY;
g_object_ref (previous_config);
if (meta_monitor_manager_apply_monitors_config (manager,
previous_config,
method,
@@ -1245,22 +1167,20 @@ restore_previous_config (MetaMonitorManager *manager)
meta_monitor_manager_ensure_configured (manager);
}
gint
meta_monitor_manager_get_display_configuration_timeout (void)
{
return DEFAULT_DISPLAY_CONFIGURATION_TIMEOUT;
}
static gboolean
save_config_timeout (gpointer user_data)
{
MetaMonitorManager *manager = user_data;
switch (manager->pending_persistent_system)
{
case META_MONITOR_CONFIG_SYSTEM_LEGACY:
legacy_restore_previous_config (manager);
break;
case META_MONITOR_CONFIG_SYSTEM_MANAGER:
restore_previous_config (manager);
break;
}
restore_previous_config (manager);
manager->persistent_timeout_id = 0;
return G_SOURCE_REMOVE;
}
@@ -1272,11 +1192,9 @@ cancel_persistent_confirmation (MetaMonitorManager *manager)
}
static void
request_persistent_confirmation (MetaMonitorManager *manager,
MetaMonitorConfigSystem system)
request_persistent_confirmation (MetaMonitorManager *manager)
{
manager->pending_persistent_system = system;
manager->persistent_timeout_id = g_timeout_add_seconds (20,
manager->persistent_timeout_id = g_timeout_add_seconds (meta_monitor_manager_get_display_configuration_timeout (),
save_config_timeout,
manager);
g_source_set_name_by_id (manager->persistent_timeout_id,
@@ -1285,250 +1203,6 @@ request_persistent_confirmation (MetaMonitorManager *manager,
g_signal_emit (manager, signals[CONFIRM_DISPLAY_CHANGE], 0);
}
static gboolean
meta_monitor_manager_legacy_handle_apply_configuration (MetaDBusDisplayConfig *skeleton,
GDBusMethodInvocation *invocation,
guint serial,
gboolean persistent,
GVariant *crtcs,
GVariant *outputs)
{
MetaMonitorManager *manager = META_MONITOR_MANAGER (skeleton);
GVariantIter crtc_iter, output_iter, *nested_outputs;
GVariant *properties;
guint crtc_id;
int new_mode, x, y;
int new_screen_width, new_screen_height;
guint transform;
guint output_index;
GPtrArray *crtc_infos, *output_infos;
if (meta_monitor_config_manager_get_current (manager->config_manager))
meta_monitor_config_manager_set_current (manager->config_manager, NULL);
if (serial != manager->serial)
{
g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR,
G_DBUS_ERROR_ACCESS_DENIED,
"The requested configuration is based on stale information");
return TRUE;
}
crtc_infos = g_ptr_array_new_full (g_variant_n_children (crtcs),
(GDestroyNotify) meta_crtc_info_free);
output_infos = g_ptr_array_new_full (g_variant_n_children (outputs),
(GDestroyNotify) meta_output_info_free);
/* Validate all arguments */
new_screen_width = 0; new_screen_height = 0;
g_variant_iter_init (&crtc_iter, crtcs);
while (g_variant_iter_loop (&crtc_iter, "(uiiiuaua{sv})",
&crtc_id, &new_mode, &x, &y, &transform,
&nested_outputs, NULL))
{
MetaCrtcInfo *crtc_info;
MetaOutput *first_output;
MetaCrtc *crtc;
MetaCrtcMode *mode;
crtc_info = g_slice_new (MetaCrtcInfo);
crtc_info->outputs = g_ptr_array_new ();
if (crtc_id >= manager->n_crtcs)
{
g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR,
G_DBUS_ERROR_INVALID_ARGS,
"Invalid CRTC id");
return TRUE;
}
crtc = &manager->crtcs[crtc_id];
crtc_info->crtc = crtc;
if (new_mode != -1 && (new_mode < 0 || (unsigned)new_mode >= manager->n_modes))
{
g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR,
G_DBUS_ERROR_INVALID_ARGS,
"Invalid mode id");
return TRUE;
}
mode = new_mode != -1 ? &manager->modes[new_mode] : NULL;
crtc_info->mode = mode;
if (mode)
{
int width, height;
int max_screen_width, max_screen_height;
if (meta_monitor_transform_is_rotated (transform))
{
width = mode->height;
height = mode->width;
}
else
{
width = mode->width;
height = mode->height;
}
if (x < 0 || y < 0)
{
g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR,
G_DBUS_ERROR_INVALID_ARGS,
"Invalid CRTC geometry");
return TRUE;
}
if (meta_monitor_manager_get_max_screen_size (manager,
&max_screen_width,
&max_screen_height))
{
if (x + width > max_screen_width ||
y + height > max_screen_height)
{
g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR,
G_DBUS_ERROR_INVALID_ARGS,
"Invalid CRTC geometry");
return TRUE;
}
}
new_screen_width = MAX (new_screen_width, x + width);
new_screen_height = MAX (new_screen_height, y + height);
crtc_info->x = x;
crtc_info->y = y;
}
else
{
crtc_info->x = 0;
crtc_info->y = 0;
}
if (transform > META_MONITOR_TRANSFORM_FLIPPED_270 ||
((crtc->all_transforms & (1 << transform)) == 0))
{
g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR,
G_DBUS_ERROR_INVALID_ARGS,
"Invalid transform");
return TRUE;
}
crtc_info->transform = transform;
first_output = NULL;
while (g_variant_iter_loop (nested_outputs, "u", &output_index))
{
MetaOutput *output;
if (output_index >= manager->n_outputs)
{
g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR,
G_DBUS_ERROR_INVALID_ARGS,
"Invalid output id");
return TRUE;
}
output = &manager->outputs[output_index];
if (!output_can_config (output, crtc, mode))
{
g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR,
G_DBUS_ERROR_INVALID_ARGS,
"Output cannot be assigned to this CRTC or mode");
return TRUE;
}
g_ptr_array_add (crtc_info->outputs, output);
if (first_output)
{
if (!output_can_clone (output, first_output))
{
g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR,
G_DBUS_ERROR_INVALID_ARGS,
"Outputs cannot be cloned");
return TRUE;
}
}
else
first_output = output;
}
if (!first_output && mode)
{
g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR,
G_DBUS_ERROR_INVALID_ARGS,
"Mode specified without outputs?");
return TRUE;
}
g_ptr_array_add (crtc_infos, crtc_info);
}
if (new_screen_width == 0 || new_screen_height == 0)
{
g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR,
G_DBUS_ERROR_INVALID_ARGS,
"Refusing to disable all outputs");
return TRUE;
}
g_variant_iter_init (&output_iter, outputs);
while (g_variant_iter_loop (&output_iter, "(u@a{sv})", &output_index, &properties))
{
MetaOutputInfo *output_info;
gboolean primary, presentation, underscanning;
if (output_index >= manager->n_outputs)
{
g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR,
G_DBUS_ERROR_INVALID_ARGS,
"Invalid output id");
return TRUE;
}
output_info = g_slice_new0 (MetaOutputInfo);
output_info->output = &manager->outputs[output_index];
if (g_variant_lookup (properties, "primary", "b", &primary))
output_info->is_primary = primary;
if (g_variant_lookup (properties, "presentation", "b", &presentation))
output_info->is_presentation = presentation;
if (g_variant_lookup (properties, "underscanning", "b", &underscanning))
output_info->is_underscanning = underscanning;
g_ptr_array_add (output_infos, output_info);
}
/* If we were in progress of making a persistent change and we see a
new request, it's likely that the old one failed in some way, so
don't save it, but also don't queue for restoring it.
*/
if (manager->persistent_timeout_id && persistent)
cancel_persistent_confirmation (manager);
meta_monitor_manager_apply_configuration (manager,
(MetaCrtcInfo**)crtc_infos->pdata,
crtc_infos->len,
(MetaOutputInfo**)output_infos->pdata,
output_infos->len);
g_ptr_array_unref (crtc_infos);
g_ptr_array_unref (output_infos);
/* Update MetaMonitorConfig data structures immediately so that we
don't revert the change at the next XRandR event, then ask the plugin
manager (through MetaScreen) to confirm the display change with the
appropriate UI. Then wait 20 seconds and if not confirmed, revert the
configuration.
*/
meta_monitor_config_update_current (manager->legacy_config, manager);
if (persistent)
request_persistent_confirmation (manager,
META_MONITOR_CONFIG_SYSTEM_LEGACY);
meta_dbus_display_config_complete_apply_configuration (skeleton, invocation);
return TRUE;
}
#define META_DISPLAY_CONFIG_MODE_FLAGS_PREFERRED (1 << 0)
#define META_DISPLAY_CONFIG_MODE_FLAGS_CURRENT (1 << 1)
@@ -1555,14 +1229,6 @@ meta_monitor_manager_handle_get_current_state (MetaDBusDisplayConfig *skeleton,
MetaMonitorManagerCapability capabilities;
int max_screen_width, max_screen_height;
if (!meta_is_monitor_config_manager_enabled ())
{
g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR,
G_DBUS_ERROR_ACCESS_DENIED,
"This experimental API is currently not enabled");
return TRUE;
}
g_variant_builder_init (&monitors_builder,
G_VARIANT_TYPE (MONITORS_FORMAT));
g_variant_builder_init (&logical_monitors_builder,
@@ -1857,6 +1523,44 @@ meta_monitor_manager_is_config_applicable (MetaMonitorManager *manager,
return TRUE;
}
static gboolean
meta_monitor_manager_is_config_complete (MetaMonitorManager *manager,
MetaMonitorsConfig *config)
{
GList *l;
unsigned int configured_monitor_count = 0;
unsigned int expected_monitor_count = 0;
for (l = config->logical_monitor_configs; l; l = l->next)
{
MetaLogicalMonitorConfig *logical_monitor_config = l->data;
GList *k;
for (k = logical_monitor_config->monitor_configs; k; k = k->next)
configured_monitor_count++;
}
for (l = manager->monitors; l; l = l->next)
{
MetaMonitor *monitor = l->data;
if (meta_monitor_is_laptop_panel (monitor))
{
if (!meta_monitor_manager_is_lid_closed (manager))
expected_monitor_count++;
}
else
{
expected_monitor_count++;
}
}
if (configured_monitor_count != expected_monitor_count)
return FALSE;
return meta_monitor_manager_is_config_applicable (manager, config, NULL);
}
static MetaMonitor *
find_monitor_from_connector (MetaMonitorManager *manager,
char *connector)
@@ -2167,14 +1871,6 @@ meta_monitor_manager_handle_apply_monitors_config (MetaDBusDisplayConfig *skelet
GList *logical_monitor_configs = NULL;
GError *error = NULL;
if (!meta_is_monitor_config_manager_enabled ())
{
g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR,
G_DBUS_ERROR_ACCESS_DENIED,
"This experimental API is currently not enabled");
return TRUE;
}
if (serial != manager->serial)
{
g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR,
@@ -2247,7 +1943,8 @@ meta_monitor_manager_handle_apply_monitors_config (MetaDBusDisplayConfig *skelet
logical_monitor_config);
}
config = meta_monitors_config_new (logical_monitor_configs, layout_mode);
config = meta_monitors_config_new (logical_monitor_configs, layout_mode,
META_MONITORS_CONFIG_FLAG_NONE);
if (!meta_verify_monitors_config (config, manager, &error))
{
g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR,
@@ -2268,7 +1965,8 @@ meta_monitor_manager_handle_apply_monitors_config (MetaDBusDisplayConfig *skelet
return TRUE;
}
if (manager->persistent_timeout_id)
if (manager->persistent_timeout_id &&
method != META_MONITORS_CONFIG_METHOD_VERIFY)
cancel_persistent_confirmation (manager);
if (!meta_monitor_manager_apply_monitors_config (manager,
@@ -2285,9 +1983,7 @@ meta_monitor_manager_handle_apply_monitors_config (MetaDBusDisplayConfig *skelet
}
if (method == META_MONITORS_CONFIG_METHOD_PERSISTENT)
request_persistent_confirmation (manager,
META_MONITOR_CONFIG_SYSTEM_MANAGER);
request_persistent_confirmation (manager);
meta_dbus_display_config_complete_apply_monitors_config (skeleton, invocation);
@@ -2299,16 +1995,6 @@ meta_monitor_manager_handle_apply_monitors_config (MetaDBusDisplayConfig *skelet
#undef MONITOR_CONFIGS_FORMAT
#undef LOGICAL_MONITOR_CONFIG_FORMAT
static void
legacy_confirm_configuration (MetaMonitorManager *manager,
gboolean confirmed)
{
if (confirmed)
meta_monitor_config_make_persistent (manager->legacy_config);
else
meta_monitor_config_restore_previous (manager->legacy_config, manager);
}
static void
confirm_configuration (MetaMonitorManager *manager,
gboolean confirmed)
@@ -2330,15 +2016,7 @@ meta_monitor_manager_confirm_configuration (MetaMonitorManager *manager,
}
cancel_persistent_confirmation (manager);
switch (manager->pending_persistent_system)
{
case META_MONITOR_CONFIG_SYSTEM_LEGACY:
legacy_confirm_configuration (manager, ok);
break;
case META_MONITOR_CONFIG_SYSTEM_MANAGER:
confirm_configuration (manager, ok);
break;
}
confirm_configuration (manager, ok);
}
static gboolean
@@ -2498,7 +2176,6 @@ meta_monitor_manager_handle_set_crtc_gamma (MetaDBusDisplayConfig *skeleton,
klass = META_MONITOR_MANAGER_GET_CLASS (manager);
if (klass->set_crtc_gamma)
klass->set_crtc_gamma (manager, crtc, size, red, green, blue);
meta_dbus_display_config_complete_set_crtc_gamma (skeleton, invocation);
g_bytes_unref (red_bytes);
@@ -2512,7 +2189,6 @@ static void
meta_monitor_manager_display_config_init (MetaDBusDisplayConfigIface *iface)
{
iface->handle_get_resources = meta_monitor_manager_handle_get_resources;
iface->handle_apply_configuration = meta_monitor_manager_legacy_handle_apply_configuration;
iface->handle_change_backlight = meta_monitor_manager_handle_change_backlight;
iface->handle_get_crtc_gamma = meta_monitor_manager_handle_get_crtc_gamma;
iface->handle_set_crtc_gamma = meta_monitor_manager_handle_set_crtc_gamma;
@@ -2715,9 +2391,9 @@ meta_monitor_manager_get_logical_monitor_from_rect (MetaMonitorManager *manager,
}
MetaLogicalMonitor *
meta_monitor_manager_get_logical_monitor_neighbor (MetaMonitorManager *manager,
MetaLogicalMonitor *logical_monitor,
MetaScreenDirection direction)
meta_monitor_manager_get_logical_monitor_neighbor (MetaMonitorManager *manager,
MetaLogicalMonitor *logical_monitor,
MetaDisplayDirection direction)
{
GList *l;
@@ -3011,7 +2687,7 @@ meta_monitor_manager_rebuild_derived (MetaMonitorManager *manager,
}
void
meta_output_parse_edid (MetaOutput *meta_output,
meta_output_parse_edid (MetaOutput *output,
GBytes *edid)
{
MonitorInfo *parsed_edid;
@@ -3024,36 +2700,36 @@ meta_output_parse_edid (MetaOutput *meta_output,
if (parsed_edid)
{
meta_output->vendor = g_strndup (parsed_edid->manufacturer_code, 4);
if (!g_utf8_validate (meta_output->vendor, -1, NULL))
g_clear_pointer (&meta_output->vendor, g_free);
output->vendor = g_strndup (parsed_edid->manufacturer_code, 4);
if (!g_utf8_validate (output->vendor, -1, NULL))
g_clear_pointer (&output->vendor, g_free);
meta_output->product = g_strndup (parsed_edid->dsc_product_name, 14);
if (!g_utf8_validate (meta_output->product, -1, NULL) ||
meta_output->product[0] == '\0')
output->product = g_strndup (parsed_edid->dsc_product_name, 14);
if (!g_utf8_validate (output->product, -1, NULL) ||
output->product[0] == '\0')
{
g_clear_pointer (&meta_output->product, g_free);
meta_output->product = g_strdup_printf ("0x%04x", (unsigned) parsed_edid->product_code);
g_clear_pointer (&output->product, g_free);
output->product = g_strdup_printf ("0x%04x", (unsigned) parsed_edid->product_code);
}
meta_output->serial = g_strndup (parsed_edid->dsc_serial_number, 14);
if (!g_utf8_validate (meta_output->serial, -1, NULL) ||
meta_output->serial[0] == '\0')
output->serial = g_strndup (parsed_edid->dsc_serial_number, 14);
if (!g_utf8_validate (output->serial, -1, NULL) ||
output->serial[0] == '\0')
{
g_clear_pointer (&meta_output->serial, g_free);
meta_output->serial = g_strdup_printf ("0x%08x", parsed_edid->serial_number);
g_clear_pointer (&output->serial, g_free);
output->serial = g_strdup_printf ("0x%08x", parsed_edid->serial_number);
}
g_free (parsed_edid);
}
out:
if (!meta_output->vendor)
meta_output->vendor = g_strdup ("unknown");
if (!meta_output->product)
meta_output->product = g_strdup ("unknown");
if (!meta_output->serial)
meta_output->serial = g_strdup ("unknown");
if (!output->vendor)
output->vendor = g_strdup ("unknown");
if (!output->product)
output->product = g_strdup ("unknown");
if (!output->serial)
output->serial = g_strdup ("unknown");
}
gboolean
@@ -3071,35 +2747,9 @@ meta_output_is_laptop (MetaOutput *output)
}
}
static void
legacy_on_hotplug (MetaMonitorManager *manager)
{
gboolean applied_config = FALSE;
/* If the monitor has hotplug_mode_update (which is used by VMs), don't bother
* applying our stored configuration, because it's likely the user just resizing
* the window.
*/
if (!meta_monitor_manager_has_hotplug_mode_update (manager))
{
if (meta_monitor_config_apply_stored (manager->legacy_config, manager))
applied_config = TRUE;
}
/* If we haven't applied any configuration, apply the default configuration. */
if (!applied_config)
meta_monitor_config_make_default (manager->legacy_config, manager);
}
void
meta_monitor_manager_on_hotplug (MetaMonitorManager *manager)
{
if (!meta_is_monitor_config_manager_enabled ())
{
legacy_on_hotplug (manager);
return;
}
meta_monitor_manager_ensure_configured (manager);
}
@@ -3236,67 +2886,54 @@ meta_monitor_manager_get_is_builtin_display_on (MetaMonitorManager *manager)
void
meta_monitor_manager_rotate_monitor (MetaMonitorManager *manager)
{
if (!meta_is_monitor_config_manager_enabled ())
{
meta_monitor_config_rotate_monitor (manager->legacy_config);
}
else
{
GError *error = NULL;
MetaMonitorsConfig *config =
meta_monitor_config_manager_create_for_rotate_monitor (manager->config_manager);
GError *error = NULL;
MetaMonitorsConfig *config =
meta_monitor_config_manager_create_for_rotate_monitor (manager->config_manager);
if (!config)
return;
if (!config)
return;
if (!meta_monitor_manager_apply_monitors_config (manager,
config,
META_MONITORS_CONFIG_METHOD_TEMPORARY,
&error))
{
g_warning ("Failed to use rotate monitor configuration: %s",
error->message);
g_error_free (error);
}
g_object_unref (config);
if (!meta_monitor_manager_apply_monitors_config (manager,
config,
META_MONITORS_CONFIG_METHOD_TEMPORARY,
&error))
{
g_warning ("Failed to use rotate monitor configuration: %s",
error->message);
g_error_free (error);
}
g_object_unref (config);
}
void
meta_monitor_manager_switch_config (MetaMonitorManager *manager,
MetaMonitorSwitchConfigType config_type)
{
GError *error = NULL;
MetaMonitorsConfig *config;
g_return_if_fail (config_type != META_MONITOR_SWITCH_CONFIG_UNKNOWN);
if (!meta_is_monitor_config_manager_enabled ())
config =
meta_monitor_config_manager_create_for_switch_config (manager->config_manager,
config_type);
if (!config)
return;
if (!meta_monitor_manager_apply_monitors_config (manager,
config,
META_MONITORS_CONFIG_METHOD_TEMPORARY,
&error))
{
if (meta_monitor_config_switch_config (manager->legacy_config, config_type))
manager->current_switch_config = config_type;
g_warning ("Failed to use switch monitor configuration: %s",
error->message);
g_error_free (error);
}
else
{
GError *error = NULL;
MetaMonitorsConfig *config =
meta_monitor_config_manager_create_for_switch_config (manager->config_manager,
config_type);
if (!config)
return;
if (!meta_monitor_manager_apply_monitors_config (manager,
config,
META_MONITORS_CONFIG_METHOD_TEMPORARY,
&error))
{
g_warning ("Failed to use switch monitor configuration: %s",
error->message);
g_error_free (error);
}
else
{
manager->current_switch_config = config_type;
}
g_object_unref (config);
manager->current_switch_config = config_type;
}
g_object_unref (config);
}
gboolean

View File

@@ -27,9 +27,11 @@
#include "backends/meta-monitor-manager-private.h"
#include "backends/meta-settings-private.h"
#define SCALE_FACTORS_PER_INTEGER 8
#define MINIMUM_SCALE_FACTOR 0.5f
#define SCALE_FACTORS_PER_INTEGER 4
#define MINIMUM_SCALE_FACTOR 1.0f
#define MAXIMUM_SCALE_FACTOR 4.0f
#define MINIMUM_LOGICAL_WIDTH 800
#define MINIMUM_LOGICAL_HEIGHT 600
#define HANDLED_CRTC_MODE_FLAGS (META_CRTC_MODE_FLAG_INTERLACE)
@@ -1438,7 +1440,10 @@ get_closest_scale_factor_for_resolution (float width,
scaled_w = width / scale;
scaled_h = height / scale;
if (scale < MINIMUM_SCALE_FACTOR || scale > MAXIMUM_SCALE_FACTOR)
if (scale < MINIMUM_SCALE_FACTOR ||
scale > MAXIMUM_SCALE_FACTOR ||
floorf (scaled_w) < MINIMUM_LOGICAL_WIDTH ||
floorf (scaled_h) < MINIMUM_LOGICAL_HEIGHT)
goto out;
if (floorf (scaled_w) == scaled_w && floorf (scaled_h) == scaled_h)

View File

@@ -31,7 +31,6 @@ typedef enum _MetaExperimentalFeature
{
META_EXPERIMENTAL_FEATURE_NONE = 0,
META_EXPERIMENTAL_FEATURE_SCALE_MONITOR_FRAMEBUFFER = (1 << 0),
META_EXPERIMENTAL_FEATURE_MONITOR_CONFIG_MANAGER = (1 << 1)
} MetaExperimentalFeature;
#define META_TYPE_SETTINGS (meta_settings_get_type ())

View File

@@ -86,37 +86,15 @@ calculate_ui_scaling_factor (MetaSettings *settings)
return (int) max_scale;
}
static int
get_xsettings_scaling_factor (void)
{
GdkScreen *screen;
GValue value = G_VALUE_INIT;
g_value_init (&value, G_TYPE_INT);
screen = gdk_screen_get_default ();
if (gdk_screen_get_setting (screen, "gdk-window-scaling-factor", &value))
return g_value_get_int (&value);
else
return 1;
}
static gboolean
update_ui_scaling_factor (MetaSettings *settings)
{
int ui_scaling_factor;
if (meta_is_stage_views_scaled ())
{
ui_scaling_factor = 1;
}
ui_scaling_factor = 1;
else
{
if (meta_is_monitor_config_manager_enabled ())
ui_scaling_factor = calculate_ui_scaling_factor (settings);
else
ui_scaling_factor = get_xsettings_scaling_factor ();
}
ui_scaling_factor = calculate_ui_scaling_factor (settings);
if (settings->ui_scaling_factor != ui_scaling_factor)
{
@@ -129,34 +107,6 @@ update_ui_scaling_factor (MetaSettings *settings)
}
}
static void
xft_dpi_changed (GtkSettings *gtk_settings,
GParamSpec *pspec,
MetaSettings *settings)
{
/* This only matters when we rely on XSettings. */
if (meta_is_monitor_config_manager_enabled ())
return;
meta_settings_update_ui_scaling_factor (settings);
}
static void
x11_display_opened (MetaBackend *backend,
MetaSettings *settings)
{
/*
* gdk-window-scaling-factor is not exported to gtk-settings
* because it is handled inside gdk, so we use gtk-xft-dpi instead
* which also changes when the scale factor changes.
*
* TODO: Only rely on our own configured scale when we only have
* MetaMonitorConfigManager.
*/
g_signal_connect (gtk_settings_get_default (), "notify::gtk-xft-dpi",
G_CALLBACK (xft_dpi_changed), settings);
}
void
meta_settings_update_ui_scaling_factor (MetaSettings *settings)
{
@@ -312,8 +262,6 @@ experimental_features_handler (GVariant *features_variant,
/* So far no experimental features defined. */
if (g_str_equal (feature, "scale-monitor-framebuffer"))
features |= META_EXPERIMENTAL_FEATURE_SCALE_MONITOR_FRAMEBUFFER;
else if (g_str_equal (feature, "monitor-config-manager"))
features |= META_EXPERIMENTAL_FEATURE_MONITOR_CONFIG_MANAGER;
else
g_info ("Unknown experimental feature '%s'\n", feature);
}
@@ -364,10 +312,6 @@ meta_settings_new (MetaBackend *backend)
settings = g_object_new (META_TYPE_SETTINGS, NULL);
settings->backend = backend;
g_signal_connect (backend, "x11-display-opened",
G_CALLBACK (x11_display_opened),
settings);
return settings;
}

View File

@@ -268,7 +268,7 @@ relative_motion_across_outputs (MetaMonitorManager *monitor_manager,
MetaLogicalMonitor *cur = current;
float x = cur_x, y = cur_y;
float dx = *dx_inout, dy = *dy_inout;
MetaScreenDirection direction = -1;
MetaDisplayDirection direction = -1;
while (cur)
{
@@ -296,18 +296,18 @@ relative_motion_across_outputs (MetaMonitorManager *monitor_manager,
{ cur->rect.x + cur->rect.width, cur->rect.y + cur->rect.height }
};
if (direction != META_SCREEN_RIGHT &&
if (direction != META_DISPLAY_RIGHT &&
meta_line2_intersects_with (&motion, &left, &intersection))
direction = META_SCREEN_LEFT;
else if (direction != META_SCREEN_LEFT &&
direction = META_DISPLAY_LEFT;
else if (direction != META_DISPLAY_LEFT &&
meta_line2_intersects_with (&motion, &right, &intersection))
direction = META_SCREEN_RIGHT;
else if (direction != META_SCREEN_DOWN &&
direction = META_DISPLAY_RIGHT;
else if (direction != META_DISPLAY_DOWN &&
meta_line2_intersects_with (&motion, &top, &intersection))
direction = META_SCREEN_UP;
else if (direction != META_SCREEN_UP &&
direction = META_DISPLAY_UP;
else if (direction != META_DISPLAY_UP &&
meta_line2_intersects_with (&motion, &bottom, &intersection))
direction = META_SCREEN_DOWN;
direction = META_DISPLAY_DOWN;
else
{
/* We reached the dest logical monitor */
@@ -507,11 +507,24 @@ meta_backend_native_get_keymap (MetaBackend *backend)
return clutter_evdev_get_keyboard_map (manager);
}
static xkb_layout_index_t
meta_backend_native_get_keymap_layout_group (MetaBackend *backend)
{
ClutterDeviceManager *manager = clutter_device_manager_get_default ();
return clutter_evdev_get_keyboard_layout_index (manager);
}
static void
meta_backend_native_lock_layout_group (MetaBackend *backend,
guint idx)
{
ClutterDeviceManager *manager = clutter_device_manager_get_default ();
xkb_layout_index_t old_idx;
old_idx = meta_backend_native_get_keymap_layout_group (backend);
if (old_idx == idx)
return;
clutter_evdev_set_keyboard_layout_index (manager, idx);
meta_backend_notify_keymap_layout_group_changed (backend, idx);
@@ -579,6 +592,7 @@ meta_backend_native_class_init (MetaBackendNativeClass *klass)
backend_class->set_keymap = meta_backend_native_set_keymap;
backend_class->get_keymap = meta_backend_native_get_keymap;
backend_class->get_keymap_layout_group = meta_backend_native_get_keymap_layout_group;
backend_class->lock_layout_group = meta_backend_native_lock_layout_group;
backend_class->get_relative_motion_deltas = meta_backend_native_get_relative_motion_deltas;
backend_class->update_screen_size = meta_backend_native_update_screen_size;
@@ -668,11 +682,14 @@ meta_backend_native_pause (MetaBackendNative *native)
meta_backend_get_monitor_manager (backend);
MetaMonitorManagerKms *monitor_manager_kms =
META_MONITOR_MANAGER_KMS (monitor_manager);
MetaRendererNative *renderer_native =
META_RENDERER_NATIVE (meta_backend_get_renderer (backend));
clutter_evdev_release_devices ();
clutter_egl_freeze_master_clock ();
meta_monitor_manager_kms_pause (monitor_manager_kms);
meta_renderer_native_pause (renderer_native);
}
void meta_backend_native_resume (MetaBackendNative *native)

View File

@@ -383,28 +383,37 @@ has_valid_cursor_sprite_gbm_bo (MetaCursorSprite *cursor_sprite)
}
static gboolean
cursor_over_transformed_crtc (MetaCursorRenderer *renderer,
MetaCursorSprite *cursor_sprite)
cursor_over_transformed_logical_monitor (MetaCursorRenderer *renderer,
MetaCursorSprite *cursor_sprite)
{
MetaMonitorManager *monitors;
MetaCrtc *crtcs;
unsigned int i, n_crtcs;
ClutterRect rect;
MetaBackend *backend = meta_get_backend ();
MetaMonitorManager *monitor_manager =
meta_backend_get_monitor_manager (backend);
GList *logical_monitors;
GList *l;
ClutterRect cursor_rect;
monitors = meta_monitor_manager_get ();
meta_monitor_manager_get_resources (monitors, NULL, NULL,
&crtcs, &n_crtcs, NULL, NULL);
rect = meta_cursor_renderer_calculate_rect (renderer, cursor_sprite);
for (i = 0; i < n_crtcs; i++)
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)
{
MetaCrtc *crtc = &crtcs[i];
ClutterRect crtc_rect = meta_rectangle_to_clutter_rect (&crtc->rect);
MetaLogicalMonitor *logical_monitor = l->data;
MetaRectangle logical_monitor_layout;
ClutterRect logical_monitor_rect;
MetaMonitorTransform transform;
if (!clutter_rect_intersection (&rect, &crtc_rect, NULL))
logical_monitor_layout =
meta_logical_monitor_get_layout (logical_monitor);
logical_monitor_rect =
meta_rectangle_to_clutter_rect (&logical_monitor_layout);
if (!clutter_rect_intersection (&cursor_rect, &logical_monitor_rect,
NULL))
continue;
if (crtc->transform != META_MONITOR_TRANSFORM_NORMAL)
transform = meta_logical_monitor_get_transform (logical_monitor);
if (transform != META_MONITOR_TRANSFORM_NORMAL)
return TRUE;
}
@@ -478,7 +487,7 @@ should_have_hw_cursor (MetaCursorRenderer *renderer,
if (!cursor_sprite)
return FALSE;
if (cursor_over_transformed_crtc (renderer, cursor_sprite))
if (cursor_over_transformed_logical_monitor (renderer, cursor_sprite))
return FALSE;
texture = meta_cursor_sprite_get_cogl_texture (cursor_sprite);

View File

@@ -121,6 +121,24 @@ meta_input_settings_native_set_tap_enabled (MetaInputSettings *settings,
LIBINPUT_CONFIG_TAP_DISABLED);
}
static void
meta_input_settings_native_set_tap_and_drag_enabled (MetaInputSettings *settings,
ClutterInputDevice *device,
gboolean enabled)
{
struct libinput_device *libinput_device;
libinput_device = clutter_evdev_input_device_get_libinput_device (device);
if (!libinput_device)
return;
if (libinput_device_config_tap_get_finger_count (libinput_device) > 0)
libinput_device_config_tap_set_drag_enabled (libinput_device,
enabled ?
LIBINPUT_CONFIG_DRAG_ENABLED :
LIBINPUT_CONFIG_DRAG_DISABLED);
}
static void
meta_input_settings_native_set_disable_while_typing (MetaInputSettings *settings,
ClutterInputDevice *device,
@@ -530,6 +548,7 @@ meta_input_settings_native_class_init (MetaInputSettingsNativeClass *klass)
input_settings_class->set_speed = meta_input_settings_native_set_speed;
input_settings_class->set_left_handed = meta_input_settings_native_set_left_handed;
input_settings_class->set_tap_enabled = meta_input_settings_native_set_tap_enabled;
input_settings_class->set_tap_and_drag_enabled = meta_input_settings_native_set_tap_and_drag_enabled;
input_settings_class->set_invert_scroll = meta_input_settings_native_set_invert_scroll;
input_settings_class->set_edge_scroll = meta_input_settings_native_set_edge_scroll;
input_settings_class->set_two_finger_scroll = meta_input_settings_native_set_two_finger_scroll;

View File

@@ -24,7 +24,6 @@
#include "config.h"
#include "meta-monitor-manager-kms.h"
#include "meta-monitor-config.h"
#include "meta-monitor-config-manager.h"
#include "meta-backend-private.h"
#include "meta-renderer-native.h"
@@ -42,7 +41,7 @@
#include <xf86drmMode.h>
#include <meta/main.h>
#include <meta/errors.h>
#include <meta/meta-x11-errors.h>
#include <gudev/gudev.h>
@@ -1091,7 +1090,7 @@ init_outputs (MetaMonitorManager *manager,
MetaOutput *old_output;
old_output = find_output_by_id (old_outputs, n_old_outputs,
output->winsys_id);
connector->connector_id);
init_output (output, manager, connector, old_output);
n_actual_outputs++;
}
@@ -1253,17 +1252,7 @@ meta_monitor_manager_kms_ensure_initial_config (MetaMonitorManager *manager)
config = meta_monitor_manager_ensure_configured (manager);
if (meta_is_monitor_config_manager_enabled ())
{
meta_monitor_manager_update_logical_state (manager, config);
}
else
{
MetaMonitorManagerDeriveFlag flags =
META_MONITOR_MANAGER_DERIVE_FLAG_NONE;
meta_monitor_manager_update_logical_state_derived (manager, flags);
}
meta_monitor_manager_update_logical_state (manager, config);
}
static void
@@ -1469,40 +1458,6 @@ meta_monitor_manager_kms_apply_monitors_config (MetaMonitorManager *manager
return TRUE;
}
static void
legacy_calculate_screen_size (MetaMonitorManager *manager)
{
unsigned int i;
int width = 0, height = 0;
for (i = 0; i < manager->n_crtcs; i++)
{
MetaCrtc *crtc = &manager->crtcs[i];
width = MAX (width, crtc->rect.x + crtc->rect.width);
height = MAX (height, crtc->rect.y + crtc->rect.height);
}
manager->screen_width = width;
manager->screen_height = height;
}
static void
meta_monitor_manager_kms_apply_configuration (MetaMonitorManager *manager,
MetaCrtcInfo **crtcs,
unsigned int n_crtcs,
MetaOutputInfo **outputs,
unsigned int n_outputs)
{
MetaMonitorManagerDeriveFlag flags =
META_MONITOR_MANAGER_DERIVE_FLAG_NONE;
apply_crtc_assignments (manager, crtcs, n_crtcs, outputs, n_outputs);
legacy_calculate_screen_size (manager);
meta_monitor_manager_rebuild_derived (manager, flags);
}
static void
meta_monitor_manager_kms_get_crtc_gamma (MetaMonitorManager *manager,
MetaCrtc *crtc,
@@ -1961,7 +1916,6 @@ meta_monitor_manager_kms_class_init (MetaMonitorManagerKmsClass *klass)
manager_class->read_edid = meta_monitor_manager_kms_read_edid;
manager_class->ensure_initial_config = meta_monitor_manager_kms_ensure_initial_config;
manager_class->apply_monitors_config = meta_monitor_manager_kms_apply_monitors_config;
manager_class->apply_configuration = meta_monitor_manager_kms_apply_configuration;
manager_class->set_power_save_mode = meta_monitor_manager_kms_set_power_save_mode;
manager_class->get_crtc_gamma = meta_monitor_manager_kms_get_crtc_gamma;
manager_class->set_crtc_gamma = meta_monitor_manager_kms_set_crtc_gamma;

View File

@@ -1786,6 +1786,24 @@ meta_renderer_native_get_frame_counter (MetaRendererNative *renderer_native)
return renderer_native->frame_counter;
}
void
meta_renderer_native_pause (MetaRendererNative *renderer_native)
{
GList *views;
GList *l;
views = meta_renderer_get_views (META_RENDERER (renderer_native));
for (l = views; l; l = l->next)
{
ClutterStageView *stage_view = l->data;
g_object_set (G_OBJECT (stage_view),
"framebuffer", NULL,
"offscreen", NULL,
NULL);
}
}
static void
meta_renderer_native_get_property (GObject *object,
guint prop_id,

View File

@@ -71,4 +71,6 @@ void meta_renderer_native_finish_frame (MetaRendererNative *renderer_native);
int64_t meta_renderer_native_get_frame_counter (MetaRendererNative *renderer_native);
void meta_renderer_native_pause (MetaRendererNative *renderer_native);
#endif /* META_RENDERER_NATIVE_H */

View File

@@ -67,12 +67,21 @@ struct _MetaBackendX11Private
uint8_t xkb_error_base;
struct xkb_keymap *keymap;
xkb_layout_index_t keymap_layout_group;
MetaLogicalMonitor *cached_current_logical_monitor;
};
typedef struct _MetaBackendX11Private MetaBackendX11Private;
G_DEFINE_TYPE_WITH_PRIVATE (MetaBackendX11, meta_backend_x11, META_TYPE_BACKEND);
static GInitableIface *initable_parent_iface;
static void
initable_iface_init (GInitableIface *initable_iface);
G_DEFINE_TYPE_WITH_CODE (MetaBackendX11, meta_backend_x11, META_TYPE_BACKEND,
G_ADD_PRIVATE (MetaBackendX11)
G_IMPLEMENT_INTERFACE (G_TYPE_INITABLE,
initable_iface_init));
static void
handle_alarm_notify (MetaBackend *backend,
@@ -101,7 +110,7 @@ translate_device_event (MetaBackendX11 *x11,
meta_backend_x11_translate_device_event (x11, device_event);
if (!device_event->send_event && device_event->time != CurrentTime)
if (!device_event->send_event && device_event->time != META_CURRENT_TIME)
{
if (device_event->time < priv->latest_evtime)
{
@@ -257,7 +266,7 @@ handle_host_xevent (MetaBackend *backend,
if (meta_plugin_manager_xevent_filter (compositor->plugin_mgr, event))
bypass_clutter = TRUE;
if (meta_dnd_handle_xdnd_event (backend, compositor, display, event))
if (meta_dnd_handle_xdnd_event (backend, compositor, priv->xdisplay, event))
bypass_clutter = TRUE;
}
}
@@ -280,6 +289,22 @@ handle_host_xevent (MetaBackend *backend,
case XkbMapNotify:
keymap_changed (backend);
break;
case XkbStateNotify:
if (xkb_ev->state.changed & XkbGroupLockMask)
{
int layout_group;
gboolean layout_group_changed;
layout_group = xkb_ev->state.locked_group;
layout_group_changed =
(int) priv->keymap_layout_group != layout_group;
priv->keymap_layout_group = layout_group;
if (layout_group_changed)
meta_backend_notify_keymap_layout_group_changed (backend,
layout_group);
}
break;
default:
break;
}
@@ -392,8 +417,6 @@ meta_backend_x11_post_init (MetaBackend *backend)
int major, minor;
gboolean has_xi = FALSE;
priv->xdisplay = clutter_x11_get_default_display ();
priv->source = x_event_source_new (backend);
if (!XSyncQueryExtension (priv->xdisplay, &priv->xsync_event_base, &priv->xsync_error_base) ||
@@ -418,7 +441,6 @@ meta_backend_x11_post_init (MetaBackend *backend)
if (!has_xi)
meta_fatal ("X server doesn't have the XInput extension, version 2.2 or newer\n");
priv->xcb = XGetXCBConnection (priv->xdisplay);
if (!xkb_x11_setup_xkb_extension (priv->xcb,
XKB_X11_MIN_MAJOR_XKB_VERSION,
XKB_X11_MIN_MINOR_XKB_VERSION,
@@ -462,7 +484,7 @@ meta_backend_x11_grab_device (MetaBackend *backend,
XIEventMask mask = { XIAllMasterDevices, sizeof (mask_bits), mask_bits };
int ret;
if (timestamp != CurrentTime)
if (timestamp != META_CURRENT_TIME)
timestamp = MAX (timestamp, priv->latest_evtime);
XISetMask (mask.mask, XI_ButtonPress);
@@ -562,6 +584,15 @@ meta_backend_x11_get_keymap (MetaBackend *backend)
return priv->keymap;
}
static xkb_layout_index_t
meta_backend_x11_get_keymap_layout_group (MetaBackend *backend)
{
MetaBackendX11 *x11 = META_BACKEND_X11 (backend);
MetaBackendX11Private *priv = meta_backend_x11_get_instance_private (x11);
return priv->keymap_layout_group;
}
static void
meta_backend_x11_set_numlock (MetaBackend *backend,
gboolean numlock_state)
@@ -586,6 +617,68 @@ meta_backend_x11_get_xkb_event_base (MetaBackendX11 *x11)
return priv->xkb_event_base;
}
static void
init_xkb_state (MetaBackendX11 *x11)
{
MetaBackendX11Private *priv = meta_backend_x11_get_instance_private (x11);
struct xkb_keymap *keymap;
int32_t device_id;
struct xkb_state *state;
keymap = meta_backend_get_keymap (META_BACKEND (x11));
device_id = xkb_x11_get_core_keyboard_device_id (priv->xcb);
state = xkb_x11_state_new_from_device (keymap, priv->xcb, device_id);
priv->keymap_layout_group =
xkb_state_serialize_layout (state, XKB_STATE_LAYOUT_LOCKED);
xkb_state_unref (state);
}
static gboolean
meta_backend_x11_initable_init (GInitable *initable,
GCancellable *cancellable,
GError **error)
{
MetaBackendX11 *x11 = META_BACKEND_X11 (initable);
MetaBackendX11Private *priv = meta_backend_x11_get_instance_private (x11);
Display *xdisplay;
const char *xdisplay_name;
xdisplay_name = g_getenv ("DISPLAY");
if (!xdisplay_name)
{
g_set_error (error, G_IO_ERROR, G_IO_ERROR_FAILED,
"Unable to open display, DISPLAY not set");
return FALSE;
}
xdisplay = XOpenDisplay (xdisplay_name);
if (!xdisplay)
{
g_set_error (error, G_IO_ERROR, G_IO_ERROR_FAILED,
"Unable to open display '%s'", xdisplay_name);
return FALSE;
}
priv->xdisplay = xdisplay;
priv->xcb = XGetXCBConnection (priv->xdisplay);
clutter_x11_set_display (xdisplay);
init_xkb_state (x11);
return initable_parent_iface->init (initable, cancellable, error);
}
static void
initable_iface_init (GInitableIface *initable_iface)
{
initable_parent_iface = g_type_interface_peek_parent (initable_iface);
initable_iface->init = meta_backend_x11_initable_init;
}
static void
meta_backend_x11_class_init (MetaBackendX11Class *klass)
{
@@ -599,6 +692,7 @@ meta_backend_x11_class_init (MetaBackendX11Class *klass)
backend_class->warp_pointer = meta_backend_x11_warp_pointer;
backend_class->get_current_logical_monitor = meta_backend_x11_get_current_logical_monitor;
backend_class->get_keymap = meta_backend_x11_get_keymap;
backend_class->get_keymap_layout_group = meta_backend_x11_get_keymap_layout_group;
backend_class->set_numlock = meta_backend_x11_set_numlock;
}

View File

@@ -40,6 +40,7 @@
#include <meta/barrier.h>
#include "backends/x11/meta-barrier-x11.h"
#include "display-private.h"
#include "x11/meta-x11-display-private.h"
struct _MetaBarrierImplX11Private
{
@@ -68,10 +69,11 @@ _meta_barrier_impl_x11_release (MetaBarrierImpl *impl,
MetaBarrierImplX11Private *priv =
meta_barrier_impl_x11_get_instance_private (self);
MetaDisplay *display = priv->barrier->priv->display;
Display *dpy = meta_x11_display_get_xdisplay (display->x11_display);
if (META_DISPLAY_HAS_XINPUT_23 (display))
if (META_X11_DISPLAY_HAS_XINPUT_23 (display->x11_display))
{
XIBarrierReleasePointer (display->xdisplay,
XIBarrierReleasePointer (dpy,
META_VIRTUAL_CORE_POINTER_ID,
priv->xbarrier, event->event_id);
}
@@ -89,13 +91,13 @@ _meta_barrier_impl_x11_destroy (MetaBarrierImpl *impl)
if (display == NULL)
return;
dpy = display->xdisplay;
dpy = meta_x11_display_get_xdisplay (display->x11_display);
if (!meta_barrier_is_active (priv->barrier))
return;
XFixesDestroyPointerBarrier (dpy, priv->xbarrier);
g_hash_table_remove (display->xids, &priv->xbarrier);
g_hash_table_remove (display->x11_display->xids, &priv->xbarrier);
priv->xbarrier = 0;
}
@@ -119,7 +121,7 @@ meta_barrier_impl_x11_new (MetaBarrier *barrier)
priv = meta_barrier_impl_x11_get_instance_private (self);
priv->barrier = barrier;
dpy = display->xdisplay;
dpy = meta_x11_display_get_xdisplay (display->x11_display);
root = DefaultRootWindow (dpy);
allowed_motion_dirs =
@@ -132,7 +134,7 @@ meta_barrier_impl_x11_new (MetaBarrier *barrier)
allowed_motion_dirs,
0, NULL);
g_hash_table_insert (display->xids, &priv->xbarrier, barrier);
g_hash_table_insert (display->x11_display->xids, &priv->xbarrier, barrier);
return META_BARRIER_IMPL (self);
}
@@ -172,8 +174,8 @@ meta_barrier_fire_xevent (MetaBarrier *barrier,
}
gboolean
meta_display_process_barrier_xevent (MetaDisplay *display,
XIEvent *event)
meta_x11_display_process_barrier_xevent (MetaX11Display *x11_display,
XIEvent *event)
{
MetaBarrier *barrier;
XIBarrierEvent *xev;
@@ -191,7 +193,7 @@ meta_display_process_barrier_xevent (MetaDisplay *display,
}
xev = (XIBarrierEvent *) event;
barrier = g_hash_table_lookup (display->xids, &xev->barrier);
barrier = g_hash_table_lookup (x11_display->xids, &xev->barrier);
if (barrier != NULL)
{
meta_barrier_fire_xevent (barrier, xev);

View File

@@ -35,7 +35,7 @@
#include <gudev/gudev.h>
#endif
#include <meta/errors.h>
#include <meta/meta-x11-errors.h>
#include "backends/meta-logical-monitor.h"
typedef struct _MetaInputSettingsX11Private
@@ -232,6 +232,17 @@ meta_input_settings_x11_set_tap_enabled (MetaInputSettings *settings,
XA_INTEGER, 8, &value, 1);
}
static void
meta_input_settings_x11_set_tap_and_drag_enabled (MetaInputSettings *settings,
ClutterInputDevice *device,
gboolean enabled)
{
guchar value = (enabled) ? 1 : 0;
change_property (device, "libinput TappingDrag Enabled",
XA_INTEGER, 8, &value, 1);
}
static void
meta_input_settings_x11_set_invert_scroll (MetaInputSettings *settings,
ClutterInputDevice *device,
@@ -536,7 +547,7 @@ meta_input_settings_x11_set_tablet_mapping (MetaInputSettings *settings,
return;
/* Grab the puke bucket! */
meta_error_trap_push (display);
meta_x11_error_trap_push (display->x11_display);
xdev = XOpenDevice (xdisplay, device_id);
if (xdev)
{
@@ -546,7 +557,7 @@ meta_input_settings_x11_set_tablet_mapping (MetaInputSettings *settings,
XCloseDevice (xdisplay, xdev);
}
if (meta_error_trap_pop_with_return (display))
if (meta_x11_error_trap_pop_with_return (display->x11_display))
{
g_warning ("Could not set tablet mapping for %s",
clutter_input_device_get_device_name (device));
@@ -733,7 +744,7 @@ meta_input_settings_x11_set_stylus_button_map (MetaInputSettings *setti
return;
/* Grab the puke bucket! */
meta_error_trap_push (display);
meta_x11_error_trap_push (display->x11_display);
xdev = XOpenDevice (xdisplay, device_id);
if (xdev)
{
@@ -747,7 +758,7 @@ meta_input_settings_x11_set_stylus_button_map (MetaInputSettings *setti
XCloseDevice (xdisplay, xdev);
}
if (meta_error_trap_pop_with_return (display))
if (meta_x11_error_trap_pop_with_return (display->x11_display))
{
g_warning ("Could not set stylus button map for %s",
clutter_input_device_get_device_name (device));
@@ -779,6 +790,7 @@ meta_input_settings_x11_class_init (MetaInputSettingsX11Class *klass)
input_settings_class->set_speed = meta_input_settings_x11_set_speed;
input_settings_class->set_left_handed = meta_input_settings_x11_set_left_handed;
input_settings_class->set_tap_enabled = meta_input_settings_x11_set_tap_enabled;
input_settings_class->set_tap_and_drag_enabled = meta_input_settings_x11_set_tap_and_drag_enabled;
input_settings_class->set_disable_while_typing = meta_input_settings_x11_set_disable_while_typing;
input_settings_class->set_invert_scroll = meta_input_settings_x11_set_invert_scroll;
input_settings_class->set_edge_scroll = meta_input_settings_x11_set_edge_scroll;

View File

@@ -42,8 +42,7 @@
#include "meta-backend-x11.h"
#include <meta/main.h>
#include <meta/errors.h>
#include "meta-monitor-config.h"
#include <meta/meta-x11-errors.h>
#include "backends/meta-monitor-config-manager.h"
#include "backends/meta-logical-monitor.h"
@@ -655,63 +654,63 @@ output_get_connector_type (MetaMonitorManagerXrandr *manager_xrandr,
static void
output_get_modes (MetaMonitorManager *manager,
MetaOutput *meta_output,
XRROutputInfo *output)
MetaOutput *output,
XRROutputInfo *xrandr_output)
{
guint j, k;
guint n_actual_modes;
meta_output->modes = g_new0 (MetaCrtcMode *, output->nmode);
output->modes = g_new0 (MetaCrtcMode *, xrandr_output->nmode);
n_actual_modes = 0;
for (j = 0; j < (guint)output->nmode; j++)
for (j = 0; j < (guint)xrandr_output->nmode; j++)
{
for (k = 0; k < manager->n_modes; k++)
{
if (output->modes[j] == (XID)manager->modes[k].mode_id)
if (xrandr_output->modes[j] == (XID)manager->modes[k].mode_id)
{
meta_output->modes[n_actual_modes] = &manager->modes[k];
output->modes[n_actual_modes] = &manager->modes[k];
n_actual_modes += 1;
break;
}
}
}
meta_output->n_modes = n_actual_modes;
output->n_modes = n_actual_modes;
if (n_actual_modes > 0)
meta_output->preferred_mode = meta_output->modes[0];
output->preferred_mode = output->modes[0];
}
static void
output_get_crtcs (MetaMonitorManager *manager,
MetaOutput *meta_output,
XRROutputInfo *output)
MetaOutput *output,
XRROutputInfo *xrandr_output)
{
guint j, k;
guint n_actual_crtcs;
meta_output->possible_crtcs = g_new0 (MetaCrtc *, output->ncrtc);
output->possible_crtcs = g_new0 (MetaCrtc *, xrandr_output->ncrtc);
n_actual_crtcs = 0;
for (j = 0; j < (unsigned)output->ncrtc; j++)
for (j = 0; j < (unsigned) xrandr_output->ncrtc; j++)
{
for (k = 0; k < manager->n_crtcs; k++)
{
if ((XID)manager->crtcs[k].crtc_id == output->crtcs[j])
if ((XID) manager->crtcs[k].crtc_id == xrandr_output->crtcs[j])
{
meta_output->possible_crtcs[n_actual_crtcs] = &manager->crtcs[k];
output->possible_crtcs[n_actual_crtcs] = &manager->crtcs[k];
n_actual_crtcs += 1;
break;
}
}
}
meta_output->n_possible_crtcs = n_actual_crtcs;
output->n_possible_crtcs = n_actual_crtcs;
meta_output->crtc = NULL;
output->crtc = NULL;
for (j = 0; j < manager->n_crtcs; j++)
{
if ((XID)manager->crtcs[j].crtc_id == output->crtc)
if ((XID) manager->crtcs[j].crtc_id == xrandr_output->crtc)
{
meta_output->crtc = &manager->crtcs[j];
output->crtc = &manager->crtcs[j];
break;
}
}
@@ -850,67 +849,73 @@ meta_monitor_manager_xrandr_read_current (MetaMonitorManager *manager)
n_actual_outputs = 0;
for (i = 0; i < (unsigned)resources->noutput; i++)
{
XRROutputInfo *output;
MetaOutput *meta_output;
XRROutputInfo *xrandr_output;
MetaOutput *output;
output = XRRGetOutputInfo (manager_xrandr->xdisplay, resources, resources->outputs[i]);
if (!output)
xrandr_output = XRRGetOutputInfo (manager_xrandr->xdisplay,
resources, resources->outputs[i]);
if (!xrandr_output)
continue;
meta_output = &manager->outputs[n_actual_outputs];
output = &manager->outputs[n_actual_outputs];
if (output->connection != RR_Disconnected)
if (xrandr_output->connection != RR_Disconnected)
{
GBytes *edid;
meta_output->winsys_id = resources->outputs[i];
meta_output->name = g_strdup (output->name);
output->winsys_id = resources->outputs[i];
output->name = g_strdup (xrandr_output->name);
edid = read_output_edid (manager_xrandr, meta_output->winsys_id);
meta_output_parse_edid (meta_output, edid);
edid = read_output_edid (manager_xrandr, output->winsys_id);
meta_output_parse_edid (output, edid);
g_bytes_unref (edid);
meta_output->width_mm = output->mm_width;
meta_output->height_mm = output->mm_height;
meta_output->subpixel_order = COGL_SUBPIXEL_ORDER_UNKNOWN;
meta_output->hotplug_mode_update = output_get_hotplug_mode_update (manager_xrandr, meta_output);
meta_output->suggested_x = output_get_suggested_x (manager_xrandr, meta_output);
meta_output->suggested_y = output_get_suggested_y (manager_xrandr, meta_output);
meta_output->connector_type = output_get_connector_type (manager_xrandr, meta_output);
output->width_mm = xrandr_output->mm_width;
output->height_mm = xrandr_output->mm_height;
output->subpixel_order = COGL_SUBPIXEL_ORDER_UNKNOWN;
output->hotplug_mode_update =
output_get_hotplug_mode_update (manager_xrandr, output);
output->suggested_x = output_get_suggested_x (manager_xrandr, output);
output->suggested_y = output_get_suggested_y (manager_xrandr, output);
output->connector_type = output_get_connector_type (manager_xrandr,
output);
output_get_tile_info (manager_xrandr, meta_output);
output_get_modes (manager, meta_output, output);
output_get_crtcs (manager, meta_output, output);
output_get_tile_info (manager_xrandr, output);
output_get_modes (manager, output, xrandr_output);
output_get_crtcs (manager, output, xrandr_output);
meta_output->n_possible_clones = output->nclone;
meta_output->possible_clones = g_new0 (MetaOutput *, meta_output->n_possible_clones);
output->n_possible_clones = xrandr_output->nclone;
output->possible_clones = g_new0 (MetaOutput *,
output->n_possible_clones);
/* We can build the list of clones now, because we don't have the list of outputs
yet, so temporarily set the pointers to the bare XIDs, and then we'll fix them
in a second pass
*/
for (j = 0; j < (unsigned)output->nclone; j++)
for (j = 0; j < (unsigned) xrandr_output->nclone; j++)
{
meta_output->possible_clones[j] = GINT_TO_POINTER (output->clones[j]);
output->possible_clones[j] =
GINT_TO_POINTER (xrandr_output->clones[j]);
}
meta_output->is_primary = ((XID)meta_output->winsys_id == primary_output);
meta_output->is_presentation = output_get_presentation_xrandr (manager_xrandr, meta_output);
meta_output->is_underscanning = output_get_underscanning_xrandr (manager_xrandr, meta_output);
meta_output->supports_underscanning = output_get_supports_underscanning_xrandr (manager_xrandr, meta_output);
output_get_backlight_limits_xrandr (manager_xrandr, meta_output);
output->is_primary = ((XID) output->winsys_id == primary_output);
output->is_presentation = output_get_presentation_xrandr (manager_xrandr, output);
output->is_underscanning = output_get_underscanning_xrandr (manager_xrandr, output);
output->supports_underscanning =
output_get_supports_underscanning_xrandr (manager_xrandr, output);
output_get_backlight_limits_xrandr (manager_xrandr, output);
if (!(meta_output->backlight_min == 0 && meta_output->backlight_max == 0))
meta_output->backlight = output_get_backlight_xrandr (manager_xrandr, meta_output);
if (!(output->backlight_min == 0 && output->backlight_max == 0))
output->backlight = output_get_backlight_xrandr (manager_xrandr, output);
else
meta_output->backlight = -1;
output->backlight = -1;
if (meta_output->n_modes == 0 || meta_output->n_possible_crtcs == 0)
meta_monitor_manager_clear_output (meta_output);
if (output->n_modes == 0 || output->n_possible_crtcs == 0)
meta_monitor_manager_clear_output (output);
else
n_actual_outputs++;
}
XRRFreeOutputInfo (output);
XRRFreeOutputInfo (xrandr_output);
}
manager->n_outputs = n_actual_outputs;
@@ -921,19 +926,19 @@ meta_monitor_manager_xrandr_read_current (MetaMonitorManager *manager)
/* Now fix the clones */
for (i = 0; i < manager->n_outputs; i++)
{
MetaOutput *meta_output;
MetaOutput *output;
meta_output = &manager->outputs[i];
output = &manager->outputs[i];
for (j = 0; j < meta_output->n_possible_clones; j++)
for (j = 0; j < output->n_possible_clones; j++)
{
RROutput clone = GPOINTER_TO_INT (meta_output->possible_clones[j]);
RROutput clone = GPOINTER_TO_INT (output->possible_clones[j]);
for (k = 0; k < manager->n_outputs; k++)
{
if (clone == (XID)manager->outputs[k].winsys_id)
{
meta_output->possible_clones[j] = &manager->outputs[k];
output->possible_clones[j] = &manager->outputs[k];
break;
}
}
@@ -1459,8 +1464,7 @@ apply_crtc_assignments (MetaMonitorManager *manager,
static void
meta_monitor_manager_xrandr_ensure_initial_config (MetaMonitorManager *manager)
{
MetaMonitorManagerDeriveFlag flags =
META_MONITOR_MANAGER_DERIVE_FLAG_NONE;
MetaMonitorManagerDeriveFlag flags;
meta_monitor_manager_ensure_configured (manager);
@@ -1471,9 +1475,7 @@ meta_monitor_manager_xrandr_ensure_initial_config (MetaMonitorManager *manager)
*/
meta_monitor_manager_read_current_state (manager);
if (meta_is_monitor_config_manager_enabled ())
flags |= META_MONITOR_MANAGER_DERIVE_FLAG_CONFIGURED_SCALE;
flags = META_MONITOR_MANAGER_DERIVE_FLAG_CONFIGURED_SCALE;
meta_monitor_manager_update_logical_state_derived (manager, flags);
}
@@ -1539,16 +1541,6 @@ meta_monitor_manager_xrandr_apply_monitors_config (MetaMonitorManager *mana
return TRUE;
}
static void
meta_monitor_manager_xrandr_apply_configuration (MetaMonitorManager *manager,
MetaCrtcInfo **crtcs,
unsigned int n_crtcs,
MetaOutputInfo **outputs,
unsigned int n_outputs)
{
apply_crtc_assignments (manager, FALSE, crtcs, n_crtcs, outputs, n_outputs);
}
static void
meta_monitor_manager_xrandr_change_backlight (MetaMonitorManager *manager,
MetaOutput *output,
@@ -1782,7 +1774,7 @@ meta_monitor_manager_xrandr_is_transform_handled (MetaMonitorManager *manager,
MetaCrtc *crtc,
MetaMonitorTransform transform)
{
g_warn_if_fail (crtc->all_transforms & transform);
g_warn_if_fail ((crtc->all_transforms & transform) == transform);
return TRUE;
}
@@ -1903,7 +1895,6 @@ meta_monitor_manager_xrandr_class_init (MetaMonitorManagerXrandrClass *klass)
manager_class->read_edid = meta_monitor_manager_xrandr_read_edid;
manager_class->ensure_initial_config = meta_monitor_manager_xrandr_ensure_initial_config;
manager_class->apply_monitors_config = meta_monitor_manager_xrandr_apply_monitors_config;
manager_class->apply_configuration = meta_monitor_manager_xrandr_apply_configuration;
manager_class->set_power_save_mode = meta_monitor_manager_xrandr_set_power_save_mode;
manager_class->change_backlight = meta_monitor_manager_xrandr_change_backlight;
manager_class->get_crtc_gamma = meta_monitor_manager_xrandr_get_crtc_gamma;

View File

@@ -25,17 +25,9 @@
#include "meta-monitor-manager-private.h"
#define META_TYPE_MONITOR_MANAGER_XRANDR (meta_monitor_manager_xrandr_get_type ())
#define META_MONITOR_MANAGER_XRANDR(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), META_TYPE_MONITOR_MANAGER_XRANDR, MetaMonitorManagerXrandr))
#define META_MONITOR_MANAGER_XRANDR_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), META_TYPE_MONITOR_MANAGER_XRANDR, MetaMonitorManagerXrandrClass))
#define META_IS_MONITOR_MANAGER_XRANDR(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), META_TYPE_MONITOR_MANAGER_XRANDR))
#define META_IS_MONITOR_MANAGER_XRANDR_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), META_TYPE_MONITOR_MANAGER_XRANDR))
#define META_MONITOR_MANAGER_XRANDR_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), META_TYPE_MONITOR_MANAGER_XRANDR, MetaMonitorManagerXrandrClass))
typedef struct _MetaMonitorManagerXrandrClass MetaMonitorManagerXrandrClass;
typedef struct _MetaMonitorManagerXrandr MetaMonitorManagerXrandr;
GType meta_monitor_manager_xrandr_get_type (void);
#define META_TYPE_MONITOR_MANAGER_XRANDR (meta_monitor_manager_xrandr_get_type ())
G_DECLARE_FINAL_TYPE (MetaMonitorManagerXrandr, meta_monitor_manager_xrandr,
META, MONITOR_MANAGER_XRANDR, MetaMonitorManager)
gboolean meta_monitor_manager_xrandr_handle_xevent (MetaMonitorManagerXrandr *manager,
XEvent *event);

View File

@@ -65,4 +65,7 @@ void meta_compositor_flash_window (MetaCompositor *compositor,
MetaCloseDialog * meta_compositor_create_close_dialog (MetaCompositor *compositor,
MetaWindow *window);
MetaInhibitShortcutsDialog * meta_compositor_create_inhibit_shortcuts_dialog (MetaCompositor *compositor,
MetaWindow *window);
#endif /* META_COMPOSITOR_PRIVATE_H */

View File

@@ -42,8 +42,8 @@
* There's two containers in the stage that are used to place window actors, here
* are listed in the order in which they are painted:
*
* - window group, accessible with meta_get_window_group_for_screen()
* - top window group, accessible with meta_get_top_window_group_for_screen()
* - window group, accessible with meta_get_window_group_for_display()
* - top window group, accessible with meta_get_top_window_group_for_display()
*
* Mutter will place actors representing windows in the window group, except for
* override-redirect windows (ie. popups and menus) which will be placed in the
@@ -55,8 +55,7 @@
#include <clutter/x11/clutter-x11.h>
#include "core.h"
#include <meta/screen.h>
#include <meta/errors.h>
#include <meta/meta-x11-errors.h>
#include <meta/window.h>
#include "compositor-private.h"
#include <meta/compositor-mutter.h>
@@ -80,6 +79,8 @@
#include "backends/x11/meta-backend-x11.h"
#include "clutter/clutter-mutter.h"
#include "x11/meta-x11-display-private.h"
#ifdef HAVE_WAYLAND
#include "wayland/meta-wayland-private.h"
#endif
@@ -149,78 +150,78 @@ process_damage (MetaCompositor *compositor,
/* compat helper */
static MetaCompositor *
get_compositor_for_screen (MetaScreen *screen)
get_compositor_for_display (MetaDisplay *display)
{
return screen->display->compositor;
return display->compositor;
}
/**
* meta_get_stage_for_screen:
* @screen: a #MetaScreen
* meta_get_stage_for_display:
* @display: a #MetaDisplay
*
* Returns: (transfer none): The #ClutterStage for the screen
* Returns: (transfer none): The #ClutterStage for the display
*/
ClutterActor *
meta_get_stage_for_screen (MetaScreen *screen)
meta_get_stage_for_display (MetaDisplay *display)
{
MetaCompositor *compositor = get_compositor_for_screen (screen);
MetaCompositor *compositor = get_compositor_for_display (display);
return compositor->stage;
}
/**
* meta_get_window_group_for_screen:
* @screen: a #MetaScreen
* meta_get_window_group_for_display:
* @display: a #MetaDisplay
*
* Returns: (transfer none): The window group corresponding to @screen
* Returns: (transfer none): The window group corresponding to @display
*/
ClutterActor *
meta_get_window_group_for_screen (MetaScreen *screen)
meta_get_window_group_for_display (MetaDisplay *display)
{
MetaCompositor *compositor = get_compositor_for_screen (screen);
MetaCompositor *compositor = get_compositor_for_display (display);
return compositor->window_group;
}
/**
* meta_get_top_window_group_for_screen:
* @screen: a #MetaScreen
* meta_get_top_window_group_for_display:
* @display: a #MetaDisplay
*
* Returns: (transfer none): The top window group corresponding to @screen
* Returns: (transfer none): The top window group corresponding to @display
*/
ClutterActor *
meta_get_top_window_group_for_screen (MetaScreen *screen)
meta_get_top_window_group_for_display (MetaDisplay *display)
{
MetaCompositor *compositor = get_compositor_for_screen (screen);
MetaCompositor *compositor = get_compositor_for_display (display);
return compositor->top_window_group;
}
/**
* meta_get_feedback_group_for_screen:
* @screen: a #MetaScreen
* meta_get_feedback_group_for_display:
* @display: a #MetaDisplay
*
* Returns: (transfer none): The feedback group corresponding to @screen
* Returns: (transfer none): The feedback group corresponding to @display
*/
ClutterActor *
meta_get_feedback_group_for_screen (MetaScreen *screen)
meta_get_feedback_group_for_display (MetaDisplay *display)
{
MetaCompositor *compositor = get_compositor_for_screen (screen);
MetaCompositor *compositor = get_compositor_for_display (display);
return compositor->feedback_group;
}
/**
* meta_get_window_actors:
* @screen: a #MetaScreen
* @display: a #MetaDisplay
*
* Returns: (transfer none) (element-type Clutter.Actor): The set of #MetaWindowActor on @screen
* Returns: (transfer none) (element-type Clutter.Actor): The set of #MetaWindowActor on @display
*/
GList *
meta_get_window_actors (MetaScreen *screen)
meta_get_window_actors (MetaDisplay *display)
{
MetaCompositor *compositor = get_compositor_for_screen (screen);
MetaCompositor *compositor = get_compositor_for_display (display);
return compositor->windows;
}
void
meta_set_stage_input_region (MetaScreen *screen,
meta_set_stage_input_region (MetaDisplay *display,
XserverRegion region)
{
/* As a wayland compositor we can simply ignore all this trickery
@@ -230,9 +231,8 @@ meta_set_stage_input_region (MetaScreen *screen,
*/
if (!meta_is_wayland_compositor ())
{
MetaDisplay *display = screen->display;
MetaCompositor *compositor = display->compositor;
Display *xdpy = meta_display_get_xdisplay (display);
Display *xdpy = meta_x11_display_get_xdisplay (display->x11_display);
Window xstage = clutter_x11_get_stage_window (CLUTTER_STAGE (compositor->stage));
XFixesSetWindowShapeRegion (xdpy, xstage, ShapeInput, 0, 0, region);
@@ -247,7 +247,7 @@ meta_set_stage_input_region (MetaScreen *screen,
}
void
meta_empty_stage_input_region (MetaScreen *screen)
meta_empty_stage_input_region (MetaDisplay *display)
{
/* Using a static region here is a bit hacky, but Metacity never opens more than
* one XDisplay, so it works fine. */
@@ -255,22 +255,21 @@ meta_empty_stage_input_region (MetaScreen *screen)
if (region == None)
{
MetaDisplay *display = meta_screen_get_display (screen);
Display *xdpy = meta_display_get_xdisplay (display);
Display *xdpy = meta_x11_display_get_xdisplay (display->x11_display);
region = XFixesCreateRegion (xdpy, NULL, 0);
}
meta_set_stage_input_region (screen, region);
meta_set_stage_input_region (display, region);
}
void
meta_focus_stage_window (MetaScreen *screen,
guint32 timestamp)
meta_focus_stage_window (MetaDisplay *display,
guint32 timestamp)
{
ClutterStage *stage;
Window window;
stage = CLUTTER_STAGE (meta_get_stage_for_screen (screen));
stage = CLUTTER_STAGE (meta_get_stage_for_display (display));
if (!stage)
return;
@@ -279,14 +278,13 @@ meta_focus_stage_window (MetaScreen *screen,
if (window == None)
return;
meta_display_set_input_focus_xwindow (screen->display,
screen,
window,
timestamp);
meta_x11_display_set_input_focus_xwindow (display->x11_display,
window,
timestamp);
}
gboolean
meta_stage_is_focused (MetaScreen *screen)
meta_stage_is_focused (MetaDisplay *display)
{
ClutterStage *stage;
Window window;
@@ -294,7 +292,7 @@ meta_stage_is_focused (MetaScreen *screen)
if (meta_is_wayland_compositor ())
return TRUE;
stage = CLUTTER_STAGE (meta_get_stage_for_screen (screen));
stage = CLUTTER_STAGE (meta_get_stage_for_display (display));
if (!stage)
return FALSE;
@@ -303,7 +301,7 @@ meta_stage_is_focused (MetaScreen *screen)
if (window == None)
return FALSE;
return (screen->display->focus_xwindow == window);
return (display->x11_display->focus_xwindow == window);
}
static gboolean
@@ -364,11 +362,14 @@ meta_begin_modal_for_plugin (MetaCompositor *compositor,
if (is_modal (display) || display->grab_op != META_GRAB_OP_NONE)
return FALSE;
/* XXX: why is this needed? */
XIUngrabDevice (display->xdisplay,
META_VIRTUAL_CORE_POINTER_ID,
timestamp);
XSync (display->xdisplay, False);
if (display->x11_display)
{
/* XXX: why is this needed? */
XIUngrabDevice (display->x11_display->xdisplay,
META_VIRTUAL_CORE_POINTER_ID,
timestamp);
XSync (display->x11_display->xdisplay, False);
}
if (!grab_devices (options, timestamp))
return FALSE;
@@ -380,7 +381,7 @@ meta_begin_modal_for_plugin (MetaCompositor *compositor,
display->grab_have_keyboard = TRUE;
g_signal_emit_by_name (display, "grab-op-begin",
meta_plugin_get_screen (plugin),
meta_plugin_get_display (plugin),
display->grab_window, display->grab_op);
if (meta_is_wayland_compositor ())
@@ -407,7 +408,7 @@ meta_end_modal_for_plugin (MetaCompositor *compositor,
g_return_if_fail (is_modal (display));
g_signal_emit_by_name (display, "grab-op-end",
meta_plugin_get_screen (plugin),
meta_plugin_get_display (plugin),
display->grab_window, display->grab_op);
display->grab_op = META_GRAB_OP_NONE;
@@ -440,14 +441,13 @@ after_stage_paint (ClutterStage *stage,
}
static void
redirect_windows (MetaScreen *screen)
redirect_windows (MetaX11Display *x11_display)
{
MetaDisplay *display = meta_screen_get_display (screen);
Display *xdisplay = meta_display_get_xdisplay (display);
Window xroot = meta_screen_get_xroot (screen);
int screen_number = meta_screen_get_screen_number (screen);
guint n_retries;
guint max_retries;
Display *xdisplay = meta_x11_display_get_xdisplay (x11_display);
Window xroot = meta_x11_display_get_xroot (x11_display);
int screen_number = meta_x11_display_get_screen_number (x11_display);
guint n_retries;
guint max_retries;
if (meta_get_replace_current_wm ())
max_retries = 5;
@@ -462,11 +462,11 @@ redirect_windows (MetaScreen *screen)
*/
while (TRUE)
{
meta_error_trap_push (display);
meta_x11_error_trap_push (x11_display);
XCompositeRedirectSubwindows (xdisplay, xroot, CompositeRedirectManual);
XSync (xdisplay, FALSE);
if (!meta_error_trap_pop_with_return (display))
if (!meta_x11_error_trap_pop_with_return (x11_display))
break;
if (n_retries == max_retries)
@@ -474,7 +474,7 @@ redirect_windows (MetaScreen *screen)
/* This probably means that a non-WM compositor like xcompmgr is running;
* we have no way to get it to exit */
meta_fatal (_("Another compositing manager is already running on screen %i on display “%s”."),
screen_number, display->name);
screen_number, x11_display->name);
}
n_retries++;
@@ -486,11 +486,14 @@ void
meta_compositor_manage (MetaCompositor *compositor)
{
MetaDisplay *display = compositor->display;
Display *xdisplay = display->xdisplay;
MetaScreen *screen = display->screen;
Display *xdisplay = NULL;
MetaBackend *backend = meta_get_backend ();
meta_screen_set_cm_selection (display->screen);
if (display->x11_display)
{
xdisplay = display->x11_display->xdisplay;
meta_x11_display_set_cm_selection (display->x11_display);
}
compositor->stage = meta_backend_get_stage (backend);
@@ -511,9 +514,9 @@ meta_compositor_manage (MetaCompositor *compositor)
clutter_stage_set_sync_delay (CLUTTER_STAGE (compositor->stage), META_SYNC_DELAY);
compositor->window_group = meta_window_group_new (screen);
compositor->top_window_group = meta_window_group_new (screen);
compositor->feedback_group = meta_window_group_new (screen);
compositor->window_group = meta_window_group_new (display);
compositor->top_window_group = meta_window_group_new (display);
compositor->feedback_group = meta_window_group_new (display);
clutter_actor_add_child (compositor->stage, compositor->window_group);
clutter_actor_add_child (compositor->stage, compositor->top_window_group);
@@ -530,13 +533,13 @@ meta_compositor_manage (MetaCompositor *compositor)
{
Window xwin;
compositor->output = screen->composite_overlay_window;
compositor->output = display->x11_display->composite_overlay_window;
xwin = meta_backend_x11_get_xwindow (META_BACKEND_X11 (backend));
XReparentWindow (xdisplay, xwin, compositor->output, 0, 0);
meta_empty_stage_input_region (screen);
meta_empty_stage_input_region (display);
/* Make sure there isn't any left-over output shape on the
* overlay window by setting the whole screen to be an
@@ -556,7 +559,8 @@ meta_compositor_manage (MetaCompositor *compositor)
compositor->have_x11_sync_object = meta_sync_ring_init (xdisplay);
}
redirect_windows (display->screen);
if (display->x11_display)
redirect_windows (display->x11_display);
compositor->plugin_mgr = meta_plugin_manager_new (compositor);
}
@@ -566,9 +570,9 @@ meta_compositor_unmanage (MetaCompositor *compositor)
{
if (!meta_is_wayland_compositor ())
{
MetaDisplay *display = compositor->display;
Display *xdisplay = meta_display_get_xdisplay (display);
Window xroot = display->screen->xroot;
MetaX11Display *display = compositor->display->x11_display;
Display *xdisplay = display->xdisplay;
Window xroot = display->xroot;
/* This is the most important part of cleanup - we have to do this
* before giving up the window manager selection or the next
@@ -593,7 +597,7 @@ meta_shape_cow_for_window (MetaCompositor *compositor,
MetaWindow *window)
{
MetaDisplay *display = compositor->display;
Display *xdisplay = meta_display_get_xdisplay (display);
Display *xdisplay = meta_x11_display_get_xdisplay (display->x11_display);
if (window == NULL)
XFixesSetWindowShapeRegion (xdisplay, compositor->output, ShapeBounding, 0, 0, None);
@@ -611,7 +615,7 @@ meta_shape_cow_for_window (MetaCompositor *compositor,
window_bounds.width = rect.width;
window_bounds.height = rect.height;
meta_screen_get_size (display->screen, &width, &height);
meta_display_get_size (display, &width, &height);
screen_rect.x = 0;
screen_rect.y = 0;
screen_rect.width = width;
@@ -654,12 +658,12 @@ meta_compositor_add_window (MetaCompositor *compositor,
{
MetaDisplay *display = compositor->display;
meta_error_trap_push (display);
meta_x11_error_trap_push (display->x11_display);
meta_window_actor_new (window);
sync_actor_stacking (compositor);
meta_error_trap_pop (display);
meta_x11_error_trap_pop (display->x11_display);
}
void
@@ -739,8 +743,10 @@ meta_compositor_process_event (MetaCompositor *compositor,
XEvent *event,
MetaWindow *window)
{
MetaX11Display *x11_display = compositor->display->x11_display;
if (!meta_is_wayland_compositor () &&
event->type == meta_display_get_damage_event_base (compositor->display) + XDamageNotify)
event->type == meta_x11_display_get_damage_event_base (x11_display) + XDamageNotify)
{
/* Core code doesn't handle damage events, so we need to extract the MetaWindow
* ourselves
@@ -748,7 +754,7 @@ meta_compositor_process_event (MetaCompositor *compositor,
if (window == NULL)
{
Window xwin = ((XDamageNotifyEvent *) event)->drawable;
window = meta_display_lookup_x_window (compositor->display, xwin);
window = meta_x11_display_lookup_x_window (x11_display, xwin);
}
if (window)
@@ -1109,7 +1115,7 @@ meta_pre_paint_func (gpointer data)
if (compositor->have_x11_sync_object)
compositor->have_x11_sync_object = meta_sync_ring_insert_wait ();
else
XSync (compositor->display->xdisplay, False);
XSync (compositor->display->x11_display->xdisplay, False);
}
return TRUE;
@@ -1204,44 +1210,44 @@ meta_compositor_new (MetaDisplay *display)
/**
* meta_get_overlay_window: (skip)
* @screen: a #MetaScreen
* @display: a #MetaDisplay
*
*/
Window
meta_get_overlay_window (MetaScreen *screen)
meta_get_overlay_window (MetaDisplay *display)
{
MetaCompositor *compositor = get_compositor_for_screen (screen);
MetaCompositor *compositor = get_compositor_for_display (display);
return compositor->output;
}
/**
* meta_disable_unredirect_for_screen:
* @screen: a #MetaScreen
* meta_disable_unredirect_for_display:
* @display: a #MetaDisplay
*
* Disables unredirection, can be usefull in situations where having
* unredirected windows is undesireable like when recording a video.
*
*/
void
meta_disable_unredirect_for_screen (MetaScreen *screen)
meta_disable_unredirect_for_display (MetaDisplay *display)
{
MetaCompositor *compositor = get_compositor_for_screen (screen);
MetaCompositor *compositor = get_compositor_for_display (display);
compositor->disable_unredirect_count++;
}
/**
* meta_enable_unredirect_for_screen:
* @screen: a #MetaScreen
* meta_enable_unredirect_for_display:
* @display: a #MetaDisplay
*
* Enables unredirection which reduces the overhead for apps like games.
*
*/
void
meta_enable_unredirect_for_screen (MetaScreen *screen)
meta_enable_unredirect_for_display (MetaDisplay *display)
{
MetaCompositor *compositor = get_compositor_for_screen (screen);
MetaCompositor *compositor = get_compositor_for_display (display);
if (compositor->disable_unredirect_count == 0)
g_warning ("Called enable_unredirect_for_screen while unredirection is enabled.");
g_warning ("Called enable_unredirect_for_display while unredirection is enabled.");
if (compositor->disable_unredirect_count > 0)
compositor->disable_unredirect_count--;
}
@@ -1258,15 +1264,15 @@ flash_out_completed (ClutterTimeline *timeline,
}
void
meta_compositor_flash_screen (MetaCompositor *compositor,
MetaScreen *screen)
meta_compositor_flash_display (MetaCompositor *compositor,
MetaDisplay *display)
{
ClutterActor *stage;
ClutterActor *flash;
ClutterTransition *transition;
gfloat width, height;
stage = meta_get_stage_for_screen (screen);
stage = meta_get_stage_for_display (display);
clutter_actor_get_size (stage, &width, &height);
flash = clutter_actor_new ();
@@ -1422,3 +1428,11 @@ meta_compositor_create_close_dialog (MetaCompositor *compositor,
return meta_plugin_manager_create_close_dialog (compositor->plugin_mgr,
window);
}
MetaInhibitShortcutsDialog *
meta_compositor_create_inhibit_shortcuts_dialog (MetaCompositor *compositor,
MetaWindow *window)
{
return meta_plugin_manager_create_inhibit_shortcuts_dialog (compositor->plugin_mgr,
window);
}

View File

@@ -3,7 +3,6 @@
#ifndef META_BACKGROUND_ACTOR_PRIVATE_H
#define META_BACKGROUND_ACTOR_PRIVATE_H
#include <meta/screen.h>
#include <meta/meta-background-actor.h>
cairo_region_t *meta_background_actor_get_clip_region (MetaBackgroundActor *self);

View File

@@ -78,14 +78,15 @@
#include "cogl-utils.h"
#include "clutter-utils.h"
#include <meta/errors.h>
#include <meta/meta-x11-errors.h>
#include "meta-background-actor-private.h"
#include "meta-background-private.h"
#include "meta-cullable.h"
#include "meta/display.h"
enum
{
PROP_META_SCREEN = 1,
PROP_META_DISPLAY = 1,
PROP_MONITOR,
PROP_BACKGROUND,
PROP_VIGNETTE,
@@ -127,7 +128,7 @@ typedef enum {
struct _MetaBackgroundActorPrivate
{
MetaScreen *screen;
MetaDisplay *display;
int monitor;
MetaBackground *background;
@@ -186,7 +187,9 @@ get_preferred_size (MetaBackgroundActor *self,
MetaBackgroundActorPrivate *priv = META_BACKGROUND_ACTOR (self)->priv;
MetaRectangle monitor_geometry;
meta_screen_get_monitor_geometry (priv->screen, priv->monitor, &monitor_geometry);
meta_display_get_monitor_geometry (priv->display,
priv->monitor,
&monitor_geometry);
if (width != NULL)
*width = monitor_geometry.width;
@@ -311,6 +314,8 @@ setup_pipeline (MetaBackgroundActor *self,
cogl_pipeline_set_layer_texture (priv->pipeline, 0, texture);
cogl_pipeline_set_layer_wrap_mode (priv->pipeline, 0, wrap_mode);
priv->changed &= ~CHANGED_BACKGROUND;
}
if ((priv->changed & CHANGED_VIGNETTE_PARAMETERS) != 0)
@@ -319,6 +324,8 @@ setup_pipeline (MetaBackgroundActor *self,
cogl_pipeline_get_uniform_location (priv->pipeline,
"vignette_sharpness"),
priv->vignette_sharpness);
priv->changed &= ~CHANGED_VIGNETTE_PARAMETERS;
}
if (priv->vignette)
@@ -474,8 +481,8 @@ meta_background_actor_set_property (GObject *object,
switch (prop_id)
{
case PROP_META_SCREEN:
priv->screen = g_value_get_object (value);
case PROP_META_DISPLAY:
priv->display = g_value_get_object (value);
break;
case PROP_MONITOR:
priv->monitor = g_value_get_int (value);
@@ -517,8 +524,8 @@ meta_background_actor_get_property (GObject *object,
switch (prop_id)
{
case PROP_META_SCREEN:
g_value_set_object (value, priv->screen);
case PROP_META_DISPLAY:
g_value_set_object (value, priv->display);
break;
case PROP_MONITOR:
g_value_set_int (value, priv->monitor);
@@ -559,14 +566,14 @@ meta_background_actor_class_init (MetaBackgroundActorClass *klass)
actor_class->get_paint_volume = meta_background_actor_get_paint_volume;
actor_class->paint = meta_background_actor_paint;
param_spec = g_param_spec_object ("meta-screen",
"MetaScreen",
"MetaScreen",
META_TYPE_SCREEN,
param_spec = g_param_spec_object ("meta-display",
"MetaDisplay",
"MetaDisplay",
META_TYPE_DISPLAY,
G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY);
g_object_class_install_property (object_class,
PROP_META_SCREEN,
PROP_META_DISPLAY,
param_spec);
param_spec = g_param_spec_int ("monitor",
@@ -643,13 +650,13 @@ meta_background_actor_init (MetaBackgroundActor *self)
* Return value: the newly created background actor
*/
ClutterActor *
meta_background_actor_new (MetaScreen *screen,
int monitor)
meta_background_actor_new (MetaDisplay *display,
int monitor)
{
MetaBackgroundActor *self;
self = g_object_new (META_TYPE_BACKGROUND_ACTOR,
"meta-screen", screen,
"meta-display", display,
"monitor", monitor,
NULL);

View File

@@ -17,9 +17,11 @@
* along with this program; if not, see <http://www.gnu.org/licenses/>.
*/
#include <meta/display.h>
#include <meta/util.h>
#include <meta/meta-background.h>
#include <meta/meta-background-image.h>
#include <meta/meta-monitor-manager.h>
#include "meta-background-private.h"
#include "cogl-utils.h"
@@ -44,7 +46,7 @@ struct _MetaBackgroundMonitor
struct _MetaBackgroundPrivate
{
MetaScreen *screen;
MetaDisplay *display;
MetaBackgroundMonitor *monitors;
int n_monitors;
@@ -68,7 +70,7 @@ struct _MetaBackgroundPrivate
enum
{
PROP_META_SCREEN = 1,
PROP_META_DISPLAY = 1,
PROP_MONITOR,
};
@@ -128,8 +130,7 @@ free_wallpaper_texture (MetaBackground *self)
}
static void
on_monitors_changed (MetaScreen *screen,
MetaBackground *self)
on_monitors_changed (MetaBackground *self)
{
MetaBackgroundPrivate *priv = self->priv;
@@ -138,11 +139,11 @@ on_monitors_changed (MetaScreen *screen,
priv->monitors = NULL;
priv->n_monitors = 0;
if (priv->screen)
if (priv->display)
{
int i;
priv->n_monitors = meta_screen_get_n_monitors (screen);
priv->n_monitors = meta_display_get_n_monitors (priv->display);
priv->monitors = g_new0 (MetaBackgroundMonitor, priv->n_monitors);
for (i = 0; i < priv->n_monitors; i++)
@@ -151,27 +152,14 @@ on_monitors_changed (MetaScreen *screen,
}
static void
set_screen (MetaBackground *self,
MetaScreen *screen)
set_display (MetaBackground *self,
MetaDisplay *display)
{
MetaBackgroundPrivate *priv = self->priv;
if (priv->screen != NULL)
{
g_signal_handlers_disconnect_by_func (priv->screen,
(gpointer)on_monitors_changed,
self);
}
priv->display = display;
priv->screen = screen;
if (priv->screen != NULL)
{
g_signal_connect (priv->screen, "monitors-changed",
G_CALLBACK (on_monitors_changed), self);
}
on_monitors_changed (priv->screen, self);
on_monitors_changed (self);
}
static void
@@ -182,8 +170,8 @@ meta_background_set_property (GObject *object,
{
switch (prop_id)
{
case PROP_META_SCREEN:
set_screen (META_BACKGROUND (object), g_value_get_object (value));
case PROP_META_DISPLAY:
set_display (META_BACKGROUND (object), g_value_get_object (value));
break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
@@ -201,8 +189,8 @@ meta_background_get_property (GObject *object,
switch (prop_id)
{
case PROP_META_SCREEN:
g_value_set_object (value, priv->screen);
case PROP_META_DISPLAY:
g_value_set_object (value, priv->display);
break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
@@ -304,7 +292,7 @@ meta_background_dispose (GObject *object)
set_file (self, &priv->file1, &priv->background_image1, NULL);
set_file (self, &priv->file2, &priv->background_image2, NULL);
set_screen (self, NULL);
set_display (self, NULL);
G_OBJECT_CLASS (meta_background_parent_class)->dispose (object);
}
@@ -322,11 +310,15 @@ meta_background_constructed (GObject *object)
{
MetaBackground *self = META_BACKGROUND (object);
MetaBackgroundPrivate *priv = self->priv;
MetaMonitorManager *monitor_manager = meta_monitor_manager_get ();
G_OBJECT_CLASS (meta_background_parent_class)->constructed (object);
g_signal_connect_object (meta_screen_get_display (priv->screen), "gl-video-memory-purged",
g_signal_connect_object (priv->display, "gl-video-memory-purged",
G_CALLBACK (mark_changed), object, G_CONNECT_SWAPPED);
g_signal_connect_object (monitor_manager, "monitors-changed",
G_CALLBACK (on_monitors_changed), self, G_CONNECT_SWAPPED);
}
static void
@@ -351,14 +343,14 @@ meta_background_class_init (MetaBackgroundClass *klass)
NULL, NULL, NULL,
G_TYPE_NONE, 0);
param_spec = g_param_spec_object ("meta-screen",
"MetaScreen",
"MetaScreen",
META_TYPE_SCREEN,
param_spec = g_param_spec_object ("meta-display",
"MetaDisplay",
"MetaDisplay",
META_TYPE_DISPLAY,
G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY);
g_object_class_install_property (object_class,
PROP_META_SCREEN,
PROP_META_DISPLAY,
param_spec);
}
@@ -407,7 +399,7 @@ get_texture_area (MetaBackground *self,
set_texture_area_from_monitor_area (monitor_rect, texture_area);
break;
case G_DESKTOP_BACKGROUND_STYLE_WALLPAPER:
meta_screen_get_size (priv->screen, &screen_width, &screen_height);
meta_display_get_size (priv->display, &screen_width, &screen_height);
/* Start off by centering a tile in the middle of the
* total screen area.
@@ -476,7 +468,7 @@ get_texture_area (MetaBackground *self,
/* paint region is the union of all monitors, with the origin
* of the region set to align with monitor associated with the background.
*/
meta_screen_get_size (priv->screen, &screen_width, &screen_height);
meta_display_get_size (priv->display, &screen_width, &screen_height);
/* unclipped texture area is whole screen */
image_area.width = screen_width;
@@ -750,7 +742,9 @@ meta_background_get_texture (MetaBackground *self,
monitor = &priv->monitors[monitor_index];
meta_screen_get_monitor_geometry (priv->screen, monitor_index, &geometry);
meta_display_get_monitor_geometry (priv->display,
monitor_index,
&geometry);
monitor_area.x = geometry.x;
monitor_area.y = geometry.y;
monitor_area.width = geometry.width;
@@ -879,10 +873,10 @@ meta_background_get_texture (MetaBackground *self,
}
MetaBackground *
meta_background_new (MetaScreen *screen)
meta_background_new (MetaDisplay *display)
{
return g_object_new (META_TYPE_BACKGROUND,
"meta-screen", screen,
"meta-display", display,
NULL);
}

View File

@@ -27,6 +27,7 @@
#include "core/display-private.h"
#include "backends/meta-dnd-private.h"
#include "meta/meta-dnd.h"
#include "x11/meta-x11-display-private.h"
struct _MetaDndClass
{
@@ -139,7 +140,7 @@ meta_dnd_notify_dnd_leave (MetaDnd *dnd)
gboolean
meta_dnd_handle_xdnd_event (MetaBackend *backend,
MetaCompositor *compositor,
MetaDisplay *display,
Display *xdisplay,
XEvent *xev)
{
MetaDnd *dnd = meta_backend_get_dnd (backend);
@@ -152,23 +153,23 @@ meta_dnd_handle_xdnd_event (MetaBackend *backend,
xev->xany.window != clutter_x11_get_stage_window (CLUTTER_STAGE (compositor->stage)))
return FALSE;
if (xev->xclient.message_type == gdk_x11_get_xatom_by_name ("XdndPosition"))
if (xev->xclient.message_type == XInternAtom (xdisplay, "XdndPosition", TRUE))
{
XEvent xevent;
Window src = xev->xclient.data.l[0];
memset (&xevent, 0, sizeof(xevent));
xevent.xany.type = ClientMessage;
xevent.xany.display = display->xdisplay;
xevent.xany.display = xdisplay;
xevent.xclient.window = src;
xevent.xclient.message_type = gdk_x11_get_xatom_by_name ("XdndStatus");
xevent.xclient.message_type = XInternAtom (xdisplay, "XdndStatus", TRUE);
xevent.xclient.format = 32;
xevent.xclient.data.l[0] = output_window;
/* flags: bit 0: will we accept the drop? bit 1: do we want more position messages */
xevent.xclient.data.l[1] = 2;
xevent.xclient.data.l[4] = None;
XSendEvent (display->xdisplay, src, False, 0, &xevent);
XSendEvent (xdisplay, src, False, 0, &xevent);
meta_dnd_notify_dnd_position_change (dnd,
(int)(xev->xclient.data.l[2] >> 16),
@@ -176,13 +177,13 @@ meta_dnd_handle_xdnd_event (MetaBackend *backend,
return TRUE;
}
else if (xev->xclient.message_type == gdk_x11_get_xatom_by_name ("XdndLeave"))
else if (xev->xclient.message_type == XInternAtom (xdisplay, "XdndLeave", TRUE))
{
meta_dnd_notify_dnd_leave (dnd);
return TRUE;
}
else if (xev->xclient.message_type == gdk_x11_get_xatom_by_name ("XdndEnter"))
else if (xev->xclient.message_type == XInternAtom (xdisplay, "XdndEnter", TRUE))
{
meta_dnd_notify_dnd_enter (dnd);

View File

@@ -23,11 +23,12 @@
#include "compositor-private.h"
#include "meta-plugin-manager.h"
#include <meta/prefs.h>
#include <meta/errors.h>
#include <meta/meta-x11-errors.h>
#include <meta/workspace.h>
#include "meta-module.h"
#include "window-private.h"
#include "meta-close-dialog-default-private.h"
#include "meta-inhibit-shortcuts-dialog-default-private.h"
#include <string.h>
#include <stdlib.h>
@@ -390,3 +391,16 @@ meta_plugin_manager_create_close_dialog (MetaPluginManager *plugin_mgr,
return meta_close_dialog_default_new (window);
}
MetaInhibitShortcutsDialog *
meta_plugin_manager_create_inhibit_shortcuts_dialog (MetaPluginManager *plugin_mgr,
MetaWindow *window)
{
MetaPlugin *plugin = plugin_mgr->plugin;
MetaPluginClass *klass = META_PLUGIN_GET_CLASS (plugin);
if (klass->create_inhibit_shortcuts_dialog)
return klass->create_inhibit_shortcuts_dialog (plugin, window);
return meta_inhibit_shortcuts_dialog_default_new (window);
}

View File

@@ -23,7 +23,6 @@
#define META_PLUGIN_MANAGER_H_
#include <meta/types.h>
#include <meta/screen.h>
#include <meta/meta-plugin.h>
typedef enum {
@@ -94,4 +93,8 @@ void meta_plugin_manager_show_window_menu_for_rect (MetaPluginManager *mgr,
MetaCloseDialog * meta_plugin_manager_create_close_dialog (MetaPluginManager *plugin_mgr,
MetaWindow *window);
MetaInhibitShortcutsDialog *
meta_plugin_manager_create_inhibit_shortcuts_dialog (MetaPluginManager *plugin_mgr,
MetaWindow *window);
#endif

View File

@@ -28,7 +28,6 @@
#include <meta/meta-plugin.h>
#include "meta-plugin-manager.h"
#include <meta/screen.h>
#include <meta/display.h>
#include <meta/util.h>
@@ -191,19 +190,19 @@ meta_plugin_end_modal (MetaPlugin *plugin,
}
/**
* meta_plugin_get_screen:
* meta_plugin_get_display:
* @plugin: a #MetaPlugin
*
* Gets the #MetaScreen corresponding to a plugin.
* Gets the #MetaDisplay corresponding to a plugin.
*
* Return value: (transfer none): the #MetaScreen for the plugin
* Return value: (transfer none): the #MetaDisplay for the plugin
*/
MetaScreen *
meta_plugin_get_screen (MetaPlugin *plugin)
MetaDisplay *
meta_plugin_get_display (MetaPlugin *plugin)
{
MetaPluginPrivate *priv = META_PLUGIN (plugin)->priv;
return priv->compositor->display->screen;
return priv->compositor->display;
}
void

View File

@@ -30,11 +30,12 @@
#include <X11/extensions/Xcomposite.h>
#include <cogl/winsys/cogl-texture-pixmap-x11.h>
#include <meta/errors.h>
#include <meta/meta-x11-errors.h>
#include "window-private.h"
#include "meta-shaped-texture-private.h"
#include "meta-cullable.h"
#include "x11/window-x11.h"
#include "x11/meta-x11-display-private.h"
struct _MetaSurfaceActorX11Private
{
@@ -68,15 +69,15 @@ free_damage (MetaSurfaceActorX11 *self)
{
MetaSurfaceActorX11Private *priv = meta_surface_actor_x11_get_instance_private (self);
MetaDisplay *display = priv->display;
Display *xdisplay = meta_display_get_xdisplay (display);
Display *xdisplay = meta_x11_display_get_xdisplay (display->x11_display);
if (priv->damage == None)
return;
meta_error_trap_push (display);
meta_x11_error_trap_push (display->x11_display);
XDamageDestroy (xdisplay, priv->damage);
priv->damage = None;
meta_error_trap_pop (display);
meta_x11_error_trap_pop (display->x11_display);
}
static void
@@ -84,7 +85,7 @@ detach_pixmap (MetaSurfaceActorX11 *self)
{
MetaSurfaceActorX11Private *priv = meta_surface_actor_x11_get_instance_private (self);
MetaDisplay *display = priv->display;
Display *xdisplay = meta_display_get_xdisplay (display);
Display *xdisplay = meta_x11_display_get_xdisplay (display->x11_display);
MetaShapedTexture *stex = meta_surface_actor_get_texture (META_SURFACE_ACTOR (self));
if (priv->pixmap == None)
@@ -97,10 +98,10 @@ detach_pixmap (MetaSurfaceActorX11 *self)
meta_shaped_texture_set_texture (stex, NULL);
cogl_flush ();
meta_error_trap_push (display);
meta_x11_error_trap_push (display->x11_display);
XFreePixmap (xdisplay, priv->pixmap);
priv->pixmap = None;
meta_error_trap_pop (display);
meta_x11_error_trap_pop (display->x11_display);
g_clear_pointer (&priv->texture, cogl_object_unref);
}
@@ -138,7 +139,7 @@ update_pixmap (MetaSurfaceActorX11 *self)
{
MetaSurfaceActorX11Private *priv = meta_surface_actor_x11_get_instance_private (self);
MetaDisplay *display = priv->display;
Display *xdisplay = meta_display_get_xdisplay (display);
Display *xdisplay = meta_x11_display_get_xdisplay (display->x11_display);
if (priv->size_changed)
{
@@ -151,10 +152,10 @@ update_pixmap (MetaSurfaceActorX11 *self)
Pixmap new_pixmap;
Window xwindow = meta_window_x11_get_toplevel_xwindow (priv->window);
meta_error_trap_push (display);
meta_x11_error_trap_push (display->x11_display);
new_pixmap = XCompositeNameWindowPixmap (xdisplay, xwindow);
if (meta_error_trap_pop_with_return (display) != Success)
if (meta_x11_error_trap_pop_with_return (display->x11_display) != Success)
{
/* Probably a BadMatch if the window isn't viewable; we could
* GrabServer/GetWindowAttributes/NameWindowPixmap/UngrabServer/Sync
@@ -223,13 +224,13 @@ meta_surface_actor_x11_pre_paint (MetaSurfaceActor *actor)
MetaSurfaceActorX11 *self = META_SURFACE_ACTOR_X11 (actor);
MetaSurfaceActorX11Private *priv = meta_surface_actor_x11_get_instance_private (self);
MetaDisplay *display = priv->display;
Display *xdisplay = meta_display_get_xdisplay (display);
Display *xdisplay = meta_x11_display_get_xdisplay (display->x11_display);
if (priv->received_damage)
{
meta_error_trap_push (display);
meta_x11_error_trap_push (display->x11_display);
XDamageSubtract (xdisplay, priv->damage, None, None);
meta_error_trap_pop (display);
meta_x11_error_trap_pop (display->x11_display);
priv->received_damage = FALSE;
}
@@ -311,10 +312,10 @@ sync_unredirected (MetaSurfaceActorX11 *self)
{
MetaSurfaceActorX11Private *priv = meta_surface_actor_x11_get_instance_private (self);
MetaDisplay *display = priv->display;
Display *xdisplay = meta_display_get_xdisplay (display);
Display *xdisplay = meta_x11_display_get_xdisplay (display->x11_display);
Window xwindow = meta_window_x11_get_toplevel_xwindow (priv->window);
meta_error_trap_push (display);
meta_x11_error_trap_push (display->x11_display);
if (priv->unredirected)
{
@@ -326,7 +327,7 @@ sync_unredirected (MetaSurfaceActorX11 *self)
XCompositeRedirectWindow (xdisplay, xwindow, CompositeRedirectManual);
}
meta_error_trap_pop (display);
meta_x11_error_trap_pop (display->x11_display);
}
static void
@@ -403,7 +404,7 @@ static void
create_damage (MetaSurfaceActorX11 *self)
{
MetaSurfaceActorX11Private *priv = meta_surface_actor_x11_get_instance_private (self);
Display *xdisplay = meta_display_get_xdisplay (priv->display);
Display *xdisplay = meta_x11_display_get_xdisplay (priv->display->x11_display);
Window xwindow = meta_window_x11_get_toplevel_xwindow (priv->window);
priv->damage = XDamageCreate (xdisplay, xwindow, XDamageReportBoundingBox);

View File

@@ -16,7 +16,7 @@
#include <string.h>
#include <meta/display.h>
#include <meta/errors.h>
#include <meta/meta-x11-errors.h>
#include "frame.h"
#include <meta/window.h>
#include <meta/meta-shaped-texture.h>
@@ -36,6 +36,8 @@
#include "meta-surface-actor.h"
#include "meta-surface-actor-x11.h"
#include "x11/meta-x11-display-private.h"
#ifdef HAVE_WAYLAND
#include "meta-surface-actor-wayland.h"
#include "wayland/meta-wayland-surface.h"
@@ -1944,7 +1946,7 @@ do_send_frame_drawn (MetaWindowActor *self, FrameData *frame)
{
MetaWindowActorPrivate *priv = self->priv;
MetaDisplay *display = meta_window_get_display (priv->window);
Display *xdisplay = meta_display_get_xdisplay (display);
Display *xdisplay = meta_x11_display_get_xdisplay (display->x11_display);
XClientMessageEvent ev = { 0, };
@@ -1954,17 +1956,17 @@ do_send_frame_drawn (MetaWindowActor *self, FrameData *frame)
ev.type = ClientMessage;
ev.window = meta_window_get_xwindow (priv->window);
ev.message_type = display->atom__NET_WM_FRAME_DRAWN;
ev.message_type = display->x11_display->atom__NET_WM_FRAME_DRAWN;
ev.format = 32;
ev.data.l[0] = frame->sync_request_serial & G_GUINT64_CONSTANT(0xffffffff);
ev.data.l[1] = frame->sync_request_serial >> 32;
ev.data.l[2] = frame->frame_drawn_time & G_GUINT64_CONSTANT(0xffffffff);
ev.data.l[3] = frame->frame_drawn_time >> 32;
meta_error_trap_push (display);
meta_x11_error_trap_push (display->x11_display);
XSendEvent (xdisplay, ev.window, False, 0, (XEvent*) &ev);
XFlush (xdisplay);
meta_error_trap_pop (display);
meta_x11_error_trap_pop (display->x11_display);
}
void
@@ -2012,13 +2014,13 @@ do_send_frame_timings (MetaWindowActor *self,
{
MetaWindowActorPrivate *priv = self->priv;
MetaDisplay *display = meta_window_get_display (priv->window);
Display *xdisplay = meta_display_get_xdisplay (display);
Display *xdisplay = meta_x11_display_get_xdisplay (display->x11_display);
XClientMessageEvent ev = { 0, };
ev.type = ClientMessage;
ev.window = meta_window_get_xwindow (priv->window);
ev.message_type = display->atom__NET_WM_FRAME_TIMINGS;
ev.message_type = display->x11_display->atom__NET_WM_FRAME_TIMINGS;
ev.format = 32;
ev.data.l[0] = frame->sync_request_serial & G_GUINT64_CONSTANT(0xffffffff);
ev.data.l[1] = frame->sync_request_serial >> 32;
@@ -2038,10 +2040,10 @@ do_send_frame_timings (MetaWindowActor *self,
ev.data.l[3] = refresh_interval;
ev.data.l[4] = 1000 * META_SYNC_DELAY;
meta_error_trap_push (display);
meta_x11_error_trap_push (display->x11_display);
XSendEvent (xdisplay, ev.window, False, 0, (XEvent*) &ev);
XFlush (xdisplay);
meta_error_trap_pop (display);
meta_x11_error_trap_pop (display->x11_display);
}
static void

View File

@@ -13,6 +13,7 @@
#include "meta-window-group.h"
#include "window-private.h"
#include "meta-cullable.h"
#include "display-private.h"
struct _MetaWindowGroupClass
{
@@ -23,7 +24,7 @@ struct _MetaWindowGroup
{
ClutterActor parent;
MetaScreen *screen;
MetaDisplay *display;
};
static void cullable_iface_init (MetaCullableInterface *iface);
@@ -64,7 +65,7 @@ meta_window_group_paint (ClutterActor *actor)
MetaWindowGroup *window_group = META_WINDOW_GROUP (actor);
ClutterActor *stage = clutter_actor_get_stage (actor);
meta_screen_get_size (window_group->screen, &screen_width, &screen_height);
meta_display_get_size (window_group->display, &screen_width, &screen_height);
/* Normally we expect an actor to be drawn at it's position on the screen.
* However, if we're inside the paint of a ClutterClone, that won't be the
@@ -199,13 +200,13 @@ meta_window_group_init (MetaWindowGroup *window_group)
}
ClutterActor *
meta_window_group_new (MetaScreen *screen)
meta_window_group_new (MetaDisplay *display)
{
MetaWindowGroup *window_group;
window_group = g_object_new (META_TYPE_WINDOW_GROUP, NULL);
window_group->screen = screen;
window_group->display = display;
return CLUTTER_ACTOR (window_group);
}

View File

@@ -5,7 +5,7 @@
#include <clutter/clutter.h>
#include <meta/screen.h>
#include <meta/display.h>
/**
* MetaWindowGroup:
@@ -29,7 +29,7 @@ typedef struct _MetaWindowGroupPrivate MetaWindowGroupPrivate;
GType meta_window_group_get_type (void);
ClutterActor *meta_window_group_new (MetaScreen *screen);
ClutterActor *meta_window_group_new (MetaDisplay *display);
gboolean meta_window_group_actor_is_untransformed (ClutterActor *actor,
int *x_origin,

View File

@@ -21,10 +21,12 @@
#include <config.h>
#include <meta/display.h>
#include <meta/meta-plugin.h>
#include <meta/window.h>
#include <meta/meta-background-group.h>
#include <meta/meta-background-actor.h>
#include <meta/meta-monitor-manager.h>
#include <meta/util.h>
#include <glib/gi18n-lib.h>
@@ -38,7 +40,7 @@
#define SWITCH_TIMEOUT 500
#define ACTOR_DATA_KEY "MCCP-Default-actor-data"
#define SCREEN_TILE_PREVIEW_DATA_KEY "MCCP-Default-screen-tile-preview-data"
#define DISPLAY_TILE_PREVIEW_DATA_KEY "MCCP-Default-display-tile-preview-data"
#define META_TYPE_DEFAULT_PLUGIN (meta_default_plugin_get_type ())
#define META_DEFAULT_PLUGIN(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), META_TYPE_DEFAULT_PLUGIN, MetaDefaultPlugin))
@@ -67,7 +69,7 @@ struct _MetaDefaultPluginClass
};
static GQuark actor_data_quark = 0;
static GQuark screen_tile_preview_data_quark = 0;
static GQuark display_tile_preview_data_quark = 0;
static void start (MetaPlugin *plugin);
static void minimize (MetaPlugin *plugin,
@@ -134,14 +136,14 @@ typedef struct
} EffectCompleteData;
typedef struct _ScreenTilePreview
typedef struct _DisplayTilePreview
{
ClutterActor *actor;
GdkRGBA *preview_color;
MetaRectangle tile_rect;
} ScreenTilePreview;
} DisplayTilePreview;
static void
meta_default_plugin_dispose (GObject *object)
@@ -285,8 +287,8 @@ on_switch_workspace_effect_complete (ClutterTimeline *timeline, gpointer data)
{
MetaPlugin *plugin = META_PLUGIN (data);
MetaDefaultPluginPrivate *priv = META_DEFAULT_PLUGIN (plugin)->priv;
MetaScreen *screen = meta_plugin_get_screen (plugin);
GList *l = meta_get_window_actors (screen);
MetaDisplay *display = meta_plugin_get_display (plugin);
GList *l = meta_get_window_actors (display);
while (l)
{
@@ -318,16 +320,18 @@ on_switch_workspace_effect_complete (ClutterTimeline *timeline, gpointer data)
}
static void
on_monitors_changed (MetaScreen *screen,
MetaPlugin *plugin)
on_monitors_changed (MetaMonitorManager *monitor_manager,
MetaPlugin *plugin)
{
MetaDefaultPlugin *self = META_DEFAULT_PLUGIN (plugin);
MetaDisplay *display = meta_plugin_get_display (plugin);
int i, n;
GRand *rand = g_rand_new_with_seed (123456);
clutter_actor_destroy_all_children (self->priv->background_group);
n = meta_screen_get_n_monitors (screen);
n = meta_display_get_n_monitors (display);
for (i = 0; i < n; i++)
{
MetaRectangle rect;
@@ -335,9 +339,9 @@ on_monitors_changed (MetaScreen *screen,
MetaBackground *background;
ClutterColor color;
meta_screen_get_monitor_geometry (screen, i, &rect);
meta_display_get_monitor_geometry (display, i, &rect);
background_actor = meta_background_actor_new (screen, i);
background_actor = meta_background_actor_new (display, i);
clutter_actor_set_position (background_actor, rect.x, rect.y);
clutter_actor_set_size (background_actor, rect.width, rect.height);
@@ -352,7 +356,7 @@ on_monitors_changed (MetaScreen *screen,
g_rand_int_range (rand, 0, 255),
255);
background = meta_background_new (screen);
background = meta_background_new (display);
meta_background_set_color (background, &color);
meta_background_actor_set_background (META_BACKGROUND_ACTOR (background_actor), background);
g_object_unref (background);
@@ -372,17 +376,19 @@ static void
start (MetaPlugin *plugin)
{
MetaDefaultPlugin *self = META_DEFAULT_PLUGIN (plugin);
MetaScreen *screen = meta_plugin_get_screen (plugin);
MetaDisplay *display = meta_plugin_get_display (plugin);
MetaMonitorManager *monitor_manager = meta_monitor_manager_get ();
self->priv->background_group = meta_background_group_new ();
clutter_actor_insert_child_below (meta_get_window_group_for_screen (screen),
clutter_actor_insert_child_below (meta_get_window_group_for_display (display),
self->priv->background_group, NULL);
g_signal_connect (screen, "monitors-changed",
g_signal_connect (monitor_manager, "monitors-changed",
G_CALLBACK (on_monitors_changed), plugin);
on_monitors_changed (screen, plugin);
clutter_actor_show (meta_get_stage_for_screen (screen));
on_monitors_changed (monitor_manager, plugin);
clutter_actor_show (meta_get_stage_for_display (display));
}
static void
@@ -390,7 +396,7 @@ switch_workspace (MetaPlugin *plugin,
gint from, gint to,
MetaMotionDirection direction)
{
MetaScreen *screen;
MetaDisplay *display;
MetaDefaultPluginPrivate *priv = META_DEFAULT_PLUGIN (plugin)->priv;
GList *l;
ClutterActor *workspace0 = clutter_actor_new ();
@@ -398,12 +404,12 @@ switch_workspace (MetaPlugin *plugin,
ClutterActor *stage;
int screen_width, screen_height;
screen = meta_plugin_get_screen (plugin);
stage = meta_get_stage_for_screen (screen);
display = meta_plugin_get_display (plugin);
stage = meta_get_stage_for_display (display);
meta_screen_get_size (screen,
&screen_width,
&screen_height);
meta_display_get_size (display,
&screen_width,
&screen_height);
clutter_actor_set_pivot_point (workspace1, 1.0, 1.0);
clutter_actor_set_position (workspace1,
@@ -421,7 +427,7 @@ switch_workspace (MetaPlugin *plugin,
return;
}
l = g_list_last (meta_get_window_actors (screen));
l = g_list_last (meta_get_window_actors (display));
while (l)
{
@@ -669,36 +675,36 @@ destroy (MetaPlugin *plugin, MetaWindowActor *window_actor)
* Tile preview private data accessor
*/
static void
free_screen_tile_preview (gpointer data)
free_display_tile_preview (gpointer data)
{
ScreenTilePreview *preview = data;
DisplayTilePreview *preview = data;
if (G_LIKELY (preview != NULL)) {
clutter_actor_destroy (preview->actor);
g_slice_free (ScreenTilePreview, preview);
g_slice_free (DisplayTilePreview, preview);
}
}
static ScreenTilePreview *
get_screen_tile_preview (MetaScreen *screen)
static DisplayTilePreview *
get_display_tile_preview (MetaDisplay *display)
{
ScreenTilePreview *preview = g_object_get_qdata (G_OBJECT (screen), screen_tile_preview_data_quark);
DisplayTilePreview *preview = g_object_get_qdata (G_OBJECT (display), display_tile_preview_data_quark);
if (G_UNLIKELY (screen_tile_preview_data_quark == 0))
screen_tile_preview_data_quark = g_quark_from_static_string (SCREEN_TILE_PREVIEW_DATA_KEY);
if (G_UNLIKELY (display_tile_preview_data_quark == 0))
display_tile_preview_data_quark = g_quark_from_static_string (DISPLAY_TILE_PREVIEW_DATA_KEY);
if (G_UNLIKELY (!preview))
{
preview = g_slice_new0 (ScreenTilePreview);
preview = g_slice_new0 (DisplayTilePreview);
preview->actor = clutter_actor_new ();
clutter_actor_set_background_color (preview->actor, CLUTTER_COLOR_Blue);
clutter_actor_set_opacity (preview->actor, 100);
clutter_actor_add_child (meta_get_window_group_for_screen (screen), preview->actor);
g_object_set_qdata_full (G_OBJECT (screen),
screen_tile_preview_data_quark, preview,
free_screen_tile_preview);
clutter_actor_add_child (meta_get_window_group_for_display (display), preview->actor);
g_object_set_qdata_full (G_OBJECT (display),
display_tile_preview_data_quark, preview,
free_display_tile_preview);
}
return preview;
@@ -710,8 +716,8 @@ show_tile_preview (MetaPlugin *plugin,
MetaRectangle *tile_rect,
int tile_monitor_number)
{
MetaScreen *screen = meta_plugin_get_screen (plugin);
ScreenTilePreview *preview = get_screen_tile_preview (screen);
MetaDisplay *display = meta_plugin_get_display (plugin);
DisplayTilePreview *preview = get_display_tile_preview (display);
ClutterActor *window_actor;
if (clutter_actor_is_visible (preview->actor)
@@ -737,8 +743,8 @@ show_tile_preview (MetaPlugin *plugin,
static void
hide_tile_preview (MetaPlugin *plugin)
{
MetaScreen *screen = meta_plugin_get_screen (plugin);
ScreenTilePreview *preview = get_screen_tile_preview (screen);
MetaDisplay *display = meta_plugin_get_display (plugin);
DisplayTilePreview *preview = get_display_tile_preview (display);
clutter_actor_hide (preview->actor);
}

View File

@@ -49,16 +49,80 @@
#include <config.h>
#include "bell.h"
#include "screen-private.h"
#include "window-private.h"
#include "util-private.h"
#include "compositor/compositor-private.h"
#include <meta/prefs.h>
#include <meta/compositor.h>
#ifdef HAVE_LIBCANBERRA
#include <canberra-gtk.h>
#endif
G_DEFINE_TYPE (MetaBell, meta_bell, G_TYPE_OBJECT)
enum
{
IS_AUDIBLE_CHANGED,
LAST_SIGNAL
};
static guint bell_signals [LAST_SIGNAL] = { 0 };
static void
prefs_changed_callback (MetaPreference pref,
void *data)
{
MetaBell *bell = data;
if (pref == META_PREF_AUDIBLE_BELL)
{
g_signal_emit (bell, bell_signals[IS_AUDIBLE_CHANGED], 0,
meta_prefs_bell_is_audible ());
}
}
static void
meta_bell_finalize (GObject *object)
{
MetaBell *bell = META_BELL (object);
meta_prefs_remove_listener (prefs_changed_callback, bell);
G_OBJECT_CLASS (meta_bell_parent_class)->finalize (object);
}
static void
meta_bell_class_init (MetaBellClass *klass)
{
GObjectClass *object_class = G_OBJECT_CLASS (klass);
object_class->finalize = meta_bell_finalize;
bell_signals[IS_AUDIBLE_CHANGED] =
g_signal_new ("is-audible-changed",
G_TYPE_FROM_CLASS (klass),
G_SIGNAL_RUN_LAST,
0,
NULL, NULL, NULL,
G_TYPE_NONE, 1,
G_TYPE_BOOLEAN);
}
static void
meta_bell_init (MetaBell *bell)
{
}
void
meta_bell_new (MetaDisplay *display)
{
if (display->bell)
return;
display->bell = g_object_new (META_TYPE_BELL, NULL);
meta_prefs_add_listener (prefs_changed_callback, display->bell);
}
/**
* bell_flash_fullscreen:
* @display: The display the event came in on
@@ -73,7 +137,7 @@
static void
bell_flash_fullscreen (MetaDisplay *display)
{
meta_compositor_flash_screen (display->compositor, display->screen);
meta_compositor_flash_display (display->compositor, display);
}
/**
@@ -226,68 +290,6 @@ meta_bell_notify (MetaDisplay *display,
return TRUE;
}
void
meta_bell_set_audible (MetaDisplay *display, gboolean audible)
{
#ifdef HAVE_LIBCANBERRA
/* When we are playing sounds using libcanberra support, we handle the
* bell whether its an audible bell or a visible bell */
gboolean enable_system_bell = FALSE;
#else
gboolean enable_system_bell = audible;
#endif /* HAVE_LIBCANBERRA */
XkbChangeEnabledControls (display->xdisplay,
XkbUseCoreKbd,
XkbAudibleBellMask,
enable_system_bell ? XkbAudibleBellMask : 0);
}
gboolean
meta_bell_init (MetaDisplay *display)
{
int xkb_base_error_type, xkb_opcode;
if (!XkbQueryExtension (display->xdisplay, &xkb_opcode,
&display->xkb_base_event_type,
&xkb_base_error_type,
NULL, NULL))
{
display->xkb_base_event_type = -1;
g_message ("could not find XKB extension.");
return FALSE;
}
else
{
unsigned int mask = XkbBellNotifyMask;
gboolean visual_bell_auto_reset = FALSE;
/* TRUE if and when non-broken version is available */
XkbSelectEvents (display->xdisplay,
XkbUseCoreKbd,
XkbBellNotifyMask,
XkbBellNotifyMask);
meta_bell_set_audible (display, meta_prefs_bell_is_audible ());
if (visual_bell_auto_reset) {
XkbSetAutoResetControls (display->xdisplay,
XkbAudibleBellMask,
&mask,
&mask);
}
return TRUE;
}
return FALSE;
}
void
meta_bell_shutdown (MetaDisplay *display)
{
/* TODO: persist initial bell state in display, reset here */
XkbChangeEnabledControls (display->xdisplay,
XkbUseCoreKbd,
XkbAudibleBellMask,
XkbAudibleBellMask);
}
/**
* meta_bell_notify_frame_destroy:
* @frame: The frame which is being destroyed

View File

@@ -17,11 +17,19 @@
* along with this program; if not, see <http://www.gnu.org/licenses/>.
*/
#include <X11/Xlib.h>
#include <X11/XKBlib.h>
#include "display-private.h"
#include "frame.h"
struct _MetaBell
{
GObject parent;
};
#define META_TYPE_BELL (meta_bell_get_type ())
G_DECLARE_FINAL_TYPE (MetaBell, meta_bell, META, BELL, GObject)
void meta_bell_new (MetaDisplay *display);
/**
* meta_bell_notify:
* @display: The display the bell event came in on
@@ -34,48 +42,6 @@
gboolean meta_bell_notify (MetaDisplay *display,
MetaWindow *window);
/**
* meta_bell_set_audible:
* @display: The display we're configuring
* @audible: True for an audible bell, false for a visual bell
*
* Turns the bell to audible or visual. This tells X what to do, but
* not Mutter; you will need to set the "visual bell" pref for that.
*
* If the configure script found we had no XKB, this is a no-op.
*/
void meta_bell_set_audible (MetaDisplay *display, gboolean audible);
/**
* meta_bell_init:
* @display: The display which is opening
*
* Initialises the bell subsystem. This involves intialising
* XKB (which, despite being a keyboard extension, is the
* place to look for bell notifications), then asking it
* to send us bell notifications, and then also switching
* off the audible bell if we're using a visual one ourselves.
*
* \bug There is a line of code that's never run that tells
* XKB to reset the bell status after we quit. Bill H said
* (<http://bugzilla.gnome.org/show_bug.cgi?id=99886#c12>)
* that XFree86's implementation is broken so we shouldn't
* call it, but that was in 2002. Is it working now?
*/
gboolean meta_bell_init (MetaDisplay *display);
/**
* meta_bell_shutdown:
* @display: The display which is closing
*
* Shuts down the bell subsystem.
*
* \bug This is never called! If we had XkbSetAutoResetControls
* enabled in meta_bell_init(), this wouldn't be a problem, but
* we don't.
*/
void meta_bell_shutdown (MetaDisplay *display);
/**
* meta_bell_notify_frame_destroy:
* @frame: The frame which is being destroyed

View File

@@ -24,6 +24,7 @@
#include <config.h>
#include "boxes-private.h"
#include "constraints.h"
#include "meta-workspace-manager-private.h"
#include "workspace-private.h"
#include "place.h"
#include <meta/prefs.h>
@@ -412,7 +413,7 @@ setup_constraint_info (ConstraintInfo *info,
&info->entire_monitor);
}
cur_workspace = window->screen->active_workspace;
cur_workspace = window->display->workspace_manager->active_workspace;
info->usable_screen_region =
meta_workspace_get_onscreen_region (cur_workspace);
info->usable_monitor_region =
@@ -499,7 +500,7 @@ place_window_if_needed(MetaWindow *window,
meta_window_get_work_area_for_logical_monitor (window,
logical_monitor,
&info->work_area_monitor);
cur_workspace = window->screen->active_workspace;
cur_workspace = window->display->workspace_manager->active_workspace;
info->usable_monitor_region =
meta_workspace_get_onmonitor_region (cur_workspace, logical_monitor);
@@ -926,6 +927,7 @@ constrain_maximization (MetaWindow *window,
ConstraintPriority priority,
gboolean check_only)
{
MetaWorkspaceManager *workspace_manager = window->display->workspace_manager;
MetaRectangle target_size;
MetaRectangle min_size, max_size;
gboolean hminbad, vminbad;
@@ -965,7 +967,7 @@ constrain_maximization (MetaWindow *window,
direction = META_DIRECTION_HORIZONTAL;
else
direction = META_DIRECTION_VERTICAL;
active_workspace_struts = window->screen->active_workspace->all_struts;
active_workspace_struts = workspace_manager->active_workspace->all_struts;
target_size = info->current;
meta_rectangle_expand_to_avoiding_struts (&target_size,

View File

@@ -24,11 +24,13 @@
#include <config.h>
#include "core.h"
#include "frame.h"
#include "meta-workspace-manager-private.h"
#include "workspace-private.h"
#include <meta/prefs.h>
#include <meta/errors.h>
#include <meta/meta-x11-errors.h>
#include "util-private.h"
#include "x11/meta-x11-display-private.h"
#include "x11/window-x11.h"
#include "x11/window-x11-private.h"
@@ -51,7 +53,7 @@ get_window (Display *xdisplay,
MetaWindow *window;
display = meta_display_for_x_display (xdisplay);
window = meta_display_lookup_x_window (display, frame_xwindow);
window = meta_x11_display_lookup_x_window (display->x11_display, frame_xwindow);
if (window == NULL || window->frame == NULL)
{
@@ -76,6 +78,8 @@ static gboolean
lower_window_and_transients (MetaWindow *window,
gpointer data)
{
MetaWorkspaceManager *workspace_manager = window->display->workspace_manager;
meta_window_lower (window);
meta_window_foreach_transient (window, lower_window_and_transients, NULL);
@@ -86,22 +90,22 @@ lower_window_and_transients (MetaWindow *window,
* Do extra sanity checks to avoid possible race conditions.
* (Borrowed from window.c.)
*/
if (window->screen->active_workspace &&
if (workspace_manager->active_workspace &&
meta_window_located_on_workspace (window,
window->screen->active_workspace))
workspace_manager->active_workspace))
{
GList* link;
link = g_list_find (window->screen->active_workspace->mru_list,
link = g_list_find (workspace_manager->active_workspace->mru_list,
window);
g_assert (link);
window->screen->active_workspace->mru_list =
g_list_remove_link (window->screen->active_workspace->mru_list,
workspace_manager->active_workspace->mru_list =
g_list_remove_link (workspace_manager->active_workspace->mru_list,
link);
g_list_free (link);
window->screen->active_workspace->mru_list =
g_list_append (window->screen->active_workspace->mru_list,
workspace_manager->active_workspace->mru_list =
g_list_append (workspace_manager->active_workspace->mru_list,
window);
}
}
@@ -115,6 +119,7 @@ meta_core_user_lower_and_unfocus (Display *xdisplay,
guint32 timestamp)
{
MetaWindow *window = get_window (xdisplay, frame_xwindow);
MetaWorkspaceManager *workspace_manager = window->display->workspace_manager;
lower_window_and_transients (window, NULL);
@@ -122,7 +127,7 @@ meta_core_user_lower_and_unfocus (Display *xdisplay,
* the focus window, assume that's always the case. (Typically,
* this will be invoked via keyboard action or by a mouse action;
* in either case the window or a modal child will have been focused.) */
meta_workspace_focus_default_window (window->screen->active_workspace,
meta_workspace_focus_default_window (workspace_manager->active_workspace,
NULL,
timestamp);
}
@@ -219,14 +224,10 @@ meta_core_begin_grab_op (Display *xdisplay,
{
MetaWindow *window = get_window (xdisplay, frame_xwindow);
MetaDisplay *display;
MetaScreen *screen;
display = meta_display_for_x_display (xdisplay);
screen = display->screen;
g_assert (screen != NULL);
return meta_display_begin_grab_op (display, screen, window,
return meta_display_begin_grab_op (display, window,
op, pointer_already_grabbed,
frame_action,
button, modmask,

View File

@@ -26,7 +26,7 @@
#include "util-private.h"
#include "window-private.h"
#include "compositor-private.h"
#include <meta/errors.h>
#include <meta/meta-x11-errors.h>
#include <meta/workspace.h>
#include <errno.h>

View File

@@ -37,6 +37,7 @@
#include "keybindings-private.h"
#include "startup-notification-private.h"
#include "meta-gesture-tracker-private.h"
#include "stack-tracker.h"
#include <meta/prefs.h>
#include <meta/barrier.h>
#include <clutter/clutter.h>
@@ -47,12 +48,10 @@
#include <X11/extensions/sync.h>
typedef struct _MetaBell MetaBell;
typedef struct _MetaStack MetaStack;
typedef struct _MetaUISlave MetaUISlave;
typedef struct _MetaGroupPropHooks MetaGroupPropHooks;
typedef struct _MetaWindowPropHooks MetaWindowPropHooks;
typedef struct MetaEdgeResistanceData MetaEdgeResistanceData;
typedef enum {
@@ -102,43 +101,23 @@ typedef enum {
META_EVENT_ROUTE_FRAME_BUTTON,
} MetaEventRoute;
typedef gboolean (*MetaAlarmFilter) (MetaDisplay *display,
XSyncAlarmNotifyEvent *event,
gpointer data);
typedef void (* MetaDisplayWindowFunc) (MetaWindow *window,
gpointer user_data);
struct _MetaDisplay
{
GObject parent_instance;
char *name;
Display *xdisplay;
MetaX11Display *x11_display;
int clutter_event_filter;
Window leader_window;
Window timestamp_pinging_window;
/* Pull in all the names of atoms as fields; we will intern them when the
* class is constructed.
*/
#define item(x) Atom atom_##x;
#include <x11/atomnames.h>
#undef item
/* The window and serial of the most recent FocusIn event. */
Window server_focus_window;
gulong server_focus_serial;
/* Our best guess as to the "currently" focused window (that is, the
* window that we expect will be focused at the point when the X
* server processes our next request), and the serial of the request
* or event that caused this.
*/
MetaWindow *focus_window;
/* For windows we've focused that don't necessarily have an X window,
* like the no_focus_window or the stage X window. */
Window focus_xwindow;
gulong focus_serial;
/* last timestamp passed to XSetInputFocus */
guint32 last_focus_time;
@@ -169,8 +148,6 @@ struct _MetaDisplay
guint focused_by_us : 1;
/*< private-ish >*/
MetaScreen *screen;
GHashTable *xids;
GHashTable *stamps;
GHashTable *wayland_windows;
@@ -229,9 +206,6 @@ struct _MetaDisplay
* to avoid some race conditions on EnterNotify events
*/
int sentinel_counter;
int xkb_base_event_type;
guint32 last_bell_time;
int grab_resize_timeout_id;
MetaKeyBindingManager key_binding_manager;
@@ -245,60 +219,30 @@ struct _MetaDisplay
/* Closing down the display */
int closing;
/* Managed by group.c */
GHashTable *groups_by_leader;
/* Managed by window-props.c */
MetaWindowPropHooks *prop_hooks_table;
GHashTable *prop_hooks;
int n_prop_hooks;
/* Managed by group-props.c */
MetaGroupPropHooks *group_prop_hooks;
/* Managed by compositor.c */
MetaCompositor *compositor;
MetaGestureTracker *gesture_tracker;
ClutterEventSequence *pointer_emulating_sequence;
MetaAlarmFilter alarm_filter;
gpointer alarm_filter_data;
int composite_event_base;
int composite_error_base;
int composite_major_version;
int composite_minor_version;
int damage_event_base;
int damage_error_base;
int xfixes_event_base;
int xfixes_error_base;
int xinput_error_base;
int xinput_event_base;
int xinput_opcode;
ClutterActor *current_pad_osd;
MetaStartupNotification *startup_notification;
int xsync_event_base;
int xsync_error_base;
int shape_event_base;
int shape_error_base;
unsigned int have_xsync : 1;
#define META_DISPLAY_HAS_XSYNC(display) ((display)->have_xsync)
unsigned int have_shape : 1;
#define META_DISPLAY_HAS_SHAPE(display) ((display)->have_shape)
unsigned int have_composite : 1;
unsigned int have_damage : 1;
#define META_DISPLAY_HAS_COMPOSITE(display) ((display)->have_composite)
#define META_DISPLAY_HAS_DAMAGE(display) ((display)->have_damage)
#ifdef HAVE_XI23
gboolean have_xinput_23 : 1;
#define META_DISPLAY_HAS_XINPUT_23(display) ((display)->have_xinput_23)
#else
#define META_DISPLAY_HAS_XINPUT_23(display) FALSE
#endif /* HAVE_XI23 */
MetaCursor current_cursor;
MetaStack *stack;
MetaStackTracker *stack_tracker;
guint tile_preview_timeout_id;
GSList *startup_sequences;
guint work_area_later;
guint check_fullscreen_later;
MetaBell *bell;
MetaWorkspaceManager *workspace_manager;
};
struct _MetaDisplayClass
@@ -325,25 +269,14 @@ gboolean meta_display_open (void);
void meta_display_close (MetaDisplay *display,
guint32 timestamp);
void meta_display_unmanage_windows_for_screen (MetaDisplay *display,
MetaScreen *screen,
guint32 timestamp);
void meta_display_manage_all_windows (MetaDisplay *display);
void meta_display_unmanage_windows (MetaDisplay *display,
guint32 timestamp);
/* Utility function to compare the stacking of two windows */
int meta_display_stack_cmp (const void *a,
const void *b);
/* A given MetaWindow may have various X windows that "belong"
* to it, such as the frame window.
*/
MetaWindow* meta_display_lookup_x_window (MetaDisplay *display,
Window xwindow);
void meta_display_register_x_window (MetaDisplay *display,
Window *xwindowp,
MetaWindow *window);
void meta_display_unregister_x_window (MetaDisplay *display,
Window xwindow);
/* Each MetaWindow is uniquely identified by a 64-bit "stamp"; unlike a
* a MetaWindow *, a stamp will never be recycled
*/
@@ -372,14 +305,6 @@ void meta_display_register_wayland_window (MetaDisplay *display,
void meta_display_unregister_wayland_window (MetaDisplay *display,
MetaWindow *window);
MetaWindow* meta_display_lookup_sync_alarm (MetaDisplay *display,
XSyncAlarm alarm);
void meta_display_register_sync_alarm (MetaDisplay *display,
XSyncAlarm *alarmp,
MetaWindow *window);
void meta_display_unregister_sync_alarm (MetaDisplay *display,
XSyncAlarm alarm);
void meta_display_notify_window_created (MetaDisplay *display,
MetaWindow *window);
@@ -389,10 +314,8 @@ GSList* meta_display_list_windows (MetaDisplay *display,
MetaDisplay* meta_display_for_x_display (Display *xdisplay);
MetaDisplay* meta_get_display (void);
Cursor meta_display_create_x_cursor (MetaDisplay *display,
MetaCursor cursor);
void meta_display_update_cursor (MetaDisplay *display);
void meta_display_reload_cursor (MetaDisplay *display);
void meta_display_update_cursor (MetaDisplay *display);
void meta_display_check_threshold_reached (MetaDisplay *display,
int x,
@@ -410,11 +333,6 @@ void meta_display_ungrab_focus_window_button (MetaDisplay *display,
/* Next function is defined in edge-resistance.c */
void meta_display_cleanup_edges (MetaDisplay *display);
/* make a request to ensure the event serial has changed */
void meta_display_increment_event_serial (MetaDisplay *display);
void meta_display_update_active_window_hint (MetaDisplay *display);
/* utility goo */
const char* meta_event_mode_to_string (int m);
const char* meta_event_detail_to_string (int d);
@@ -448,16 +366,6 @@ void meta_display_accelerator_activate (MetaDisplay *display,
ClutterKeyEvent *event);
gboolean meta_display_modifiers_accelerator_activate (MetaDisplay *display);
#ifdef HAVE_XI23
gboolean meta_display_process_barrier_xevent (MetaDisplay *display,
XIEvent *event);
#endif /* HAVE_XI23 */
void meta_display_set_input_focus_xwindow (MetaDisplay *display,
MetaScreen *screen,
Window window,
guint32 timestamp);
void meta_display_sync_wayland_input_focus (MetaDisplay *display);
void meta_display_update_focus_window (MetaDisplay *display,
MetaWindow *window,
@@ -485,17 +393,12 @@ gboolean meta_display_show_resize_popup (MetaDisplay *display,
int display_w,
int display_h);
void meta_restart_init (void);
void meta_restart_finish (void);
void meta_set_is_restart (gboolean whether);
void meta_display_cancel_touch (MetaDisplay *display);
gboolean meta_display_windows_are_interactable (MetaDisplay *display);
void meta_display_set_alarm_filter (MetaDisplay *display,
MetaAlarmFilter filter,
gpointer data);
void meta_display_show_tablet_mapping_notification (MetaDisplay *display,
ClutterInputDevice *pad,
const gchar *pretty_name);
@@ -507,4 +410,25 @@ void meta_display_notify_pad_group_switch (MetaDisplay *display,
guint n_mode,
guint n_modes);
void meta_display_foreach_window (MetaDisplay *display,
MetaListWindowsFlags flags,
MetaDisplayWindowFunc func,
gpointer data);
void meta_display_restacked (MetaDisplay *display);
void meta_display_update_tile_preview (MetaDisplay *display,
gboolean delay);
void meta_display_hide_tile_preview (MetaDisplay *display);
gboolean meta_display_apply_startup_properties (MetaDisplay *display,
MetaWindow *window);
void meta_display_queue_workarea_recalc (MetaDisplay *display);
void meta_display_queue_check_fullscreen (MetaDisplay *display);
MetaWindow *meta_display_get_pointer_window (MetaDisplay *display,
MetaWindow *not_this_one);
#endif

File diff suppressed because it is too large Load Diff

View File

@@ -23,6 +23,7 @@
#include "edge-resistance.h"
#include "boxes-private.h"
#include "display-private.h"
#include "meta-workspace-manager-private.h"
#include "workspace-private.h"
/* A simple macro for whether a given window's edges are potentially
@@ -955,6 +956,7 @@ compute_resistance_and_snapping_edges (MetaDisplay *display)
* in the layer that we are working on
*/
GSList *rem_windows, *rem_win_stacking;
MetaWorkspaceManager *workspace_manager = display->workspace_manager;
g_assert (display->grab_window != NULL);
meta_topic (META_DEBUG_WINDOW_OPS,
@@ -965,8 +967,8 @@ compute_resistance_and_snapping_edges (MetaDisplay *display)
* 1st: Get the list of relevant windows, from bottom to top
*/
stacked_windows =
meta_stack_list_windows (display->screen->stack,
display->screen->active_workspace);
meta_stack_list_windows (display->stack,
workspace_manager->active_workspace);
/*
* 2nd: we need to separate that stacked list into a list of windows that
@@ -1020,14 +1022,17 @@ compute_resistance_and_snapping_edges (MetaDisplay *display)
{
GList *new_edges;
MetaEdge *new_edge;
MetaRectangle display_rect;
MetaRectangle reduced;
meta_display_get_size (display, &display_rect.width, &display_rect.height);
/* We don't care about snapping to any portion of the window that
* is offscreen (we also don't care about parts of edges covered
* by other windows or DOCKS, but that's handled below).
*/
meta_rectangle_intersect (&cur_rect,
&display->screen->rect,
&display_rect,
&reduced);
new_edges = NULL;
@@ -1124,8 +1129,8 @@ compute_resistance_and_snapping_edges (MetaDisplay *display)
*/
cache_edges (display,
edges,
display->screen->active_workspace->monitor_edges,
display->screen->active_workspace->screen_edges);
workspace_manager->active_workspace->monitor_edges,
workspace_manager->active_workspace->screen_edges);
g_list_free (edges);
/*

View File

@@ -276,7 +276,7 @@ meta_display_handle_event (MetaDisplay *display,
event->type == CLUTTER_BUTTON_PRESS ||
event->type == CLUTTER_TOUCH_BEGIN))
{
if (CurrentTime == display->current_time)
if (META_CURRENT_TIME == display->current_time)
{
/* We can't use missing (i.e. invalid) timestamps to set user time,
* nor do we want to use them to sanity check other timestamps.
@@ -417,7 +417,7 @@ meta_display_handle_event (MetaDisplay *display,
}
#endif
display->current_time = CurrentTime;
display->current_time = META_CURRENT_TIME;
return bypass_clutter;
}

View File

@@ -24,9 +24,10 @@
#include <config.h>
#include "frame.h"
#include "bell.h"
#include <meta/errors.h>
#include <meta/meta-x11-errors.h>
#include "keybindings-private.h"
#include "backends/x11/meta-backend-x11.h"
#include "x11/meta-x11-display-private.h"
#define EVENT_MASK (SubstructureRedirectMask | \
StructureNotifyMask | SubstructureNotifyMask | \
@@ -38,10 +39,13 @@ meta_window_ensure_frame (MetaWindow *window)
MetaFrame *frame;
XSetWindowAttributes attrs;
gulong create_serial;
MetaX11Display *x11_display;
if (window->frame)
return;
x11_display = window->display->x11_display;
frame = g_new (MetaFrame, 1);
frame->window = window;
@@ -61,8 +65,8 @@ meta_window_ensure_frame (MetaWindow *window)
frame->rect.x, frame->rect.y,
frame->rect.width, frame->rect.height);
frame->ui_frame = meta_ui_create_frame (window->screen->ui,
window->display->xdisplay,
frame->ui_frame = meta_ui_create_frame (x11_display->ui,
x11_display->xdisplay,
frame->window,
window->xvisual,
frame->rect.x,
@@ -72,18 +76,18 @@ meta_window_ensure_frame (MetaWindow *window)
&create_serial);
frame->xwindow = frame->ui_frame->xwindow;
meta_stack_tracker_record_add (window->screen->stack_tracker,
meta_stack_tracker_record_add (window->display->stack_tracker,
frame->xwindow,
create_serial);
meta_verbose ("Frame for %s is 0x%lx\n", frame->window->desc, frame->xwindow);
attrs.event_mask = EVENT_MASK;
XChangeWindowAttributes (window->display->xdisplay,
XChangeWindowAttributes (x11_display->xdisplay,
frame->xwindow, CWEventMask, &attrs);
meta_display_register_x_window (window->display, &frame->xwindow, window);
meta_x11_display_register_x_window (x11_display, &frame->xwindow, window);
meta_error_trap_push (window->display);
meta_x11_error_trap_push (x11_display);
if (window->mapped)
{
window->mapped = FALSE; /* the reparent will unmap the window,
@@ -94,16 +98,16 @@ meta_window_ensure_frame (MetaWindow *window)
window->unmaps_pending += 1;
}
meta_stack_tracker_record_remove (window->screen->stack_tracker,
meta_stack_tracker_record_remove (window->display->stack_tracker,
window->xwindow,
XNextRequest (window->display->xdisplay));
XReparentWindow (window->display->xdisplay,
XNextRequest (x11_display->xdisplay));
XReparentWindow (x11_display->xdisplay,
window->xwindow,
frame->xwindow,
frame->child_x,
frame->child_y);
/* FIXME handle this error */
meta_error_trap_pop (window->display);
meta_x11_error_trap_pop (x11_display);
/* stick frame to the window */
window->frame = frame;
@@ -114,7 +118,7 @@ meta_window_ensure_frame (MetaWindow *window)
meta_frame_update_style (frame);
meta_frame_update_title (frame);
meta_ui_map_frame (frame->window->screen->ui, frame->xwindow);
meta_ui_map_frame (x11_display->ui, frame->xwindow);
{
MetaBackend *backend = meta_get_backend ();
@@ -125,7 +129,7 @@ meta_window_ensure_frame (MetaWindow *window)
/* Since the backend selects for events on another connection,
* make sure to sync the GTK+ connection to ensure that the
* frame window has been created on the server at this point. */
XSync (window->display->xdisplay, False);
XSync (x11_display->xdisplay, False);
unsigned char mask_bits[XIMaskLen (XI_LASTEVENT)] = { 0 };
XIEventMask mask = { XIAllMasterDevices, sizeof (mask_bits), mask_bits };
@@ -152,10 +156,13 @@ meta_window_destroy_frame (MetaWindow *window)
{
MetaFrame *frame;
MetaFrameBorders borders;
MetaX11Display *x11_display;
if (window->frame == NULL)
return;
x11_display = window->display->x11_display;
meta_verbose ("Unframing window %s\n", window->desc);
frame = window->frame;
@@ -167,7 +174,7 @@ meta_window_destroy_frame (MetaWindow *window)
/* Unparent the client window; it may be destroyed,
* thus the error trap.
*/
meta_error_trap_push (window->display);
meta_x11_error_trap_push (x11_display);
if (window->mapped)
{
window->mapped = FALSE; /* Keep track of unmapping it, so we
@@ -178,24 +185,23 @@ meta_window_destroy_frame (MetaWindow *window)
"Incrementing unmaps_pending on %s for reparent back to root\n", window->desc);
window->unmaps_pending += 1;
}
meta_stack_tracker_record_add (window->screen->stack_tracker,
meta_stack_tracker_record_add (window->display->stack_tracker,
window->xwindow,
XNextRequest (window->display->xdisplay));
XReparentWindow (window->display->xdisplay,
XNextRequest (x11_display->xdisplay));
XReparentWindow (x11_display->xdisplay,
window->xwindow,
window->screen->xroot,
x11_display->xroot,
/* Using anything other than client root window coordinates
* coordinates here means we'll need to ensure a configure
* notify event is sent; see bug 399552.
*/
window->frame->rect.x + borders.invisible.left,
window->frame->rect.y + borders.invisible.top);
meta_error_trap_pop (window->display);
meta_x11_error_trap_pop (x11_display);
meta_ui_frame_unmanage (frame->ui_frame);
meta_display_unregister_x_window (window->display,
frame->xwindow);
meta_x11_display_unregister_x_window (x11_display, frame->xwindow);
window->frame = NULL;
if (window->frame_bounds)
@@ -369,18 +375,22 @@ void
meta_frame_set_screen_cursor (MetaFrame *frame,
MetaCursor cursor)
{
MetaX11Display *x11_display;
Cursor xcursor;
if (cursor == frame->current_cursor)
return;
frame->current_cursor = cursor;
x11_display = frame->window->display->x11_display;
if (cursor == META_CURSOR_DEFAULT)
XUndefineCursor (frame->window->display->xdisplay, frame->xwindow);
XUndefineCursor (x11_display->xdisplay, frame->xwindow);
else
{
xcursor = meta_display_create_x_cursor (frame->window->display, cursor);
XDefineCursor (frame->window->display->xdisplay, frame->xwindow, xcursor);
XFlush (frame->window->display->xdisplay);
XFreeCursor (frame->window->display->xdisplay, xcursor);
xcursor = meta_x11_display_create_x_cursor (x11_display, cursor);
XDefineCursor (x11_display->xdisplay, frame->xwindow, xcursor);
XFlush (x11_display->xdisplay);
XFreeCursor (x11_display->xdisplay, xcursor);
}
}

View File

@@ -114,8 +114,6 @@ typedef struct
void meta_display_init_keys (MetaDisplay *display);
void meta_display_shutdown_keys (MetaDisplay *display);
void meta_screen_grab_keys (MetaScreen *screen);
void meta_screen_ungrab_keys (MetaScreen *screen);
void meta_window_grab_keys (MetaWindow *window);
void meta_window_ungrab_keys (MetaWindow *window);
gboolean meta_window_grab_all_keys (MetaWindow *window,
@@ -139,4 +137,7 @@ GList *meta_prefs_get_keybindings (void);
void meta_prefs_get_overlay_binding (MetaKeyCombo *combo);
const char *meta_prefs_get_iso_next_group_option (void);
void meta_x11_display_grab_keys (MetaX11Display *x11_display);
void meta_x11_display_ungrab_keys (MetaX11Display *x11_display);
#endif

File diff suppressed because it is too large Load Diff

View File

@@ -31,4 +31,6 @@ typedef enum _MetaCompositorType
void meta_override_compositor_configuration (MetaCompositorType compositor_type,
GType backend_gtype);
gboolean meta_should_autostart_x11_display (void);
#endif /* META_MAIN_PRIVATE_H */

View File

@@ -47,7 +47,7 @@
#include <meta/main.h>
#include "util-private.h"
#include "display-private.h"
#include <meta/errors.h>
#include <meta/meta-x11-errors.h>
#include "ui.h"
#include <meta/prefs.h>
#include <meta/compositor.h>
@@ -177,6 +177,7 @@ static gboolean opt_sync;
#ifdef HAVE_WAYLAND
static gboolean opt_wayland;
static gboolean opt_nested;
static gboolean opt_no_x11;
#endif
#ifdef HAVE_NATIVE_BACKEND
static gboolean opt_display_server;
@@ -231,6 +232,12 @@ static GOptionEntry meta_options[] = {
N_("Run as a nested compositor"),
NULL
},
{
"no-x11", 0, 0, G_OPTION_ARG_NONE,
&opt_no_x11,
N_("Run wayland compositor without starting Xwayland"),
NULL
},
#endif
#ifdef HAVE_NATIVE_BACKEND
{
@@ -294,7 +301,7 @@ meta_finalize (void)
if (display)
meta_display_close (display,
CurrentTime); /* I doubt correct timestamps matter here */
META_CURRENT_TIME); /* I doubt correct timestamps matter here */
#ifdef HAVE_WAYLAND
if (meta_is_wayland_compositor ())
@@ -437,6 +444,12 @@ calculate_compositor_configuration (MetaCompositorType *compositor_type,
run_as_wayland_compositor = check_for_wayland_session_type ();
#endif /* HAVE_NATIVE_BACKEND */
if (!run_as_wayland_compositor && opt_no_x11)
{
meta_warning ("Can't disable X11 support on X11 compositor\n");
meta_exit (META_EXIT_ERROR);
}
if (run_as_wayland_compositor)
*compositor_type = META_COMPOSITOR_TYPE_WAYLAND;
else
@@ -583,10 +596,6 @@ meta_init (void)
meta_fatal ("Can't specify both SM save file and SM client id\n");
meta_main_loop = g_main_loop_new (NULL, FALSE);
meta_ui_init ();
meta_restart_init ();
}
/**
@@ -697,3 +706,16 @@ prefs_changed_callback (MetaPreference pref,
break;
}
}
gboolean
meta_should_autostart_x11_display (void)
{
MetaBackend *backend = meta_get_backend ();
gboolean is_x11 = TRUE;
#ifdef HAVE_WAYLAND
is_x11 = !opt_no_x11;
#endif
return META_IS_BACKEND_X11_CM (backend) || is_x11;
}

View File

@@ -28,6 +28,7 @@
#include "window-private.h"
#include <meta/meta-close-dialog.h>
#include "meta-close-dialog-default-private.h"
#include "x11/meta-x11-display-private.h"
#include <sys/types.h>
#include <sys/wait.h>
@@ -157,7 +158,7 @@ meta_close_dialog_default_show (MetaCloseDialog *dialog)
dialog_pid =
meta_show_dialog ("--question",
window_content, NULL,
window->screen->screen_name,
window->display->x11_display->screen_name,
_("_Force Quit"), _("_Wait"),
"face-sad-symbolic", window->xwindow,
NULL, NULL);

View File

@@ -0,0 +1,30 @@
/*
* Copyright (C) 2017 Red Hat
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
* published by the Free Software Foundation; either version 2 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, see <http://www.gnu.org/licenses/>.
*
*/
#ifndef META_INHIBIT_SHORTCUTS_DIALOG_DEFAULT_H
#define META_INHIBIT_SHORTCUTS_DIALOG_DEFAULT_H
#define META_TYPE_INHIBIT_SHORTCUTS_DIALOG_DEFAULT (meta_inhibit_shortcuts_dialog_default_get_type ())
G_DECLARE_FINAL_TYPE (MetaInhibitShortcutsDialogDefault,
meta_inhibit_shortcuts_dialog_default,
META, INHIBIT_SHORTCUTS_DIALOG_DEFAULT,
GObject)
MetaInhibitShortcutsDialog * meta_inhibit_shortcuts_dialog_default_new (MetaWindow *window);
#endif /* META_INHIBIT_SHORTCUTS_DIALOG_DEFAULT_H */

View File

@@ -0,0 +1,131 @@
/*
* Copyright (C) 2001, 2002 Havoc Pennington
* Copyright (C) 2004 Elijah Newren
* Copyright (C) 2017 Red Hat
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
* published by the Free Software Foundation; either version 2 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, see <http://www.gnu.org/licenses/>.
*
*/
#include <config.h>
#include "util-private.h"
#include "window-private.h"
#include "meta/meta-inhibit-shortcuts-dialog.h"
#include "meta-inhibit-shortcuts-dialog-default-private.h"
typedef struct _MetaInhibitShortcutsDialogDefaultPrivate MetaInhibitShortcutsDialogDefaultPrivate;
struct _MetaInhibitShortcutsDialogDefault
{
GObject parent_instance;
MetaWindow *window;
};
enum {
PROP_0,
PROP_WINDOW,
N_PROPS
};
static void meta_inhibit_shortcuts_dialog_iface_init (MetaInhibitShortcutsDialogInterface *iface);
G_DEFINE_TYPE_WITH_CODE (MetaInhibitShortcutsDialogDefault, meta_inhibit_shortcuts_dialog_default,
G_TYPE_OBJECT,
G_IMPLEMENT_INTERFACE (META_TYPE_INHIBIT_SHORTCUTS_DIALOG,
meta_inhibit_shortcuts_dialog_iface_init))
static void
meta_inhibit_shortcuts_dialog_default_show (MetaInhibitShortcutsDialog *dialog)
{
/* Default to allow shortcuts inhibitor, but complain that no dialog is implemented */
g_warning ("No MetaInhibitShortcutDialog implementation, falling back on allowing");
meta_inhibit_shortcuts_dialog_response (dialog, META_INHIBIT_SHORTCUTS_DIALOG_RESPONSE_ALLOW);
}
static void
meta_inhibit_shortcuts_dialog_default_hide (MetaInhibitShortcutsDialog *dialog)
{
}
static void
meta_inhibit_shortcuts_dialog_iface_init (MetaInhibitShortcutsDialogInterface *iface)
{
iface->show = meta_inhibit_shortcuts_dialog_default_show;
iface->hide = meta_inhibit_shortcuts_dialog_default_hide;
}
static void
meta_inhibit_shortcuts_dialog_default_set_property (GObject *object,
guint prop_id,
const GValue *value,
GParamSpec *pspec)
{
MetaInhibitShortcutsDialogDefault *dialog;
dialog = META_INHIBIT_SHORTCUTS_DIALOG_DEFAULT (object);
switch (prop_id)
{
case PROP_WINDOW:
dialog->window = g_value_get_object (value);
break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
}
}
static void
meta_inhibit_shortcuts_dialog_default_get_property (GObject *object,
guint prop_id,
GValue *value,
GParamSpec *pspec)
{
MetaInhibitShortcutsDialogDefault *dialog;
dialog = META_INHIBIT_SHORTCUTS_DIALOG_DEFAULT (object);
switch (prop_id)
{
case PROP_WINDOW:
g_value_set_object (value, dialog->window);
break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
}
}
static void
meta_inhibit_shortcuts_dialog_default_class_init (MetaInhibitShortcutsDialogDefaultClass *klass)
{
GObjectClass *object_class = G_OBJECT_CLASS (klass);
object_class->set_property = meta_inhibit_shortcuts_dialog_default_set_property;
object_class->get_property = meta_inhibit_shortcuts_dialog_default_get_property;
g_object_class_override_property (object_class, PROP_WINDOW, "window");
}
static void
meta_inhibit_shortcuts_dialog_default_init (MetaInhibitShortcutsDialogDefault *dialog)
{
}
MetaInhibitShortcutsDialog *
meta_inhibit_shortcuts_dialog_default_new (MetaWindow *window)
{
return g_object_new (META_TYPE_INHIBIT_SHORTCUTS_DIALOG_DEFAULT,
"window", window,
NULL);
}

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