Compare commits

..

1 Commits

Author SHA1 Message Date
672ca8850a windowManager: add animations for fullscreen and unfullscreen
We use the newly introduced feature from Mutter to hook up our own
fullscreen and unfullscreen animations.
To give the illusion of a transition as smooth as possible, we create a
snapshot of the current contents of the actor before its state is
changed, and crossfade between the two states while the size changes.

https://bugzilla.gnome.org/show_bug.cgi?id=707248
2015-10-12 15:40:30 -04:00
136 changed files with 5546 additions and 7133 deletions

6
.gitignore vendored
View File

@ -17,8 +17,10 @@ config.status
config
configure
data/50-gnome-shell-*.xml
data/org.gnome.Shell.desktop
data/org.gnome.Shell.desktop.in
data/gnome-shell.desktop
data/gnome-shell.desktop.in
data/gnome-shell-wayland.desktop
data/gnome-shell-wayland.desktop.in
data/gnome-shell-extension-prefs.desktop
data/gnome-shell-extension-prefs.desktop.in
data/gnome-shell-theme.gresource

60
NEWS
View File

@ -1,63 +1,3 @@
3.19.2
======
* Make gnome-shell DBus activatable [Ray; #741666]
* Fix browser plugin crash in Firefox [Carlos; #737932, #757940]
* Optionally show battery percentage in system status area [Bastien; #735771]
* Misc. bug fixes [Kalev, Florian, Bastien; #757418, #757668, #757779, #757816,
#745626, #758220]
Contributors:
Michael Biebl, Michael Catanzaro, Piotr Drąg, Carlos Garcia Campos,
Kalev Lember, Florian Müllner, Bastien Nocera, Ray Strode
Translations:
Pedro Albuquerque [pt], liushuyu [zh_CN], Yosef Or Boczko [he],
Jiri Grönroos [fi], Kjartan Maraas [nb], GNOME Translation Robot [gd],
Daniel Mustieles [es], Marek Černocký [cs], Kristjan SCHMIDT [eo],
Stas Solovey [ru]
3.19.1
======
* Respect text-scaling factor under wayland [Owen; #756447]
* Show the Bluetooth submenu when there were setup devices [Bastien; #723848]
* Misc. bug fixes [Florian, Cosimo, Rui, Ray, Owen, Jakub, Bastien;
#756697, #756714, #756605, #754814, #738942, #756983, #756925,
#757011, #673235, #757150]
Contributors:
Cosimo Cecchi, Rui Matos, Florian Müllner, Bastien Nocera, Jakub Steiner,
Ray Strode, Owen W. Taylor
Translations:
Kjartan Maraas [nb], Khaled Hosny [ar], Balázs Meskó [hu],
Daniel Șerbănescu [ro], Marek Černocký [cs]
3.18.1
======
* Fix screen freezes when a notification is pushed [Carlos; #755425]
* Fix overzealous ellipsization in system status menu [Adel, Florian; #708472]
* Hide app menu when disabled by setting [Florian; #745919]
* Fix lightbox effect when animations are disabled [Rui; #755827]
* Do not mark hotplug notifications as critical [Florian; #657923]
* Fix icons getting cut off in dash [Florian; #745649]
* Animate fullscreen/unfullscreen operations [Cosimo; #707248]
* Misc. bug fixes [Florian, Owen; #748919, #674799, #754581]
Contributors:
Emmanuele Bassi, Michael Catanzaro, Cosimo Cecchi, Matthias Clasen,
Adel Gadllah, Carlos Garnacho, Ekaterina Gerasimova, Rui Matos,
Florian Müllner, Owen W. Taylor
Translations:
Марко Костић [sr], Милош Поповић [sr@latin], Khaled Hosny [ar],
Trần Ngọc Quân [vi], Petr Kovar [cs], Alexandre Franke [fr],
Fran Dieguez [gl], Anders Jonsson [sv], Piotr Drąg [pl], Dušan Kazik [sk],
Milo Casagrande [it], Changwoo Ryu [ko], Stas Solovey [ru],
Rafael Fontenelle [pt_BR], Tom Tryfonidis [el], Aurimas Černius [lt],
Seán de Búrca [ga], Christian Kirbach [de], Jiri Grönroos [fi],
Pedro Albuquerque [pt], Baurzhan Muftakhidinov [kk], Daniel Mustieles [es],
Marek Černocký [cs], Ask Hjorth Larsen [da], Inaki Larranaga Murgoitio [eu]
3.18.0
======

View File

@ -3,10 +3,7 @@ mozillalibdir = $(BROWSER_PLUGIN_DIR)
mozillalib_LTLIBRARIES = libgnome-shell-browser-plugin.la
# Browsers can unload and reload the module while browsing, which is not supported by GObject.
# We pass -Wl,-z,nodelete to the linker to ensure the module is never unloaded.
# https://bugzilla.gnome.org/show_bug.cgi?id=737932
libgnome_shell_browser_plugin_la_LDFLAGS = -module -avoid-version -no-undefined -Wl,-z,nodelete
libgnome_shell_browser_plugin_la_LDFLAGS = -module -avoid-version -no-undefined
libgnome_shell_browser_plugin_la_LIBADD = \
$(BROWSER_PLUGIN_LIBS)

View File

@ -33,16 +33,20 @@
#include <json-glib/json-glib.h>
#define ORIGIN "extensions.gnome.org"
#define PLUGIN_NAME "GNOME Shell Integration"
#define PLUGIN_DESCRIPTION "This plugin provides integration with GNOME Shell " \
#define PLUGIN_NAME "Gnome Shell Integration"
#define PLUGIN_DESCRIPTION "This plugin provides integration with Gnome Shell " \
"for live extension enabling and disabling. " \
"It can be used only by extensions.gnome.org"
#define PLUGIN_MIME_STRING "application/x-gnome-shell-integration::GNOME Shell Integration Dummy Content-Type";
#define PLUGIN_MIME_STRING "application/x-gnome-shell-integration::Gnome Shell Integration Dummy Content-Type";
#define PLUGIN_API_VERSION 5
#define EXTENSION_DISABLE_VERSION_CHECK_KEY "disable-extension-version-validation"
typedef struct {
GDBusProxy *proxy;
} PluginData;
static NPNetscapeFuncs funcs;
static inline gchar *
@ -141,6 +145,121 @@ check_origin_and_protocol (NPP instance)
return ret;
}
/* =============== public entry points =================== */
NPError
NP_Initialize(NPNetscapeFuncs *pfuncs, NPPluginFuncs *plugin)
{
/* global initialization routine, called once when plugin
is loaded */
g_debug ("plugin loaded");
memcpy (&funcs, pfuncs, sizeof (funcs));
plugin->size = sizeof(NPPluginFuncs);
plugin->newp = NPP_New;
plugin->destroy = NPP_Destroy;
plugin->getvalue = NPP_GetValue;
plugin->setwindow = NPP_SetWindow;
return NPERR_NO_ERROR;
}
NPError
NP_Shutdown(void)
{
return NPERR_NO_ERROR;
}
const char*
NP_GetMIMEDescription(void)
{
return PLUGIN_MIME_STRING;
}
NPError
NP_GetValue(void *instance,
NPPVariable variable,
void *value)
{
switch (variable) {
case NPPVpluginNameString:
*(char**)value = PLUGIN_NAME;
break;
case NPPVpluginDescriptionString:
*(char**)value = PLUGIN_DESCRIPTION;
break;
default:
;
}
return NPERR_NO_ERROR;
}
NPError
NPP_New(NPMIMEType mimetype,
NPP instance,
uint16_t mode,
int16_t argc,
char **argn,
char **argv,
NPSavedData *saved)
{
/* instance initialization function */
PluginData *data;
GError *error = NULL;
g_debug ("plugin created");
if (!check_origin_and_protocol (instance))
return NPERR_GENERIC_ERROR;
data = g_slice_new (PluginData);
instance->pdata = data;
data->proxy = g_dbus_proxy_new_for_bus_sync (G_BUS_TYPE_SESSION,
G_DBUS_PROXY_FLAGS_NONE,
NULL, /* interface info */
"org.gnome.Shell",
"/org/gnome/Shell",
"org.gnome.Shell.Extensions",
NULL, /* GCancellable */
&error);
if (!data->proxy)
{
/* ignore error if the shell is not running, otherwise warn */
if (error->domain != G_DBUS_ERROR ||
error->code != G_DBUS_ERROR_NAME_HAS_NO_OWNER)
{
g_warning ("Failed to set up Shell proxy: %s", error->message);
}
g_clear_error (&error);
return NPERR_GENERIC_ERROR;
}
g_debug ("plugin created successfully");
return NPERR_NO_ERROR;
}
NPError
NPP_Destroy(NPP instance,
NPSavedData **saved)
{
/* instance finalization function */
PluginData *data = instance->pdata;
g_debug ("plugin destroyed");
g_object_unref (data->proxy);
g_slice_free (PluginData, data);
return NPERR_NO_ERROR;
}
/* =================== scripting interface =================== */
typedef struct {
@ -163,6 +282,14 @@ on_shell_signal (GDBusProxy *proxy,
{
PluginObject *obj = user_data;
/* FIXME: We have half a dozen bug reports in which this function crashes in
* WebKit due to a null NPObject. This should never happen, but since it is
* happening, let's turn the crash into a critical.
*
* https://bugzilla.gnome.org/show_bug.cgi?id=737932
*/
g_return_if_fail (obj->instance);
if (strcmp (signal_name, "ExtensionStatusChanged") == 0)
{
gchar *uuid;
@ -193,6 +320,12 @@ on_shell_appeared (GDBusConnection *connection,
{
PluginObject *obj = (PluginObject*) user_data;
/* FIXME: Not sure if this is ever hit or not, but let's play it safe.
*
* https://bugzilla.gnome.org/show_bug.cgi?id=737932
*/
g_return_if_fail (obj->instance);
if (obj->restart_listener)
{
NPVariant result = { NPVariantType_Void };
@ -211,18 +344,45 @@ static NPObject *
plugin_object_allocate (NPP instance,
NPClass *klass)
{
PluginObject *obj = (PluginObject *) funcs.memalloc (sizeof (PluginObject));
PluginData *data = instance->pdata;
PluginObject *obj = g_slice_new0 (PluginObject);
memset (obj, 0, sizeof (PluginObject));
obj->instance = instance;
obj->proxy = g_object_ref (data->proxy);
obj->settings = g_settings_new (SHELL_SCHEMA);
obj->signal_id = g_signal_connect (obj->proxy, "g-signal",
G_CALLBACK (on_shell_signal), obj);
return (NPObject*) obj;
obj->watch_name_id = g_bus_watch_name (G_BUS_TYPE_SESSION,
"org.gnome.Shell",
G_BUS_NAME_WATCHER_FLAGS_NONE,
on_shell_appeared,
NULL,
obj,
NULL);
g_debug ("plugin object created");
return (NPObject*)obj;
}
static void
plugin_object_deallocate (NPObject *npobj)
{
funcs.memfree (npobj);
PluginObject *obj = (PluginObject*)npobj;
g_signal_handler_disconnect (obj->proxy, obj->signal_id);
g_object_unref (obj->proxy);
if (obj->listener)
funcs.releaseobject (obj->listener);
if (obj->watch_name_id)
g_bus_unwatch_name (obj->watch_name_id);
g_debug ("plugin object destroyed");
g_slice_free (PluginObject, obj);
}
static inline gboolean
@ -873,149 +1033,6 @@ init_methods_and_properties (void)
onextension_changed_id = funcs.getstringidentifier ("onchange");
}
/* =============== public entry points =================== */
NPError
NP_Initialize(NPNetscapeFuncs *pfuncs, NPPluginFuncs *plugin)
{
/* global initialization routine, called once when plugin
is loaded */
g_debug ("plugin loaded");
memcpy (&funcs, pfuncs, sizeof (funcs));
plugin->size = sizeof(NPPluginFuncs);
plugin->newp = NPP_New;
plugin->destroy = NPP_Destroy;
plugin->getvalue = NPP_GetValue;
plugin->setwindow = NPP_SetWindow;
plugin->event = NPP_HandleEvent;
return NPERR_NO_ERROR;
}
NPError
NP_Shutdown(void)
{
return NPERR_NO_ERROR;
}
const char*
NP_GetMIMEDescription(void)
{
return PLUGIN_MIME_STRING;
}
NPError
NP_GetValue(void *instance,
NPPVariable variable,
void *value)
{
switch (variable) {
case NPPVpluginNameString:
*(char**)value = PLUGIN_NAME;
break;
case NPPVpluginDescriptionString:
*(char**)value = PLUGIN_DESCRIPTION;
break;
default:
;
}
return NPERR_NO_ERROR;
}
NPError
NPP_New(NPMIMEType mimetype,
NPP instance,
uint16_t mode,
int16_t argc,
char **argn,
char **argv,
NPSavedData *saved)
{
/* instance initialization function */
PluginObject *obj;
GError *error = NULL;
g_debug ("plugin created");
if (!check_origin_and_protocol (instance))
return NPERR_GENERIC_ERROR;
/* set windowless mode */
funcs.setvalue(instance, NPPVpluginWindowBool, NULL);
g_debug ("creating scriptable object");
init_methods_and_properties ();
obj = (PluginObject *) funcs.createobject (instance, &plugin_class);
instance->pdata = obj;
obj->proxy = g_dbus_proxy_new_for_bus_sync (G_BUS_TYPE_SESSION,
G_DBUS_PROXY_FLAGS_NONE,
NULL, /* interface info */
"org.gnome.Shell",
"/org/gnome/Shell",
"org.gnome.Shell.Extensions",
NULL, /* GCancellable */
&error);
if (!obj->proxy)
{
/* ignore error if the shell is not running, otherwise warn */
if (!g_error_matches (error, G_DBUS_ERROR, G_DBUS_ERROR_NAME_HAS_NO_OWNER))
{
g_warning ("Failed to set up Shell proxy: %s", error->message);
}
g_clear_error (&error);
return NPERR_GENERIC_ERROR;
}
obj->settings = g_settings_new (SHELL_SCHEMA);
obj->signal_id = g_signal_connect (obj->proxy, "g-signal",
G_CALLBACK (on_shell_signal), obj);
obj->watch_name_id = g_bus_watch_name (G_BUS_TYPE_SESSION,
"org.gnome.Shell",
G_BUS_NAME_WATCHER_FLAGS_NONE,
on_shell_appeared,
NULL,
obj,
NULL);
g_debug ("plugin created successfully");
return NPERR_NO_ERROR;
}
NPError
NPP_Destroy(NPP instance,
NPSavedData **saved)
{
/* instance finalization function */
PluginObject *obj = (PluginObject *) instance->pdata;
if (!obj)
return NPERR_INVALID_INSTANCE_ERROR;
g_debug ("plugin destroyed");
g_signal_handler_disconnect (obj->proxy, obj->signal_id);
g_object_unref (obj->proxy);
if (obj->listener)
funcs.releaseobject (obj->listener);
if (obj->restart_listener)
funcs.releaseobject (obj->restart_listener);
if (obj->watch_name_id)
g_bus_unwatch_name (obj->watch_name_id);
funcs.releaseobject((NPObject *)obj);
return NPERR_NO_ERROR;
}
NPError
NPP_GetValue(NPP instance,
NPPVariable variable,
@ -1026,10 +1043,13 @@ NPP_GetValue(NPP instance,
switch (variable) {
case NPPVpluginScriptableNPObject:
g_debug ("creating scriptable object");
if (!instance->pdata)
return NPERR_INVALID_INSTANCE_ERROR;
init_methods_and_properties ();
*(NPObject**)value = instance->pdata;
*(NPObject**)value = funcs.createobject (instance, &plugin_class);
break;
case NPPVpluginNeedsXEmbed:
*(bool *)value = TRUE;
break;
default:
@ -1047,11 +1067,3 @@ NPP_SetWindow(NPP instance,
{
return NPERR_NO_ERROR;
}
int16_t
NPP_HandleEvent(NPP instance,
void *event)
{
/* Ignore the event */
return FALSE;
}

View File

@ -1,5 +1,5 @@
AC_PREREQ(2.63)
AC_INIT([gnome-shell],[3.19.2],[https://bugzilla.gnome.org/enter_bug.cgi?product=gnome-shell],[gnome-shell])
AC_INIT([gnome-shell],[3.18.0],[https://bugzilla.gnome.org/enter_bug.cgi?product=gnome-shell],[gnome-shell])
AX_IS_RELEASE([git-directory])
AC_CONFIG_HEADERS([config.h])
@ -77,7 +77,7 @@ AC_MSG_RESULT($enable_systemd)
CLUTTER_MIN_VERSION=1.21.5
GOBJECT_INTROSPECTION_MIN_VERSION=1.45.4
GJS_MIN_VERSION=1.39.0
MUTTER_MIN_VERSION=3.19.2
MUTTER_MIN_VERSION=3.18.0
GTK_MIN_VERSION=3.15.0
GIO_MIN_VERSION=2.45.3
LIBECAL_MIN_VERSION=3.5.3
@ -117,7 +117,7 @@ PKG_CHECK_MODULES(GNOME_SHELL_JS, gio-2.0 gjs-internals-1.0 >= $GJS_MIN_VERSION)
PKG_CHECK_MODULES(ST, clutter-1.0 gtk+-3.0 libcroco-0.6 >= 0.6.8 x11)
PKG_CHECK_MODULES(SHELL_PERF_HELPER, gtk+-3.0 gio-2.0)
PKG_CHECK_MODULES(SHELL_HOTPLUG_SNIFFER, gio-2.0 gdk-pixbuf-2.0)
PKG_CHECK_MODULES(TRAY, clutter-1.0 gtk+-3.0)
PKG_CHECK_MODULES(TRAY, gtk+-3.0)
PKG_CHECK_MODULES(GVC, libpulse >= $PULSE_MIN_VERS libpulse-mainloop-glib gobject-2.0)
PKG_CHECK_MODULES(DESKTOP_SCHEMAS, gsettings-desktop-schemas >= 3.13.1)

View File

@ -2,7 +2,7 @@ CLEANFILES =
NULL =
desktopdir=$(datadir)/applications
desktop_DATA = org.gnome.Shell.desktop gnome-shell-extension-prefs.desktop
desktop_DATA = gnome-shell.desktop gnome-shell-wayland.desktop gnome-shell-extension-prefs.desktop
if HAVE_NETWORKMANAGER
desktop_DATA += org.gnome.Shell.PortalHelper.desktop
@ -104,7 +104,8 @@ convertdir = $(datadir)/GConf/gsettings
convert_DATA = gnome-shell-overrides.convert
EXTRA_DIST = \
org.gnome.Shell.desktop.in.in \
gnome-shell.desktop.in.in \
gnome-shell-wayland.desktop.in.in \
gnome-shell-extension-prefs.desktop.in.in \
$(introspection_DATA) \
$(menu_DATA) \
@ -120,7 +121,8 @@ EXTRA_DIST = \
$(NULL)
CLEANFILES += \
org.gnome.Shell.desktop.in \
gnome-shell.desktop.in \
gnome-shell-wayland.desktop.in \
gnome-shell-extension-prefs.in \
$(desktop_DATA) \
$(keys_DATA) \

View File

@ -0,0 +1,15 @@
[Desktop Entry]
Type=Application
_Name=GNOME Shell (wayland compositor)
_Comment=Window management and application launching
Exec=@bindir@/gnome-shell --wayland --display-server
X-GNOME-Bugzilla-Bugzilla=GNOME
X-GNOME-Bugzilla-Product=gnome-shell
X-GNOME-Bugzilla-Component=general
X-GNOME-Bugzilla-Version=@VERSION@
Categories=GNOME;GTK;Core;
OnlyShowIn=GNOME;
NoDisplay=true
X-GNOME-Autostart-Phase=DisplayServer
X-GNOME-Autostart-Notify=true
X-GNOME-AutoRestart=false

View File

@ -10,7 +10,7 @@ X-GNOME-Bugzilla-Version=@VERSION@
Categories=GNOME;GTK;Core;
OnlyShowIn=GNOME;
NoDisplay=true
X-GNOME-Autostart-Phase=DisplayServer
X-GNOME-Autostart-Phase=WindowManager
X-GNOME-Provides=panel;windowmanager;
X-GNOME-Autostart-Notify=true
X-GNOME-AutoRestart=false

View File

@ -72,16 +72,6 @@
This key sets the default state of the checkbox.
</_description>
</key>
<key name="had-bluetooth-devices-setup" type="b">
<default>false</default>
<_summary>Whether the default Bluetooth adapter had set up devices associated to it</_summary>
<_description>
The shell will only show a Bluetooth menu item if a Bluetooth
adapter is powered, or if there were devices set up associated
with the default adapter. This will be reset if the default
adapter is ever seen not to have devices associated to it.
</_description>
</key>
<child name="calendar" schema="org.gnome.shell.calendar"/>
<child name="keybindings" schema="org.gnome.shell.keybindings"/>
<child name="keyboard" schema="org.gnome.shell.keyboard"/>

View File

@ -41,9 +41,9 @@ stage {
icon-shadow: 0 1px black;
box-shadow: inset 0px 0px 0px 1px #215d9c; }
.button:insensitive {
color: gray;
color: #7f7f7f;
border-color: rgba(0, 0, 0, 0.7);
background-color: rgba(62, 67, 69, 0.7);
background-color: rgba(62, 67, 68, 0.7);
box-shadow: none;
text-shadow: none;
icon-shadow: none; }
@ -65,9 +65,9 @@ stage {
icon-shadow: 0 1px black;
padding: 12px; }
.modal-dialog-linked-button:insensitive {
color: gray;
color: #7f7f7f;
border-color: rgba(0, 0, 0, 0.7);
background-color: rgba(62, 67, 69, 0.7);
background-color: rgba(62, 67, 68, 0.7);
box-shadow: none;
text-shadow: none;
icon-shadow: none; }
@ -107,8 +107,8 @@ StEntry {
box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.4);
border-color: rgba(166, 166, 166, 0.5); }
StEntry:insensitive {
color: gray;
border-color: #0e0e0e;
color: #7f7f7f;
border-color: #0d0d0d;
box-shadow: none; }
StEntry StIcon.capslock-warning {
icon-size: 16px;
@ -142,7 +142,7 @@ StScrollBar {
.slider {
height: 1em;
-slider-height: 0.3em;
-slider-background-color: #0e0e0e;
-slider-background-color: #0d0d0d;
-slider-border-color: black;
-slider-active-background-color: #215d9c;
-slider-active-border-color: #184472;
@ -408,9 +408,9 @@ StScrollBar {
spacing-rows: 15px;
spacing-columns: 1em; }
/* Popovers/Menus */
/* Popvers/Menus */
.popup-menu {
min-width: 15em; }
min-width: 200px; }
.popup-menu .popup-sub-menu {
background-color: black;
box-shadow: inset 0 -1px 0px #0d0d0d; }
@ -625,8 +625,6 @@ StScrollBar {
#panel .panel-status-indicators-box,
#panel .panel-status-menu-box {
spacing: 2px; }
#panel .power-status.panel-status-indicators-box {
spacing: 0; }
#panel .screencast-indicator {
color: #f57900; }
@ -737,7 +735,7 @@ StScrollBar {
border-left-width: 1px; }
.calendar-nonwork-day {
color: gray; }
color: #7f7f7f; }
.calendar-today {
font-weight: bold;
@ -754,7 +752,7 @@ StScrollBar {
/* Message list */
.message-list {
width: 31.5em; }
width: 420px; }
.message-list-sections {
spacing: 1.5em; }
@ -825,7 +823,8 @@ StScrollBar {
color: transparent; }
.aggregate-menu {
min-width: 21em; }
min-width: 280px;
max-width: 400px; }
.aggregate-menu .popup-menu-icon {
padding: 0 4px; }
@ -962,14 +961,10 @@ StScrollBar {
.search-entry {
width: 320px;
padding: 7px 9px;
border-radius: 6px;
border-color: #747467;
color: #eeeeec;
background-color: #2e3436; }
border-radius: 6px; }
.search-entry:focus {
padding: 6px 8px;
border-width: 2px;
border-color: #215d9c; }
border-width: 2px; }
.search-entry .search-entry-icon {
icon-size: 1em;
padding: 0 4px;
@ -1497,9 +1492,9 @@ StScrollBar {
text-shadow: none;
icon-shadow: none; }
.login-dialog .modal-dialog-button:default:insensitive {
color: gray;
color: #7f7f7f;
border-color: rgba(0, 0, 0, 0.7);
background-color: rgba(62, 67, 69, 0.7);
background-color: rgba(62, 67, 68, 0.7);
box-shadow: none;
text-shadow: none;
icon-shadow: none; }

View File

@ -41,9 +41,9 @@ stage {
icon-shadow: 0 1px black;
box-shadow: inset 0px 0px 0px 1px #215d9c; }
.button:insensitive {
color: #949796;
color: #939695;
border-color: rgba(0, 0, 0, 0.7);
background-color: rgba(66, 72, 73, 0.7);
background-color: rgba(66, 71, 73, 0.7);
box-shadow: none;
text-shadow: none;
icon-shadow: none; }
@ -65,9 +65,9 @@ stage {
icon-shadow: 0 1px black;
padding: 12px; }
.modal-dialog-linked-button:insensitive {
color: #949796;
color: #939695;
border-color: rgba(0, 0, 0, 0.7);
background-color: rgba(66, 72, 73, 0.7);
background-color: rgba(66, 71, 73, 0.7);
box-shadow: none;
text-shadow: none;
icon-shadow: none; }
@ -107,8 +107,8 @@ StEntry {
box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.4);
border-color: rgba(154, 154, 142, 0.5); }
StEntry:insensitive {
color: #949796;
border-color: #333636;
color: #939695;
border-color: #323636;
box-shadow: none; }
StEntry StIcon.capslock-warning {
icon-size: 16px;
@ -131,10 +131,10 @@ StScrollBar {
background-color: transparent; }
StScrollBar StButton#vhandle, StScrollBar StButton#hhandle {
border-radius: 8px;
background-color: #a6a8a7;
background-color: #a5a8a6;
margin: 3px; }
StScrollBar StButton#vhandle:hover, StScrollBar StButton#hhandle:hover {
background-color: #cacbc9; }
background-color: #c9cbc9; }
StScrollBar StButton#vhandle:active, StScrollBar StButton#hhandle:active {
background-color: #215d9c; }
@ -142,7 +142,7 @@ StScrollBar {
.slider {
height: 1em;
-slider-height: 0.3em;
-slider-background-color: #333636;
-slider-background-color: #323636;
-slider-border-color: #1c1f1f;
-slider-active-background-color: #215d9c;
-slider-active-border-color: #184472;
@ -408,9 +408,9 @@ StScrollBar {
spacing-rows: 15px;
spacing-columns: 1em; }
/* Popovers/Menus */
/* Popvers/Menus */
.popup-menu {
min-width: 15em; }
min-width: 200px; }
.popup-menu .popup-sub-menu {
background-color: #343a3a;
box-shadow: inset 0 -1px 0px #282c2c; }
@ -625,8 +625,6 @@ StScrollBar {
#panel .panel-status-indicators-box,
#panel .panel-status-menu-box {
spacing: 2px; }
#panel .power-status.panel-status-indicators-box {
spacing: 0; }
#panel .screencast-indicator {
color: #f57900; }
@ -737,7 +735,7 @@ StScrollBar {
border-left-width: 1px; }
.calendar-nonwork-day {
color: #949796; }
color: #939695; }
.calendar-today {
font-weight: bold;
@ -754,7 +752,7 @@ StScrollBar {
/* Message list */
.message-list {
width: 31.5em; }
width: 420px; }
.message-list-sections {
spacing: 1.5em; }
@ -825,7 +823,8 @@ StScrollBar {
color: transparent; }
.aggregate-menu {
min-width: 21em; }
min-width: 280px;
max-width: 400px; }
.aggregate-menu .popup-menu-icon {
padding: 0 4px; }
@ -962,14 +961,10 @@ StScrollBar {
.search-entry {
width: 320px;
padding: 7px 9px;
border-radius: 6px;
border-color: #747467;
color: #eeeeec;
background-color: #2e3436; }
border-radius: 6px; }
.search-entry:focus {
padding: 6px 8px;
border-width: 2px;
border-color: #215d9c; }
border-width: 2px; }
.search-entry .search-entry-icon {
icon-size: 1em;
padding: 0 4px;
@ -1497,9 +1492,9 @@ StScrollBar {
text-shadow: none;
icon-shadow: none; }
.login-dialog .modal-dialog-button:default:insensitive {
color: #949796;
color: #939695;
border-color: rgba(0, 0, 0, 0.7);
background-color: rgba(66, 72, 73, 0.7);
background-color: rgba(66, 71, 73, 0.7);
box-shadow: none;
text-shadow: none;
icon-shadow: none; }

View File

@ -16,34 +16,6 @@
* along with this program; if not, see <http://www.gnu.org/licenses/>.
*/
/*
* In order for transformation animations to look good, they need to be
* incremental and have some order to them (e.g., fade out hidden items,
* then shrink to close the void left over). Chaining animations in this way can
* be error-prone and wordy using just Tweener callbacks.
*
* The classes in this file help with this:
*
* - Task. encapsulates schedulable work to be run in a specific scope.
*
* - ConsecutiveBatch. runs a series of tasks in order and completes
* when the last in the series finishes.
*
* - ConcurrentBatch. runs a set of tasks at the same time and completes
* when the last to finish completes.
*
* - Hold. prevents a batch from completing the pending task until
* the hold is released.
*
* The tasks associated with a batch are specified in a list at batch
* construction time as either task objects or plain functions.
* Batches are task objects, themselves, so they can be nested.
*
* These classes aren't specific to GDM, but were found to be unintuitive and so
* are not used elsewhere. These APIs may ultimately get dropped entirely and
* replaced by something else.
*/
const Lang = imports.lang;
const Signals = imports.signals;

View File

@ -96,7 +96,7 @@ const UserListItem = new Lang.Class({
},
_onDestroy: function() {
this.user.disconnect(this._userChangedId);
this._user.disconnect(this._userChangedId);
},
_onClicked: function() {
@ -924,7 +924,11 @@ const LoginDialog = new Lang.Class({
},
onUpdateScope: this,
onComplete: function() {
this._greeter.call_start_session_when_ready_sync(serviceName, true, null);
let id = Mainloop.idle_add(Lang.bind(this, function() {
this._greeter.call_start_session_when_ready_sync(serviceName, true, null);
return GLib.SOURCE_REMOVE;
}));
GLib.Source.set_name_by_id(id, '[gnome-shell] this._greeter.call_start_session_when_ready_sync');
},
onCompleteScope: this });
},

View File

@ -7,7 +7,7 @@ const St = imports.gi.St;
const Signals = imports.signals;
const Atk = imports.gi.Atk;
const ANIMATED_ICON_UPDATE_TIMEOUT = 16;
const ANIMATED_ICON_UPDATE_TIMEOUT = 14;
const Animation = new Lang.Class({
Name: 'Animation',
@ -33,7 +33,7 @@ const Animation = new Lang.Class({
if (this._frame == 0)
this._showFrame(0);
this._timeoutId = GLib.timeout_add(GLib.PRIORITY_LOW, this._speed, Lang.bind(this, this._update));
this._timeoutId = Mainloop.timeout_add(this._speed, Lang.bind(this, this._update));
GLib.Source.set_name_by_id(this._timeoutId, '[gnome-shell] this._update');
}

View File

@ -26,7 +26,6 @@ const RENAMED_DESKTOP_IDS = {
'gnome-photos.desktop': 'org.gnome.Photos.desktop',
'gnome-screenshot.desktop': 'org.gnome.Screenshot.desktop',
'gnome-software.desktop': 'org.gnome.Software.desktop',
'gnome-terminal.desktop': 'org.gnome.Terminal.desktop',
'gnome-weather.desktop': 'org.gnome.Weather.Application.desktop',
'gnomine.desktop': 'gnome-mines.desktop',
'gnotravex.desktop': 'gnome-tetravex.desktop',

View File

@ -725,7 +725,7 @@ const Calendar = new Lang.Class({
// nRows here means 6 weeks + one header + one navbar
let nRows = 8;
while (row < 8) {
let button = new St.Button({ label: iter.toLocaleFormat(C_("date day number format", "%d")),
let button = new St.Button({ label: iter.getDate().toString(),
can_focus: true });
let rtl = button.get_text_direction() == Clutter.TextDirection.RTL;

View File

@ -313,10 +313,6 @@ const AutorunSource = new Lang.Class({
getIcon: function() {
return this.mount.get_icon();
},
_createPolicy: function() {
return new MessageTray.NotificationApplicationPolicy('org.gnome.Nautilus');
}
});

View File

@ -644,14 +644,15 @@ const Dash = new Lang.Class({
let firstIcon = firstButton._delegate.icon;
let minHeight, natHeight;
let scaleFactor = St.ThemeContext.get_for_stage(global.stage).scale_factor;
// Enforce the current icon size during the size request
firstIcon.icon.ensure_style();
let [currentWidth, currentHeight] = firstIcon.icon.get_size();
firstIcon.icon.set_size(this.iconSize * scaleFactor, this.iconSize * scaleFactor);
firstIcon.setIconSize(this.iconSize);
[minHeight, natHeight] = firstButton.get_preferred_height(-1);
firstIcon.icon.set_size(currentWidth, currentHeight);
let scaleFactor = St.ThemeContext.get_for_stage(global.stage).scale_factor;
let iconSizes = baseIconSizes.map(function(s) {
return s * scaleFactor;
});
// Subtract icon padding and box spacing from the available height
availHeight -= iconChildren.length * (natHeight - this.iconSize * scaleFactor) +
@ -659,10 +660,6 @@ const Dash = new Lang.Class({
let availSize = availHeight / iconChildren.length;
let iconSizes = baseIconSizes.map(function(s) {
return s * scaleFactor;
});
let newIconSize = baseIconSizes[0];
for (let i = 0; i < iconSizes.length; i++) {
if (iconSizes[i] < availSize)

View File

@ -78,7 +78,6 @@ let _startDate;
let _defaultCssStylesheet = null;
let _cssStylesheet = null;
let _a11ySettings = null;
let _themeResource = null;
function _sessionUpdated() {
if (sessionMode.isPrimary)
@ -138,7 +137,9 @@ function _initializeUI() {
Shell.WindowTracker.get_default();
Shell.AppUsage.get_default();
reloadThemeResource();
let resource = Gio.Resource.load(global.datadir + '/gnome-shell-theme.gresource');
resource._register();
_loadDefaultStylesheet();
// Setup the stage hierarchy early
@ -289,14 +290,6 @@ function setThemeStylesheet(cssStylesheet) {
_cssStylesheet = cssStylesheet ? Gio.File.new_for_path(cssStylesheet) : null;
}
function reloadThemeResource() {
if (_themeResource)
_themeResource._unregister();
_themeResource = Gio.Resource.load(global.datadir + '/gnome-shell-theme.gresource');
_themeResource._register();
}
/**
* loadTheme:
*

View File

@ -459,8 +459,7 @@ const ActivitiesButton = new Lang.Class({
if (event.type() == Clutter.EventType.TOUCH_END ||
event.type() == Clutter.EventType.BUTTON_RELEASE)
if (Main.overview.shouldToggleByCornerOrButton())
Main.overview.toggle();
Main.overview.toggle();
return Clutter.EVENT_PROPAGATE;
},
@ -468,8 +467,7 @@ const ActivitiesButton = new Lang.Class({
_onKeyRelease: function(actor, event) {
let symbol = event.get_key_symbol();
if (symbol == Clutter.KEY_Return || symbol == Clutter.KEY_space) {
if (Main.overview.shouldToggleByCornerOrButton())
Main.overview.toggle();
Main.overview.toggle();
}
return Clutter.EVENT_PROPAGATE;
},
@ -654,39 +652,6 @@ const PanelCorner = new Lang.Class({
}
});
const AggregateLayout = new Lang.Class({
Name: 'AggregateLayout',
Extends: Clutter.BoxLayout,
_init: function(params) {
if (!params)
params = {};
params['orientation'] = Clutter.Orientation.VERTICAL;
this.parent(params);
this._sizeChildren = [];
},
addSizeChild: function(actor) {
this._sizeChildren.push(actor);
this.layout_changed();
},
vfunc_get_preferred_width: function(container, forHeight) {
let themeNode = container.get_theme_node();
let minWidth = themeNode.get_min_width();
let natWidth = minWidth;
for (let i = 0; i < this._sizeChildren.length; i++) {
let child = this._sizeChildren[i];
let [childMin, childNat] = child.get_preferred_width(forHeight);
minWidth = Math.max(minWidth, childMin);
natWidth = Math.max(minWidth, childNat);
}
return [minWidth, natWidth];
}
});
const AggregateMenu = new Lang.Class({
Name: 'AggregateMenu',
Extends: PanelMenu.Button,
@ -695,9 +660,6 @@ const AggregateMenu = new Lang.Class({
this.parent(0.0, C_("System menu in the top bar", "System"), false);
this.menu.actor.add_style_class_name('aggregate-menu');
let menuLayout = new AggregateLayout();
this.menu.box.set_layout_manager(menuLayout);
this._indicators = new St.BoxLayout({ style_class: 'panel-status-indicators-box' });
this.actor.add_child(this._indicators);
@ -746,11 +708,6 @@ const AggregateMenu = new Lang.Class({
this.menu.addMenuItem(this._rfkill.menu);
this.menu.addMenuItem(this._power.menu);
this.menu.addMenuItem(this._system.menu);
menuLayout.addSizeChild(this._location.menu.actor);
menuLayout.addSizeChild(this._rfkill.menu.actor);
menuLayout.addSizeChild(this._power.menu.actor);
menuLayout.addSizeChild(this._system.menu.actor);
},
});

View File

@ -61,7 +61,6 @@ const RunDialog = new Lang.Class({
// rt is short for "reload theme"
'rt': Lang.bind(this, function() {
Main.reloadThemeResource();
Main.loadTheme();
})
};

View File

@ -1,8 +1,11 @@
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
const Clutter = imports.gi.Clutter;
const GLib = imports.gi.GLib;
const Gio = imports.gi.Gio;
const GnomeBluetooth = imports.gi.GnomeBluetooth;
const Lang = imports.lang;
const St = imports.gi.St;
const Main = imports.ui.main;
const PanelMenu = imports.ui.panelMenu;
@ -20,8 +23,6 @@ const RfkillManagerInterface = '<node> \
const RfkillManagerProxy = Gio.DBusProxy.makeProxyWrapper(RfkillManagerInterface);
const HAD_BLUETOOTH_DEVICES_SETUP = 'had-bluetooth-devices-setup';
const Indicator = new Lang.Class({
Name: 'BTIndicator',
Extends: PanelMenu.SystemIndicator,
@ -31,7 +32,6 @@ const Indicator = new Lang.Class({
this._indicator = this._addIndicator();
this._indicator.icon_name = 'bluetooth-active-symbolic';
this._hadSetupDevices = global.settings.get_boolean(HAD_BLUETOOTH_DEVICES_SETUP);
this._proxy = new RfkillManagerProxy(Gio.DBus.session, BUS_NAME, OBJECT_PATH,
Lang.bind(this, function(proxy, error) {
@ -44,15 +44,13 @@ const Indicator = new Lang.Class({
}));
this._proxy.connect('g-properties-changed', Lang.bind(this, this._sync));
this._item = new PopupMenu.PopupSubMenuMenuItem(_("Bluetooth"), true);
// The Bluetooth menu only appears when Bluetooth is in use,
// so just statically build it with a "Turn Off" menu item.
this._item = new PopupMenu.PopupSubMenuMenuItem('', true);
this._item.icon.icon_name = 'bluetooth-active-symbolic';
this._toggleItem = new PopupMenu.PopupMenuItem('');
this._toggleItem.connect('activate', Lang.bind(this, function() {
this._proxy.BluetoothAirplaneMode = !this._proxy.BluetoothAirplaneMode;
this._item.menu.addAction(_("Turn Off"), Lang.bind(this, function() {
this._proxy.BluetoothAirplaneMode = true;
}));
this._item.menu.addMenuItem(this._toggleItem);
this._item.menu.addSettingsAction(_("Bluetooth Settings"), 'gnome-bluetooth-panel.desktop');
this.menu.addMenuItem(this._item);
@ -70,75 +68,42 @@ const Indicator = new Lang.Class({
while (ret) {
let isDefault = this._model.get_value(iter,
GnomeBluetooth.Column.DEFAULT);
let isPowered = this._model.get_value(iter,
GnomeBluetooth.Column.POWERED);
if (isDefault && isPowered)
if (isDefault)
return iter;
ret = this._model.iter_next(iter);
}
return null;
},
// nDevices is the number of devices setup for the current default
// adapter if one exists and is powered. If unpowered or unavailable,
// nDevice is "1" if it had setup devices associated to it the last
// time it was seen, and "-1" if not.
//
// nConnectedDevices is the number of devices connected to the default
// adapter if one exists and is powered, or -1 if it's not available.
_getNDevices: function() {
_getNConnectedDevices: function() {
let adapter = this._getDefaultAdapter();
if (!adapter)
return [ this._hadSetupDevices ? 1 : -1, -1 ];
return 0;
let nConnectedDevices = 0;
let nDevices = 0;
let [ret, iter] = this._model.iter_children(adapter);
while (ret) {
let isConnected = this._model.get_value(iter,
GnomeBluetooth.Column.CONNECTED);
if (isConnected)
nConnectedDevices++;
let isPaired = this._model.get_value(iter,
GnomeBluetooth.Column.PAIRED);
let isTrusted = this._model.get_value(iter,
GnomeBluetooth.Column.TRUSTED);
if (isPaired || isTrusted)
nDevices++;
ret = this._model.iter_next(iter);
}
if (this._hadSetupDevices != (nDevices > 0)) {
this._hadSetupDevices = !this._hadSetupDevices;
global.settings.set_boolean(HAD_BLUETOOTH_DEVICES_SETUP, this._hadSetupDevices);
}
return [ nDevices, nConnectedDevices];
return nDevices;
},
_sync: function() {
let [ nDevices, nConnectedDevices ] = this._getNDevices();
let nDevices = this._getNConnectedDevices();
let sensitive = !Main.sessionMode.isLocked && !Main.sessionMode.isGreeter;
this.menu.setSensitive(sensitive);
this._indicator.visible = nConnectedDevices > 0;
this._indicator.visible = nDevices > 0;
this._item.actor.visible = this._proxy.BluetoothHasAirplaneMode && !this._proxy.BluetoothAirplaneMode;
// Remember if there were setup devices and show the menu
// if we've seen setup devices and we're not hard blocked
if (nDevices > 0)
this._item.actor.visible = !this._proxy.BluetoothHardwareAirplaneMode;
else
this._item.actor.visible = this._proxy.BluetoothHasAirplaneMode && !this._proxy.BluetoothAirplaneMode;
if (nConnectedDevices > 0)
/* Translators: this is the number of connected bluetooth devices */
this._item.label.text = ngettext("%d Connected", "%d Connected", nConnectedDevices).format(nConnectedDevices);
else if (nConnectedDevices == -1)
this._item.label.text = _("Off");
this._item.label.text = ngettext("%d Connected", "%d Connected", nDevices).format(nDevices);
else
this._item.label.text = _("Not In Use");
this._toggleItem.label.text = this._proxy.BluetoothAirplaneMode ? _("Turn On") : _("Turn Off");
},
});

View File

@ -1,8 +1,6 @@
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
const Gio = imports.gi.Gio;
const Clutter = imports.gi.Clutter;
const St = imports.gi.St;
const Lang = imports.lang;
const UPower = imports.gi.UPowerGlib;
@ -27,8 +25,6 @@ const DisplayDeviceInterface = '<node> \
const PowerManagerProxy = Gio.DBusProxy.makeProxyWrapper(DisplayDeviceInterface);
const SHOW_BATTERY_PERCENTAGE = 'show-battery-percentage';
const Indicator = new Lang.Class({
Name: 'PowerIndicator',
Extends: PanelMenu.SystemIndicator,
@ -36,15 +32,7 @@ const Indicator = new Lang.Class({
_init: function() {
this.parent();
this._desktopSettings = new Gio.Settings({ schema_id: 'org.gnome.desktop.interface' });
this._desktopSettings.connect('changed::' + SHOW_BATTERY_PERCENTAGE,
Lang.bind(this, this._sync));
this._indicator = this._addIndicator();
this._percentageLabel = new St.Label({ y_expand: true,
y_align: Clutter.ActorAlign.CENTER });
this.indicators.add(this._percentageLabel, { expand: true, y_fill: true });
this.indicators.add_style_class_name('power-status');
this._proxy = new PowerManagerProxy(Gio.DBus.system, BUS_NAME, OBJECT_PATH,
Lang.bind(this, function(proxy, error) {
@ -95,12 +83,12 @@ const Indicator = new Lang.Class({
if (this._proxy.State == UPower.DeviceState.DISCHARGING) {
// Translators: this is <hours>:<minutes> Remaining (<percentage>)
return _("%d\u2236%02d Remaining (%d\u2009%%)").format(hours, minutes, this._proxy.Percentage);
return _("%d\u2236%02d Remaining (%d%%)").format(hours, minutes, this._proxy.Percentage);
}
if (this._proxy.State == UPower.DeviceState.CHARGING) {
// Translators: this is <hours>:<minutes> Until Full (<percentage>)
return _("%d\u2236%02d Until Full (%d\u2009%%)").format(hours, minutes, this._proxy.Percentage);
return _("%d\u2236%02d Until Full (%d%%)").format(hours, minutes, this._proxy.Percentage);
}
return null;
@ -111,12 +99,10 @@ const Indicator = new Lang.Class({
let visible = this._proxy.IsPresent;
if (visible) {
this._item.actor.show();
this._percentageLabel.visible = this._desktopSettings.get_boolean(SHOW_BATTERY_PERCENTAGE);
} else {
// If there's no battery, then we use the power icon.
this._item.actor.hide();
this._indicator.icon_name = 'system-shutdown-symbolic';
this._percentageLabel.hide();
return;
}
@ -125,14 +111,6 @@ const Indicator = new Lang.Class({
this._indicator.icon_name = icon;
this._item.icon.icon_name = icon;
// The icon label
let label
if (this._proxy.State == UPower.DeviceState.FULLY_CHARGED)
label = _("%d\u2009%%").format(100);
else
label = _("%d\u2009%%").format(this._proxy.Percentage);
this._percentageLabel.clutter_text.set_markup('<span size="smaller">' + label + '</span>');
// The status label
this._item.label.text = this._getStatus();
},

View File

@ -677,7 +677,6 @@ const WindowManager = new Lang.Class({
this._minimizing = [];
this._unminimizing = [];
this._mapping = [];
this._resizing = [];
this._destroying = [];
this._movingWindow = null;
@ -1235,27 +1234,6 @@ const WindowManager = new Lang.Class({
},
_fullscreenWindow: function(shellwm, actor, oldFrameRect, oldBufferRect) {
let monitor = Main.layoutManager.monitors[actor.meta_window.get_monitor()];
actor.translation_x = oldFrameRect.x - monitor.x;
actor.translation_y = oldFrameRect.y - monitor.y;
this._fullscreenAnimation(shellwm, actor, oldFrameRect);
},
_unfullscreenWindow: function(shellwm, actor, oldFrameRect, oldBufferRect) {
let targetRect = actor.meta_window.get_frame_rect();
let monitor = Main.layoutManager.monitors[actor.meta_window.get_monitor()];
actor.translation_x = -(targetRect.x - monitor.x);
actor.translation_y = -(targetRect.y - monitor.y);
this._fullscreenAnimation(shellwm, actor, oldFrameRect);
},
_fullscreenAnimation: function(shellwm, actor, oldFrameRect) {
this._resizing.push(actor);
// Position a clone of the window on top of the old position,
// while actor updates are frozen.
// Note that the MetaWindow has up to date sizing information for
// the new geometry already.
let targetRect = actor.meta_window.get_frame_rect();
let actorContent = Shell.util_get_content_for_window_actor(actor, oldFrameRect);
let actorClone = new St.Widget({ content: actorContent });
@ -1269,68 +1247,93 @@ const WindowManager = new Lang.Class({
let scaleX = targetRect.width / oldFrameRect.width;
let scaleY = targetRect.height / oldFrameRect.height;
// Now scale and fade out the clone
Tweener.addTween(actorClone,
{ x: targetRect.x,
y: targetRect.y,
scale_x: scaleX,
scale_y: scaleY,
scaleX: scaleX,
scaleY: scaleY,
opacity: 0,
time: WINDOW_ANIMATION_TIME,
transition: 'easeOutQuad'
});
// Now set scale the actor to size it as the clone.
// Note that the caller of this function already set a translation
// on the actor.
actor.scale_x = 1 / scaleX;
actor.scale_y = 1 / scaleY;
// Scale it to its actual new size
Tweener.addTween(actor,
{ scale_x: 1.0,
scale_y: 1.0,
translation_x: 0,
translation_y: 0,
time: WINDOW_ANIMATION_TIME,
transition: 'easeOutQuad',
onComplete: this._sizeChangeWindowDone,
onCompleteScope: this,
onCompleteParams: [shellwm, actor],
onOverwrite: this._sizeChangeWindowOverwritten,
onOverwriteScope: this,
onOverwriteParams: [shellwm, actor]
onCompleteParams: [shellwm, actor]
});
actor.translation_x = actor.x;
actor.translation_y = actor.y;
actor.scaleX = 1 / scaleX;
actor.scaleY = 1 / scaleY;
Tweener.addTween(actor,
{ scaleX: 1.0,
scaleY: 1.0,
translation_x: 0,
translation_y: 0,
time: WINDOW_ANIMATION_TIME,
transition: 'easeOutQuad'
});
shellwm.completed_size_change(actor);
},
_unfullscreenWindow: function(shellwm, actor, oldFrameRect, oldBufferRect) {
let targetRect = actor.meta_window.get_frame_rect();
let actorContent = Shell.util_get_content_for_window_actor(actor, oldFrameRect);
let actorClone = new St.Widget({ content: actorContent });
actorClone.set_offscreen_redirect(Clutter.OffscreenRedirect.ALWAYS);
actorClone.set_position(oldFrameRect.x, oldFrameRect.y);
actorClone.set_size(oldFrameRect.width, oldFrameRect.height);
Main.uiGroup.add_actor(actorClone);
actor.__unfullscreenClone = actorClone;
let scaleX = targetRect.width / oldFrameRect.width;
let scaleY = targetRect.height / oldFrameRect.height;
Tweener.addTween(actorClone,
{ x: targetRect.x,
y: targetRect.y,
scaleX: scaleX,
scaleY: scaleY,
opacity: 0,
time: WINDOW_ANIMATION_TIME,
transition: 'easeOutQuad',
onComplete: this._sizeChangeWindowDone,
onCompleteScope: this,
onCompleteParams: [shellwm, actor]
});
actor.translation_x = -actor.x;
actor.translation_y = -actor.y;
actor.scaleX = 1 / scaleX;
actor.scaleY = 1 / scaleY;
Tweener.addTween(actor,
{ scaleX: 1.0,
scaleY: 1.0,
translation_x: 0,
translation_y: 0,
time: WINDOW_ANIMATION_TIME,
transition: 'easeOutQuad'
});
// Now unfreeze actor updates, to get it to the new size.
// It's important that we don't wait until the animation is completed to
// do this, otherwise our scale will be applied to the old texture size.
shellwm.completed_size_change(actor);
},
_sizeChangeWindowDone: function(shellwm, actor) {
if (this._removeEffect(this._resizing, actor)) {
Tweener.removeTweens(actor);
actor.scale_x = 1.0;
actor.scale_y = 1.0;
actor.translation_x = 0;
actor.translation_y = 0;
Tweener.removeTweens(actor);
let actorClone = actor.__fullscreenClone;
if (actorClone) {
actorClone.destroy();
delete actor.__fullscreenClone;
}
let actorClone = actor.__fullscreenClone;
if (actorClone) {
actorClone.destroy();
delete actor.__fullscreenClone;
}
},
_sizeChangeWindowOverwritten: function(shellwm, actor) {
if (this._removeEffect(this._resizing, actor)) {
let actorClone = actor.__fullscreenClone;
if (actorClone) {
actorClone.destroy();
delete actor.__fullscreenClone;
}
actorClone = actor.__unfullscreenClone;
if (actorClone) {
actorClone.destroy();
delete actor.__unfullscreenClone;
}
},

View File

@ -214,7 +214,7 @@ const WindowMenuManager = new Lang.Class({
menu.close();
});
this._sourceActor.set_size(Math.max(1, rect.width), Math.max(1, rect.height));
this._sourceActor.set_size(rect.width, rect.height);
this._sourceActor.set_position(rect.x, rect.y);
this._sourceActor.show();

View File

@ -140,7 +140,7 @@
<para>
<filename>/usr/share/gnome-session/sessions/gnome.session</filename>,
<filename>/usr/share/applications/org.gnome.Shell.desktop</filename>.</para>
<filename>/usr/share/applications/gnome-shell.desktop</filename>.</para>
</refsect1>
<refsect1>

View File

@ -24,7 +24,6 @@ fi
fr
fur
ga
gd
gl
gu
he

View File

@ -2,8 +2,9 @@
# Please keep this file sorted alphabetically.
[encoding: UTF-8]
data/50-gnome-shell-system.xml.in
data/gnome-shell.desktop.in.in
data/gnome-shell-extension-prefs.desktop.in.in
data/org.gnome.Shell.desktop.in.in
data/gnome-shell-wayland.desktop.in.in
data/org.gnome.shell.gschema.xml.in.in
data/org.gnome.Shell.PortalHelper.desktop.in
js/extensionPrefs/main.js

View File

@ -1223,13 +1223,13 @@ msgstr "<غير معروفة>"
#: ../js/ui/status/network.js:451 ../js/ui/status/network.js:1308
#, javascript-format
msgid "%s Off"
msgstr "%s مغلق"
msgstr "%s مغلق"
#. Translators: %s is a network identifier
#: ../js/ui/status/network.js:454
#, javascript-format
msgid "%s Connected"
msgstr "%s مُتصل"
msgstr "%s مُتصل"
#. Translators: this is for network devices that are physically present but are not
#. under NetworkManager's control (and thus cannot be used in the menu);
@ -1237,19 +1237,19 @@ msgstr "%s مُتصل"
#: ../js/ui/status/network.js:459
#, javascript-format
msgid "%s Unmanaged"
msgstr "%s غير مُدار"
msgstr "%s غير مُدار"
#. Translators: %s is a network identifier
#: ../js/ui/status/network.js:462
#, javascript-format
msgid "%s Disconnecting"
msgstr "%s يقطع الاتّصال"
msgstr "%s يقطع الاتّصال"
#. Translators: %s is a network identifier
#: ../js/ui/status/network.js:469 ../js/ui/status/network.js:1300
#, javascript-format
msgid "%s Connecting"
msgstr "%s يتّصل"
msgstr "%s يتّصل"
#. Translators: this is for network connections that require some kind of key or password; %s is a network identifier
#: ../js/ui/status/network.js:472
@ -1269,7 +1269,7 @@ msgstr "برمجيات %s المغروسة (Firmware) غير متاحة"
#: ../js/ui/status/network.js:484
#, javascript-format
msgid "%s Unavailable"
msgstr "%s غير متاح"
msgstr "%s غير متاح"
#. Translators: %s is a network identifier
#: ../js/ui/status/network.js:487
@ -1296,7 +1296,7 @@ msgstr "عتاد %s مُعَطَّل"
#: ../js/ui/status/network.js:592
#, javascript-format
msgid "%s Disabled"
msgstr "%s معطّل"
msgstr "%s معطّل"
#: ../js/ui/status/network.js:632
msgid "Use as Internet connection"
@ -1364,7 +1364,7 @@ msgstr "نقطة اتصال %s نشطة"
#: ../js/ui/status/network.js:1311
#, javascript-format
msgid "%s Not Connected"
msgstr "%s غير متّصل"
msgstr "%s غير متّصل"
#: ../js/ui/status/network.js:1411
msgid "connecting..."

View File

@ -12,8 +12,8 @@ msgstr ""
"Project-Id-Version: gnome-shell\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
"shell&keywords=I18N+L10N&component=general\n"
"POT-Creation-Date: 2015-10-27 22:11+0000\n"
"PO-Revision-Date: 2015-10-28 10:56+0100\n"
"POT-Creation-Date: 2015-10-05 08:41+0000\n"
"PO-Revision-Date: 2015-10-04 11:42-0400\n"
"Last-Translator: Marek Černocký <marek@manet.cz>\n"
"Language-Team: Czech <gnome-cs-list@gnome.org>\n"
"Language: cs\n"
@ -21,7 +21,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
"X-Generator: Gtranslator 2.91.7\n"
"X-Generator: Virtaal 0.7.1\n"
"X-Project-Style: gnome\n"
#: ../data/50-gnome-shell-system.xml.in.h:1
@ -357,7 +357,7 @@ msgstr "(např. uživatel nebo %s)"
msgid "Username: "
msgstr "Uživatelské jméno: "
#: ../js/gdm/loginDialog.js:1180
#: ../js/gdm/loginDialog.js:1184
msgid "Login Window"
msgstr "Přihlašovací okno"
@ -575,12 +575,6 @@ msgstr "Předchozí měsíc"
msgid "Next month"
msgstr "Následující měsíc"
#: ../js/ui/calendar.js:728
#, javascript-format
msgctxt "date day number format"
msgid "%d"
msgstr "%e"
#: ../js/ui/calendar.js:783
msgid "Week %V"
msgstr "Týden %V"
@ -631,7 +625,7 @@ msgstr "Externí svazek připojen"
msgid "External drive disconnected"
msgstr "Externí svazek odpojen"
#: ../js/ui/components/autorunManager.js:351
#: ../js/ui/components/autorunManager.js:354
#, javascript-format
msgid "Open with %s"
msgstr "Otevřít s %s"
@ -1027,24 +1021,24 @@ msgstr "Přehled"
#. characters.
#: ../js/ui/overview.js:244
msgid "Type to search…"
msgstr "vyhledávejte psaním…"
msgstr "Vyhledávejte psaním…"
#: ../js/ui/panel.js:358
#: ../js/ui/panel.js:352
msgid "Quit"
msgstr "Ukončit"
#. Translators: If there is no suitable word for "Activities"
#. in your language, you can use the word for "Overview".
#: ../js/ui/panel.js:414
#: ../js/ui/panel.js:404
msgid "Activities"
msgstr "Činnosti"
#: ../js/ui/panel.js:695
#: ../js/ui/panel.js:650
msgctxt "System menu in the top bar"
msgid "System"
msgstr "Systém"
#: ../js/ui/panel.js:807
#: ../js/ui/panel.js:754
msgid "Top Bar"
msgstr "Horní lišta"
@ -1057,15 +1051,15 @@ msgstr "Horní lišta"
msgid "toggle-switch-us"
msgstr "toggle-switch-intl"
#: ../js/ui/runDialog.js:71
#: ../js/ui/runDialog.js:70
msgid "Enter a Command"
msgstr "Zadejte příkaz:"
#: ../js/ui/runDialog.js:111 ../js/ui/windowMenu.js:162
#: ../js/ui/runDialog.js:110 ../js/ui/windowMenu.js:162
msgid "Close"
msgstr "Zavřít"
#: ../js/ui/runDialog.js:282
#: ../js/ui/runDialog.js:281
msgid "Restarting…"
msgstr "Restartuje se…"
@ -1662,24 +1656,24 @@ msgstr "Použít pro přihlašovací obrazovku zadaný režim, např. „gdm“.
msgid "List possible modes"
msgstr "Vypsat možné režimy"
#: ../src/shell-app.c:246
#: ../src/shell-app.c:239
msgctxt "program"
msgid "Unknown"
msgstr "Neznámé"
#: ../src/shell-app.c:487
#: ../src/shell-app.c:480
#, c-format
msgid "Failed to launch “%s”"
msgstr "Nelze spustit „%s“"
#: ../src/shell-keyring-prompt.c:730
#: ../src/shell-keyring-prompt.c:742
msgid "Passwords do not match."
msgstr "Hesla si neodpovídají."
#: ../src/shell-keyring-prompt.c:738
#: ../src/shell-keyring-prompt.c:750
msgid "Password cannot be blank"
msgstr "Heslo nemůže být prázdné."
#: ../src/shell-polkit-authentication-agent.c:353
#: ../src/shell-polkit-authentication-agent.c:346
msgid "Authentication dialog was dismissed by the user"
msgstr "Dialogové okno ověření bylo uživatelem zrušeno"

1577
po/eo.po

File diff suppressed because it is too large Load Diff

199
po/es.po
View File

@ -11,8 +11,8 @@ msgstr ""
msgstr ""
"Project-Id-Version: gnome-shell.master\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
"shell&keywords=I18N+L10N&component=general\n"
"POT-Creation-Date: 2015-11-22 22:13+0000\n"
"shell&keywords=I18N+L10N&component=general\n"
"POT-Creation-Date: 2015-10-04 20:38+0000\n"
"PO-Revision-Date: 2015-10-05 09:45+0200\n"
"Last-Translator: Daniel Mustieles <daniel.mustieles@gmail.com>\n"
"Language-Team: Español; Castellano <gnome-es-list@gnome.org>\n"
@ -46,6 +46,15 @@ msgstr "Mostrar todas las aplicaciones"
#: ../data/50-gnome-shell-system.xml.in.h:6
msgid "Open the application menu"
msgstr "Abrir el menú de la aplicación"
#: ../data/gnome-shell.desktop.in.in.h:1
msgid "GNOME Shell"
msgstr "GNOME Shell"
#: ../data/gnome-shell.desktop.in.in.h:2
#: ../data/gnome-shell-wayland.desktop.in.in.h:2
msgid "Window management and application launching"
msgstr "Gestión de ventanas e inicio de aplicaciones"
#: ../data/gnome-shell-extension-prefs.desktop.in.in.h:1
msgid "GNOME Shell Extension Preferences"
@ -54,13 +63,9 @@ msgstr "Preferencias de las extensiones de GNOME Shell"
#: ../data/gnome-shell-extension-prefs.desktop.in.in.h:2
msgid "Configure GNOME Shell Extensions"
msgstr "Configurar las extensiones de GNOME Shell"
#: ../data/org.gnome.Shell.desktop.in.in.h:1
msgid "GNOME Shell"
msgstr "GNOME Shell"
#: ../data/org.gnome.Shell.desktop.in.in.h:2
msgid "Window management and application launching"
#: ../data/gnome-shell-wayland.desktop.in.in.h:1
msgid "GNOME Shell (wayland compositor)"
msgstr "GNOME Shell (composición wayland)"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:1
@ -171,99 +176,80 @@ msgstr ""
"en un futuro, se mostrará la casilla «Recordar contraseña». Esta clave "
"establece el valor predeterminado de la casilla."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:18
msgid ""
"Whether the default Bluetooth adapter had set up devices associated to it"
msgstr ""
"Indica si el adaptador Bluetooth predeterminado tiene dispositivos asociados "
"configurados"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:19
msgid ""
"The shell will only show a Bluetooth menu item if a Bluetooth adapter is "
"powered, or if there were devices set up associated with the default "
"adapter. This will be reset if the default adapter is ever seen not to have "
"devices associated to it."
msgstr ""
"La shell sólo mostrará un menú de Bluetooth si hay conectado un adaptador de "
"Bluetooth, o si hay dispositivos asociados configurados con el adaptador "
"predeterminado. Esto se restablecerá si se ve que el adaptador "
"predeterminado no tiene dispositivos asociados."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:18
msgid "Show the week date in the calendar"
msgstr "Mostrar la fecha de la semana en el calendario"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:19
msgid "If true, display the ISO week date in the calendar."
msgstr "Si es cierta, muestra la fecha de semana ISO en el calendario."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:20
msgid "Keybinding to open the application menu"
msgstr "Asociación de teclas para abrir el menú de la aplicación"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:21
msgid "Keybinding to open the application menu."
msgstr "Asociación de teclas para abrir el menú de la aplicación."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:22
msgid "Keybinding to open the \"Show Applications\" view"
msgstr "Asociación de teclas para la vista «Mostrar aplicaciones»"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:23
msgid ""
"Keybinding to open the \"Show Applications\" view of the Activities Overview."
msgstr ""
"Asociación de teclas para abrir la vista «Mostrar aplicaciones» de la vista "
"de actividades."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:24
msgid "Keybinding to open the overview"
msgstr "Asociación de teclas para la vista general"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:25
msgid "Keybinding to open the Activities Overview."
msgstr "Asociación de teclas para abrir la Vista de actividades"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:26
msgid "Keybinding to toggle the visibility of the notification list"
msgstr ""
"Asociación de teclas para cambiar la visibilidad de la lista de "
"notificaciones"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:27
msgid "Keybinding to toggle the visibility of the notification list."
msgstr ""
"Asociación de teclas para cambiar la visibilidad de la lista de "
"notificaciones."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:28
msgid "Keybinding to focus the active notification"
msgstr "Asociación de teclas para dar el foco a la notificación activa"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:29
msgid "Keybinding to focus the active notification."
msgstr "Asociación de teclas para dar el foco a la notificación activa."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:30
msgid ""
"Keybinding that pauses and resumes all running tweens, for debugging purposes"
msgstr ""
"Asociación de teclas que pausa y reanuda los «tweens» en ejecución, para "
"depuración."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:31
msgid "Which keyboard to use"
msgstr "Qué teclado usar"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:32
msgid "The type of keyboard to use."
msgstr "El tipo de teclado que usar."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:33
msgid "Limit switcher to current workspace."
msgstr "Limitar el intercambiador al área de trabajo actual."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:34
msgid ""
"If true, only applications that have windows on the current workspace are "
@ -272,11 +258,11 @@ msgstr ""
"Si es cierto, sólo las aplicaciones que tengan ventanas en el área de "
"trabajo actual se muestran en el selector. Si no, se incluyen todas las "
"aplicaciones."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:35
msgid "The application icon mode."
msgstr "El modo de icono de la aplicación."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:36
msgid ""
"Configures how the windows are shown in the switcher. Valid possibilities "
@ -286,7 +272,7 @@ msgstr ""
"Configura cómo se muestran las ventanas en el selector. Los valore posibles "
"son «thumbnail-only» (muestra una miniatura de la ventana), «app-icon-"
"only» (sólo muestra el icono de la aplicación) «both»."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:37
msgid ""
"If true, only windows from the current workspace are shown in the switcher. "
@ -294,31 +280,31 @@ msgstr ""
msgstr ""
"Si es cierto, sólo se muestran en el selector las ventanas del área de "
"trabajo actual. Si no, se incluyen todas las ventanas."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:38
msgid "Attach modal dialog to the parent window"
msgstr "Acoplar un diálogo modal a la ventana padre"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:39
msgid ""
"This key overrides the key in org.gnome.mutter when running GNOME Shell."
msgstr ""
"Esta clave sobrescribe la clave en org.gnome.mutter al ejecutar GNOME Shell."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:40
msgid "Enable edge tiling when dropping windows on screen edges"
msgstr ""
"Activar el mosaico en los bordes al arrastrar ventanas a los bordes de la "
"ventana"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:41
msgid "Workspaces are managed dynamically"
msgstr "Las áreas de trabajo se gestionan dinámicamente"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:42
msgid "Workspaces only on primary monitor"
msgstr "Áreas de trabajo solo en la pantalla principal"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:43
msgid "Delay focus changes in mouse mode until the pointer stops moving"
msgstr ""
@ -384,7 +370,7 @@ msgstr "(ej., usuario o %s)"
#: ../js/ui/components/networkAgent.js:289
msgid "Username: "
msgstr "Nombre de usuario:"
#: ../js/gdm/loginDialog.js:1184
msgid "Login Window"
msgstr "Ventana de inicio de sesión"
@ -520,12 +506,12 @@ msgstr "Añadir a los favoritos"
#: ../js/ui/appDisplay.js:1897
msgid "Show Details"
msgstr "Mostrar detalles"
#: ../js/ui/appFavorites.js:132
#, javascript-format
msgid "%s has been added to your favorites."
msgstr "Se ha añadido %s a sus favoritos."
#: ../js/ui/appFavorites.js:166
#, javascript-format
msgid "%s has been removed from your favorites."
@ -602,12 +588,6 @@ msgstr "Mes anterior"
#: ../js/ui/calendar.js:576
msgid "Next month"
msgstr "Siguiente mes"
#: ../js/ui/calendar.js:728
#, javascript-format
msgctxt "date day number format"
msgid "%d"
msgstr "%d"
#: ../js/ui/calendar.js:783
msgid "Week %V"
@ -658,7 +638,7 @@ msgstr "Dispositivo externo conectado"
#: ../js/ui/components/automountManager.js:102
msgid "External drive disconnected"
msgstr "Dispositivo externo desconectado"
#: ../js/ui/components/autorunManager.js:354
#, javascript-format
msgid "Open with %s"
@ -1047,22 +1027,23 @@ msgstr "Vista general"
#: ../js/ui/overview.js:244
msgid "Type to search…"
msgstr "Escribir para buscar…"
#: ../js/ui/panel.js:352
msgid "Quit"
msgstr "Salir"
#. Translators: If there is no suitable word for "Activities"
#. in your language, you can use the word for "Overview".
#. in your language, you can use the word for "Overview".
#: ../js/ui/panel.js:404
msgid "Activities"
msgstr "Actividades"
#: ../js/ui/panel.js:650
#| msgid "System"
msgctxt "System menu in the top bar"
msgid "System"
msgstr "Sistema"
#: ../js/ui/panel.js:754
msgid "Top Bar"
msgstr "Barra superior"
@ -1075,15 +1056,15 @@ msgstr "Barra superior"
#: ../js/ui/popupMenu.js:289
msgid "toggle-switch-us"
msgstr "toggle-switch-intl"
#: ../js/ui/runDialog.js:70
msgid "Enter a Command"
msgstr "Introducir un comando"
#: ../js/ui/runDialog.js:110 ../js/ui/windowMenu.js:162
msgid "Close"
msgstr "Cerrar"
#: ../js/ui/runDialog.js:281
msgid "Restarting…"
msgstr "Reiniciando…"
@ -1206,41 +1187,29 @@ msgstr "Contraste alto"
#: ../js/ui/status/accessibility.js:202
msgid "Large Text"
msgstr "Texto grande"
#: ../js/ui/status/bluetooth.js:47
msgid "Bluetooth"
#: ../js/ui/status/bluetooth.js:51 ../js/ui/status/network.js:178
#: ../js/ui/status/network.js:353 ../js/ui/status/network.js:1279
#: ../js/ui/status/network.js:1394 ../js/ui/status/rfkill.js:90
#: ../js/ui/status/rfkill.js:117
msgid "Turn Off"
msgstr "Apagar"
#: ../js/ui/status/bluetooth.js:54
msgid "Bluetooth Settings"
msgstr "Configuración de Bluetooth"
#. Translators: this is the number of connected bluetooth devices
#. Translators: this is the number of connected bluetooth devices
#: ../js/ui/status/bluetooth.js:105
#, javascript-format
msgid "%d Connected"
msgid_plural "%d Connected"
msgstr[0] "%d conectado"
msgstr[1] "%d conectados"
#: ../js/ui/status/bluetooth.js:138
msgid "Off"
msgstr "Desconectado"
#: ../js/ui/status/bluetooth.js:107
msgid "Not In Use"
msgstr "No está en uso"
#: ../js/ui/status/bluetooth.js:142 ../js/ui/status/network.js:1279
msgid "Turn On"
msgstr "Encender"
#: ../js/ui/status/bluetooth.js:142 ../js/ui/status/network.js:178
#: ../js/ui/status/network.js:353 ../js/ui/status/network.js:1279
#: ../js/ui/status/network.js:1394 ../js/ui/status/rfkill.js:90
#: ../js/ui/status/rfkill.js:117
msgid "Turn Off"
msgstr "Apagar"
#: ../js/ui/status/brightness.js:44
msgid "Brightness"
@ -1408,6 +1377,10 @@ msgstr "Seleccionar red"
#: ../js/ui/status/network.js:1177
msgid "Wi-Fi Settings"
msgstr "Configuración de Wi-Fi"
#: ../js/ui/status/network.js:1279
msgid "Turn On"
msgstr "Encender"
#. Translators: %s is a network identifier
#: ../js/ui/status/network.js:1296
@ -1457,36 +1430,31 @@ msgstr "Falló la conexión"
#: ../js/ui/status/network.js:1698
msgid "Activation of network connection failed"
msgstr "Falló la activación de la conexión de red"
#: ../js/ui/status/power.js:49
msgid "Power Settings"
msgstr "Configuración de energía"
#: ../js/ui/status/power.js:65
msgid "Fully Charged"
msgstr "Cargada completamente"
#. 0 is reported when UPower does not have enough data
#. to estimate battery life
#. to estimate battery life
#: ../js/ui/status/power.js:72 ../js/ui/status/power.js:78
msgid "Estimating…"
msgstr "Estimando…"
#. Translators: this is <hours>:<minutes> Remaining (<percentage>)
#. Translators: this is <hours>:<minutes> Remaining (<percentage>)
#: ../js/ui/status/power.js:86
#, javascript-format
msgid "%d%02d Remaining (%d%%)"
#, javascript-format
msgid "%d%02d Remaining (%d%%)"
msgstr "%d%02d queda (%d%%)"
#. Translators: this is <hours>:<minutes> Until Full (<percentage>)
#. Translators: this is <hours>:<minutes> Until Full (<percentage>)
#: ../js/ui/status/power.js:91
#, javascript-format
msgid "%d%02d Until Full (%d%%)"
msgstr "%d%02d para la carga completa (%d%%)"
#: ../js/ui/status/power.js:131 ../js/ui/status/power.js:133
#, javascript-format
msgid "%d%%"
#, javascript-format
msgid "%d%02d Until Full (%d%%)"
msgstr "%d%02d para la carga completa (%d%%)"
#. The menu only appears when airplane mode is on, so just
@ -1689,36 +1657,39 @@ msgstr ""
#: ../src/main.c:399
msgid "List possible modes"
msgstr "Listar los modos posibles"
#: ../src/shell-app.c:239
msgctxt "program"
msgid "Unknown"
msgstr "Desconocido"
#: ../src/shell-app.c:480
#, c-format
msgid "Failed to launch “%s”"
msgstr "Falló al lanzar «%s»"
#: ../src/shell-keyring-prompt.c:742
msgid "Passwords do not match."
msgstr "Las contraseñas no coinciden."
#: ../src/shell-keyring-prompt.c:750
msgid "Password cannot be blank"
msgstr "La contraseña no puede estar vacía"
#: ../src/shell-polkit-authentication-agent.c:346
msgid "Authentication dialog was dismissed by the user"
msgstr "El usuario rechazó el diálogo de autenticación"
#~ msgid "GNOME Shell (wayland compositor)"
#~ msgid "Bluetooth"
#~ msgstr "Bluetooth"
#~ msgid "%d Connected Device"
#~ msgid_plural "%d Connected Devices"
#~ msgstr[0] "%d dispositivo conectado"
#~ msgstr[1] "%d dispositivos conectados"
#~ msgid "Off"
#~ msgstr "Desconectado"
#~ msgid "Authentication required"
#~ msgstr "Autenticación requerida"
@ -2258,6 +2229,10 @@ msgstr "El usuario rechazó el diálogo de autenticación"
#~ msgid_plural "%d minutes remaining"
#~ msgstr[0] "Queda %d minuto"
#~ msgstr[1] "Quedan %d minutos"
#~ msgctxt "percent of battery remaining"
#~ msgid "%d%%"
#~ msgstr "%d%%"
#~ msgid "AC Adapter"
#~ msgstr "Adaptador de corriente"

666
po/eu.po

File diff suppressed because it is too large Load Diff

184
po/fi.po
View File

@ -26,8 +26,8 @@ msgstr ""
"Project-Id-Version: gnome-shell\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
"shell&keywords=I18N+L10N&component=general\n"
"POT-Creation-Date: 2015-11-15 10:15+0000\n"
"PO-Revision-Date: 2015-11-15 18:52+0200\n"
"POT-Creation-Date: 2015-10-03 20:41+0000\n"
"PO-Revision-Date: 2015-09-05 13:11+0300\n"
"Last-Translator: Jiri Grönroos <jiri.gronroos+l10n@iki.fi>\n"
"Language-Team: suomi <gnome-fi-laatu@lists.sourceforge.net>\n"
"Language: fi\n"
@ -35,7 +35,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: Gtranslator 2.91.7\n"
"X-Generator: Gtranslator 2.91.6\n"
"X-DamnedLies-Scope: partial\n"
"X-Project-Style: gnome\n"
"X-POT-Import-Date: 2012-03-05 15:06:10+0000\n"
@ -64,6 +64,15 @@ msgstr "Näytä kaikki sovellukset"
msgid "Open the application menu"
msgstr "Avaa sovellusvalikko"
#: ../data/gnome-shell.desktop.in.in.h:1
msgid "GNOME Shell"
msgstr "Gnome Shell"
#: ../data/gnome-shell.desktop.in.in.h:2
#: ../data/gnome-shell-wayland.desktop.in.in.h:2
msgid "Window management and application launching"
msgstr "Ikkunanhallinta ja sovelluksien käynnistäminen"
#: ../data/gnome-shell-extension-prefs.desktop.in.in.h:1
msgid "GNOME Shell Extension Preferences"
msgstr "Gnome Shell -laajennusten asetukset"
@ -72,13 +81,9 @@ msgstr "Gnome Shell -laajennusten asetukset"
msgid "Configure GNOME Shell Extensions"
msgstr "Hallitse Gnome Shell -laajennuksia"
#: ../data/org.gnome.Shell.desktop.in.in.h:1
msgid "GNOME Shell"
msgstr "Gnome Shell"
#: ../data/org.gnome.Shell.desktop.in.in.h:2
msgid "Window management and application launching"
msgstr "Ikkunanhallinta ja sovelluksien käynnistäminen"
#: ../data/gnome-shell-wayland.desktop.in.in.h:1
msgid "GNOME Shell (wayland compositor)"
msgstr "Gnome Shell (Wayland-komposiointi)"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:1
msgid "Enable internal tools useful for developers and testers from Alt-F2"
@ -189,86 +194,73 @@ msgid ""
msgstr ""
#: ../data/org.gnome.shell.gschema.xml.in.in.h:18
msgid ""
"Whether the default Bluetooth adapter had set up devices associated to it"
msgstr ""
#: ../data/org.gnome.shell.gschema.xml.in.in.h:19
msgid ""
"The shell will only show a Bluetooth menu item if a Bluetooth adapter is "
"powered, or if there were devices set up associated with the default "
"adapter. This will be reset if the default adapter is ever seen not to have "
"devices associated to it."
msgstr ""
#: ../data/org.gnome.shell.gschema.xml.in.in.h:20
msgid "Show the week date in the calendar"
msgstr "Näytä viikonpäivä kalenterissa"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:21
#: ../data/org.gnome.shell.gschema.xml.in.in.h:19
msgid "If true, display the ISO week date in the calendar."
msgstr "Jos tosi, näytä ISO-viikonpäivät kalenterissa."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:22
#: ../data/org.gnome.shell.gschema.xml.in.in.h:20
msgid "Keybinding to open the application menu"
msgstr "Sovellusvalikon avaukseen käytettävä pikanäppäin"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:23
#: ../data/org.gnome.shell.gschema.xml.in.in.h:21
msgid "Keybinding to open the application menu."
msgstr "Sovellusvalikon avaukseen käytettävä pikanäppäin."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:24
#: ../data/org.gnome.shell.gschema.xml.in.in.h:22
msgid "Keybinding to open the \"Show Applications\" view"
msgstr "Näytä sovellukset -näkymän avaukseen käytettävä pikanäppäin"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:25
#: ../data/org.gnome.shell.gschema.xml.in.in.h:23
msgid ""
"Keybinding to open the \"Show Applications\" view of the Activities Overview."
msgstr ""
"Yleisnäkymän Näytä sovellukset -näkymän avaukseen käytettävä pikanäppäin."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:26
#: ../data/org.gnome.shell.gschema.xml.in.in.h:24
msgid "Keybinding to open the overview"
msgstr "Yleisnäkymän avaukseen käytettävä pikanäppäin"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:27
#: ../data/org.gnome.shell.gschema.xml.in.in.h:25
msgid "Keybinding to open the Activities Overview."
msgstr "Yleisnäkymän avaukseen käytettävä pikanäppäin."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:28
#: ../data/org.gnome.shell.gschema.xml.in.in.h:26
msgid "Keybinding to toggle the visibility of the notification list"
msgstr "Ilmoitusalueen näyttämiseen/piilottamiseen tarkoitettu pikanäppäin"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:29
#: ../data/org.gnome.shell.gschema.xml.in.in.h:27
msgid "Keybinding to toggle the visibility of the notification list."
msgstr "Ilmoitusluettelon näyttämiseen/piilottamiseen tarkoitettu pikanäppäin."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:30
#: ../data/org.gnome.shell.gschema.xml.in.in.h:28
msgid "Keybinding to focus the active notification"
msgstr "Aktiiviseen ilmoitukseen kohdistava pikanäppäin"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:31
#: ../data/org.gnome.shell.gschema.xml.in.in.h:29
msgid "Keybinding to focus the active notification."
msgstr "Aktiiviseen ilmoitukseen kohdistava pikanäppäin."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:32
#: ../data/org.gnome.shell.gschema.xml.in.in.h:30
msgid ""
"Keybinding that pauses and resumes all running tweens, for debugging purposes"
msgstr ""
#: ../data/org.gnome.shell.gschema.xml.in.in.h:33
#: ../data/org.gnome.shell.gschema.xml.in.in.h:31
msgid "Which keyboard to use"
msgstr "Mitä näppäimistöä käytetään"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:34
#: ../data/org.gnome.shell.gschema.xml.in.in.h:32
msgid "The type of keyboard to use."
msgstr "Käytettävän näppäimistön tyyppi."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:35
#: ../data/org.gnome.shell.gschema.xml.in.in.h:33
msgid "Limit switcher to current workspace."
msgstr "Rajoita vaihtaja nykyiseen työtilaan."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:36
#: ../data/org.gnome.shell.gschema.xml.in.in.h:34
msgid ""
"If true, only applications that have windows on the current workspace are "
"shown in the switcher. Otherwise, all applications are included."
@ -277,11 +269,11 @@ msgstr ""
"sijaitsevat nykyisessä työtilassa. Muussa tapauksessa kaikki sovellukset "
"sisällytetään."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:37
#: ../data/org.gnome.shell.gschema.xml.in.in.h:35
msgid "The application icon mode."
msgstr "Sovelluskuvakkeen tila."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:38
#: ../data/org.gnome.shell.gschema.xml.in.in.h:36
msgid ""
"Configures how the windows are shown in the switcher. Valid possibilities "
"are 'thumbnail-only' (shows a thumbnail of the window), 'app-icon-"
@ -291,7 +283,7 @@ msgstr ""
"'thumbnail-only' (näyttää ikkunan pienoiskuvan), 'app-icon-only' (näyttää "
"vain sovelluksen kuvakkeen) tai 'both'."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:39
#: ../data/org.gnome.shell.gschema.xml.in.in.h:37
msgid ""
"If true, only windows from the current workspace are shown in the switcher. "
"Otherwise, all windows are included."
@ -299,29 +291,29 @@ msgstr ""
"Jos tosi,vain nykyisessä työtilassa olevat ikkunat näytetään vaihtajassa. "
"Muussa tapauksessa kaikki ikkunat näytetään."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:40
#: ../data/org.gnome.shell.gschema.xml.in.in.h:38
msgid "Attach modal dialog to the parent window"
msgstr "Kiinnitä modaali-ikkuna isäntäikkunaan"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:41
#: ../data/org.gnome.shell.gschema.xml.in.in.h:39
msgid ""
"This key overrides the key in org.gnome.mutter when running GNOME Shell."
msgstr ""
"Tämä avain syrjäyttää avaimen org.gnome.mutter Gnome Shelliä käyttäessä."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:42
#: ../data/org.gnome.shell.gschema.xml.in.in.h:40
msgid "Enable edge tiling when dropping windows on screen edges"
msgstr "Käytä reunakiinnitystä tiputtaessa ikkunoita näytön reunoille"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:43
#: ../data/org.gnome.shell.gschema.xml.in.in.h:41
msgid "Workspaces are managed dynamically"
msgstr "Työtilojen hallinta on dynaamista"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:44
#: ../data/org.gnome.shell.gschema.xml.in.in.h:42
msgid "Workspaces only on primary monitor"
msgstr "Työtilat ainoastaan ensisijaisella näytöllä"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:45
#: ../data/org.gnome.shell.gschema.xml.in.in.h:43
msgid "Delay focus changes in mouse mode until the pointer stops moving"
msgstr ""
"Viivästytä kohdistuksen vaihtumista hiiritilassa, kunnes osoitin lopettaa "
@ -388,7 +380,7 @@ msgstr "(esim. käyttäjä tai %s)"
msgid "Username: "
msgstr "Käyttäjänimi: "
#: ../js/gdm/loginDialog.js:1180
#: ../js/gdm/loginDialog.js:1184
msgid "Login Window"
msgstr "Kirjautumisikkuna"
@ -524,12 +516,12 @@ msgstr "Lisää suosikkeihin"
msgid "Show Details"
msgstr "Näytä tiedot"
#: ../js/ui/appFavorites.js:133
#: ../js/ui/appFavorites.js:132
#, javascript-format
msgid "%s has been added to your favorites."
msgstr "%s on lisätty suosikkeihin."
#: ../js/ui/appFavorites.js:167
#: ../js/ui/appFavorites.js:166
#, javascript-format
msgid "%s has been removed from your favorites."
msgstr "%s on poistettu suosikeista."
@ -606,14 +598,6 @@ msgstr "Edellinen kuukausi"
msgid "Next month"
msgstr "Seuraava kuukausi"
#: ../js/ui/calendar.js:728
#, fuzzy, javascript-format
#| msgctxt "percent of battery remaining"
#| msgid "%d%%"
msgctxt "date day number format"
msgid "%d"
msgstr "%d %%"
#: ../js/ui/calendar.js:783
msgid "Week %V"
msgstr "Viikko %V"
@ -664,7 +648,7 @@ msgstr "Erillinen asema yhdistetty"
msgid "External drive disconnected"
msgstr "Erillinen asema irrotettu"
#: ../js/ui/components/autorunManager.js:351
#: ../js/ui/components/autorunManager.js:354
#, javascript-format
msgid "Open with %s"
msgstr "Avaa käyttäen sovellusta %s"
@ -1054,22 +1038,23 @@ msgstr "Yleisnäkymä"
msgid "Type to search…"
msgstr "Kirjoita hakeaksesi…"
#: ../js/ui/panel.js:358
#: ../js/ui/panel.js:352
msgid "Quit"
msgstr "Lopeta"
#. Translators: If there is no suitable word for "Activities"
#. in your language, you can use the word for "Overview".
#: ../js/ui/panel.js:414
#: ../js/ui/panel.js:404
msgid "Activities"
msgstr "Toiminnot"
#: ../js/ui/panel.js:695
#: ../js/ui/panel.js:650
#| msgid "System"
msgctxt "System menu in the top bar"
msgid "System"
msgstr "Järjestelmä"
#: ../js/ui/panel.js:807
#: ../js/ui/panel.js:754
msgid "Top Bar"
msgstr "Yläpalkki"
@ -1082,15 +1067,15 @@ msgstr "Yläpalkki"
msgid "toggle-switch-us"
msgstr "toggle-switch-intl"
#: ../js/ui/runDialog.js:71
#: ../js/ui/runDialog.js:70
msgid "Enter a Command"
msgstr "Syötä komento"
#: ../js/ui/runDialog.js:111 ../js/ui/windowMenu.js:162
#: ../js/ui/runDialog.js:110 ../js/ui/windowMenu.js:162
msgid "Close"
msgstr "Sulje"
#: ../js/ui/runDialog.js:282
#: ../js/ui/runDialog.js:281
msgid "Restarting…"
msgstr "Käynnistetään uudelleen…"
@ -1213,41 +1198,29 @@ msgstr "Korkea kontrasti"
msgid "Large Text"
msgstr "Suuri tekstin koko"
#: ../js/ui/status/bluetooth.js:50
msgid "Bluetooth"
msgstr "Bluetooth"
#: ../js/ui/status/bluetooth.js:51 ../js/ui/status/network.js:178
#: ../js/ui/status/network.js:353 ../js/ui/status/network.js:1279
#: ../js/ui/status/network.js:1394 ../js/ui/status/rfkill.js:90
#: ../js/ui/status/rfkill.js:117
msgid "Turn Off"
msgstr "Sammuta"
#: ../js/ui/status/bluetooth.js:59
#: ../js/ui/status/bluetooth.js:54
msgid "Bluetooth Settings"
msgstr "Bluetooth-asetukset"
#. Translators: this is the number of connected bluetooth devices
#: ../js/ui/status/bluetooth.js:139
#: ../js/ui/status/bluetooth.js:105
#, javascript-format
msgid "%d Connected"
msgid_plural "%d Connected"
msgstr[0] "%d yhdistetty"
msgstr[1] "%d yhdistetty"
#: ../js/ui/status/bluetooth.js:141
msgid "Off"
msgstr "Pois"
#: ../js/ui/status/bluetooth.js:143
#: ../js/ui/status/bluetooth.js:107
msgid "Not In Use"
msgstr "Ei käytössä"
#: ../js/ui/status/bluetooth.js:145 ../js/ui/status/network.js:1279
msgid "Turn On"
msgstr "Ota käyttöön"
#: ../js/ui/status/bluetooth.js:145 ../js/ui/status/network.js:178
#: ../js/ui/status/network.js:353 ../js/ui/status/network.js:1279
#: ../js/ui/status/network.js:1394 ../js/ui/status/rfkill.js:90
#: ../js/ui/status/rfkill.js:117
msgid "Turn Off"
msgstr "Sammuta"
#: ../js/ui/status/brightness.js:44
msgid "Brightness"
msgstr "Kirkkaus"
@ -1415,6 +1388,10 @@ msgstr "Valitse verkko"
msgid "Wi-Fi Settings"
msgstr "Wifin asetukset"
#: ../js/ui/status/network.js:1279
msgid "Turn On"
msgstr "Ota käyttöön"
#. Translators: %s is a network identifier
#: ../js/ui/status/network.js:1296
#, javascript-format
@ -1481,16 +1458,14 @@ msgstr "Arvioidaan…"
#. Translators: this is <hours>:<minutes> Remaining (<percentage>)
#: ../js/ui/status/power.js:86
#, javascript-format
#| msgid "%d%02d Remaining (%d%%)"
msgid "%d%02d Remaining (%d%%)"
msgstr "%d%02d jäljellä (%d%%)"
msgid "%d%02d Remaining (%d%%)"
msgstr "%d%02d jäljellä (%d%%)"
#. Translators: this is <hours>:<minutes> Until Full (<percentage>)
#: ../js/ui/status/power.js:91
#, javascript-format
#| msgid "%d%02d Until Full (%d%%)"
msgid "%d%02d Until Full (%d%%)"
msgstr "%d%02d kunnes täynnä (%d%%)"
msgid "%d%02d Until Full (%d%%)"
msgstr "%d%02d kunnes täynnä (%d%%)"
#. The menu only appears when airplane mode is on, so just
#. statically build it as if it was on, rather than dynamically
@ -1691,36 +1666,39 @@ msgstr "Käytä tiettyä tilaa (esim. \"gdm\") kirjautumisnäkymää varten"
msgid "List possible modes"
msgstr "Listaa mahdolliset tilat"
#: ../src/shell-app.c:246
#: ../src/shell-app.c:239
msgctxt "program"
msgid "Unknown"
msgstr "Tuntematon"
#: ../src/shell-app.c:487
#: ../src/shell-app.c:480
#, c-format
msgid "Failed to launch “%s”"
msgstr "Sovelluksen ”%s” käynnistäminen epäonnistui"
#: ../src/shell-keyring-prompt.c:730
#: ../src/shell-keyring-prompt.c:742
msgid "Passwords do not match."
msgstr "Salasanat eivät täsmää."
#: ../src/shell-keyring-prompt.c:738
#: ../src/shell-keyring-prompt.c:750
msgid "Password cannot be blank"
msgstr "Salasana ei voi olla tyhjä"
#: ../src/shell-polkit-authentication-agent.c:353
#: ../src/shell-polkit-authentication-agent.c:346
msgid "Authentication dialog was dismissed by the user"
msgstr "Käyttäjä poistui tunnistautumisvalintaikkunasta"
#~ msgid "GNOME Shell (wayland compositor)"
#~ msgstr "Gnome Shell (Wayland-komposiointi)"
#~ msgid "Bluetooth"
#~ msgstr "Bluetooth"
#~ msgid "%d Connected Device"
#~ msgid_plural "%d Connected Devices"
#~ msgstr[0] "%d yhdistetty laite"
#~ msgstr[1] "%d yhdistettyä laitetta"
#~ msgid "Off"
#~ msgstr "Pois"
#~ msgid "Authentication required"
#~ msgstr "tunnistautuminen vaaditaan"
@ -2261,6 +2239,10 @@ msgstr "Käyttäjä poistui tunnistautumisvalintaikkunasta"
#~ msgstr[0] "%d minuutti jäljellä"
#~ msgstr[1] "%d minuuttia jäljellä"
#~ msgctxt "percent of battery remaining"
#~ msgid "%d%%"
#~ msgstr "%d %%"
#~| msgid "AC adapter"
#~ msgid "AC Adapter"
#~ msgstr "Virtalähde"

1517
po/gd.po

File diff suppressed because it is too large Load Diff

265
po/he.po
View File

@ -10,8 +10,8 @@ msgid ""
msgid ""
msgstr ""
"Project-Id-Version: gnome-shell master\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-11-19 20:37+0200\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-08-30 21:15+0300\n"
"PO-Revision-Date: 2015-08-30 21:16+0300\n"
"Last-Translator: Yosef Or Boczko <yoseforb@gmail.com>\n"
"Language-Team: עברית <>\n"
@ -47,6 +47,15 @@ msgstr "הצגת כל היישומים"
#: ../data/50-gnome-shell-system.xml.in.h:6
msgid "Open the application menu"
msgstr "פתיחת תפריט היישום"
#: ../data/gnome-shell.desktop.in.in.h:1
msgid "GNOME Shell"
msgstr "מעטפת GNOME"
#: ../data/gnome-shell.desktop.in.in.h:2
#: ../data/gnome-shell-wayland.desktop.in.in.h:2
msgid "Window management and application launching"
msgstr "ניהול חלונות והרצת יישומים"
#: ../data/gnome-shell-extension-prefs.desktop.in.in.h:1
msgid "GNOME Shell Extension Preferences"
@ -55,13 +64,9 @@ msgstr "העדפות ההרחבות של GNOME Shell"
#: ../data/gnome-shell-extension-prefs.desktop.in.in.h:2
msgid "Configure GNOME Shell Extensions"
msgstr "הגדרת הרחבות GNOME Shell"
#: ../data/org.gnome.Shell.desktop.in.in.h:1
msgid "GNOME Shell"
msgstr "מעטפת GNOME"
#: ../data/org.gnome.Shell.desktop.in.in.h:2
msgid "Window management and application launching"
#: ../data/gnome-shell-wayland.desktop.in.in.h:1
msgid "GNOME Shell (wayland compositor)"
msgstr "GNOME Shell (מסדר wayland)"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:1
@ -165,92 +170,74 @@ msgstr ""
"'Remember Password' checkbox will be present. This key sets the default "
"state of the checkbox."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:18
msgid ""
"Whether the default Bluetooth adapter had set up devices associated to it"
msgstr ""
"Whether the default Bluetooth adapter had set up devices associated to it"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:19
msgid ""
"The shell will only show a Bluetooth menu item if a Bluetooth adapter is "
"powered, or if there were devices set up associated with the default "
"adapter. This will be reset if the default adapter is ever seen not to have "
"devices associated to it."
msgstr ""
"The shell will only show a Bluetooth menu item if a Bluetooth adapter is "
"powered, or if there were devices set up associated with the default "
"adapter. This will be reset if the default adapter is ever seen not to have "
"devices associated to it."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:18
msgid "Show the week date in the calendar"
msgstr "Show the week date in the calendar"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:19
msgid "If true, display the ISO week date in the calendar."
msgstr "If true, display the ISO week date in the calendar."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:20
msgid "Keybinding to open the application menu"
msgstr "Keybinding to open the application menu"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:21
msgid "Keybinding to open the application menu."
msgstr "Keybinding to open the application menu."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:22
msgid "Keybinding to open the \"Show Applications\" view"
msgstr "Keybinding to open the \"Show Applications\" view"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:23
msgid ""
"Keybinding to open the \"Show Applications\" view of the Activities Overview."
msgstr ""
"Keybinding to open the \"Show Applications\" view of the Activities Overview."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:24
msgid "Keybinding to open the overview"
msgstr "Keybinding to open the overview"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:25
msgid "Keybinding to open the Activities Overview."
msgstr "Keybinding to open the Activities Overview."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:26
msgid "Keybinding to toggle the visibility of the notification list"
msgstr "Keybinding to toggle the visibility of the notification list"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:27
msgid "Keybinding to toggle the visibility of the notification list."
msgstr "Keybinding to toggle the visibility of the notification list."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:28
msgid "Keybinding to focus the active notification"
msgstr "Keybinding to focus the active notification"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:29
msgid "Keybinding to focus the active notification."
msgstr "Keybinding to focus the active notification."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:30
msgid ""
"Keybinding that pauses and resumes all running tweens, for debugging purposes"
msgstr ""
"Keybinding that pauses and resumes all running tweens, for debugging purposes"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:31
msgid "Which keyboard to use"
msgstr "Which keyboard to use"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:32
msgid "The type of keyboard to use."
msgstr "The type of keyboard to use."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:33
msgid "Limit switcher to current workspace."
msgstr "Limit switcher to current workspace."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:34
msgid ""
"If true, only applications that have windows on the current workspace are "
@ -258,51 +245,51 @@ msgstr ""
msgstr ""
"If true, only applications that have windows on the current workspace are "
"shown in the switcher. Otherwise, all applications are included."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:35
msgid "The application icon mode."
msgstr "The application icon mode."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:36
msgid ""
"Configures how the windows are shown in the switcher. Valid possibilities "
"are 'thumbnail-only' (shows a thumbnail of the window), 'app-icon-"
"only' (shows only the application icon) or 'both'."
msgstr ""
"Configures how the windows are shown in the switcher. Valid possibilities "
"are 'thumbnail-only' (shows a thumbnail of the window), 'app-icon-"
"only' (shows only the application icon) or 'both'."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:37
msgid ""
"If true, only windows from the current workspace are shown in the switcher. "
"Otherwise, all windows are included."
msgstr ""
"If true, only windows from the current workspace are shown in the switcher. "
"Otherwise, all windows are included."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:38
msgid ""
"Configures how the windows are shown in the switcher. Valid possibilities "
"are 'thumbnail-only' (shows a thumbnail of the window), 'app-icon-"
"only' (shows only the application icon) or 'both'."
msgstr ""
"Configures how the windows are shown in the switcher. Valid possibilities "
"are 'thumbnail-only' (shows a thumbnail of the window), 'app-icon-"
"only' (shows only the application icon) or 'both'."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:39
msgid ""
"If true, only windows from the current workspace are shown in the switcher. "
"Otherwise, all windows are included."
msgstr ""
"If true, only windows from the current workspace are shown in the switcher. "
"Otherwise, all windows are included."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:38
msgid "Attach modal dialog to the parent window"
msgstr "Attach modal dialog to the parent window"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:39
msgid ""
"This key overrides the key in org.gnome.mutter when running GNOME Shell."
msgstr ""
"This key overrides the key in org.gnome.mutter when running GNOME Shell."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:40
msgid "Enable edge tiling when dropping windows on screen edges"
msgstr "Enable edge tiling when dropping windows on screen edges"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:41
msgid "Workspaces are managed dynamically"
msgstr "Workspaces are managed dynamically"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:42
msgid "Workspaces only on primary monitor"
msgstr "Workspaces only on primary monitor"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:43
msgid "Delay focus changes in mouse mode until the pointer stops moving"
msgstr "Delay focus changes in mouse mode until the pointer stops moving"
@ -327,7 +314,7 @@ msgid "Cancel"
msgid "Cancel"
msgstr "ביטול"
#: ../js/gdm/authPrompt.js:169 ../js/gdm/authPrompt.js:215
#: ../js/gdm/authPrompt.js:169 ../js/gdm/authPrompt.js:215
#: ../js/gdm/authPrompt.js:435
msgid "Next"
msgstr "הבא"
@ -354,7 +341,7 @@ msgstr "לא רשום?"
msgstr "לא רשום?"
#. Translators: this message is shown below the username entry field
#. to clue the user in on how to login to the local network realm
#. to clue the user in on how to login to the local network realm
#: ../js/gdm/loginDialog.js:847
#, javascript-format
msgid "(e.g., user or %s)"
@ -362,12 +349,12 @@ msgstr "(משתמש או %s לדוגמה)"
#. TTLS and PEAP are actually much more complicated, but this complication
#. is not visible here since we only care about phase2 authentication
#. (and don't even care of which one)
#. (and don't even care of which one)
#: ../js/gdm/loginDialog.js:852 ../js/ui/components/networkAgent.js:271
#: ../js/ui/components/networkAgent.js:289
msgid "Username: "
msgstr "שם משתמש:"
#: ../js/gdm/loginDialog.js:1181
msgid "Login Window"
msgstr "חלון כניסה"
@ -503,12 +490,12 @@ msgstr "הוספה למועדפים"
#: ../js/ui/appDisplay.js:1897
msgid "Show Details"
msgstr "הצגת פרטים"
#: ../js/ui/appFavorites.js:132
#, javascript-format
msgid "%s has been added to your favorites."
msgstr "%s נוסף למועדפים שלך."
#: ../js/ui/appFavorites.js:166
#, javascript-format
msgid "%s has been removed from your favorites."
@ -521,7 +508,8 @@ msgstr "החלפת הרקע…"
#: ../js/ui/backgroundMenu.js:21
msgid "Display Settings"
msgstr "הגדרות תצוגה"
#: ../js/ui/backgroundMenu.js:22 ../js/ui/panel.js:650
#: ../js/ui/status/system.js:366
msgid "Settings"
msgstr "הגדרות"
@ -585,12 +573,6 @@ msgstr "חודש קודם"
#: ../js/ui/calendar.js:576
msgid "Next month"
msgstr "חודש הבא"
#: ../js/ui/calendar.js:728
#, javascript-format
msgctxt "date day number format"
msgid "%d"
msgstr "%d"
#: ../js/ui/calendar.js:783
msgid "Week %V"
@ -603,33 +585,33 @@ msgctxt "event list time"
msgctxt "event list time"
msgid "All Day"
msgstr "יום שלם"
#: ../js/ui/calendar.js:1291
msgid "Clear section"
msgstr "ניקוי מקטע"
#: ../js/ui/calendar.js:1518
msgid "Events"
msgstr "אירועים"
#: ../js/ui/calendar.js:1527
msgctxt "calendar heading"
msgid "%A, %B %d"
msgstr "%A, ה־%e ב%B"
#: ../js/ui/calendar.js:1531
msgctxt "calendar heading"
msgid "%A, %B %d, %Y"
msgstr "%A, ה־%e ב%B, %Y"
#: ../js/ui/calendar.js:1616
msgid "Notifications"
msgstr "התרעות"
#: ../js/ui/calendar.js:1767
msgid "No Notifications"
msgstr "אין התרעות"
#: ../js/ui/calendar.js:1770
msgid "No Events"
msgstr "אין אירועים"
@ -641,7 +623,7 @@ msgstr "חובר כונן חיצוני"
#: ../js/ui/components/automountManager.js:102
msgid "External drive disconnected"
msgstr "נותק כונן חיצוני"
#: ../js/ui/components/autorunManager.js:354
#, javascript-format
msgid "Open with %s"
@ -979,7 +961,7 @@ msgstr "פעיל"
msgstr "פעיל"
#. translators:
#. * The device has been disabled
#. * The device has been disabled
#: ../js/ui/lookingGlass.js:719 ../src/gvc/gvc-mixer-control.c:1830
msgid "Disabled"
msgstr "מנוטרל"
@ -1023,22 +1005,17 @@ msgstr "סקירה"
#: ../js/ui/overview.js:244
msgid "Type to search…"
msgstr "יש להקליד כדי לחפש…"
#: ../js/ui/panel.js:352
msgid "Quit"
msgstr "יציאה"
#. Translators: If there is no suitable word for "Activities"
#. in your language, you can use the word for "Overview".
#. in your language, you can use the word for "Overview".
#: ../js/ui/panel.js:404
msgid "Activities"
msgstr "פעילויות"
#: ../js/ui/panel.js:695
msgctxt "System menu in the top bar"
msgid "System"
msgstr "מערכת"
#: ../js/ui/panel.js:754
msgid "Top Bar"
msgstr "הסרגל העליון"
@ -1051,15 +1028,15 @@ msgstr "הסרגל העליון"
#: ../js/ui/popupMenu.js:289
msgid "toggle-switch-us"
msgstr "toggle-switch-intl"
#: ../js/ui/runDialog.js:70
msgid "Enter a Command"
msgstr "נא להזין פקודה"
#: ../js/ui/runDialog.js:110 ../js/ui/windowMenu.js:162
msgid "Close"
msgstr "סגירה"
#: ../js/ui/runDialog.js:281
msgid "Restarting…"
msgstr "מופעל מחדש…"
@ -1184,41 +1161,29 @@ msgstr "ניגודיות גבוהה"
#: ../js/ui/status/accessibility.js:202
msgid "Large Text"
msgstr "טקסט גדול"
#: ../js/ui/status/bluetooth.js:47
msgid "Bluetooth"
#: ../js/ui/status/bluetooth.js:51 ../js/ui/status/network.js:178
#: ../js/ui/status/network.js:353 ../js/ui/status/network.js:1279
#: ../js/ui/status/network.js:1394 ../js/ui/status/rfkill.js:90
#: ../js/ui/status/rfkill.js:117
msgid "Turn Off"
msgstr "כיבוי"
#: ../js/ui/status/bluetooth.js:54
msgid "Bluetooth Settings"
msgstr "הגדרות Bluetooth"
#. Translators: this is the number of connected bluetooth devices
#. Translators: this is the number of connected bluetooth devices
#: ../js/ui/status/bluetooth.js:105
#, c-format
msgid "%d Connected"
msgid_plural "%d Connected"
msgstr[0] "אחד מחובר"
msgstr[1] "%d מחוברים"
#: ../js/ui/status/bluetooth.js:138
msgid "Off"
msgstr "כבוי"
#: ../js/ui/status/bluetooth.js:107
msgid "Not In Use"
msgstr "לא בשימוש"
#: ../js/ui/status/bluetooth.js:142 ../js/ui/status/network.js:1279
msgid "Turn On"
msgstr "הפעלה"
#: ../js/ui/status/bluetooth.js:142 ../js/ui/status/network.js:178
#: ../js/ui/status/network.js:353 ../js/ui/status/network.js:1279
#: ../js/ui/status/network.js:1394 ../js/ui/status/rfkill.js:90
#: ../js/ui/status/rfkill.js:117
msgid "Turn Off"
msgstr "כיבוי"
#: ../js/ui/status/brightness.js:44
msgid "Brightness"
@ -1386,6 +1351,10 @@ msgstr "בחירת רשת"
#: ../js/ui/status/network.js:1177
msgid "Wi-Fi Settings"
msgstr "הגדרות רשת אלחוטית"
#: ../js/ui/status/network.js:1279
msgid "Turn On"
msgstr "הפעלה"
#. Translators: %s is a network identifier
#: ../js/ui/status/network.js:1296
@ -1435,37 +1404,32 @@ msgstr "ההתחברות נכשלה"
#: ../js/ui/status/network.js:1698
msgid "Activation of network connection failed"
msgstr "הפעלת חיבור הרשת נכשלה"
#: ../js/ui/status/power.js:49
msgid "Power Settings"
msgstr "הגדרות צריכת החשמל"
#: ../js/ui/status/power.js:65
msgid "Fully Charged"
msgstr "בטעינה מלאה"
#. 0 is reported when UPower does not have enough data
#. to estimate battery life
#. to estimate battery life
#: ../js/ui/status/power.js:72 ../js/ui/status/power.js:78
msgid "Estimating…"
msgstr "מתבצע שערוך…"
#. Translators: this is <hours>:<minutes> Remaining (<percentage>)
#. Translators: this is <hours>:<minutes> Remaining (<percentage>)
#: ../js/ui/status/power.js:86
#, javascript-format
#, javascript-format
msgid "%d%02d Remaining (%d%%)"
msgstr "%d%02d נותרו (%d%%)"
#. Translators: this is <hours>:<minutes> Until Full (<percentage>)
#. Translators: this is <hours>:<minutes> Until Full (<percentage>)
#: ../js/ui/status/power.js:91
#, javascript-format
#, javascript-format
msgid "%d%02d Until Full (%d%%)"
msgstr "%d:%02d עד לטעינה מלאה (%d%%)"
#: ../js/ui/status/power.js:131 ../js/ui/status/power.js:133
#, javascript-format
msgid "%d%%"
msgstr "%d%%"
#. The menu only appears when airplane mode is on, so just
#. statically build it as if it was on, rather than dynamically
@ -1630,7 +1594,7 @@ msgstr "יומן אבולושן"
msgstr "יומן אבולושן"
#. translators:
#. * The number of sound outputs on a particular device
#. * The number of sound outputs on a particular device
#: ../src/gvc/gvc-mixer-control.c:1837
#, c-format
msgid "%u Output"
@ -1639,57 +1603,57 @@ msgstr[1] "%u פלטים"
msgstr[1] "%u פלטים"
#. translators:
#. * The number of sound inputs on a particular device
#. * The number of sound inputs on a particular device
#: ../src/gvc/gvc-mixer-control.c:1847
#, c-format
msgid "%u Input"
msgid_plural "%u Inputs"
msgstr[0] "קלט אחד"
msgstr[1] "%u קלטים"
#: ../src/gvc/gvc-mixer-control.c:2373
msgid "System Sounds"
msgstr "צלילי מערכת"
#: ../src/main.c:373
msgid "Print version"
msgstr "Print version"
#: ../src/main.c:379
msgid "Mode used by GDM for login screen"
msgstr "המצב בו GDM יעשה שימוש לצורך מסך הכניסה"
#: ../src/main.c:385
msgid "Use a specific mode, e.g. \"gdm\" for login screen"
msgstr "שימוש במצב מסוים, לדוגמה: „gdm“ למסך הכניסה"
#: ../src/main.c:391
msgid "List possible modes"
msgstr "הצגת המצבים האפשריים"
#: ../src/shell-app.c:239
msgctxt "program"
msgid "Unknown"
msgstr "לא ידוע"
#: ../src/shell-app.c:480
#, c-format
msgid "Failed to launch “%s”"
msgstr "אירע כשל בטעינת „%s”"
#: ../src/shell-keyring-prompt.c:742
msgid "Passwords do not match."
msgstr "הססמאות אינן תואמות."
#: ../src/shell-keyring-prompt.c:750
msgid "Password cannot be blank"
msgstr "הססמה אינה יכולה להישאר ריקה"
#: ../src/shell-polkit-authentication-agent.c:346
msgid "Authentication dialog was dismissed by the user"
msgstr "המשתמש בחר להתעלם מתיבת דו־שיח האימות"
#~ msgid "GNOME Shell (wayland compositor)"
#~ msgid "Bluetooth"
#~ msgstr "Bluetooth"
# javascript-format
@ -1697,6 +1661,9 @@ msgstr "המשתמש בחר להתעלם מתיבת דו־שיח האימות"
#~ msgid_plural "%d Connected Devices"
#~ msgstr[0] "התקן אחד מחובר"
#~ msgstr[1] "%d התקנים מחוברים"
#~ msgid "Off"
#~ msgstr "כבוי"
#~ msgid "Authentication required"
#~ msgstr "נדרש אימות"
@ -2290,6 +2257,10 @@ msgstr "המשתמש בחר להתעלם מתיבת דו־שיח האימות"
#~ msgstr[0] "דקה אחת נותרה"
#~ msgstr[1] "%d דקות נותרו"
#~ msgstr[2] "שתי דקות נותרו"
#~ msgctxt "percent of battery remaining"
#~ msgid "%d%%"
#~ msgstr "%d%%"
#~ msgid "AC Adapter"
#~ msgstr "מתאם חשמל"

529
po/hu.po

File diff suppressed because it is too large Load Diff

212
po/nb.po
View File

@ -7,10 +7,10 @@
# Torstein Adolf Winterseth <kvikende@fsfe.org>, 2010.
msgid ""
msgstr ""
"Project-Id-Version: gnome-shell 3.19.x\n"
"Project-Id-Version: gnome-shell 3.17.x\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-11-15 19:59+0100\n"
"PO-Revision-Date: 2015-11-15 20:00+0100\n"
"POT-Creation-Date: 2015-09-07 19:22+0200\n"
"PO-Revision-Date: 2015-09-07 19:31+0200\n"
"Last-Translator: Kjartan Maraas <kmaraas@gnome.org>\n"
"Language-Team: Norwegian bokmål <i18n-nb@lister.ping.uio.no>\n"
"Language: Norwegian bokmål\n"
@ -44,6 +44,15 @@ msgstr "Vis alle programmer"
msgid "Open the application menu"
msgstr "Åpne programmenyen"
#: ../data/gnome-shell.desktop.in.in.h:1
msgid "GNOME Shell"
msgstr "GNOME Shell"
#: ../data/gnome-shell.desktop.in.in.h:2
#: ../data/gnome-shell-wayland.desktop.in.in.h:2
msgid "Window management and application launching"
msgstr "Vindushåndtering og oppstart av programmer"
#: ../data/gnome-shell-extension-prefs.desktop.in.in.h:1
msgid "GNOME Shell Extension Preferences"
msgstr "Brukervalg for GNOME Shell-utvidelser"
@ -52,13 +61,9 @@ msgstr "Brukervalg for GNOME Shell-utvidelser"
msgid "Configure GNOME Shell Extensions"
msgstr "Sett opp utvidelser for GNOME Shell"
#: ../data/org.gnome.Shell.desktop.in.in.h:1
msgid "GNOME Shell"
msgstr "GNOME Shell"
#: ../data/org.gnome.Shell.desktop.in.in.h:2
msgid "Window management and application launching"
msgstr "Vindushåndtering og oppstart av programmer"
#: ../data/gnome-shell-wayland.desktop.in.in.h:1
msgid "GNOME Shell (wayland compositor)"
msgstr "GNOME Shell (Wayland-kompositør)"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:1
msgid "Enable internal tools useful for developers and testers from Alt-F2"
@ -161,88 +166,75 @@ msgstr ""
"standardverdien for avkryssingsboksen."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:18
msgid ""
"Whether the default Bluetooth adapter had set up devices associated to it"
msgstr ""
#: ../data/org.gnome.shell.gschema.xml.in.in.h:19
msgid ""
"The shell will only show a Bluetooth menu item if a Bluetooth adapter is "
"powered, or if there were devices set up associated with the default "
"adapter. This will be reset if the default adapter is ever seen not to have "
"devices associated to it."
msgstr ""
#: ../data/org.gnome.shell.gschema.xml.in.in.h:20
msgid "Show the week date in the calendar"
msgstr "Vis ukedato/ukenummer i kalender"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:21
#: ../data/org.gnome.shell.gschema.xml.in.in.h:19
msgid "If true, display the ISO week date in the calendar."
msgstr "Viser ISO-ukedato i kalenderen hvis «true»."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:22
#: ../data/org.gnome.shell.gschema.xml.in.in.h:20
msgid "Keybinding to open the application menu"
msgstr "Tastaturbinding som åpner programmenyen"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:23
#: ../data/org.gnome.shell.gschema.xml.in.in.h:21
msgid "Keybinding to open the application menu."
msgstr "Tastaturbinding som åpner programmenyen."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:24
#: ../data/org.gnome.shell.gschema.xml.in.in.h:22
msgid "Keybinding to open the \"Show Applications\" view"
msgstr "Tastaturbinding som åpner visningen «Vis programmer»"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:25
#: ../data/org.gnome.shell.gschema.xml.in.in.h:23
msgid ""
"Keybinding to open the \"Show Applications\" view of the Activities Overview."
msgstr ""
"Tastaturbinding som åpner visningen «Vis programmer» i aktivitetsoversikten."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:26
#: ../data/org.gnome.shell.gschema.xml.in.in.h:24
msgid "Keybinding to open the overview"
msgstr "Tastaturbinding som åpner oversikten"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:27
#: ../data/org.gnome.shell.gschema.xml.in.in.h:25
msgid "Keybinding to open the Activities Overview."
msgstr "Tastaturbinding som åpner aktivitetsoversikten."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:28
#: ../data/org.gnome.shell.gschema.xml.in.in.h:26
msgid "Keybinding to toggle the visibility of the notification list"
msgstr "Tastaturbinding som slår av/på visning av varslingsliste"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:29
#: ../data/org.gnome.shell.gschema.xml.in.in.h:27
msgid "Keybinding to toggle the visibility of the notification list."
msgstr "Tastaturbinding som slår av/på visning av varslingsliste."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:30
#: ../data/org.gnome.shell.gschema.xml.in.in.h:28
msgid "Keybinding to focus the active notification"
msgstr "Tastaturbinding som fokuserer aktiv varsling"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:31
#: ../data/org.gnome.shell.gschema.xml.in.in.h:29
msgid "Keybinding to focus the active notification."
msgstr "Tastaturbinding som fokuserer aktiv varsling."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:32
#: ../data/org.gnome.shell.gschema.xml.in.in.h:30
msgid ""
"Keybinding that pauses and resumes all running tweens, for debugging purposes"
msgstr ""
"Hurtigtast som stanser og fortsetter pågående bevegelser til "
"feilsøkingsformål"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:33
#: ../data/org.gnome.shell.gschema.xml.in.in.h:31
msgid "Which keyboard to use"
msgstr "Tastatur som skal brukes"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:34
#: ../data/org.gnome.shell.gschema.xml.in.in.h:32
msgid "The type of keyboard to use."
msgstr "Type tastatur som skal brukes."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:35
#: ../data/org.gnome.shell.gschema.xml.in.in.h:33
msgid "Limit switcher to current workspace."
msgstr "Begrens programveksling til gjeldende arbeidsområde."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:36
#: ../data/org.gnome.shell.gschema.xml.in.in.h:34
msgid ""
"If true, only applications that have windows on the current workspace are "
"shown in the switcher. Otherwise, all applications are included."
@ -251,11 +243,11 @@ msgstr ""
"gjeldende arbeidsområder som vises i programveksleren. I motsatt fall kan du "
"veksle mellom programmer på tvers av arbeidsområder."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:37
#: ../data/org.gnome.shell.gschema.xml.in.in.h:35
msgid "The application icon mode."
msgstr "Ikonmodus for programmet."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:38
#: ../data/org.gnome.shell.gschema.xml.in.in.h:36
msgid ""
"Configures how the windows are shown in the switcher. Valid possibilities "
"are 'thumbnail-only' (shows a thumbnail of the window), 'app-icon-"
@ -265,7 +257,7 @@ msgstr ""
"valgalternativer er «thumbnail-only» (viser miniatyrbilde av vinduet), «app-"
"icon-only» (viser bare programikonet) og «both» (viser begge forannevnte)."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:39
#: ../data/org.gnome.shell.gschema.xml.in.in.h:37
msgid ""
"If true, only windows from the current workspace are shown in the switcher. "
"Otherwise, all windows are included."
@ -274,30 +266,30 @@ msgstr ""
"arbeidsområder som vises i programveksleren. I motsatt fall vises vinduer "
"fra alle arbeidsområder."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:40
#: ../data/org.gnome.shell.gschema.xml.in.in.h:38
msgid "Attach modal dialog to the parent window"
msgstr "Fest modal dialog til opphavsvinduet"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:41
#: ../data/org.gnome.shell.gschema.xml.in.in.h:39
msgid ""
"This key overrides the key in org.gnome.mutter when running GNOME Shell."
msgstr ""
"Denne nøkkelen overstyrer nøkkelen i org.gnome.mutter når GNOME Shell kjøres."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:42
#: ../data/org.gnome.shell.gschema.xml.in.in.h:40
msgid "Enable edge tiling when dropping windows on screen edges"
msgstr ""
"Del opp skjermkantene i fliser når brukeren drar og slipper vinduer på dem"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:43
#: ../data/org.gnome.shell.gschema.xml.in.in.h:41
msgid "Workspaces are managed dynamically"
msgstr "Arbeidsområder håndteres dynamisk"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:44
#: ../data/org.gnome.shell.gschema.xml.in.in.h:42
msgid "Workspaces only on primary monitor"
msgstr "Arbeidsområder vises kun på hovedskjerm"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:45
#: ../data/org.gnome.shell.gschema.xml.in.in.h:43
msgid "Delay focus changes in mouse mode until the pointer stops moving"
msgstr "Utsett fokusendringer i musmodus til peker slutter å bevege seg"
@ -362,7 +354,7 @@ msgstr "(f.eks. bruker eller %s)"
msgid "Username: "
msgstr "Brukernavn: "
#: ../js/gdm/loginDialog.js:1180
#: ../js/gdm/loginDialog.js:1184
msgid "Login Window"
msgstr "Innloggingsvindu"
@ -498,12 +490,12 @@ msgstr "Legg til i favoritter"
msgid "Show Details"
msgstr "Vis detaljer"
#: ../js/ui/appFavorites.js:133
#: ../js/ui/appFavorites.js:132
#, javascript-format
msgid "%s has been added to your favorites."
msgstr "%s ble lagt til i favoritter."
#: ../js/ui/appFavorites.js:167
#: ../js/ui/appFavorites.js:166
#, javascript-format
msgid "%s has been removed from your favorites."
msgstr "%s ble fjernet fra favoritter."
@ -516,7 +508,8 @@ msgstr "Bytt bakgrunn …"
msgid "Display Settings"
msgstr "Innstillinger for skjerm"
#: ../js/ui/backgroundMenu.js:22 ../js/ui/status/system.js:366
#: ../js/ui/backgroundMenu.js:22 ../js/ui/panel.js:650
#: ../js/ui/status/system.js:366
msgid "Settings"
msgstr "Innstillinger"
@ -580,12 +573,6 @@ msgstr "Forrige måned"
msgid "Next month"
msgstr "Neste måned"
#: ../js/ui/calendar.js:728
#, javascript-format
msgctxt "date day number format"
msgid "%d"
msgstr "%d"
#: ../js/ui/calendar.js:783
msgid "Week %V"
msgstr "Uke %V"
@ -598,33 +585,33 @@ msgctxt "event list time"
msgid "All Day"
msgstr "Hele dagen"
#: ../js/ui/calendar.js:1295
#: ../js/ui/calendar.js:1291
msgid "Clear section"
msgstr "Tøm seksjon"
#: ../js/ui/calendar.js:1522
#: ../js/ui/calendar.js:1518
msgid "Events"
msgstr "Hendelser"
#: ../js/ui/calendar.js:1531
#: ../js/ui/calendar.js:1527
msgctxt "calendar heading"
msgid "%A, %B %d"
msgstr "%A %B %d"
#: ../js/ui/calendar.js:1535
#: ../js/ui/calendar.js:1531
msgctxt "calendar heading"
msgid "%A, %B %d, %Y"
msgstr "%A %B %d, %Y"
#: ../js/ui/calendar.js:1620
#: ../js/ui/calendar.js:1616
msgid "Notifications"
msgstr "Varslinger"
#: ../js/ui/calendar.js:1771
#: ../js/ui/calendar.js:1767
msgid "No Notifications"
msgstr "Ingen varslinger"
#: ../js/ui/calendar.js:1774
#: ../js/ui/calendar.js:1770
msgid "No Events"
msgstr "Ingen hendelser"
@ -636,7 +623,7 @@ msgstr "Ekstern stasjon koblet til"
msgid "External drive disconnected"
msgstr "Ekstern stasjon koblet fra"
#: ../js/ui/components/autorunManager.js:351
#: ../js/ui/components/autorunManager.js:354
#, javascript-format
msgid "Open with %s"
msgstr "Åpne med %s"
@ -981,7 +968,7 @@ msgstr "Slått på"
#. translators:
#. * The device has been disabled
#: ../js/ui/lookingGlass.js:719 ../src/gvc/gvc-mixer-control.c:1828
#: ../js/ui/lookingGlass.js:719 ../src/gvc/gvc-mixer-control.c:1830
msgid "Disabled"
msgstr "Slått av"
@ -1025,22 +1012,17 @@ msgstr "Oversikt"
msgid "Type to search…"
msgstr "Skriv for å søke …"
#: ../js/ui/panel.js:358
#: ../js/ui/panel.js:352
msgid "Quit"
msgstr "Avslutt"
#. Translators: If there is no suitable word for "Activities"
#. in your language, you can use the word for "Overview".
#: ../js/ui/panel.js:414
#: ../js/ui/panel.js:404
msgid "Activities"
msgstr "Aktiviteter"
#: ../js/ui/panel.js:695
msgctxt "System menu in the top bar"
msgid "System"
msgstr "System"
#: ../js/ui/panel.js:807
#: ../js/ui/panel.js:754
msgid "Top Bar"
msgstr "Topp-panel"
@ -1053,15 +1035,15 @@ msgstr "Topp-panel"
msgid "toggle-switch-us"
msgstr "toggle-switch-intl"
#: ../js/ui/runDialog.js:71
#: ../js/ui/runDialog.js:70
msgid "Enter a Command"
msgstr "Skriv inn en kommando"
#: ../js/ui/runDialog.js:111 ../js/ui/windowMenu.js:162
#: ../js/ui/runDialog.js:110 ../js/ui/windowMenu.js:162
msgid "Close"
msgstr "Lukk"
#: ../js/ui/runDialog.js:282
#: ../js/ui/runDialog.js:281
msgid "Restarting…"
msgstr "Starter på nytt …"
@ -1184,41 +1166,29 @@ msgstr "Høy kontrast"
msgid "Large Text"
msgstr "Stor tekst"
#: ../js/ui/status/bluetooth.js:50
msgid "Bluetooth"
msgstr "Bluetooth"
#: ../js/ui/status/bluetooth.js:51 ../js/ui/status/network.js:178
#: ../js/ui/status/network.js:353 ../js/ui/status/network.js:1279
#: ../js/ui/status/network.js:1394 ../js/ui/status/rfkill.js:90
#: ../js/ui/status/rfkill.js:117
msgid "Turn Off"
msgstr "Slå av"
#: ../js/ui/status/bluetooth.js:59
#: ../js/ui/status/bluetooth.js:54
msgid "Bluetooth Settings"
msgstr "Bluetooth-innstillinger"
#. Translators: this is the number of connected bluetooth devices
#: ../js/ui/status/bluetooth.js:139
#: ../js/ui/status/bluetooth.js:105
#, javascript-format
msgid "%d Connected"
msgid_plural "%d Connected"
msgstr[0] "%d koblet til"
msgstr[1] "%d koblet til"
#: ../js/ui/status/bluetooth.js:141
msgid "Off"
msgstr "Av"
#: ../js/ui/status/bluetooth.js:143
#: ../js/ui/status/bluetooth.js:107
msgid "Not In Use"
msgstr "Ikke i bruk"
#: ../js/ui/status/bluetooth.js:145 ../js/ui/status/network.js:1279
msgid "Turn On"
msgstr "Slå på"
#: ../js/ui/status/bluetooth.js:145 ../js/ui/status/network.js:178
#: ../js/ui/status/network.js:353 ../js/ui/status/network.js:1279
#: ../js/ui/status/network.js:1394 ../js/ui/status/rfkill.js:90
#: ../js/ui/status/rfkill.js:117
msgid "Turn Off"
msgstr "Slå av"
#: ../js/ui/status/brightness.js:44
msgid "Brightness"
msgstr "Lysstyrke"
@ -1386,6 +1356,10 @@ msgstr "Velg nettverk"
msgid "Wi-Fi Settings"
msgstr "Innstillinger"
#: ../js/ui/status/network.js:1279
msgid "Turn On"
msgstr "Slå på"
#. Translators: %s is a network identifier
#: ../js/ui/status/network.js:1296
#, javascript-format
@ -1452,14 +1426,14 @@ msgstr "Estimerer …"
#. Translators: this is <hours>:<minutes> Remaining (<percentage>)
#: ../js/ui/status/power.js:86
#, javascript-format
msgid "%d%02d Remaining (%d%%)"
msgstr "%d:%02d gjenstår (%d %%)"
msgid "%d%02d Remaining (%d%%)"
msgstr "%d:%02d gjenstår (%d%%)"
#. Translators: this is <hours>:<minutes> Until Full (<percentage>)
#: ../js/ui/status/power.js:91
#, javascript-format
msgid "%d%02d Until Full (%d%%)"
msgstr "%d:%02d til batteriet er fullt (%d %%)"
msgid "%d%02d Until Full (%d%%)"
msgstr "%d:%02d til batteriet er fullt (%d%%)"
#. The menu only appears when airplane mode is on, so just
#. statically build it as if it was on, rather than dynamically
@ -1588,19 +1562,19 @@ msgstr "Alltid på synlig arbeidsområde"
#: ../js/ui/windowMenu.js:105
msgid "Move to Workspace Left"
msgstr "Flytt til arbeidsområdet til venstre"
msgstr " til arbeidsområdet til venstre"
#: ../js/ui/windowMenu.js:110
msgid "Move to Workspace Right"
msgstr "Flytt til arbeidsområdet til høyre"
msgstr " til arbeidsområdet til høyre"
#: ../js/ui/windowMenu.js:115
msgid "Move to Workspace Up"
msgstr "Flytt til arbeidsområdet over"
msgstr " til arbeidsområdet over"
#: ../js/ui/windowMenu.js:120
msgid "Move to Workspace Down"
msgstr "Flytt til arbeidsområdet under"
msgstr " til arbeidsområdet under"
#: ../js/ui/windowMenu.js:136
msgid "Move to Monitor Up"
@ -1624,7 +1598,7 @@ msgstr "Evolution kalender"
#. translators:
#. * The number of sound outputs on a particular device
#: ../src/gvc/gvc-mixer-control.c:1835
#: ../src/gvc/gvc-mixer-control.c:1837
#, c-format
msgid "%u Output"
msgid_plural "%u Outputs"
@ -1633,51 +1607,51 @@ msgstr[1] "%u utganger"
#. translators:
#. * The number of sound inputs on a particular device
#: ../src/gvc/gvc-mixer-control.c:1845
#: ../src/gvc/gvc-mixer-control.c:1847
#, c-format
msgid "%u Input"
msgid_plural "%u Inputs"
msgstr[0] "%u inngang"
msgstr[1] "%u innganger"
#: ../src/gvc/gvc-mixer-control.c:2371
#: ../src/gvc/gvc-mixer-control.c:2373
msgid "System Sounds"
msgstr "Systemlyder"
#: ../src/main.c:381
#: ../src/main.c:373
msgid "Print version"
msgstr "Vis versjon"
#: ../src/main.c:387
#: ../src/main.c:379
msgid "Mode used by GDM for login screen"
msgstr "Modus som brukes av GDM for innloggingsskjermen"
#: ../src/main.c:393
#: ../src/main.c:385
msgid "Use a specific mode, e.g. \"gdm\" for login screen"
msgstr "Bruk spesifikt modus, f.eks «gdm» for innloggingsskjerm"
#: ../src/main.c:399
#: ../src/main.c:391
msgid "List possible modes"
msgstr "Vis mulige modi"
#: ../src/shell-app.c:246
#: ../src/shell-app.c:239
msgctxt "program"
msgid "Unknown"
msgstr "Ukjent"
#: ../src/shell-app.c:487
#: ../src/shell-app.c:480
#, c-format
msgid "Failed to launch “%s”"
msgstr "Klarte ikke å starte «%s»"
#: ../src/shell-keyring-prompt.c:730
#: ../src/shell-keyring-prompt.c:742
msgid "Passwords do not match."
msgstr "Passordene er ikke like."
#: ../src/shell-keyring-prompt.c:738
#: ../src/shell-keyring-prompt.c:750
msgid "Password cannot be blank"
msgstr "Passordet kan ikke være tomt"
#: ../src/shell-polkit-authentication-agent.c:353
#: ../src/shell-polkit-authentication-agent.c:346
msgid "Authentication dialog was dismissed by the user"
msgstr "Autentiseringsdialogen ble lukket av brukeren"

206
po/pt.po
View File

@ -7,24 +7,23 @@
# Tiago S. <almosthumane@portugalmail.pt>, 2014.
# Bruno Ramalhete <bram.512@gmail.com>, 2015.
# Pedro Albuquerque <palbuquerque73@gmail.com>, 2014, 2015.
#
msgid ""
msgstr ""
"Project-Id-Version: 3.14\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
"shell&keywords=I18N+L10N&component=general\n"
"POT-Creation-Date: 2015-11-20 22:14+0000\n"
"PO-Revision-Date: 2015-11-21 09:02+0100\n"
"Last-Translator: Pedro Albuquerque <palbuquerque73@gmail.com>\n"
"Language-Team: Pedro Albuquerque\n"
"POT-Creation-Date: 2015-10-03 20:41+0000\n"
"PO-Revision-Date: 2015-10-07 07:06+0100\n"
"Last-Translator: Pedro Albuquerque <palbuquerque73o@gmail.com>\n"
"Language-Team: Português <palbuquerque73@gmail.com>\n"
"Language: pt\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: Virtaal 0.7.1\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\\n\n"
"X-Generator: Gtranslator 2.91.6\n"
"X-Project-Style: gnome\n"
"X-Language: pt_PT\n"
"X-Source-Language: C\n"
#: ../data/50-gnome-shell-system.xml.in.h:1
msgid "System"
@ -50,6 +49,15 @@ msgstr "Mostrar todas as aplicações"
msgid "Open the application menu"
msgstr "Abrir o menu de aplicações"
#: ../data/gnome-shell.desktop.in.in.h:1
msgid "GNOME Shell"
msgstr "Shell GNOME"
#: ../data/gnome-shell.desktop.in.in.h:2
#: ../data/gnome-shell-wayland.desktop.in.in.h:2
msgid "Window management and application launching"
msgstr "Gestão de janelas e iniciação de aplicações"
#: ../data/gnome-shell-extension-prefs.desktop.in.in.h:1
msgid "GNOME Shell Extension Preferences"
msgstr "Preferências das extensões á interface GNOME"
@ -58,13 +66,9 @@ msgstr "Preferências das extensões á interface GNOME"
msgid "Configure GNOME Shell Extensions"
msgstr "Configurar extensões à interface GNOME"
#: ../data/org.gnome.Shell.desktop.in.in.h:1
msgid "GNOME Shell"
msgstr "Shell GNOME"
#: ../data/org.gnome.Shell.desktop.in.in.h:2
msgid "Window management and application launching"
msgstr "Gestão de janelas e iniciação de aplicações"
#: ../data/gnome-shell-wayland.desktop.in.in.h:1
msgid "GNOME Shell (wayland compositor)"
msgstr "Interface GNOME (compositor wayland)"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:1
msgid "Enable internal tools useful for developers and testers from Alt-F2"
@ -172,96 +176,77 @@ msgstr ""
"define o estado predefinido dessa caixa de seleção."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:18
msgid ""
"Whether the default Bluetooth adapter had set up devices associated to it"
msgstr ""
"Se o adaptador padrão Bluetooth tem dispositivos configurados associados a "
"ele"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:19
msgid ""
"The shell will only show a Bluetooth menu item if a Bluetooth adapter is "
"powered, or if there were devices set up associated with the default "
"adapter. This will be reset if the default adapter is ever seen not to have "
"devices associated to it."
msgstr ""
"A shell só vai mostrar um item de menu do adaptador Bluetooth se este "
"estiver ligado ou se existirem dispositivos associados configurados com o "
"adaptador predefinido. Isto será reposto se se verificar que o adaptador "
"predefinido não tem dispositivos associados a ele."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:20
msgid "Show the week date in the calendar"
msgstr "Mostrar o número da semana no calendário"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:21
#: ../data/org.gnome.shell.gschema.xml.in.in.h:19
msgid "If true, display the ISO week date in the calendar."
msgstr "Se verdadeiro, mostra o número ISO da semana no calendário."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:22
#: ../data/org.gnome.shell.gschema.xml.in.in.h:20
msgid "Keybinding to open the application menu"
msgstr "Atalho de teclado para abrir o menu de aplicações"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:23
#: ../data/org.gnome.shell.gschema.xml.in.in.h:21
msgid "Keybinding to open the application menu."
msgstr "Atalho de teclado para abrir o menu de aplicações."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:24
#: ../data/org.gnome.shell.gschema.xml.in.in.h:22
msgid "Keybinding to open the \"Show Applications\" view"
msgstr "Atalho de teclado para abrir a vista \"Mostrar aplicações\""
#: ../data/org.gnome.shell.gschema.xml.in.in.h:25
#: ../data/org.gnome.shell.gschema.xml.in.in.h:23
msgid ""
"Keybinding to open the \"Show Applications\" view of the Activities Overview."
msgstr ""
"Atalho de teclado para abrir a vista \"Mostrar aplicações\" da vista geral "
"de atividades."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:26
#: ../data/org.gnome.shell.gschema.xml.in.in.h:24
msgid "Keybinding to open the overview"
msgstr "Atalho de teclado para abrir a vista geral"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:27
#: ../data/org.gnome.shell.gschema.xml.in.in.h:25
msgid "Keybinding to open the Activities Overview."
msgstr "Atalho de teclado para abrir a vista geral de atividades."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:28
#: ../data/org.gnome.shell.gschema.xml.in.in.h:26
msgid "Keybinding to toggle the visibility of the notification list"
msgstr "Atalho de teclado para alternar a visibilidade da lista de notificação"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:29
#: ../data/org.gnome.shell.gschema.xml.in.in.h:27
msgid "Keybinding to toggle the visibility of the notification list."
msgstr ""
"Atalho de teclado para alternar a visibilidade da lista de notificação."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:30
#: ../data/org.gnome.shell.gschema.xml.in.in.h:28
msgid "Keybinding to focus the active notification"
msgstr "Atalho de teclado para focar a notificação ativa"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:31
#: ../data/org.gnome.shell.gschema.xml.in.in.h:29
msgid "Keybinding to focus the active notification."
msgstr "Atalho de teclado para focar a notificação ativa."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:32
#: ../data/org.gnome.shell.gschema.xml.in.in.h:30
msgid ""
"Keybinding that pauses and resumes all running tweens, for debugging purposes"
msgstr ""
"Atalho de teclado que pausa e retoma todos os tweens em execução, para "
"depuração de erros"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:33
#: ../data/org.gnome.shell.gschema.xml.in.in.h:31
msgid "Which keyboard to use"
msgstr "Que teclado utilizar"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:34
#: ../data/org.gnome.shell.gschema.xml.in.in.h:32
msgid "The type of keyboard to use."
msgstr "O tipo de teclado a utilizar."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:35
#: ../data/org.gnome.shell.gschema.xml.in.in.h:33
msgid "Limit switcher to current workspace."
msgstr "Limitar troca à área de trabalho atual."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:36
#: ../data/org.gnome.shell.gschema.xml.in.in.h:34
msgid ""
"If true, only applications that have windows on the current workspace are "
"shown in the switcher. Otherwise, all applications are included."
@ -269,11 +254,11 @@ msgstr ""
"Se verdadeiro, só as aplicações com janelas na área de trabalho atual são "
"mostradas para troca. Senão, são incluídas todas as aplicações."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:37
#: ../data/org.gnome.shell.gschema.xml.in.in.h:35
msgid "The application icon mode."
msgstr "O modo do ícone da aplicação."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:38
#: ../data/org.gnome.shell.gschema.xml.in.in.h:36
msgid ""
"Configures how the windows are shown in the switcher. Valid possibilities "
"are 'thumbnail-only' (shows a thumbnail of the window), 'app-icon-"
@ -283,7 +268,7 @@ msgstr ""
"válidas são 'thumbnail-only' (mostra uma miniatura da janela), 'app-icon-"
"only' (mostra só o ícone da aplicação) ou 'both' (ambas)."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:39
#: ../data/org.gnome.shell.gschema.xml.in.in.h:37
msgid ""
"If true, only windows from the current workspace are shown in the switcher. "
"Otherwise, all windows are included."
@ -291,29 +276,29 @@ msgstr ""
"Se verdadeiro, só janelas da área de trabalho atual são apresentadas para "
"troca. Senão, são incluídas todas as janelas."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:40
#: ../data/org.gnome.shell.gschema.xml.in.in.h:38
msgid "Attach modal dialog to the parent window"
msgstr "Anexar diálogo modal à janela mãe"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:41
#: ../data/org.gnome.shell.gschema.xml.in.in.h:39
msgid ""
"This key overrides the key in org.gnome.mutter when running GNOME Shell."
msgstr ""
"Esta chave ignora a chave em org.gnome.mutter ao executar a interface GNOME."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:42
#: ../data/org.gnome.shell.gschema.xml.in.in.h:40
msgid "Enable edge tiling when dropping windows on screen edges"
msgstr "Ativar anexar nas margens ao largar janelas junto às margens do ecrã"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:43
#: ../data/org.gnome.shell.gschema.xml.in.in.h:41
msgid "Workspaces are managed dynamically"
msgstr "Áreas de trabalho são geridas dinamicamente"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:44
#: ../data/org.gnome.shell.gschema.xml.in.in.h:42
msgid "Workspaces only on primary monitor"
msgstr "Áreas de trabalho só no monitor principal"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:45
#: ../data/org.gnome.shell.gschema.xml.in.in.h:43
msgid "Delay focus changes in mouse mode until the pointer stops moving"
msgstr ""
"Atrasar alterações de foco nos modos de rato até que o ponteiro pare de se "
@ -380,7 +365,7 @@ msgstr "(por ex., utilizador ou %s)"
msgid "Username: "
msgstr "Utilizador: "
#: ../js/gdm/loginDialog.js:1180
#: ../js/gdm/loginDialog.js:1184
msgid "Login Window"
msgstr "Janela de início de sessão"
@ -516,12 +501,12 @@ msgstr "Adicionar aos favoritos"
msgid "Show Details"
msgstr "Mostrar detalhes"
#: ../js/ui/appFavorites.js:133
#: ../js/ui/appFavorites.js:132
#, javascript-format
msgid "%s has been added to your favorites."
msgstr "%s foi adicionada aos seus favoritos."
#: ../js/ui/appFavorites.js:167
#: ../js/ui/appFavorites.js:166
#, javascript-format
msgid "%s has been removed from your favorites."
msgstr "%s foi removida dos seus favoritos."
@ -598,12 +583,6 @@ msgstr "Mês anterior"
msgid "Next month"
msgstr "Mês seguinte"
#: ../js/ui/calendar.js:728
#, javascript-format
msgctxt "date day number format"
msgid "%d"
msgstr "%d"
#: ../js/ui/calendar.js:783
msgid "Week %V"
msgstr "Semana %V"
@ -654,7 +633,7 @@ msgstr "Dispositivo externo ligado"
msgid "External drive disconnected"
msgstr "Dispositivo externo desligado"
#: ../js/ui/components/autorunManager.js:355
#: ../js/ui/components/autorunManager.js:354
#, javascript-format
msgid "Open with %s"
msgstr "Abrir com %s"
@ -1044,22 +1023,23 @@ msgstr "Visão geral"
msgid "Type to search…"
msgstr "Escreva para procurar…"
#: ../js/ui/panel.js:358
#: ../js/ui/panel.js:352
msgid "Quit"
msgstr "Sair"
#. Translators: If there is no suitable word for "Activities"
#. in your language, you can use the word for "Overview".
#: ../js/ui/panel.js:414
#: ../js/ui/panel.js:404
msgid "Activities"
msgstr "Atividades"
#: ../js/ui/panel.js:695
#: ../js/ui/panel.js:650
#| msgid "System"
msgctxt "System menu in the top bar"
msgid "System"
msgstr "Sistema"
#: ../js/ui/panel.js:807
#: ../js/ui/panel.js:754
msgid "Top Bar"
msgstr "Barra superior"
@ -1072,15 +1052,15 @@ msgstr "Barra superior"
msgid "toggle-switch-us"
msgstr "toggle-switch-intl"
#: ../js/ui/runDialog.js:71
#: ../js/ui/runDialog.js:70
msgid "Enter a Command"
msgstr "Insira um comando"
#: ../js/ui/runDialog.js:111 ../js/ui/windowMenu.js:162
#: ../js/ui/runDialog.js:110 ../js/ui/windowMenu.js:162
msgid "Close"
msgstr "Fechar"
#: ../js/ui/runDialog.js:282
#: ../js/ui/runDialog.js:281
msgid "Restarting…"
msgstr "A reiniciar…"
@ -1203,41 +1183,29 @@ msgstr "Alto contraste"
msgid "Large Text"
msgstr "Texto grande"
#: ../js/ui/status/bluetooth.js:47
msgid "Bluetooth"
msgstr "Bluetooth"
#: ../js/ui/status/bluetooth.js:51 ../js/ui/status/network.js:178
#: ../js/ui/status/network.js:353 ../js/ui/status/network.js:1279
#: ../js/ui/status/network.js:1394 ../js/ui/status/rfkill.js:90
#: ../js/ui/status/rfkill.js:117
msgid "Turn Off"
msgstr "Desligar"
#: ../js/ui/status/bluetooth.js:56
#: ../js/ui/status/bluetooth.js:54
msgid "Bluetooth Settings"
msgstr "Definições Bluetooth"
#. Translators: this is the number of connected bluetooth devices
#: ../js/ui/status/bluetooth.js:136
#: ../js/ui/status/bluetooth.js:105
#, javascript-format
msgid "%d Connected"
msgid_plural "%d Connected"
msgstr[0] "%d ligado"
msgstr[1] "%d ligados"
#: ../js/ui/status/bluetooth.js:138
msgid "Off"
msgstr "Desligado"
#: ../js/ui/status/bluetooth.js:140
#: ../js/ui/status/bluetooth.js:107
msgid "Not In Use"
msgstr "Não em uso"
#: ../js/ui/status/bluetooth.js:142 ../js/ui/status/network.js:1279
msgid "Turn On"
msgstr "Ligar"
#: ../js/ui/status/bluetooth.js:142 ../js/ui/status/network.js:178
#: ../js/ui/status/network.js:353 ../js/ui/status/network.js:1279
#: ../js/ui/status/network.js:1394 ../js/ui/status/rfkill.js:90
#: ../js/ui/status/rfkill.js:117
msgid "Turn Off"
msgstr "Desligar"
#: ../js/ui/status/brightness.js:44
msgid "Brightness"
msgstr "Luminosidade"
@ -1405,6 +1373,10 @@ msgstr "Selecionar rede"
msgid "Wi-Fi Settings"
msgstr "Definições de Wi-Fi"
#: ../js/ui/status/network.js:1279
msgid "Turn On"
msgstr "Ligar"
#. Translators: %s is a network identifier
#: ../js/ui/status/network.js:1296
#, javascript-format
@ -1454,36 +1426,31 @@ msgstr "Falha na ligação"
msgid "Activation of network connection failed"
msgstr "Falha na ativação da ligação à rede"
#: ../js/ui/status/power.js:61
#: ../js/ui/status/power.js:49
msgid "Power Settings"
msgstr "Definições de energia"
#: ../js/ui/status/power.js:77
#: ../js/ui/status/power.js:65
msgid "Fully Charged"
msgstr "Totalmente carregado"
#. 0 is reported when UPower does not have enough data
#. to estimate battery life
#: ../js/ui/status/power.js:84 ../js/ui/status/power.js:90
#: ../js/ui/status/power.js:72 ../js/ui/status/power.js:78
msgid "Estimating…"
msgstr "A estimar…"
#. Translators: this is <hours>:<minutes> Remaining (<percentage>)
#: ../js/ui/status/power.js:98
#: ../js/ui/status/power.js:86
#, javascript-format
msgid "%d%02d Remaining (%d%%)"
msgstr "%d%02d restantes (%d%%)"
msgid "%d%02d Remaining (%d%%)"
msgstr "%d%02d remanescentes (%d%%)"
#. Translators: this is <hours>:<minutes> Until Full (<percentage>)
#: ../js/ui/status/power.js:103
#: ../js/ui/status/power.js:91
#, javascript-format
msgid "%d%02d Until Full (%d%%)"
msgstr "%d%02d até estar cheio (%d%%)"
#: ../js/ui/status/power.js:131 ../js/ui/status/power.js:133
#, javascript-format
msgid "%d%%"
msgstr "%d %%"
msgid "%d%02d Until Full (%d%%)"
msgstr "%d%02d Até estar cheio (%d%%)"
#. The menu only appears when airplane mode is on, so just
#. statically build it as if it was on, rather than dynamically
@ -1685,36 +1652,39 @@ msgstr ""
msgid "List possible modes"
msgstr "Listar modos possíveis"
#: ../src/shell-app.c:246
#: ../src/shell-app.c:239
msgctxt "program"
msgid "Unknown"
msgstr "Desconhecida"
#: ../src/shell-app.c:487
#: ../src/shell-app.c:480
#, c-format
msgid "Failed to launch “%s”"
msgstr "Falha ao iniciar “%s”"
#: ../src/shell-keyring-prompt.c:730
#: ../src/shell-keyring-prompt.c:742
msgid "Passwords do not match."
msgstr "As senhas não coincidem."
#: ../src/shell-keyring-prompt.c:738
#: ../src/shell-keyring-prompt.c:750
msgid "Password cannot be blank"
msgstr "A senha não pode estar vazia"
#: ../src/shell-polkit-authentication-agent.c:353
#: ../src/shell-polkit-authentication-agent.c:346
msgid "Authentication dialog was dismissed by the user"
msgstr "O diálogo de autenticação foi fechado pelo utilizador"
#~ msgid "GNOME Shell (wayland compositor)"
#~ msgstr "Interface GNOME (compositor wayland)"
#~ msgid "Bluetooth"
#~ msgstr "Bluetooth"
#~ msgid "%d Connected Device"
#~ msgid_plural "%d Connected Devices"
#~ msgstr[0] "%d Dispositivo ligado"
#~ msgstr[1] "%d Dispositivos ligados"
#~ msgid "Off"
#~ msgstr "Desligado"
#~ msgid "Authentication required"
#~ msgstr "Autenticação necessária"

2095
po/ro.po

File diff suppressed because it is too large Load Diff

205
po/ru.po
View File

@ -19,16 +19,16 @@ msgstr ""
"Project-Id-Version: gnome-shell\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
"shell&keywords=I18N+L10N&component=general\n"
"POT-Creation-Date: 2015-11-23 10:13+0000\n"
"PO-Revision-Date: 2015-11-23 22:19+0300\n"
"POT-Creation-Date: 2015-09-29 08:39+0000\n"
"PO-Revision-Date: 2015-09-29 22:06+0300\n"
"Last-Translator: Stas Solovey <whats_up@tut.by>\n"
"Language-Team: Russian <gnome-cyr@gnome.org>\n"
"Language-Team: Русский <gnome-cyr@gnome.org>\n"
"Language: ru\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)\n"
"X-Generator: Gtranslator 2.91.7\n"
#: ../data/50-gnome-shell-system.xml.in.h:1
@ -55,6 +55,15 @@ msgstr "Показать все приложения"
msgid "Open the application menu"
msgstr "Открыть меню приложений"
#: ../data/gnome-shell.desktop.in.in.h:1
msgid "GNOME Shell"
msgstr "GNOME Shell"
#: ../data/gnome-shell.desktop.in.in.h:2
#: ../data/gnome-shell-wayland.desktop.in.in.h:2
msgid "Window management and application launching"
msgstr "Управление окнами и запуск приложений"
#: ../data/gnome-shell-extension-prefs.desktop.in.in.h:1
msgid "GNOME Shell Extension Preferences"
msgstr "Параметры расширений GNOME Shell"
@ -63,13 +72,9 @@ msgstr "Параметры расширений GNOME Shell"
msgid "Configure GNOME Shell Extensions"
msgstr "Настроить расширения GNOME Shell"
#: ../data/org.gnome.Shell.desktop.in.in.h:1
msgid "GNOME Shell"
msgstr "GNOME Shell"
#: ../data/org.gnome.Shell.desktop.in.in.h:2
msgid "Window management and application launching"
msgstr "Управление окнами и запуск приложений"
#: ../data/gnome-shell-wayland.desktop.in.in.h:1
msgid "GNOME Shell (wayland compositor)"
msgstr "GNOME Shell (компоновщик wayland)"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:1
msgid "Enable internal tools useful for developers and testers from Alt-F2"
@ -174,94 +179,76 @@ msgstr ""
"устанавливает состояние по умолчание для этой флаговой кнопки."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:18
msgid ""
"Whether the default Bluetooth adapter had set up devices associated to it"
msgstr ""
#: ../data/org.gnome.shell.gschema.xml.in.in.h:19
#, fuzzy
msgid ""
"The shell will only show a Bluetooth menu item if a Bluetooth adapter is "
"powered, or if there were devices set up associated with the default "
"adapter. This will be reset if the default adapter is ever seen not to have "
"devices associated to it."
msgstr ""
"Пункт меню Bluetooth будет отображаться только в случае включённого адаптера "
"Bluetooth или если имеются установленные устройства связанные с адаптером по "
"умолчанию. Параметр будет сброшен, если адаптер по умолчанию не имеет "
"связанных с ним устройств."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:20
msgid "Show the week date in the calendar"
msgstr "Показывать в календаре нумерацию недель"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:21
#: ../data/org.gnome.shell.gschema.xml.in.in.h:19
msgid "If true, display the ISO week date in the calendar."
msgstr ""
"Если включено, календарь будет показывать нумерацию недель в формате ISO."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:22
#: ../data/org.gnome.shell.gschema.xml.in.in.h:20
msgid "Keybinding to open the application menu"
msgstr "Комбинация клавиш для открытия меню приложения"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:23
#: ../data/org.gnome.shell.gschema.xml.in.in.h:21
msgid "Keybinding to open the application menu."
msgstr "Комбинация клавиш для открытия меню приложения."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:24
#: ../data/org.gnome.shell.gschema.xml.in.in.h:22
msgid "Keybinding to open the \"Show Applications\" view"
msgstr "Комбинация клавиш для перехода в режим просмотра приложений"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:25
#: ../data/org.gnome.shell.gschema.xml.in.in.h:23
msgid ""
"Keybinding to open the \"Show Applications\" view of the Activities Overview."
msgstr "Комбинация клавиш для перехода в режим просмотра приложений."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:26
#: ../data/org.gnome.shell.gschema.xml.in.in.h:24
msgid "Keybinding to open the overview"
msgstr "Комбинация клавиш для перехода в режим обзора"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:27
#: ../data/org.gnome.shell.gschema.xml.in.in.h:25
msgid "Keybinding to open the Activities Overview."
msgstr "Комбинация клавиш для перехода в режим обзора."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:28
#: ../data/org.gnome.shell.gschema.xml.in.in.h:26
msgid "Keybinding to toggle the visibility of the notification list"
msgstr "Комбинация клавиш для отображения или скрытия списка уведомлений"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:29
#: ../data/org.gnome.shell.gschema.xml.in.in.h:27
msgid "Keybinding to toggle the visibility of the notification list."
msgstr "Комбинация клавиш для отображения или скрытия списка уведомлений."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:30
#: ../data/org.gnome.shell.gschema.xml.in.in.h:28
msgid "Keybinding to focus the active notification"
msgstr "Комбинация клавиш для перевода фокуса на текущее уведомление"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:31
#: ../data/org.gnome.shell.gschema.xml.in.in.h:29
msgid "Keybinding to focus the active notification."
msgstr "Комбинация клавиш для перевода фокуса на текущее уведомление."
# tweens — что-то типа анимации
#: ../data/org.gnome.shell.gschema.xml.in.in.h:32
#: ../data/org.gnome.shell.gschema.xml.in.in.h:30
msgid ""
"Keybinding that pauses and resumes all running tweens, for debugging purposes"
msgstr ""
"Комбинация клавиш, которая приостанавливает и возобновляет все запущенные "
"анимации (для отладки)"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:33
#: ../data/org.gnome.shell.gschema.xml.in.in.h:31
msgid "Which keyboard to use"
msgstr "Какую клавиатуру использовать"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:34
#: ../data/org.gnome.shell.gschema.xml.in.in.h:32
msgid "The type of keyboard to use."
msgstr "Тип используемой клавиатуры."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:35
#: ../data/org.gnome.shell.gschema.xml.in.in.h:33
msgid "Limit switcher to current workspace."
msgstr "Ограничить переключатель текущим рабочим местом."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:36
#: ../data/org.gnome.shell.gschema.xml.in.in.h:34
msgid ""
"If true, only applications that have windows on the current workspace are "
"shown in the switcher. Otherwise, all applications are included."
@ -270,11 +257,11 @@ msgstr ""
"чьи окна находятся на текущем рабочем месте. Иначе все приложения будут "
"включены."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:37
#: ../data/org.gnome.shell.gschema.xml.in.in.h:35
msgid "The application icon mode."
msgstr "Режим значка приложения."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:38
#: ../data/org.gnome.shell.gschema.xml.in.in.h:36
msgid ""
"Configures how the windows are shown in the switcher. Valid possibilities "
"are 'thumbnail-only' (shows a thumbnail of the window), 'app-icon-"
@ -284,7 +271,7 @@ msgstr ""
"«thumbnail-only» (показывать миниатюру окна), «app-icon-only» (показывать "
"только значок приложения), «both» (показывать миниатюру и значок)."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:39
#: ../data/org.gnome.shell.gschema.xml.in.in.h:37
msgid ""
"If true, only windows from the current workspace are shown in the switcher. "
"Otherwise, all windows are included."
@ -292,31 +279,31 @@ msgstr ""
"Если выбрано, то в переключателе будут показываться только окна из текущего "
"рабочего места. Иначе все окна будут включены."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:40
#: ../data/org.gnome.shell.gschema.xml.in.in.h:38
msgid "Attach modal dialog to the parent window"
msgstr "Прикреплять модальное диалоговое окно к родительскому окну"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:41
#: ../data/org.gnome.shell.gschema.xml.in.in.h:39
msgid ""
"This key overrides the key in org.gnome.mutter when running GNOME Shell."
msgstr ""
"Этот ключ переопределяет ключ в org.gnome.mutter при запуске GNOME Shell."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:42
#: ../data/org.gnome.shell.gschema.xml.in.in.h:40
msgid "Enable edge tiling when dropping windows on screen edges"
msgstr ""
"Включить автоматическое изменение размеров окон при перемещении окон к краям "
"экрана"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:43
#: ../data/org.gnome.shell.gschema.xml.in.in.h:41
msgid "Workspaces are managed dynamically"
msgstr "Рабочие места управляются динамически"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:44
#: ../data/org.gnome.shell.gschema.xml.in.in.h:42
msgid "Workspaces only on primary monitor"
msgstr "Рабочие места только на основном мониторе"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:45
#: ../data/org.gnome.shell.gschema.xml.in.in.h:43
msgid "Delay focus changes in mouse mode until the pointer stops moving"
msgstr "Задержка изменения фокуса в режиме мыши после остановки указателя"
@ -381,7 +368,7 @@ msgstr "(например, пользователь или %s)"
msgid "Username: "
msgstr "Имя пользователя: "
#: ../js/gdm/loginDialog.js:1180
#: ../js/gdm/loginDialog.js:1184
msgid "Login Window"
msgstr "Окно входа в систему"
@ -522,12 +509,12 @@ msgstr "Добавить в избранное"
msgid "Show Details"
msgstr "Показать подробности"
#: ../js/ui/appFavorites.js:133
#: ../js/ui/appFavorites.js:132
#, javascript-format
msgid "%s has been added to your favorites."
msgstr "Приложение %s добавлено в избранное."
#: ../js/ui/appFavorites.js:167
#: ../js/ui/appFavorites.js:166
#, javascript-format
msgid "%s has been removed from your favorites."
msgstr "Приложение %s удалено из избранного."
@ -604,12 +591,6 @@ msgstr "Предыдущий месяц"
msgid "Next month"
msgstr "Следующий месяц"
#: ../js/ui/calendar.js:728
#, javascript-format
msgctxt "date day number format"
msgid "%d"
msgstr "%d"
#: ../js/ui/calendar.js:783
msgid "Week %V"
msgstr "%V неделя"
@ -662,7 +643,7 @@ msgstr "Внешний диск подключён"
msgid "External drive disconnected"
msgstr "Внешний диск отключён"
#: ../js/ui/components/autorunManager.js:355
#: ../js/ui/components/autorunManager.js:354
#, javascript-format
msgid "Open with %s"
msgstr "Открыть с помощью %s"
@ -1059,22 +1040,23 @@ msgstr "Обзор"
msgid "Type to search…"
msgstr "Найти…"
#: ../js/ui/panel.js:358
#: ../js/ui/panel.js:352
msgid "Quit"
msgstr "Завершить"
#. Translators: If there is no suitable word for "Activities"
#. in your language, you can use the word for "Overview".
#: ../js/ui/panel.js:414
#: ../js/ui/panel.js:404
msgid "Activities"
msgstr "Обзор"
#: ../js/ui/panel.js:695
#: ../js/ui/panel.js:650
#| msgid "System"
msgctxt "System menu in the top bar"
msgid "System"
msgstr "Система"
#: ../js/ui/panel.js:807
#: ../js/ui/panel.js:754
msgid "Top Bar"
msgstr "Верхняя панель"
@ -1087,15 +1069,15 @@ msgstr "Верхняя панель"
msgid "toggle-switch-us"
msgstr "toggle-switch-intl"
#: ../js/ui/runDialog.js:71
#: ../js/ui/runDialog.js:70
msgid "Enter a Command"
msgstr "Введите команду"
#: ../js/ui/runDialog.js:111 ../js/ui/windowMenu.js:162
#: ../js/ui/runDialog.js:110 ../js/ui/windowMenu.js:162
msgid "Close"
msgstr "Закрыть"
#: ../js/ui/runDialog.js:282
#: ../js/ui/runDialog.js:281
msgid "Restarting…"
msgstr "Перезапуск…"
@ -1221,16 +1203,19 @@ msgstr "Высокая контрастность"
msgid "Large Text"
msgstr "Крупный текст"
#: ../js/ui/status/bluetooth.js:47
msgid "Bluetooth"
msgstr "Bluetooth"
#: ../js/ui/status/bluetooth.js:51 ../js/ui/status/network.js:178
#: ../js/ui/status/network.js:353 ../js/ui/status/network.js:1279
#: ../js/ui/status/network.js:1394 ../js/ui/status/rfkill.js:90
#: ../js/ui/status/rfkill.js:117
msgid "Turn Off"
msgstr "Выключить"
#: ../js/ui/status/bluetooth.js:56
#: ../js/ui/status/bluetooth.js:54
msgid "Bluetooth Settings"
msgstr "Настроить Bluetooth"
#. Translators: this is the number of connected bluetooth devices
#: ../js/ui/status/bluetooth.js:136
#: ../js/ui/status/bluetooth.js:105
#, javascript-format
msgid "%d Connected"
msgid_plural "%d Connected"
@ -1238,25 +1223,10 @@ msgstr[0] "Подключено %d"
msgstr[1] "Подключено %d"
msgstr[2] "Подключено %d"
#: ../js/ui/status/bluetooth.js:138
msgid "Off"
msgstr "Выключено"
#: ../js/ui/status/bluetooth.js:140
#: ../js/ui/status/bluetooth.js:107
msgid "Not In Use"
msgstr "Не используется"
#: ../js/ui/status/bluetooth.js:142 ../js/ui/status/network.js:1279
msgid "Turn On"
msgstr "Включить"
#: ../js/ui/status/bluetooth.js:142 ../js/ui/status/network.js:178
#: ../js/ui/status/network.js:353 ../js/ui/status/network.js:1279
#: ../js/ui/status/network.js:1394 ../js/ui/status/rfkill.js:90
#: ../js/ui/status/rfkill.js:117
msgid "Turn Off"
msgstr "Выключить"
#: ../js/ui/status/brightness.js:44
msgid "Brightness"
msgstr "Яркость"
@ -1424,6 +1394,10 @@ msgstr "Выбрать сеть"
msgid "Wi-Fi Settings"
msgstr "Параметры Wi-Fi"
#: ../js/ui/status/network.js:1279
msgid "Turn On"
msgstr "Включить"
#. Translators: %s is a network identifier
#: ../js/ui/status/network.js:1296
#, javascript-format
@ -1473,52 +1447,44 @@ msgstr "Сбой подключения"
msgid "Activation of network connection failed"
msgstr "Не удалось активировать сетевое подключение"
#: ../js/ui/status/power.js:61
#: ../js/ui/status/power.js:49
msgid "Power Settings"
msgstr "Параметры электропитания"
#: ../js/ui/status/power.js:77
#: ../js/ui/status/power.js:65
msgid "Fully Charged"
msgstr "Полностью заряжена"
#. 0 is reported when UPower does not have enough data
#. to estimate battery life
#: ../js/ui/status/power.js:84 ../js/ui/status/power.js:90
#: ../js/ui/status/power.js:72 ../js/ui/status/power.js:78
msgid "Estimating…"
msgstr "Выполняется подсчёт…"
# нужно в две строки, иначе не влезает в выпадающую панель
#. Translators: this is <hours>:<minutes> Remaining (<percentage>)
#: ../js/ui/status/power.js:98
#: ../js/ui/status/power.js:86
#, javascript-format
#| msgid "%d%02d Remaining (%d%%)"
msgid "%d%02d Remaining (%d%%)"
msgid "%d%02d Remaining (%d%%)"
msgstr ""
"Осталось %02d ч. %d мин.\n"
"Разряжается (%d %%)"
"Разряжается (%d%%)"
# нужно в две строки, иначе не влезает в выпадающую панель
#. Translators: this is <hours>:<minutes> Until Full (<percentage>)
#: ../js/ui/status/power.js:103
#: ../js/ui/status/power.js:91
#, javascript-format
#| msgid "%d%02d Until Full (%d%%)"
msgid "%d%02d Until Full (%d%%)"
msgid "%d%02d Until Full (%d%%)"
msgstr ""
"До полной %02d ч. %d мин.\n"
"Заряжается (%d %%)"
"Заряжается (%d%%)"
#: ../js/ui/status/power.js:131 ../js/ui/status/power.js:133
#, javascript-format
msgid "%d%%"
msgstr "%d%%"
# Нужно максимально коротко, иначе не влазит в меню gnome shell
#. The menu only appears when airplane mode is on, so just
#. statically build it as if it was on, rather than dynamically
#. changing the menu contents.
#: ../js/ui/status/rfkill.js:88
msgid "Airplane Mode On"
msgstr "Включён авиарежим"
msgstr "Включён режим авиаперелёта"
#: ../js/ui/status/system.js:343
msgid "Switch User"
@ -1579,7 +1545,7 @@ msgstr "Окно «%s» ожидает"
#: ../js/ui/windowManager.js:63
msgid "Do you want to keep these display settings?"
msgstr "Сохранить эти параметры дисплея?"
msgstr "Хотите сохранить эти параметры дисплея?"
#. Translators: this and the following message should be limited in lenght,
#. to avoid ellipsizing the labels.
@ -1716,30 +1682,30 @@ msgstr ""
msgid "List possible modes"
msgstr "Список возможных режимов"
#: ../src/shell-app.c:246
#: ../src/shell-app.c:239
msgctxt "program"
msgid "Unknown"
msgstr "Неизвестное приложение"
#: ../src/shell-app.c:487
#: ../src/shell-app.c:480
#, c-format
msgid "Failed to launch “%s”"
msgstr "Не удалось запустить «%s»"
#: ../src/shell-keyring-prompt.c:730
#: ../src/shell-keyring-prompt.c:742
msgid "Passwords do not match."
msgstr "Пароли не совпадают."
#: ../src/shell-keyring-prompt.c:738
#: ../src/shell-keyring-prompt.c:750
msgid "Password cannot be blank"
msgstr "Пароль не может быть пустым"
#: ../src/shell-polkit-authentication-agent.c:353
#: ../src/shell-polkit-authentication-agent.c:346
msgid "Authentication dialog was dismissed by the user"
msgstr "Аутентификация отклонена пользователем"
#~ msgid "GNOME Shell (wayland compositor)"
#~ msgstr "GNOME Shell (компоновщик wayland)"
#~ msgid "Bluetooth"
#~ msgstr "Bluetooth"
#~ msgid "%d Connected Device"
#~ msgid_plural "%d Connected Devices"
@ -1747,6 +1713,9 @@ msgstr "Аутентификация отклонена пользователе
#~ msgstr[1] "Подключено %d устройства"
#~ msgstr[2] "Подключено %d устройств"
#~ msgid "Off"
#~ msgstr "Выключено"
#~ msgid "Authentication required"
#~ msgstr "Требуется подтверждение подлинности"

File diff suppressed because it is too large Load Diff

View File

@ -41,6 +41,8 @@
#define N_(x) x
#endif
#define CALENDAR_SOURCES_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), CALENDAR_TYPE_SOURCES, CalendarSourcesPrivate))
typedef struct _ClientData ClientData;
typedef struct _CalendarSourceData CalendarSourceData;
@ -64,14 +66,6 @@ struct _CalendarSourceData
guint loaded : 1;
};
typedef struct _CalendarSourcesPrivate CalendarSourcesPrivate;
struct _CalendarSources
{
GObject parent;
CalendarSourcesPrivate *priv;
};
struct _CalendarSourcesPrivate
{
ESourceRegistry *registry;
@ -83,8 +77,8 @@ struct _CalendarSourcesPrivate
CalendarSourceData task_sources;
};
G_DEFINE_TYPE_WITH_PRIVATE (CalendarSources, calendar_sources, G_TYPE_OBJECT)
static void calendar_sources_class_init (CalendarSourcesClass *klass);
static void calendar_sources_init (CalendarSources *sources);
static void calendar_sources_finalize (GObject *object);
static void backend_died_cb (EClient *client, CalendarSourceData *source_data);
@ -114,6 +108,34 @@ client_data_free (ClientData *data)
g_slice_free (ClientData, data);
}
GType
calendar_sources_get_type (void)
{
static GType sources_type = 0;
if (!sources_type)
{
static const GTypeInfo sources_info =
{
sizeof (CalendarSourcesClass),
NULL, /* base_init */
NULL, /* base_finalize */
(GClassInitFunc) calendar_sources_class_init,
NULL, /* class_finalize */
NULL, /* class_data */
sizeof (CalendarSources),
0, /* n_preallocs */
(GInstanceInitFunc) calendar_sources_init,
};
sources_type = g_type_register_static (G_TYPE_OBJECT,
"CalendarSources",
&sources_info, 0);
}
return sources_type;
}
static void
calendar_sources_class_init (CalendarSourcesClass *klass)
{
@ -123,11 +145,14 @@ calendar_sources_class_init (CalendarSourcesClass *klass)
gobject_class->finalize = calendar_sources_finalize;
g_type_class_add_private (klass, sizeof (CalendarSourcesPrivate));
signals [APPOINTMENT_SOURCES_CHANGED] =
g_signal_new ("appointment-sources-changed",
G_TYPE_FROM_CLASS (gobject_class),
G_SIGNAL_RUN_LAST,
0,
G_STRUCT_OFFSET (CalendarSourcesClass,
appointment_sources_changed),
NULL,
NULL,
NULL,
@ -138,7 +163,8 @@ calendar_sources_class_init (CalendarSourcesClass *klass)
g_signal_new ("task-sources-changed",
G_TYPE_FROM_CLASS (gobject_class),
G_SIGNAL_RUN_LAST,
0,
G_STRUCT_OFFSET (CalendarSourcesClass,
task_sources_changed),
NULL,
NULL,
NULL,
@ -153,7 +179,7 @@ calendar_sources_init (CalendarSources *sources)
GDBusConnection *session_bus;
GVariant *result;
sources->priv = calendar_sources_get_instance_private (sources);
sources->priv = CALENDAR_SOURCES_GET_PRIVATE (sources);
/* WORKAROUND: the hardcoded timeout for e_source_registry_new_sync()
(and other library calls that eventually call g_dbus_proxy_new[_sync]())

View File

@ -28,10 +28,33 @@
G_BEGIN_DECLS
#define CALENDAR_TYPE_SOURCES (calendar_sources_get_type ())
G_DECLARE_FINAL_TYPE (CalendarSources, calendar_sources,
CALENDAR, SOURCES, GObject)
#define CALENDAR_TYPE_SOURCES (calendar_sources_get_type ())
#define CALENDAR_SOURCES(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), CALENDAR_TYPE_SOURCES, CalendarSources))
#define CALENDAR_SOURCES_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), CALENDAR_TYPE_SOURCES, CalendarSourcesClass))
#define CALENDAR_IS_SOURCES(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), CALENDAR_TYPE_SOURCES))
#define CALENDAR_IS_SOURCES_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), CALENDAR_TYPE_SOURCES))
#define CALENDAR_SOURCES_GET_CLASS(o)(G_TYPE_INSTANCE_GET_CLASS ((o), CALENDAR_TYPE_SOURCES, CalendarSourcesClass))
typedef struct _CalendarSources CalendarSources;
typedef struct _CalendarSourcesClass CalendarSourcesClass;
typedef struct _CalendarSourcesPrivate CalendarSourcesPrivate;
struct _CalendarSources
{
GObject parent;
CalendarSourcesPrivate *priv;
};
struct _CalendarSourcesClass
{
GObjectClass parent_class;
void (* appointment_sources_changed) (CalendarSources *sources);
void (* task_sources_changed) (CalendarSources *sources);
};
GType calendar_sources_get_type (void) G_GNUC_CONST;
CalendarSources *calendar_sources_get (void);
GList *calendar_sources_get_appointment_clients (CalendarSources *sources);
GList *calendar_sources_get_task_clients (CalendarSources *sources);

View File

@ -43,6 +43,8 @@
#define DIRECTORY_LOAD_ITEMS_PER_CALLBACK 100
#define HIGH_SCORE_RATIO 0.10
G_DEFINE_TYPE (ShellMimeSniffer, shell_mime_sniffer, G_TYPE_OBJECT);
enum {
PROP_FILE = 1,
NUM_PROPERTIES
@ -70,26 +72,16 @@ typedef struct {
gint total_items;
} DeepCountState;
typedef struct _ShellMimeSnifferPrivate ShellMimeSnifferPrivate;
struct _ShellMimeSniffer
{
GObject parent_instance;
ShellMimeSnifferPrivate *priv;
};
struct _ShellMimeSnifferPrivate {
GFile *file;
GCancellable *cancellable;
guint watchdog_id;
GTask *task;
GSimpleAsyncResult *async_result;
gchar **sniffed_mime;
};
G_DEFINE_TYPE_WITH_PRIVATE (ShellMimeSniffer, shell_mime_sniffer, G_TYPE_OBJECT);
static void deep_count_load (DeepCountState *state,
GFile *file);
@ -187,7 +179,6 @@ prepare_async_result (DeepCountState *state)
GArray *results;
GPtrArray *sniffed_mime;
SniffedResult result;
char **mimes;
sniffed_mime = g_ptr_array_new ();
results = g_array_new (TRUE, TRUE, sizeof (SniffedResult));
@ -229,10 +220,10 @@ prepare_async_result (DeepCountState *state)
out:
g_ptr_array_add (sniffed_mime, NULL);
mimes = (gchar **) g_ptr_array_free (sniffed_mime, FALSE);
self->priv->sniffed_mime = (gchar **) g_ptr_array_free (sniffed_mime, FALSE);
g_array_free (results, TRUE);
g_task_return_pointer (self->priv->task, mimes, (GDestroyNotify)g_strfreev);
g_simple_async_result_complete_in_idle (self->priv->async_result);
}
/* adapted from nautilus/libnautilus-private/nautilus-directory-async.c */
@ -425,17 +416,20 @@ query_info_async_ready_cb (GObject *source,
if (error != NULL)
{
g_task_return_error (self->priv->task, error);
g_simple_async_result_take_error (self->priv->async_result,
error);
g_simple_async_result_complete_in_idle (self->priv->async_result);
return;
}
if (g_file_info_get_file_type (info) != G_FILE_TYPE_DIRECTORY)
{
g_task_return_new_error (self->priv->task,
G_IO_ERROR,
G_IO_ERROR_NOT_DIRECTORY,
"Not a directory");
g_simple_async_result_set_error (self->priv->async_result,
G_IO_ERROR,
G_IO_ERROR_NOT_DIRECTORY,
"Not a directory");
g_simple_async_result_complete_in_idle (self->priv->async_result);
return;
}
@ -481,7 +475,7 @@ shell_mime_sniffer_dispose (GObject *object)
g_clear_object (&self->priv->file);
g_clear_object (&self->priv->cancellable);
g_clear_object (&self->priv->task);
g_clear_object (&self->priv->async_result);
if (self->priv->watchdog_id != 0)
{
@ -492,6 +486,16 @@ shell_mime_sniffer_dispose (GObject *object)
G_OBJECT_CLASS (shell_mime_sniffer_parent_class)->dispose (object);
}
static void
shell_mime_sniffer_finalize (GObject *object)
{
ShellMimeSniffer *self = SHELL_MIME_SNIFFER (object);
g_strfreev (self->priv->sniffed_mime);
G_OBJECT_CLASS (shell_mime_sniffer_parent_class)->finalize (object);
}
static void
shell_mime_sniffer_get_property (GObject *object,
guint prop_id,
@ -535,6 +539,7 @@ shell_mime_sniffer_class_init (ShellMimeSnifferClass *klass)
oclass = G_OBJECT_CLASS (klass);
oclass->dispose = shell_mime_sniffer_dispose;
oclass->finalize = shell_mime_sniffer_finalize;
oclass->get_property = shell_mime_sniffer_get_property;
oclass->set_property = shell_mime_sniffer_set_property;
@ -545,13 +550,17 @@ shell_mime_sniffer_class_init (ShellMimeSnifferClass *klass)
G_TYPE_FILE,
G_PARAM_READWRITE);
g_type_class_add_private (klass, sizeof (ShellMimeSnifferPrivate));
g_object_class_install_properties (oclass, NUM_PROPERTIES, properties);
}
static void
shell_mime_sniffer_init (ShellMimeSniffer *self)
{
self->priv = shell_mime_sniffer_get_instance_private (self);
self->priv =
G_TYPE_INSTANCE_GET_PRIVATE (self,
SHELL_TYPE_MIME_SNIFFER,
ShellMimeSnifferPrivate);
init_mimetypes ();
}
@ -569,11 +578,14 @@ shell_mime_sniffer_sniff_async (ShellMimeSniffer *self,
gpointer user_data)
{
g_assert (self->priv->watchdog_id == 0);
g_assert (self->priv->task == NULL);
g_assert (self->priv->async_result == NULL);
self->priv->async_result =
g_simple_async_result_new (G_OBJECT (self),
callback, user_data,
shell_mime_sniffer_sniff_finish);
self->priv->cancellable = g_cancellable_new ();
self->priv->task = g_task_new (self, self->priv->cancellable,
callback, user_data);
self->priv->watchdog_id =
g_timeout_add (WATCHDOG_TIMEOUT,
@ -588,5 +600,8 @@ shell_mime_sniffer_sniff_finish (ShellMimeSniffer *self,
GAsyncResult *res,
GError **error)
{
return g_task_propagate_pointer (self->priv->task, error);
if (g_simple_async_result_propagate_error (self->priv->async_result, error))
return NULL;
return g_strdupv (self->priv->sniffed_mime);
}

View File

@ -27,9 +27,30 @@
G_BEGIN_DECLS
#define SHELL_TYPE_MIME_SNIFFER (shell_mime_sniffer_get_type ())
G_DECLARE_FINAL_TYPE (ShellMimeSniffer, shell_mime_sniffer,
SHELL, MIME_SNIFFER, GObject)
#define SHELL_TYPE_MIME_SNIFFER (shell_mime_sniffer_get_type ())
#define SHELL_MIME_SNIFFER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), SHELL_TYPE_MIME_SNIFFER, ShellMimeSniffer))
#define SHELL_IS_MIME_SNIFFER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), SHELL_TYPE_MIME_SNIFFER))
#define SHELL_MIME_SNIFFER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), SHELL_TYPE_MIME_SNIFFER, ShellMimeSnifferClass))
#define SHELL_IS_MIME_SNIFFER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), SHELL_TYPE_MIME_SNIFFER))
#define SHELL_MIME_SNIFFER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), SHELL_TYPE_MIME_SNIFFER, ShellMimeSnifferClass))
typedef struct _ShellMimeSniffer ShellMimeSniffer;
typedef struct _ShellMimeSnifferPrivate ShellMimeSnifferPrivate;
typedef struct _ShellMimeSnifferClass ShellMimeSnifferClass;
struct _ShellMimeSniffer
{
GObject parent_instance;
ShellMimeSnifferPrivate *priv;
};
struct _ShellMimeSnifferClass
{
GObjectClass parent_class;
};
GType shell_mime_sniffer_get_type (void) G_GNUC_CONST;
ShellMimeSniffer *shell_mime_sniffer_new (GFile *file);

View File

@ -37,15 +37,6 @@ enum {
static guint signals[LAST_SIGNAL] = { 0 };
typedef struct _ShellAppSystemPrivate ShellAppSystemPrivate;
struct _ShellAppSystem
{
GObject parent;
ShellAppSystemPrivate *priv;
};
struct _ShellAppSystemPrivate {
GHashTable *running_apps;
GHashTable *id_to_app;
@ -54,7 +45,7 @@ struct _ShellAppSystemPrivate {
static void shell_app_system_finalize (GObject *object);
G_DEFINE_TYPE_WITH_PRIVATE (ShellAppSystem, shell_app_system, G_TYPE_OBJECT);
G_DEFINE_TYPE(ShellAppSystem, shell_app_system, G_TYPE_OBJECT);
static void shell_app_system_class_init(ShellAppSystemClass *klass)
{
@ -73,9 +64,11 @@ static void shell_app_system_class_init(ShellAppSystemClass *klass)
g_signal_new ("installed-changed",
SHELL_TYPE_APP_SYSTEM,
G_SIGNAL_RUN_LAST,
0,
NULL, NULL, NULL,
G_STRUCT_OFFSET (ShellAppSystemClass, installed_changed),
NULL, NULL, NULL,
G_TYPE_NONE, 0);
g_type_class_add_private (gobject_class, sizeof (ShellAppSystemPrivate));
}
static void
@ -154,7 +147,9 @@ shell_app_system_init (ShellAppSystem *self)
ShellAppSystemPrivate *priv;
GAppInfoMonitor *monitor;
self->priv = priv = shell_app_system_get_instance_private (self);
self->priv = priv = G_TYPE_INSTANCE_GET_PRIVATE (self,
SHELL_TYPE_APP_SYSTEM,
ShellAppSystemPrivate);
priv->running_apps = g_hash_table_new_full (NULL, NULL, (GDestroyNotify) g_object_unref, NULL);
priv->id_to_app = g_hash_table_new_full (g_str_hash, g_str_equal,

View File

@ -8,10 +8,33 @@
#include "shell-app.h"
#define SHELL_TYPE_APP_SYSTEM (shell_app_system_get_type ())
G_DECLARE_FINAL_TYPE (ShellAppSystem, shell_app_system,
SHELL, APP_SYSTEM, GObject)
#define SHELL_TYPE_APP_SYSTEM (shell_app_system_get_type ())
#define SHELL_APP_SYSTEM(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), SHELL_TYPE_APP_SYSTEM, ShellAppSystem))
#define SHELL_APP_SYSTEM_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), SHELL_TYPE_APP_SYSTEM, ShellAppSystemClass))
#define SHELL_IS_APP_SYSTEM(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), SHELL_TYPE_APP_SYSTEM))
#define SHELL_IS_APP_SYSTEM_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), SHELL_TYPE_APP_SYSTEM))
#define SHELL_APP_SYSTEM_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), SHELL_TYPE_APP_SYSTEM, ShellAppSystemClass))
typedef struct _ShellAppSystem ShellAppSystem;
typedef struct _ShellAppSystemClass ShellAppSystemClass;
typedef struct _ShellAppSystemPrivate ShellAppSystemPrivate;
struct _ShellAppSystem
{
GObject parent;
ShellAppSystemPrivate *priv;
};
struct _ShellAppSystemClass
{
GObjectClass parent_class;
void (*installed_changed)(ShellAppSystem *appsys, gpointer user_data);
void (*favorites_changed)(ShellAppSystem *appsys, gpointer user_data);
};
GType shell_app_system_get_type (void) G_GNUC_CONST;
ShellAppSystem *shell_app_system_get_default (void);
ShellApp *shell_app_system_lookup_app (ShellAppSystem *system,

View File

@ -7,9 +7,23 @@
G_BEGIN_DECLS
typedef struct _ShellAppUsage ShellAppUsage;
typedef struct _ShellAppUsageClass ShellAppUsageClass;
typedef struct _ShellAppUsagePrivate ShellAppUsagePrivate;
#define SHELL_TYPE_APP_USAGE (shell_app_usage_get_type ())
G_DECLARE_FINAL_TYPE (ShellAppUsage, shell_app_usage,
SHELL, APP_USAGE, GObject)
#define SHELL_APP_USAGE(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), SHELL_TYPE_APP_USAGE, ShellAppUsage))
#define SHELL_APP_USAGE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), SHELL_TYPE_APP_USAGE, ShellAppUsageClass))
#define SHELL_IS_APP_USAGE(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), SHELL_TYPE_APP_USAGE))
#define SHELL_IS_APP_USAGE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), SHELL_TYPE_APP_USAGE))
#define SHELL_APP_USAGE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), SHELL_TYPE_APP_USAGE, ShellAppUsageClass))
struct _ShellAppUsageClass
{
GObjectClass parent_class;
};
GType shell_app_usage_get_type (void) G_GNUC_CONST;
ShellAppUsage* shell_app_usage_get_default(void);

View File

@ -9,8 +9,23 @@
G_BEGIN_DECLS
#define SHELL_TYPE_APP (shell_app_get_type ())
G_DECLARE_FINAL_TYPE (ShellApp, shell_app, SHELL, APP, GObject)
typedef struct _ShellApp ShellApp;
typedef struct _ShellAppClass ShellAppClass;
typedef struct _ShellAppPrivate ShellAppPrivate;
typedef struct _ShellAppAction ShellAppAction;
#define SHELL_TYPE_APP (shell_app_get_type ())
#define SHELL_APP(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), SHELL_TYPE_APP, ShellApp))
#define SHELL_APP_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), SHELL_TYPE_APP, ShellAppClass))
#define SHELL_IS_APP(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), SHELL_TYPE_APP))
#define SHELL_IS_APP_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), SHELL_TYPE_APP))
#define SHELL_APP_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), SHELL_TYPE_APP, ShellAppClass))
struct _ShellAppClass
{
GObjectClass parent_class;
};
typedef enum {
SHELL_APP_STATE_STOPPED,
@ -18,6 +33,8 @@ typedef enum {
SHELL_APP_STATE_RUNNING
} ShellAppState;
GType shell_app_get_type (void) G_GNUC_CONST;
const char *shell_app_get_id (ShellApp *app);
GDesktopAppInfo *shell_app_get_app_info (ShellApp *app);

View File

@ -23,22 +23,18 @@
* - Actor is mapped [actor and all parents visible, actor in stage]
*/
G_DEFINE_TYPE (ShellEmbeddedWindow, shell_embedded_window, GTK_TYPE_WINDOW);
enum {
PROP_0
};
typedef struct _ShellEmbeddedWindowPrivate ShellEmbeddedWindowPrivate;
struct _ShellEmbeddedWindowPrivate {
ShellGtkEmbed *actor;
GdkRectangle position;
};
G_DEFINE_TYPE_WITH_PRIVATE (ShellEmbeddedWindow,
shell_embedded_window,
GTK_TYPE_WINDOW);
/*
* The normal gtk_window_show() starts all of the complicated asynchronous
* window resizing code running; we don't want or need any of that.
@ -51,22 +47,19 @@ static void
shell_embedded_window_show (GtkWidget *widget)
{
ShellEmbeddedWindow *window = SHELL_EMBEDDED_WINDOW (widget);
ShellEmbeddedWindowPrivate *priv;
GtkWidgetClass *widget_class;
priv = shell_embedded_window_get_instance_private (window);
/* Skip GtkWindow, but run the default GtkWidget handling which
* marks the widget visible */
widget_class = g_type_class_peek (GTK_TYPE_WIDGET);
widget_class->show (widget);
if (priv->actor)
if (window->priv->actor)
{
/* Size is 0x0 if the GtkWindow is not shown */
clutter_actor_queue_relayout (CLUTTER_ACTOR (priv->actor));
clutter_actor_queue_relayout (CLUTTER_ACTOR (window->priv->actor));
if (clutter_actor_is_realized (CLUTTER_ACTOR (priv->actor)))
if (clutter_actor_is_realized (CLUTTER_ACTOR (window->priv->actor)))
gtk_widget_map (widget);
}
}
@ -75,12 +68,9 @@ static void
shell_embedded_window_hide (GtkWidget *widget)
{
ShellEmbeddedWindow *window = SHELL_EMBEDDED_WINDOW (widget);
ShellEmbeddedWindowPrivate *priv;
priv = shell_embedded_window_get_instance_private (window);
if (priv->actor)
clutter_actor_queue_relayout (CLUTTER_ACTOR (priv->actor));
if (window->priv->actor)
clutter_actor_queue_relayout (CLUTTER_ACTOR (window->priv->actor));
GTK_WIDGET_CLASS (shell_embedded_window_parent_class)->hide (widget);
}
@ -100,9 +90,6 @@ static void
shell_embedded_window_check_resize (GtkContainer *container)
{
ShellEmbeddedWindow *window = SHELL_EMBEDDED_WINDOW (container);
ShellEmbeddedWindowPrivate *priv;
priv = shell_embedded_window_get_instance_private (window);
/* Check resize is called when a resize is queued on something
* inside the GtkWindow; we need to make sure that in response
@ -110,8 +97,8 @@ shell_embedded_window_check_resize (GtkContainer *container)
* gtk_widget_size_allocate() are called; we defer to the Clutter
* logic and assume it will do the right thing.
*/
if (priv->actor)
clutter_actor_queue_relayout (CLUTTER_ACTOR (priv->actor));
if (window->priv->actor)
clutter_actor_queue_relayout (CLUTTER_ACTOR (window->priv->actor));
}
static GObject *
@ -147,6 +134,8 @@ shell_embedded_window_class_init (ShellEmbeddedWindowClass *klass)
GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass);
GtkContainerClass *container_class = GTK_CONTAINER_CLASS (klass);
g_type_class_add_private (klass, sizeof (ShellEmbeddedWindowPrivate));
object_class->constructor = shell_embedded_window_constructor;
widget_class->show = shell_embedded_window_show;
@ -159,6 +148,8 @@ shell_embedded_window_class_init (ShellEmbeddedWindowClass *klass)
static void
shell_embedded_window_init (ShellEmbeddedWindow *window)
{
window->priv = G_TYPE_INSTANCE_GET_PRIVATE (window, SHELL_TYPE_EMBEDDED_WINDOW,
ShellEmbeddedWindowPrivate);
}
/*
@ -170,12 +161,9 @@ _shell_embedded_window_set_actor (ShellEmbeddedWindow *window,
ShellGtkEmbed *actor)
{
ShellEmbeddedWindowPrivate *priv;
g_return_if_fail (SHELL_IS_EMBEDDED_WINDOW (window));
priv = shell_embedded_window_get_instance_private (window);
priv->actor = actor;
window->priv->actor = actor;
if (actor &&
clutter_actor_is_mapped (CLUTTER_ACTOR (actor)) &&
@ -190,23 +178,20 @@ _shell_embedded_window_allocate (ShellEmbeddedWindow *window,
int width,
int height)
{
ShellEmbeddedWindowPrivate *priv;
GtkAllocation allocation;
g_return_if_fail (SHELL_IS_EMBEDDED_WINDOW (window));
priv = shell_embedded_window_get_instance_private (window);
if (priv->position.x == x &&
priv->position.y == y &&
priv->position.width == width &&
priv->position.height == height)
if (window->priv->position.x == x &&
window->priv->position.y == y &&
window->priv->position.width == width &&
window->priv->position.height == height)
return;
priv->position.x = x;
priv->position.y = y;
priv->position.width = width;
priv->position.height = height;
window->priv->position.x = x;
window->priv->position.y = y;
window->priv->position.width = width;
window->priv->position.height = height;
if (gtk_widget_get_realized (GTK_WIDGET (window)))
gdk_window_move_resize (gtk_widget_get_window (GTK_WIDGET (window)),

View File

@ -5,15 +5,31 @@
#include <gtk/gtk.h>
#include <clutter/clutter.h>
#define SHELL_TYPE_EMBEDDED_WINDOW (shell_embedded_window_get_type ())
G_DECLARE_DERIVABLE_TYPE (ShellEmbeddedWindow, shell_embedded_window,
SHELL, EMBEDDED_WINDOW, GtkWindow)
#define SHELL_TYPE_EMBEDDED_WINDOW (shell_embedded_window_get_type ())
#define SHELL_EMBEDDED_WINDOW(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), SHELL_TYPE_EMBEDDED_WINDOW, ShellEmbeddedWindow))
#define SHELL_EMBEDDED_WINDOW_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), SHELL_TYPE_EMBEDDED_WINDOW, ShellEmbeddedWindowClass))
#define SHELL_IS_EMBEDDED_WINDOW(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), SHELL_TYPE_EMBEDDED_WINDOW))
#define SHELL_IS_EMBEDDED_WINDOW_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), SHELL_TYPE_EMBEDDED_WINDOW))
#define SHELL_EMBEDDED_WINDOW_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), SHELL_TYPE_EMBEDDED_WINDOW, ShellEmbeddedWindowClass))
typedef struct _ShellEmbeddedWindow ShellEmbeddedWindow;
typedef struct _ShellEmbeddedWindowClass ShellEmbeddedWindowClass;
typedef struct _ShellEmbeddedWindowPrivate ShellEmbeddedWindowPrivate;
struct _ShellEmbeddedWindow
{
GtkWindow parent;
ShellEmbeddedWindowPrivate *priv;
};
struct _ShellEmbeddedWindowClass
{
GtkWindowClass parent_class;
};
GType shell_embedded_window_get_type (void) G_GNUC_CONST;
GtkWidget *shell_embedded_window_new (void);
#endif /* __SHELL_EMBEDDED_WINDOW_H__ */

View File

@ -23,26 +23,16 @@
static void shell_generic_container_iface_init (ClutterContainerIface *iface);
typedef struct _ShellGenericContainerPrivate ShellGenericContainerPrivate;
struct _ShellGenericContainer
{
StWidget parent;
ShellGenericContainerPrivate *priv;
};
G_DEFINE_TYPE_WITH_CODE(ShellGenericContainer,
shell_generic_container,
ST_TYPE_WIDGET,
G_IMPLEMENT_INTERFACE (CLUTTER_TYPE_CONTAINER,
shell_generic_container_iface_init));
struct _ShellGenericContainerPrivate {
GHashTable *skip_paint;
};
G_DEFINE_TYPE_WITH_CODE(ShellGenericContainer,
shell_generic_container,
ST_TYPE_WIDGET,
G_ADD_PRIVATE (ShellGenericContainer)
G_IMPLEMENT_INTERFACE (CLUTTER_TYPE_CONTAINER,
shell_generic_container_iface_init));
/* Signals */
enum
{
@ -395,6 +385,8 @@ shell_generic_container_class_init (ShellGenericContainerClass *klass)
0,
NULL, NULL, NULL,
G_TYPE_NONE, 2, CLUTTER_TYPE_ACTOR_BOX, CLUTTER_TYPE_ALLOCATION_FLAGS);
g_type_class_add_private (gobject_class, sizeof (ShellGenericContainerPrivate));
}
static void
@ -415,7 +407,8 @@ shell_generic_container_iface_init (ClutterContainerIface *iface)
static void
shell_generic_container_init (ShellGenericContainer *area)
{
area->priv = shell_generic_container_get_instance_private (area);
area->priv = G_TYPE_INSTANCE_GET_PRIVATE (area, SHELL_TYPE_GENERIC_CONTAINER,
ShellGenericContainerPrivate);
area->priv->skip_paint = g_hash_table_new (NULL, NULL);
}

View File

@ -4,9 +4,12 @@
#include "st.h"
#define SHELL_TYPE_GENERIC_CONTAINER (shell_generic_container_get_type ())
G_DECLARE_FINAL_TYPE (ShellGenericContainer, shell_generic_container,
SHELL, GENERIC_CONTAINER, StWidget)
#define SHELL_TYPE_GENERIC_CONTAINER (shell_generic_container_get_type ())
#define SHELL_GENERIC_CONTAINER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), SHELL_TYPE_GENERIC_CONTAINER, ShellGenericContainer))
#define SHELL_GENERIC_CONTAINER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), SHELL_TYPE_GENERIC_CONTAINER, ShellGenericContainerClass))
#define SHELL_IS_GENERIC_CONTAINER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), SHELL_TYPE_GENERIC_CONTAINER))
#define SHELL_IS_GENERIC_CONTAINER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), SHELL_TYPE_GENERIC_CONTAINER))
#define SHELL_GENERIC_CONTAINER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), SHELL_TYPE_GENERIC_CONTAINER, ShellGenericContainerClass))
typedef struct {
float min_size;
@ -19,6 +22,25 @@ typedef struct {
#define SHELL_TYPE_GENERIC_CONTAINER_ALLOCATION (shell_generic_container_allocation_get_type ())
GType shell_generic_container_allocation_get_type (void);
typedef struct _ShellGenericContainer ShellGenericContainer;
typedef struct _ShellGenericContainerClass ShellGenericContainerClass;
typedef struct _ShellGenericContainerPrivate ShellGenericContainerPrivate;
struct _ShellGenericContainer
{
StWidget parent;
ShellGenericContainerPrivate *priv;
};
struct _ShellGenericContainerClass
{
StWidgetClass parent_class;
};
GType shell_generic_container_get_type (void) G_GNUC_CONST;
guint shell_generic_container_get_n_skip_paint (ShellGenericContainer *self);
gboolean shell_generic_container_get_skip_paint (ShellGenericContainer *self,

View File

@ -867,12 +867,7 @@ update_scale_factor (GtkSettings *settings,
{
g_object_set (context, "scale-factor", g_value_get_int (&value), NULL);
if (meta_is_wayland_compositor ())
{
int xft_dpi;
g_object_get (settings, "gtk-xft-dpi", &xft_dpi, NULL);
g_object_set (clutter_settings_get_default (), "font-dpi", xft_dpi, NULL);
}
g_object_set (clutter_settings_get_default (), "font-dpi", 96 * 1024 * g_value_get_int (&value), NULL);
}
/* Make sure clutter and gdk scaling stays disabled */

View File

@ -10,8 +10,22 @@
G_BEGIN_DECLS
#define SHELL_TYPE_GLOBAL (shell_global_get_type ())
G_DECLARE_FINAL_TYPE (ShellGlobal, shell_global, SHELL, GLOBAL, GObject)
typedef struct _ShellGlobal ShellGlobal;
typedef struct _ShellGlobalClass ShellGlobalClass;
#define SHELL_TYPE_GLOBAL (shell_global_get_type ())
#define SHELL_GLOBAL(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), SHELL_TYPE_GLOBAL, ShellGlobal))
#define SHELL_GLOBAL_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), SHELL_TYPE_GLOBAL, ShellGlobalClass))
#define SHELL_IS_GLOBAL(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), SHELL_TYPE_GLOBAL))
#define SHELL_IS_GLOBAL_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), SHELL_TYPE_GLOBAL))
#define SHELL_GLOBAL_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), SHELL_TYPE_GLOBAL, ShellGlobalClass))
struct _ShellGlobalClass
{
GObjectClass parent_class;
};
GType shell_global_get_type (void) G_GNUC_CONST;
ShellGlobal *shell_global_get (void);

View File

@ -16,14 +16,13 @@
#include <cogl/cogl.h>
#include "shell-glsl-quad.h"
typedef struct _ShellGLSLQuadPrivate ShellGLSLQuadPrivate;
G_DEFINE_TYPE (ShellGLSLQuad, shell_glsl_quad, CLUTTER_TYPE_ACTOR);
struct _ShellGLSLQuadPrivate
{
CoglPipeline *pipeline;
};
G_DEFINE_TYPE_WITH_PRIVATE (ShellGLSLQuad, shell_glsl_quad, CLUTTER_TYPE_ACTOR);
static gboolean
shell_glsl_quad_get_paint_volume (ClutterActor *actor,
ClutterPaintVolume *volume)
@ -39,7 +38,7 @@ shell_glsl_quad_paint (ClutterActor *actor)
guint8 paint_opacity;
ClutterActorBox box;
priv = shell_glsl_quad_get_instance_private (self);
priv = self->priv;
paint_opacity = clutter_actor_get_paint_opacity (actor);
clutter_actor_get_allocation_box (actor, &box);
@ -107,7 +106,7 @@ shell_glsl_quad_dispose (GObject *gobject)
ShellGLSLQuad *self = SHELL_GLSL_QUAD (gobject);
ShellGLSLQuadPrivate *priv;
priv = shell_glsl_quad_get_instance_private (self);
priv = self->priv;
g_clear_pointer (&priv->pipeline, cogl_object_unref);
@ -117,6 +116,7 @@ shell_glsl_quad_dispose (GObject *gobject)
static void
shell_glsl_quad_init (ShellGLSLQuad *quad)
{
quad->priv = G_TYPE_INSTANCE_GET_PRIVATE (quad, SHELL_TYPE_GLSL_QUAD, ShellGLSLQuadPrivate);
}
static void
@ -124,7 +124,6 @@ shell_glsl_quad_constructed (GObject *object)
{
ShellGLSLQuad *self;
ShellGLSLQuadClass *klass;
ShellGLSLQuadPrivate *priv;
CoglContext *ctx =
clutter_backend_get_cogl_context (clutter_get_default_backend ());
@ -136,7 +135,6 @@ shell_glsl_quad_constructed (GObject *object)
*/
klass = SHELL_GLSL_QUAD_GET_CLASS (object);
self = SHELL_GLSL_QUAD (object);
priv = shell_glsl_quad_get_instance_private (self);
if (G_UNLIKELY (klass->base_pipeline == NULL))
{
@ -147,9 +145,9 @@ shell_glsl_quad_constructed (GObject *object)
klass->build_pipeline (self);
}
priv->pipeline = cogl_pipeline_copy (klass->base_pipeline);
self->priv->pipeline = cogl_pipeline_copy (klass->base_pipeline);
cogl_pipeline_set_layer_null_texture (priv->pipeline, 0, COGL_TEXTURE_TYPE_2D);
cogl_pipeline_set_layer_null_texture (self->priv->pipeline, 0, COGL_TEXTURE_TYPE_2D);
}
static void
@ -163,6 +161,8 @@ shell_glsl_quad_class_init (ShellGLSLQuadClass *klass)
actor_class->get_paint_volume = shell_glsl_quad_get_paint_volume;
actor_class->paint = shell_glsl_quad_paint;
g_type_class_add_private (klass, sizeof (ShellGLSLQuadPrivate));
}
/**
@ -177,8 +177,7 @@ int
shell_glsl_quad_get_uniform_location (ShellGLSLQuad *quad,
const char *name)
{
ShellGLSLQuadPrivate *priv = shell_glsl_quad_get_instance_private (quad);
return cogl_pipeline_get_uniform_location (priv->pipeline, name);
return cogl_pipeline_get_uniform_location (quad->priv->pipeline, name);
}
/**
@ -196,8 +195,7 @@ shell_glsl_quad_set_uniform_float (ShellGLSLQuad *quad,
int total_count,
const float *value)
{
ShellGLSLQuadPrivate *priv = shell_glsl_quad_get_instance_private (quad);
cogl_pipeline_set_uniform_float (priv->pipeline, uniform,
cogl_pipeline_set_uniform_float (quad->priv->pipeline, uniform,
n_components, total_count / n_components,
value);
}

View File

@ -26,9 +26,23 @@ typedef enum {
SHELL_SNIPPET_HOOK_TEXTURE_LOOKUP
} ShellSnippetHook;
#define SHELL_TYPE_GLSL_QUAD (shell_glsl_quad_get_type ())
G_DECLARE_DERIVABLE_TYPE (ShellGLSLQuad, shell_glsl_quad,
SHELL, GLSL_QUAD, ClutterActor)
#define SHELL_TYPE_GLSL_QUAD (shell_glsl_quad_get_type ())
#define SHELL_GLSL_QUAD(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), SHELL_TYPE_GLSL_QUAD, ShellGLSLQuad))
#define SHELL_GLSL_QUAD_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), SHELL_TYPE_GLSL_QUAD, ShellGLSLQuadClass))
#define SHELL_IS_GLSL_QUAD(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), SHELL_TYPE_GLSL_QUAD))
#define SHELL_IS_GLSL_QUAD_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), SHELL_TYPE_GLSL_QUAD))
#define SHELL_GLSL_QUAD_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), SHELL_TYPE_GLSL_QUAD, ShellGLSLQuadClass))
typedef struct _ShellGLSLQuad ShellGLSLQuad;
typedef struct _ShellGLSLQuadClass ShellGLSLQuadClass;
typedef struct _ShellGLSLQuadPrivate ShellGLSLQuadPrivate;
struct _ShellGLSLQuad
{
ClutterActor parent;
ShellGLSLQuadPrivate *priv;
};
struct _ShellGLSLQuadClass
{
@ -39,6 +53,8 @@ struct _ShellGLSLQuadClass
void (*build_pipeline) (ShellGLSLQuad *effect);
};
GType shell_glsl_quad_get_type (void) G_GNUC_CONST;
void shell_glsl_quad_add_glsl_snippet (ShellGLSLQuad *quad,
ShellSnippetHook hook,
const char *declarations,

View File

@ -15,8 +15,6 @@ enum {
PROP_WINDOW
};
typedef struct _ShellGtkEmbedPrivate ShellGtkEmbedPrivate;
struct _ShellGtkEmbedPrivate
{
ShellEmbeddedWindow *window;
@ -27,7 +25,7 @@ struct _ShellGtkEmbedPrivate
guint window_created_handler;
};
G_DEFINE_TYPE_WITH_PRIVATE (ShellGtkEmbed, shell_gtk_embed, CLUTTER_TYPE_CLONE);
G_DEFINE_TYPE (ShellGtkEmbed, shell_gtk_embed, CLUTTER_TYPE_CLONE);
static void shell_gtk_embed_set_window (ShellGtkEmbed *embed,
ShellEmbeddedWindow *window);
@ -42,7 +40,7 @@ shell_gtk_embed_on_window_destroy (GtkWidget *object,
static void
shell_gtk_embed_remove_window_actor (ShellGtkEmbed *embed)
{
ShellGtkEmbedPrivate *priv = shell_gtk_embed_get_instance_private (embed);
ShellGtkEmbedPrivate *priv = embed->priv;
if (priv->window_actor)
{
@ -62,7 +60,7 @@ shell_gtk_embed_window_created_cb (MetaDisplay *display,
MetaWindow *window,
ShellGtkEmbed *embed)
{
ShellGtkEmbedPrivate *priv = shell_gtk_embed_get_instance_private (embed);
ShellGtkEmbedPrivate *priv = embed->priv;
Window xwindow = meta_window_get_xwindow (window);
GdkWindow *gdk_window = gtk_widget_get_window (GTK_WIDGET (priv->window));
@ -121,12 +119,11 @@ static void
shell_gtk_embed_on_window_mapped (GtkWidget *object,
ShellGtkEmbed *embed)
{
ShellGtkEmbedPrivate *priv = shell_gtk_embed_get_instance_private (embed);
MetaDisplay *display = shell_global_get_display (shell_global_get ());
/* Listen for new windows so we can detect when Mutter has
created a MutterWindow for this window */
priv->window_created_handler =
embed->priv->window_created_handler =
g_signal_connect (display,
"window-created",
G_CALLBACK (shell_gtk_embed_window_created_cb),
@ -137,45 +134,44 @@ static void
shell_gtk_embed_set_window (ShellGtkEmbed *embed,
ShellEmbeddedWindow *window)
{
ShellGtkEmbedPrivate *priv = shell_gtk_embed_get_instance_private (embed);
MetaDisplay *display = shell_global_get_display (shell_global_get ());
if (priv->window)
if (embed->priv->window)
{
if (priv->window_created_handler)
if (embed->priv->window_created_handler)
{
g_signal_handler_disconnect (display,
priv->window_created_handler);
priv->window_created_handler = 0;
embed->priv->window_created_handler);
embed->priv->window_created_handler = 0;
}
shell_gtk_embed_remove_window_actor (embed);
_shell_embedded_window_set_actor (priv->window, NULL);
_shell_embedded_window_set_actor (embed->priv->window, NULL);
g_object_unref (priv->window);
g_object_unref (embed->priv->window);
g_signal_handlers_disconnect_by_func (priv->window,
g_signal_handlers_disconnect_by_func (embed->priv->window,
(gpointer)shell_gtk_embed_on_window_destroy,
embed);
g_signal_handlers_disconnect_by_func (priv->window,
g_signal_handlers_disconnect_by_func (embed->priv->window,
(gpointer)shell_gtk_embed_on_window_mapped,
embed);
}
priv->window = window;
embed->priv->window = window;
if (priv->window)
if (embed->priv->window)
{
g_object_ref (priv->window);
g_object_ref (embed->priv->window);
_shell_embedded_window_set_actor (priv->window, embed);
_shell_embedded_window_set_actor (embed->priv->window, embed);
g_signal_connect (priv->window, "destroy",
g_signal_connect (embed->priv->window, "destroy",
G_CALLBACK (shell_gtk_embed_on_window_destroy), embed);
g_signal_connect (priv->window, "map",
g_signal_connect (embed->priv->window, "map",
G_CALLBACK (shell_gtk_embed_on_window_mapped), embed);
}
@ -209,12 +205,11 @@ shell_gtk_embed_get_property (GObject *object,
GParamSpec *pspec)
{
ShellGtkEmbed *embed = SHELL_GTK_EMBED (object);
ShellGtkEmbedPrivate *priv = shell_gtk_embed_get_instance_private (embed);
switch (prop_id)
{
case PROP_WINDOW:
g_value_set_object (value, priv->window);
g_value_set_object (value, embed->priv->window);
break;
default:
@ -230,13 +225,12 @@ shell_gtk_embed_get_preferred_width (ClutterActor *actor,
float *natural_width_p)
{
ShellGtkEmbed *embed = SHELL_GTK_EMBED (actor);
ShellGtkEmbedPrivate *priv = shell_gtk_embed_get_instance_private (embed);
if (priv->window
&& gtk_widget_get_visible (GTK_WIDGET (priv->window)))
if (embed->priv->window
&& gtk_widget_get_visible (GTK_WIDGET (embed->priv->window)))
{
GtkRequisition min_req, natural_req;
gtk_widget_get_preferred_size (GTK_WIDGET (priv->window), &min_req, &natural_req);
gtk_widget_get_preferred_size (GTK_WIDGET (embed->priv->window), &min_req, &natural_req);
*min_width_p = min_req.width;
*natural_width_p = natural_req.width;
@ -252,13 +246,12 @@ shell_gtk_embed_get_preferred_height (ClutterActor *actor,
float *natural_height_p)
{
ShellGtkEmbed *embed = SHELL_GTK_EMBED (actor);
ShellGtkEmbedPrivate *priv = shell_gtk_embed_get_instance_private (embed);
if (priv->window
&& gtk_widget_get_visible (GTK_WIDGET (priv->window)))
if (embed->priv->window
&& gtk_widget_get_visible (GTK_WIDGET (embed->priv->window)))
{
GtkRequisition min_req, natural_req;
gtk_widget_get_preferred_size (GTK_WIDGET (priv->window), &min_req, &natural_req);
gtk_widget_get_preferred_size (GTK_WIDGET (embed->priv->window), &min_req, &natural_req);
*min_height_p = min_req.height;
*natural_height_p = natural_req.height;
@ -273,7 +266,6 @@ shell_gtk_embed_allocate (ClutterActor *actor,
ClutterAllocationFlags flags)
{
ShellGtkEmbed *embed = SHELL_GTK_EMBED (actor);
ShellGtkEmbedPrivate *priv = shell_gtk_embed_get_instance_private (embed);
float wx = 0.0, wy = 0.0, x, y, ax, ay;
CLUTTER_ACTOR_CLASS (shell_gtk_embed_parent_class)->
@ -293,7 +285,7 @@ shell_gtk_embed_allocate (ClutterActor *actor,
actor = clutter_actor_get_parent (actor);
}
_shell_embedded_window_allocate (priv->window,
_shell_embedded_window_allocate (embed->priv->window,
(int)(0.5 + wx), (int)(0.5 + wy),
box->x2 - box->x1,
box->y2 - box->y1);
@ -303,9 +295,8 @@ static void
shell_gtk_embed_map (ClutterActor *actor)
{
ShellGtkEmbed *embed = SHELL_GTK_EMBED (actor);
ShellGtkEmbedPrivate *priv = shell_gtk_embed_get_instance_private (embed);
_shell_embedded_window_map (priv->window);
_shell_embedded_window_map (embed->priv->window);
CLUTTER_ACTOR_CLASS (shell_gtk_embed_parent_class)->map (actor);
}
@ -314,9 +305,8 @@ static void
shell_gtk_embed_unmap (ClutterActor *actor)
{
ShellGtkEmbed *embed = SHELL_GTK_EMBED (actor);
ShellGtkEmbedPrivate *priv = shell_gtk_embed_get_instance_private (embed);
_shell_embedded_window_unmap (priv->window);
_shell_embedded_window_unmap (embed->priv->window);
CLUTTER_ACTOR_CLASS (shell_gtk_embed_parent_class)->unmap (actor);
}
@ -337,6 +327,8 @@ shell_gtk_embed_class_init (ShellGtkEmbedClass *klass)
GObjectClass *object_class = G_OBJECT_CLASS (klass);
ClutterActorClass *actor_class = CLUTTER_ACTOR_CLASS (klass);
g_type_class_add_private (klass, sizeof (ShellGtkEmbedPrivate));
object_class->get_property = shell_gtk_embed_get_property;
object_class->set_property = shell_gtk_embed_set_property;
object_class->dispose = shell_gtk_embed_dispose;
@ -359,6 +351,8 @@ shell_gtk_embed_class_init (ShellGtkEmbedClass *klass)
static void
shell_gtk_embed_init (ShellGtkEmbed *embed)
{
embed->priv = G_TYPE_INSTANCE_GET_PRIVATE (embed, SHELL_TYPE_GTK_EMBED,
ShellGtkEmbedPrivate);
}
/*

View File

@ -6,15 +6,30 @@
#include "shell-embedded-window.h"
#define SHELL_TYPE_GTK_EMBED (shell_gtk_embed_get_type ())
G_DECLARE_DERIVABLE_TYPE (ShellGtkEmbed, shell_gtk_embed,
SHELL, GTK_EMBED, ClutterClone)
#define SHELL_TYPE_GTK_EMBED (shell_gtk_embed_get_type ())
#define SHELL_GTK_EMBED(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), SHELL_TYPE_GTK_EMBED, ShellGtkEmbed))
#define SHELL_GTK_EMBED_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), SHELL_TYPE_GTK_EMBED, ShellGtkEmbedClass))
#define SHELL_IS_GTK_EMBED(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), SHELL_TYPE_GTK_EMBED))
#define SHELL_IS_GTK_EMBED_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), SHELL_TYPE_GTK_EMBED))
#define SHELL_GTK_EMBED_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), SHELL_TYPE_GTK_EMBED, ShellGtkEmbedClass))
typedef struct _ShellGtkEmbed ShellGtkEmbed;
typedef struct _ShellGtkEmbedClass ShellGtkEmbedClass;
typedef struct _ShellGtkEmbedPrivate ShellGtkEmbedPrivate;
struct _ShellGtkEmbed
{
ClutterClone parent;
ShellGtkEmbedPrivate *priv;
};
struct _ShellGtkEmbedClass
{
ClutterCloneClass parent_class;
};
GType shell_gtk_embed_get_type (void) G_GNUC_CONST;
ClutterActor *shell_gtk_embed_new (ShellEmbeddedWindow *window);
#endif /* __SHELL_GTK_EMBED_H__ */

View File

@ -32,6 +32,7 @@
#include <string.h>
typedef struct _ShellPasswordPromptClass ShellPasswordPromptClass;
typedef struct _ShellPasswordPromptPrivate ShellPasswordPromptPrivate;
typedef enum
@ -56,13 +57,19 @@ struct _ShellKeyringPrompt
gchar *continue_label;
gchar *cancel_label;
GTask *task;
GcrPromptReply last_reply;
GSimpleAsyncResult *async_result;
ClutterText *password_actor;
ClutterText *confirm_actor;
PromptingMode mode;
gboolean shown;
};
typedef struct _ShellKeyringPromptClass
{
GObjectClass parent_class;
} ShellKeyringPromptClass;
enum {
PROP_0,
PROP_TITLE,
@ -281,9 +288,9 @@ shell_keyring_prompt_dispose (GObject *obj)
if (self->shown)
gcr_prompt_close (GCR_PROMPT (self));
if (self->task)
if (self->async_result)
shell_keyring_prompt_cancel (self);
g_assert (self->task == NULL);
g_assert (self->async_result == NULL);
shell_keyring_prompt_set_password_actor (self, NULL);
shell_keyring_prompt_set_confirm_actor (self, NULL);
@ -413,14 +420,14 @@ shell_keyring_prompt_password_async (GcrPrompt *prompt,
ShellKeyringPrompt *self = SHELL_KEYRING_PROMPT (prompt);
GObject *obj;
if (self->task != NULL) {
if (self->async_result != NULL) {
g_warning ("this prompt can only show one prompt at a time");
return;
}
self->mode = PROMPTING_FOR_PASSWORD;
self->task = g_task_new (self, NULL, callback, user_data);
g_task_set_source_tag (self->task, shell_keyring_prompt_password_async);
self->async_result = g_simple_async_result_new (G_OBJECT (self), callback, user_data,
shell_keyring_prompt_password_async);
obj = G_OBJECT (self);
g_object_notify (obj, "password-visible");
@ -437,11 +444,18 @@ shell_keyring_prompt_password_finish (GcrPrompt *prompt,
GAsyncResult *result,
GError **error)
{
g_return_val_if_fail (g_task_get_source_object (G_TASK (result)) == prompt, NULL);
g_return_val_if_fail (g_async_result_is_tagged (result,
ShellKeyringPrompt *self = SHELL_KEYRING_PROMPT (prompt);
g_return_val_if_fail (g_simple_async_result_is_valid (result, G_OBJECT (prompt),
shell_keyring_prompt_password_async), NULL);
return g_task_propagate_pointer (G_TASK (result), error);
if (g_simple_async_result_propagate_error (G_SIMPLE_ASYNC_RESULT (result), error))
return NULL;
if (self->last_reply == GCR_PROMPT_REPLY_CONTINUE)
return clutter_text_get_text (self->password_actor);
return NULL;
}
static void
@ -453,14 +467,14 @@ shell_keyring_prompt_confirm_async (GcrPrompt *prompt,
ShellKeyringPrompt *self = SHELL_KEYRING_PROMPT (prompt);
GObject *obj;
if (self->task != NULL) {
if (self->async_result != NULL) {
g_warning ("this prompt is already prompting");
return;
}
self->mode = PROMPTING_FOR_CONFIRM;
self->task = g_task_new (self, NULL, callback, user_data);
g_task_set_source_tag (self->task, shell_keyring_prompt_confirm_async);
self->async_result = g_simple_async_result_new (G_OBJECT (self), callback, user_data,
shell_keyring_prompt_confirm_async);
obj = G_OBJECT (self);
g_object_notify (obj, "password-visible");
@ -477,16 +491,15 @@ shell_keyring_prompt_confirm_finish (GcrPrompt *prompt,
GAsyncResult *result,
GError **error)
{
GTask *task = G_TASK (result);
gssize res;
ShellKeyringPrompt *self = SHELL_KEYRING_PROMPT (prompt);
g_return_val_if_fail (g_task_get_source_object (task) == prompt,
GCR_PROMPT_REPLY_CANCEL);
g_return_val_if_fail (g_async_result_is_tagged (result,
g_return_val_if_fail (g_simple_async_result_is_valid (result, G_OBJECT (prompt),
shell_keyring_prompt_confirm_async), GCR_PROMPT_REPLY_CANCEL);
res = g_task_propagate_int (task, error);
return res == -1 ? GCR_PROMPT_REPLY_CANCEL : (GcrPromptReply)res;
if (g_simple_async_result_propagate_error (G_SIMPLE_ASYNC_RESULT (result), error))
return GCR_PROMPT_REPLY_CANCEL;
return self->last_reply;
}
static void
@ -705,20 +718,19 @@ shell_keyring_prompt_set_confirm_actor (ShellKeyringPrompt *self,
gboolean
shell_keyring_prompt_complete (ShellKeyringPrompt *self)
{
GTask *res;
PromptingMode mode;
GSimpleAsyncResult *res;
const gchar *password;
const gchar *confirm;
const gchar *env;
g_return_val_if_fail (SHELL_IS_KEYRING_PROMPT (self), FALSE);
g_return_val_if_fail (self->mode != PROMPTING_NONE, FALSE);
g_return_val_if_fail (self->task != NULL, FALSE);
password = clutter_text_get_text (self->password_actor);
g_return_val_if_fail (self->async_result != NULL, FALSE);
if (self->mode == PROMPTING_FOR_PASSWORD)
{
password = clutter_text_get_text (self->password_actor);
/* Is it a new password? */
if (self->password_new)
{
@ -744,15 +756,13 @@ shell_keyring_prompt_complete (ShellKeyringPrompt *self)
g_object_notify (G_OBJECT (self), "password-strength");
}
res = self->task;
mode = self->mode;
self->task = NULL;
self->last_reply = GCR_PROMPT_REPLY_CONTINUE;
res = self->async_result;
self->async_result = NULL;
self->mode = PROMPTING_NONE;
if (mode == PROMPTING_FOR_CONFIRM)
g_task_return_int (res, (gssize)GCR_PROMPT_REPLY_CONTINUE);
else
g_task_return_pointer (res, (gpointer)password, NULL);
g_simple_async_result_complete (res);
g_object_unref (res);
return TRUE;
@ -767,8 +777,7 @@ shell_keyring_prompt_complete (ShellKeyringPrompt *self)
void
shell_keyring_prompt_cancel (ShellKeyringPrompt *self)
{
GTask *res;
PromptingMode mode;
GSimpleAsyncResult *res;
g_return_if_fail (SHELL_IS_KEYRING_PROMPT (self));
@ -783,16 +792,13 @@ shell_keyring_prompt_cancel (ShellKeyringPrompt *self)
return;
}
g_return_if_fail (self->task != NULL);
g_return_if_fail (self->async_result != NULL);
self->last_reply = GCR_PROMPT_REPLY_CANCEL;
res = self->task;
mode = self->mode;
self->task = NULL;
res = self->async_result;
self->async_result = NULL;
self->mode = PROMPTING_NONE;
if (mode == PROMPTING_FOR_CONFIRM)
g_task_return_int (res, (gssize) GCR_PROMPT_REPLY_CANCEL);
else
g_task_return_pointer (res, NULL, NULL);
g_simple_async_result_complete_in_idle (res);
g_object_unref (res);
}

View File

@ -32,9 +32,11 @@ G_BEGIN_DECLS
typedef struct _ShellKeyringPrompt ShellKeyringPrompt;
#define SHELL_TYPE_KEYRING_PROMPT (shell_keyring_prompt_get_type ())
G_DECLARE_FINAL_TYPE (ShellKeyringPrompt, shell_keyring_prompt,
SHELL, KEYRING_PROMPT, GObject)
#define SHELL_TYPE_KEYRING_PROMPT (shell_keyring_prompt_get_type ())
#define SHELL_KEYRING_PROMPT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), SHELL_TYPE_KEYRING_PROMPT, ShellKeyringPrompt))
#define SHELL_IS_KEYRING_PROMPT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), SHELL_TYPE_KEYRING_PROMPT))
GType shell_keyring_prompt_get_type (void) G_GNUC_CONST;
ShellKeyringPrompt * shell_keyring_prompt_new (void);

View File

@ -33,6 +33,7 @@
* the GPid array to JS).
* See https://bugzilla.gnome.org/show_bug.cgi?id=645978
*/
G_DEFINE_TYPE (ShellMountOperation, shell_mount_operation, G_TYPE_MOUNT_OPERATION);
enum {
SHOW_PROCESSES_2,
@ -41,27 +42,17 @@ enum {
static guint signals[NUM_SIGNALS] = { 0, };
typedef struct _ShellMountOperationPrivate ShellMountOperationPrivate;
struct _ShellMountOperation
{
GMountOperation parent_instance;
ShellMountOperationPrivate *priv;
};
struct _ShellMountOperationPrivate {
GArray *pids;
gchar **choices;
gchar *message;
};
G_DEFINE_TYPE_WITH_PRIVATE (ShellMountOperation, shell_mount_operation, G_TYPE_MOUNT_OPERATION);
static void
shell_mount_operation_init (ShellMountOperation *self)
{
self->priv = shell_mount_operation_get_instance_private (self);
self->priv = G_TYPE_INSTANCE_GET_PRIVATE (self, SHELL_TYPE_MOUNT_OPERATION,
ShellMountOperationPrivate);
}
static void
@ -144,6 +135,8 @@ shell_mount_operation_class_init (ShellMountOperationClass *klass)
G_SIGNAL_RUN_LAST,
0, NULL, NULL, NULL,
G_TYPE_NONE, 0);
g_type_class_add_private (klass, sizeof (ShellMountOperationPrivate));
}
GMountOperation *

View File

@ -26,10 +26,31 @@
G_BEGIN_DECLS
#define SHELL_TYPE_MOUNT_OPERATION (shell_mount_operation_get_type ())
G_DECLARE_FINAL_TYPE (ShellMountOperation, shell_mount_operation,
SHELL, MOUNT_OPERATION, GMountOperation)
#define SHELL_TYPE_MOUNT_OPERATION (shell_mount_operation_get_type ())
#define SHELL_MOUNT_OPERATION(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), SHELL_TYPE_MOUNT_OPERATION, ShellMountOperation))
#define SHELL_MOUNT_OPERATION_CLASS(k) (G_TYPE_CHECK_CLASS_CAST((k), SHELL_TYPE_MOUNT_OPERATION, ShellMountOperationClass))
#define SHELL_IS_MOUNT_OPERATION(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), SHELL_TYPE_MOUNT_OPERATION))
#define SHELL_IS_MOUNT_OPERATION_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), SHELL_TYPE_MOUNT_OPERATION))
#define SHELL_MOUNT_OPERATION_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), SHELL_TYPE_MOUNT_OPERATION, ShellMountOperationClass))
typedef struct _ShellMountOperation ShellMountOperation;
typedef struct _ShellMountOperationClass ShellMountOperationClass;
typedef struct _ShellMountOperationPrivate ShellMountOperationPrivate;
struct _ShellMountOperation
{
GMountOperation parent_instance;
ShellMountOperationPrivate *priv;
};
struct _ShellMountOperationClass
{
GMountOperationClass parent_class;
};
GType shell_mount_operation_get_type (void);
GMountOperation *shell_mount_operation_new (void);
GArray * shell_mount_operation_get_show_processes_pids (ShellMountOperation *self);

View File

@ -60,7 +60,7 @@ struct _ShellNetworkAgentPrivate {
GHashTable *requests;
};
G_DEFINE_TYPE_WITH_PRIVATE (ShellNetworkAgent, shell_network_agent, NM_TYPE_SECRET_AGENT)
G_DEFINE_TYPE (ShellNetworkAgent, shell_network_agent, NM_TYPE_SECRET_AGENT)
static const SecretSchema network_agent_schema = {
"org.freedesktop.NetworkManager.Connection",
@ -114,7 +114,8 @@ shell_network_agent_init (ShellNetworkAgent *agent)
{
ShellNetworkAgentPrivate *priv;
priv = agent->priv = shell_network_agent_get_instance_private (agent);
priv = agent->priv = G_TYPE_INSTANCE_GET_PRIVATE (agent, SHELL_TYPE_NETWORK_AGENT, ShellNetworkAgentPrivate);
priv->requests = g_hash_table_new_full (g_str_hash, g_str_equal,
g_free, shell_agent_request_free);
}
@ -852,4 +853,6 @@ shell_network_agent_class_init (ShellNetworkAgentClass *klass)
G_TYPE_NONE,
1, /* n_params */
G_TYPE_STRING);
g_type_class_add_private (klass, sizeof (ShellNetworkAgentPrivate));
}

View File

@ -53,6 +53,11 @@ struct _ShellPerfLog
guint enabled : 1;
};
struct _ShellPerfLogClass
{
GObjectClass parent_class;
};
struct _ShellPerfEvent
{
guint16 id;

View File

@ -7,8 +7,17 @@
G_BEGIN_DECLS
#define SHELL_TYPE_PERF_LOG (shell_perf_log_get_type ())
G_DECLARE_FINAL_TYPE (ShellPerfLog, shell_perf_log, SHELL, PERF_LOG, GObject)
typedef struct _ShellPerfLog ShellPerfLog;
typedef struct _ShellPerfLogClass ShellPerfLogClass;
#define SHELL_TYPE_PERF_LOG (shell_perf_log_get_type ())
#define SHELL_PERF_LOG(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), SHELL_TYPE_PERF_LOG, ShellPerfLog))
#define SHELL_PERF_LOG_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), SHELL_TYPE_PERF_LOG, ShellPerfLogClass))
#define SHELL_IS_PERF_LOG(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), SHELL_TYPE_PERF_LOG))
#define SHELL_IS_PERF_LOG_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), SHELL_TYPE_PERF_LOG))
#define SHELL_PERF_LOG_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), SHELL_TYPE_PERF_LOG, ShellPerfLogClass))
GType shell_perf_log_get_type (void) G_GNUC_CONST;
ShellPerfLog *shell_perf_log_get_default (void);

View File

@ -201,12 +201,13 @@ struct _AuthRequest {
gchar *cookie;
GList *identities;
GTask *simple;
GSimpleAsyncResult *simple;
};
static void
auth_request_free (AuthRequest *request)
{
g_cancellable_disconnect (request->cancellable, request->handler_id);
g_free (request->action_id);
g_free (request->message);
g_free (request->icon_name);
@ -337,30 +338,31 @@ auth_request_complete (AuthRequest *request,
gboolean dismissed)
{
ShellPolkitAuthenticationAgent *agent = request->agent;
gboolean is_current = agent->current_request == request;
print_debug ("COMPLETING %s %s cookie %s", is_current ? "CURRENT" : "SCHEDULED",
request->action_id, request->cookie);
if (!is_current)
agent->scheduled_requests = g_list_remove (agent->scheduled_requests, request);
g_cancellable_disconnect (request->cancellable, request->handler_id);
if (dismissed)
g_task_return_new_error (request->simple,
POLKIT_ERROR,
POLKIT_ERROR_CANCELLED,
_("Authentication dialog was dismissed by the user"));
else
g_task_return_boolean (request->simple, TRUE);
g_simple_async_result_set_error (request->simple,
POLKIT_ERROR,
POLKIT_ERROR_CANCELLED,
_("Authentication dialog was dismissed by the user"));
auth_request_free (request);
if (is_current)
if (agent->current_request == request)
{
print_debug ("COMPLETING CURRENT %s cookie %s", request->action_id, request->cookie);
g_simple_async_result_complete_in_idle (request->simple);
auth_request_free (request);
agent->current_request = NULL;
maybe_process_next_request (agent);
}
else
{
print_debug ("COMPLETING SCHEDULED %s cookie %s", request->action_id, request->cookie);
agent->scheduled_requests = g_list_remove (agent->scheduled_requests, request);
g_simple_async_result_complete_in_idle (request->simple);
auth_request_free (request);
}
}
static void
@ -406,7 +408,10 @@ initiate_authentication (PolkitAgentListener *listener,
request->cookie = g_strdup (cookie);
request->identities = g_list_copy (identities);
g_list_foreach (request->identities, (GFunc) g_object_ref, NULL);
request->simple = g_task_new (listener, NULL, callback, user_data);
request->simple = g_simple_async_result_new (G_OBJECT (listener),
callback,
user_data,
initiate_authentication);
request->cancellable = cancellable;
request->handler_id = g_cancellable_connect (request->cancellable,
G_CALLBACK (on_request_cancelled),
@ -424,7 +429,11 @@ initiate_authentication_finish (PolkitAgentListener *listener,
GAsyncResult *res,
GError **error)
{
return g_task_propagate_boolean (G_TASK (res), error);
GSimpleAsyncResult *simple = G_SIMPLE_ASYNC_RESULT (res);
if (g_simple_async_result_propagate_error (simple, error))
return FALSE;
else
return TRUE;
}
void

View File

@ -33,6 +33,11 @@ typedef enum {
typedef struct _RecorderPipeline RecorderPipeline;
struct _ShellRecorderClass
{
GObjectClass parent_class;
};
struct _ShellRecorder {
GObject parent;

View File

@ -16,8 +16,17 @@ G_BEGIN_DECLS
* directory named after the date, but the encoding and output can
* be configured.
*/
#define SHELL_TYPE_RECORDER (shell_recorder_get_type ())
G_DECLARE_FINAL_TYPE (ShellRecorder, shell_recorder, SHELL, RECORDER, GObject)
typedef struct _ShellRecorder ShellRecorder;
typedef struct _ShellRecorderClass ShellRecorderClass;
#define SHELL_TYPE_RECORDER (shell_recorder_get_type ())
#define SHELL_RECORDER(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), SHELL_TYPE_RECORDER, ShellRecorder))
#define SHELL_RECORDER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), SHELL_TYPE_RECORDER, ShellRecorderClass))
#define SHELL_IS_RECORDER(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), SHELL_TYPE_RECORDER))
#define SHELL_IS_RECORDER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), SHELL_TYPE_RECORDER))
#define SHELL_RECORDER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), SHELL_TYPE_RECORDER, ShellRecorderClass))
GType shell_recorder_get_type (void) G_GNUC_CONST;
ShellRecorder *shell_recorder_new (ClutterStage *stage);

View File

@ -14,7 +14,10 @@
#define A11Y_APPS_SCHEMA "org.gnome.desktop.a11y.applications"
#define MAGNIFIER_ACTIVE_KEY "screen-magnifier-enabled"
typedef struct _ShellScreenshotPrivate ShellScreenshotPrivate;
struct _ShellScreenshotClass
{
GObjectClass parent_class;
};
struct _ShellScreenshot
{
@ -55,16 +58,16 @@ shell_screenshot_init (ShellScreenshot *screenshot)
}
static void
on_screenshot_written (GObject *source,
on_screenshot_written (GObject *source,
GAsyncResult *result,
gpointer user_data)
gpointer user_data)
{
ShellScreenshot *screenshot = SHELL_SCREENSHOT (source);
ShellScreenshotPrivate *priv = screenshot->priv;
if (priv->callback)
priv->callback (screenshot,
g_task_propagate_boolean (G_TASK (result), NULL),
g_simple_async_result_get_op_res_gboolean (G_SIMPLE_ASYNC_RESULT (result)),
&priv->screenshot_area,
priv->filename_used);
@ -165,9 +168,8 @@ prepare_write_stream (const gchar *filename,
}
static void
write_screenshot_thread (GTask *result,
gpointer object,
gpointer task_data,
write_screenshot_thread (GSimpleAsyncResult *result,
GObject *object,
GCancellable *cancellable)
{
cairo_status_t status;
@ -203,7 +205,7 @@ write_screenshot_thread (GTask *result,
}
g_task_return_boolean (result, status == CAIRO_STATUS_SUCCESS);
g_simple_async_result_set_op_res_gboolean (result, status == CAIRO_STATUS_SUCCESS);
g_clear_object (&stream);
}
@ -305,7 +307,7 @@ grab_screenshot (ClutterActor *stage,
MetaScreen *screen;
MetaCursorTracker *tracker;
int width, height;
GTask *result;
GSimpleAsyncResult *result;
GSettings *settings;
ShellScreenshotPrivate *priv = screenshot->priv;
@ -368,8 +370,8 @@ grab_screenshot (ClutterActor *stage,
g_signal_handlers_disconnect_by_func (stage, (void *)grab_screenshot, (gpointer)screenshot);
result = g_task_new (screenshot, NULL, on_screenshot_written, NULL);
g_task_run_in_thread (result, write_screenshot_thread);
result = g_simple_async_result_new (G_OBJECT (screenshot), on_screenshot_written, NULL, grab_screenshot);
g_simple_async_result_run_in_thread (result, write_screenshot_thread, G_PRIORITY_DEFAULT, NULL);
g_object_unref (result);
}
@ -377,7 +379,7 @@ static void
grab_area_screenshot (ClutterActor *stage,
ShellScreenshot *screenshot)
{
GTask *result;
GSimpleAsyncResult *result;
ShellScreenshotPrivate *priv = screenshot->priv;
do_grab_screenshot (screenshot,
@ -387,8 +389,8 @@ grab_area_screenshot (ClutterActor *stage,
priv->screenshot_area.height);
g_signal_handlers_disconnect_by_func (stage, (void *)grab_area_screenshot, (gpointer)screenshot);
result = g_task_new (screenshot, NULL, on_screenshot_written, NULL);
g_task_run_in_thread (result, write_screenshot_thread);
result = g_simple_async_result_new (G_OBJECT (screenshot), on_screenshot_written, NULL, grab_area_screenshot);
g_simple_async_result_run_in_thread (result, write_screenshot_thread, G_PRIORITY_DEFAULT, NULL);
g_object_unref (result);
}
@ -397,7 +399,7 @@ grab_window_screenshot (ClutterActor *stage,
ShellScreenshot *screenshot)
{
ShellScreenshotPrivate *priv = screenshot->priv;
GTask *result;
GSimpleAsyncResult *result;
GSettings *settings;
MetaScreen *screen = shell_global_get_screen (priv->global);
MetaCursorTracker *tracker;
@ -437,8 +439,8 @@ grab_window_screenshot (ClutterActor *stage,
g_object_unref (settings);
g_signal_handlers_disconnect_by_func (stage, (void *)grab_window_screenshot, (gpointer)screenshot);
result = g_task_new (screenshot, NULL, on_screenshot_written, NULL);
g_task_run_in_thread (result, write_screenshot_thread);
result = g_simple_async_result_new (G_OBJECT (screenshot), on_screenshot_written, NULL, grab_window_screenshot);
g_simple_async_result_run_in_thread (result, write_screenshot_thread, G_PRIORITY_DEFAULT, NULL);
g_object_unref (result);
}

View File

@ -10,9 +10,19 @@
* areas or windows and write them out as png files.
*
*/
#define SHELL_TYPE_SCREENSHOT (shell_screenshot_get_type ())
G_DECLARE_FINAL_TYPE (ShellScreenshot, shell_screenshot,
SHELL, SCREENSHOT, GObject)
typedef struct _ShellScreenshot ShellScreenshot;
typedef struct _ShellScreenshotPrivate ShellScreenshotPrivate;
typedef struct _ShellScreenshotClass ShellScreenshotClass;
#define SHELL_TYPE_SCREENSHOT (shell_screenshot_get_type ())
#define SHELL_SCREENSHOT(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), SHELL_TYPE_SCREENSHOT, ShellScreenshot))
#define SHELL_SCREENSHOT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), SHELL_TYPE_SCREENSHOT, ShellScreenshotClass))
#define SHELL_IS_SCREENSHOT(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), SHELL_TYPE_SCREENSHOT))
#define SHELL_IS_SCREENSHOT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), SHELL_TYPE_SCREENSHOT))
#define SHELL_SCREENSHOT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), SHELL_TYPE_SCREENSHOT, ShellScreenshotClass))
GType shell_screenshot_get_type (void) G_GNUC_CONST;
ShellScreenshot *shell_screenshot_new (void);

View File

@ -30,6 +30,9 @@
#include <string.h>
typedef struct _ShellSecureTextBuffer ShellSecureTextBuffer;
typedef struct _ShellSecureTextBufferClass ShellSecureTextBufferClass;
struct _ShellSecureTextBuffer {
ClutterTextBuffer parent;
gchar *text;
@ -38,6 +41,10 @@ struct _ShellSecureTextBuffer {
guint text_chars;
};
struct _ShellSecureTextBufferClass {
ClutterTextBufferClass parent_class;
};
/* Initial size of buffer, in bytes */
#define MIN_SIZE 16

View File

@ -28,9 +28,11 @@
G_BEGIN_DECLS
#define SHELL_TYPE_SECURE_TEXT_BUFFER (shell_secure_text_buffer_get_type ())
G_DECLARE_FINAL_TYPE (ShellSecureTextBuffer, shell_secure_text_buffer,
SHELL, SECURE_TEXT_BUFFER, ClutterTextBuffer)
#define SHELL_TYPE_SECURE_TEXT_BUFFER (shell_secure_text_buffer_get_type ())
#define SHELL_SECURE_TEXT_BUFFER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), SHELL_TYPE_SECURE_TEXT_BUFFER, ShellSecureTextBuffer))
#define SHELL_IS_SECURE_TEXT_BUFFER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), SHELL_TYPE_SECURE_TEXT_BUFFER))
GType shell_secure_text_buffer_get_type (void) G_GNUC_CONST;
ClutterTextBuffer * shell_secure_text_buffer_new (void);

View File

@ -16,12 +16,9 @@
#include "shell-stack.h"
struct _ShellStack
{
StWidget parent;
};
G_DEFINE_TYPE (ShellStack, shell_stack, ST_TYPE_WIDGET);
G_DEFINE_TYPE (ShellStack,
shell_stack,
ST_TYPE_WIDGET);
static void
shell_stack_allocate (ClutterActor *self,

View File

@ -5,7 +5,30 @@
#include "st.h"
#include <gtk/gtk.h>
#define SHELL_TYPE_STACK (shell_stack_get_type ())
G_DECLARE_FINAL_TYPE (ShellStack, shell_stack, SHELL, STACK, StWidget)
#define SHELL_TYPE_STACK (shell_stack_get_type ())
#define SHELL_STACK(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), SHELL_TYPE_STACK, ShellStack))
#define SHELL_STACK_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), SHELL_TYPE_STACK, ShellStackClass))
#define SHELL_IS_STACK(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), SHELL_TYPE_STACK))
#define SHELL_IS_STACK_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), SHELL_TYPE_STACK))
#define SHELL_STACK_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), SHELL_TYPE_STACK, ShellStackClass))
typedef struct _ShellStack ShellStack;
typedef struct _ShellStackClass ShellStackClass;
typedef struct _ShellStackPrivate ShellStackPrivate;
struct _ShellStack
{
StWidget parent;
ShellStackPrivate *priv;
};
struct _ShellStackClass
{
StWidgetClass parent_class;
};
GType shell_stack_get_type (void) G_GNUC_CONST;
#endif /* __SHELL_STACK_H__ */

View File

@ -6,6 +6,8 @@
#include <telepathy-glib/telepathy-glib.h>
G_DEFINE_TYPE(ShellTpClient, shell_tp_client, TP_TYPE_BASE_CLIENT)
struct _ShellTpClientPrivate
{
ShellTpClientObserveChannelsImpl observe_impl;
@ -21,8 +23,6 @@ struct _ShellTpClientPrivate
GDestroyNotify destroy_handle_channels;
};
G_DEFINE_TYPE_WITH_PRIVATE (ShellTpClient, shell_tp_client, TP_TYPE_BASE_CLIENT)
/**
* ShellTpClientObserveChannelsImpl:
* @client: a #ShellTpClient instance
@ -84,7 +84,8 @@ shell_tp_client_init (ShellTpClient *self)
{
GHashTable *filter;
self->priv = shell_tp_client_get_instance_private (self);
self->priv = G_TYPE_INSTANCE_GET_PRIVATE (self, SHELL_TYPE_TP_CLIENT,
ShellTpClientPrivate);
/* We only care about single-user text-based chats */
filter = tp_asv_new (
@ -197,6 +198,8 @@ shell_tp_client_class_init (ShellTpClientClass *cls)
GObjectClass *object_class = G_OBJECT_CLASS (cls);
TpBaseClientClass *base_clt_cls = TP_BASE_CLIENT_CLASS (cls);
g_type_class_add_private (cls, sizeof (ShellTpClientPrivate));
object_class->dispose = shell_tp_client_dispose;
base_clt_cls->observe_channels = observe_channels;

View File

@ -17,15 +17,6 @@ enum {
PROP_WM_CLASS
};
typedef struct _ShellTrayIconPrivate ShellTrayIconPrivate;
struct _ShellTrayIcon
{
ShellGtkEmbed parent;
ShellTrayIconPrivate *priv;
};
struct _ShellTrayIconPrivate
{
NaTrayChild *socket;
@ -34,7 +25,7 @@ struct _ShellTrayIconPrivate
char *title, *wm_class;
};
G_DEFINE_TYPE_WITH_PRIVATE (ShellTrayIcon, shell_tray_icon, SHELL_TYPE_GTK_EMBED);
G_DEFINE_TYPE (ShellTrayIcon, shell_tray_icon, SHELL_TYPE_GTK_EMBED);
static void
shell_tray_icon_finalize (GObject *object)
@ -126,6 +117,8 @@ shell_tray_icon_class_init (ShellTrayIconClass *klass)
{
GObjectClass *object_class = G_OBJECT_CLASS (klass);
g_type_class_add_private (klass, sizeof (ShellTrayIconPrivate));
object_class->get_property = shell_tray_icon_get_property;
object_class->constructed = shell_tray_icon_constructed;
object_class->finalize = shell_tray_icon_finalize;
@ -156,7 +149,8 @@ shell_tray_icon_class_init (ShellTrayIconClass *klass)
static void
shell_tray_icon_init (ShellTrayIcon *icon)
{
icon->priv = shell_tray_icon_get_instance_private (icon);
icon->priv = G_TYPE_INSTANCE_GET_PRIVATE (icon, SHELL_TYPE_TRAY_ICON,
ShellTrayIconPrivate);
}
/*

View File

@ -4,10 +4,31 @@
#include "shell-gtk-embed.h"
#define SHELL_TYPE_TRAY_ICON (shell_tray_icon_get_type ())
G_DECLARE_FINAL_TYPE (ShellTrayIcon, shell_tray_icon,
SHELL, TRAY_ICON, ShellGtkEmbed)
#define SHELL_TYPE_TRAY_ICON (shell_tray_icon_get_type ())
#define SHELL_TRAY_ICON(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), SHELL_TYPE_TRAY_ICON, ShellTrayIcon))
#define SHELL_TRAY_ICON_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), SHELL_TYPE_TRAY_ICON, ShellTrayIconClass))
#define SHELL_IS_TRAY_ICON(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), SHELL_TYPE_TRAY_ICON))
#define SHELL_IS_TRAY_ICON_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), SHELL_TYPE_TRAY_ICON))
#define SHELL_TRAY_ICON_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), SHELL_TYPE_TRAY_ICON, ShellTrayIconClass))
typedef struct _ShellTrayIcon ShellTrayIcon;
typedef struct _ShellTrayIconClass ShellTrayIconClass;
typedef struct _ShellTrayIconPrivate ShellTrayIconPrivate;
struct _ShellTrayIcon
{
ShellGtkEmbed parent;
ShellTrayIconPrivate *priv;
};
struct _ShellTrayIconClass
{
ShellGtkEmbedClass parent_class;
};
GType shell_tray_icon_get_type (void) G_GNUC_CONST;
ClutterActor *shell_tray_icon_new (ShellEmbeddedWindow *window);
void shell_tray_icon_click (ShellTrayIcon *icon,

View File

@ -15,15 +15,6 @@
#include "shell-embedded-window.h"
#include "shell-global.h"
typedef struct _ShellTrayManagerPrivate ShellTrayManagerPrivate;
struct _ShellTrayManager
{
GObject parent_instance;
ShellTrayManagerPrivate *priv;
};
struct _ShellTrayManagerPrivate {
NaTrayManager *na_manager;
ClutterColor bg_color;
@ -52,7 +43,7 @@ enum
LAST_SIGNAL
};
G_DEFINE_TYPE_WITH_PRIVATE (ShellTrayManager, shell_tray_manager, G_TYPE_OBJECT);
G_DEFINE_TYPE (ShellTrayManager, shell_tray_manager, G_TYPE_OBJECT);
static guint shell_tray_manager_signals [LAST_SIGNAL] = { 0 };
@ -123,8 +114,8 @@ shell_tray_manager_get_property(GObject *object,
static void
shell_tray_manager_init (ShellTrayManager *manager)
{
manager->priv = shell_tray_manager_get_instance_private (manager);
manager->priv = G_TYPE_INSTANCE_GET_PRIVATE (manager, SHELL_TYPE_TRAY_MANAGER,
ShellTrayManagerPrivate);
manager->priv->na_manager = na_tray_manager_new ();
manager->priv->icons = g_hash_table_new_full (NULL, NULL,
@ -153,6 +144,8 @@ shell_tray_manager_class_init (ShellTrayManagerClass *klass)
{
GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
g_type_class_add_private (klass, sizeof (ShellTrayManagerPrivate));
gobject_class->finalize = shell_tray_manager_finalize;
gobject_class->set_property = shell_tray_manager_set_property;
gobject_class->get_property = shell_tray_manager_get_property;
@ -161,7 +154,7 @@ shell_tray_manager_class_init (ShellTrayManagerClass *klass)
g_signal_new ("tray-icon-added",
G_TYPE_FROM_CLASS (klass),
G_SIGNAL_RUN_LAST,
0,
G_STRUCT_OFFSET (ShellTrayManagerClass, tray_icon_added),
NULL, NULL, NULL,
G_TYPE_NONE, 1,
CLUTTER_TYPE_ACTOR);
@ -169,7 +162,7 @@ shell_tray_manager_class_init (ShellTrayManagerClass *klass)
g_signal_new ("tray-icon-removed",
G_TYPE_FROM_CLASS (klass),
G_SIGNAL_RUN_LAST,
0,
G_STRUCT_OFFSET (ShellTrayManagerClass, tray_icon_removed),
NULL, NULL, NULL,
G_TYPE_NONE, 1,
CLUTTER_TYPE_ACTOR);
@ -200,12 +193,27 @@ shell_tray_manager_style_changed (StWidget *theme_widget,
ShellTrayManager *manager = user_data;
StThemeNode *theme_node;
StIconColors *icon_colors;
GdkColor foreground, warning, error, success;
theme_node = st_widget_get_theme_node (theme_widget);
icon_colors = st_theme_node_get_icon_colors (theme_node);
foreground.red = icon_colors->foreground.red * 0x101;
foreground.green = icon_colors->foreground.green * 0x101;
foreground.blue = icon_colors->foreground.blue * 0x101;
warning.red = icon_colors->warning.red * 0x101;
warning.green = icon_colors->warning.green * 0x101;
warning.blue = icon_colors->warning.blue * 0x101;
error.red = icon_colors->error.red * 0x101;
error.green = icon_colors->error.green * 0x101;
error.blue = icon_colors->error.blue * 0x101;
success.red = icon_colors->success.red * 0x101;
success.green = icon_colors->success.green * 0x101;
success.blue = icon_colors->success.blue * 0x101;
na_tray_manager_set_colors (manager->priv->na_manager,
&icon_colors->foreground, &icon_colors->warning,
&icon_colors->error, &icon_colors->success);
&foreground, &warning,
&error, &success);
}
void
@ -279,6 +287,14 @@ na_tray_icon_added (NaTrayManager *na_manager, GtkWidget *socket,
GtkWidget *win;
ShellTrayManagerChild *child;
/* We don't need the NaTrayIcon to be composited on the window we
* put it in: the window is the same size as the tray icon
* and transparent. We can just use the default X handling of
* subwindows as mode of SOURCE (replace the parent with the
* child) and then composite the parent onto the stage.
*/
na_tray_child_set_composited (NA_TRAY_CHILD (socket), FALSE);
win = shell_embedded_window_new ();
gtk_container_add (GTK_CONTAINER (win), socket);

View File

@ -8,9 +8,37 @@
G_BEGIN_DECLS
#define SHELL_TYPE_TRAY_MANAGER (shell_tray_manager_get_type ())
G_DECLARE_FINAL_TYPE (ShellTrayManager, shell_tray_manager,
SHELL, TRAY_MANAGER, GObject)
#define SHELL_TYPE_TRAY_MANAGER (shell_tray_manager_get_type ())
#define SHELL_TRAY_MANAGER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), SHELL_TYPE_TRAY_MANAGER, ShellTrayManager))
#define SHELL_TRAY_MANAGER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), SHELL_TYPE_TRAY_MANAGER, ShellTrayManagerClass))
#define SHELL_IS_TRAY_MANAGER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), SHELL_TYPE_TRAY_MANAGER))
#define SHELL_IS_TRAY_MANAGER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), SHELL_TYPE_TRAY_MANAGER))
#define SHELL_TRAY_MANAGER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), SHELL_TYPE_TRAY_MANAGER, ShellTrayManagerClass))
typedef struct _ShellTrayManager ShellTrayManager;
typedef struct _ShellTrayManagerPrivate ShellTrayManagerPrivate;
typedef struct _ShellTrayManagerClass ShellTrayManagerClass;
struct _ShellTrayManager
{
GObject parent_instance;
ShellTrayManagerPrivate *priv;
};
struct _ShellTrayManagerClass
{
GObjectClass parent_class;
void (* tray_icon_added) (ShellTrayManager *manager,
ClutterActor *icon,
const char *lowercase_wm_class);
void (* tray_icon_removed) (ShellTrayManager *manager,
ClutterActor *icon);
};
GType shell_tray_manager_get_type (void);
ShellTrayManager *shell_tray_manager_new (void);
void shell_tray_manager_manage_screen (ShellTrayManager *manager,

View File

@ -11,9 +11,23 @@
G_BEGIN_DECLS
#define SHELL_TYPE_WINDOW_TRACKER (shell_window_tracker_get_type ())
G_DECLARE_FINAL_TYPE (ShellWindowTracker, shell_window_tracker,
SHELL, WINDOW_TRACKER, GObject)
typedef struct _ShellWindowTracker ShellWindowTracker;
typedef struct _ShellWindowTrackerClass ShellWindowTrackerClass;
typedef struct _ShellWindowTrackerPrivate ShellWindowTrackerPrivate;
#define SHELL_TYPE_WINDOW_TRACKER (shell_window_tracker_get_type ())
#define SHELL_WINDOW_TRACKER(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), SHELL_TYPE_WINDOW_TRACKER, ShellWindowTracker))
#define SHELL_WINDOW_TRACKER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), SHELL_TYPE_WINDOW_TRACKER, ShellWindowTrackerClass))
#define SHELL_IS_WINDOW_TRACKER(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), SHELL_TYPE_WINDOW_TRACKER))
#define SHELL_IS_WINDOW_TRACKER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), SHELL_TYPE_WINDOW_TRACKER))
#define SHELL_WINDOW_TRACKER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), SHELL_TYPE_WINDOW_TRACKER, ShellWindowTrackerClass))
struct _ShellWindowTrackerClass
{
GObjectClass parent_class;
};
GType shell_window_tracker_get_type (void) G_GNUC_CONST;
ShellWindowTracker* shell_window_tracker_get_default(void);

View File

@ -7,8 +7,23 @@
G_BEGIN_DECLS
#define SHELL_TYPE_WM (shell_wm_get_type ())
G_DECLARE_FINAL_TYPE (ShellWM, shell_wm, SHELL, WM, GObject)
typedef struct _ShellWM ShellWM;
typedef struct _ShellWMClass ShellWMClass;
#define SHELL_TYPE_WM (shell_wm_get_type ())
#define SHELL_WM(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), SHELL_TYPE_WM, ShellWM))
#define SHELL_WM_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), SHELL_TYPE_WM, ShellWMClass))
#define SHELL_IS_WM(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), SHELL_TYPE_WM))
#define SHELL_IS_WM_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), SHELL_TYPE_WM))
#define SHELL_WM_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), SHELL_TYPE_WM, ShellWMClass))
struct _ShellWMClass
{
GObjectClass parent_class;
};
GType shell_wm_get_type (void) G_GNUC_CONST;
ShellWM *shell_wm_new (MetaPlugin *plugin);

View File

@ -37,7 +37,9 @@
#include "st-adjustment.h"
#include "st-private.h"
typedef struct _StAdjustmentPrivate StAdjustmentPrivate;
G_DEFINE_TYPE (StAdjustment, st_adjustment, G_TYPE_OBJECT)
#define ADJUSTMENT_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), ST_TYPE_ADJUSTMENT, StAdjustmentPrivate))
struct _StAdjustmentPrivate
{
@ -53,8 +55,6 @@ struct _StAdjustmentPrivate
gdouble page_size;
};
G_DEFINE_TYPE_WITH_PRIVATE (StAdjustment, st_adjustment, G_TYPE_OBJECT)
enum
{
PROP_0,
@ -92,7 +92,6 @@ st_adjustment_constructed (GObject *object)
{
GObjectClass *g_class;
StAdjustment *self = ST_ADJUSTMENT (object);
StAdjustmentPrivate *priv = st_adjustment_get_instance_private (self);
g_class = G_OBJECT_CLASS (st_adjustment_parent_class);
/* The docs say we're suppose to chain up, but would crash without
@ -103,8 +102,8 @@ st_adjustment_constructed (GObject *object)
g_class->constructed (object);
}
priv->is_constructing = FALSE;
st_adjustment_clamp_page (self, priv->lower, priv->upper);
ST_ADJUSTMENT (self)->priv->is_constructing = FALSE;
st_adjustment_clamp_page (self, self->priv->lower, self->priv->upper);
}
static void
@ -113,7 +112,7 @@ st_adjustment_get_property (GObject *gobject,
GValue *value,
GParamSpec *pspec)
{
StAdjustmentPrivate *priv = st_adjustment_get_instance_private (ST_ADJUSTMENT (gobject));
StAdjustmentPrivate *priv = ST_ADJUSTMENT (gobject)->priv;
switch (prop_id)
{
@ -192,6 +191,8 @@ st_adjustment_class_init (StAdjustmentClass *klass)
{
GObjectClass *object_class = G_OBJECT_CLASS (klass);
g_type_class_add_private (klass, sizeof (StAdjustmentPrivate));
object_class->constructed = st_adjustment_constructed;
object_class->get_property = st_adjustment_get_property;
object_class->set_property = st_adjustment_set_property;
@ -274,8 +275,9 @@ st_adjustment_class_init (StAdjustmentClass *klass)
static void
st_adjustment_init (StAdjustment *self)
{
StAdjustmentPrivate *priv = st_adjustment_get_instance_private (self);
priv->is_constructing = TRUE;
self->priv = ADJUSTMENT_PRIVATE (self);
self->priv->is_constructing = TRUE;
}
StAdjustment *
@ -299,9 +301,13 @@ st_adjustment_new (gdouble value,
gdouble
st_adjustment_get_value (StAdjustment *adjustment)
{
StAdjustmentPrivate *priv;
g_return_val_if_fail (ST_IS_ADJUSTMENT (adjustment), 0);
return ((StAdjustmentPrivate *)st_adjustment_get_instance_private (adjustment))->value;
priv = adjustment->priv;
return priv->value;
}
void
@ -312,7 +318,7 @@ st_adjustment_set_value (StAdjustment *adjustment,
g_return_if_fail (ST_IS_ADJUSTMENT (adjustment));
priv = st_adjustment_get_instance_private (adjustment);
priv = adjustment->priv;
/* Defer clamp until after construction. */
if (!priv->is_constructing)
@ -340,7 +346,7 @@ st_adjustment_clamp_page (StAdjustment *adjustment,
g_return_if_fail (ST_IS_ADJUSTMENT (adjustment));
priv = st_adjustment_get_instance_private (adjustment);
priv = adjustment->priv;
lower = CLAMP (lower, priv->lower, priv->upper - priv->page_size);
upper = CLAMP (upper, priv->lower + priv->page_size, priv->upper);
@ -367,7 +373,7 @@ static gboolean
st_adjustment_set_lower (StAdjustment *adjustment,
gdouble lower)
{
StAdjustmentPrivate *priv = st_adjustment_get_instance_private (adjustment);
StAdjustmentPrivate *priv = adjustment->priv;
if (priv->lower != lower)
{
@ -391,7 +397,7 @@ static gboolean
st_adjustment_set_upper (StAdjustment *adjustment,
gdouble upper)
{
StAdjustmentPrivate *priv = st_adjustment_get_instance_private (adjustment);
StAdjustmentPrivate *priv = adjustment->priv;
if (priv->upper != upper)
{
@ -415,7 +421,7 @@ static gboolean
st_adjustment_set_step_increment (StAdjustment *adjustment,
gdouble step)
{
StAdjustmentPrivate *priv = st_adjustment_get_instance_private (adjustment);
StAdjustmentPrivate *priv = adjustment->priv;
if (priv->step_increment != step)
{
@ -435,7 +441,7 @@ static gboolean
st_adjustment_set_page_increment (StAdjustment *adjustment,
gdouble page)
{
StAdjustmentPrivate *priv = st_adjustment_get_instance_private (adjustment);
StAdjustmentPrivate *priv = adjustment->priv;
if (priv->page_increment != page)
{
@ -455,7 +461,7 @@ static gboolean
st_adjustment_set_page_size (StAdjustment *adjustment,
gdouble size)
{
StAdjustmentPrivate *priv = st_adjustment_get_instance_private (adjustment);
StAdjustmentPrivate *priv = adjustment->priv;
if (priv->page_size != size)
{
@ -492,7 +498,7 @@ st_adjustment_set_values (StAdjustment *adjustment,
g_return_if_fail (step_increment >= 0 && step_increment <= G_MAXDOUBLE);
g_return_if_fail (page_increment >= 0 && page_increment <= G_MAXDOUBLE);
priv = st_adjustment_get_instance_private (adjustment);
priv = adjustment->priv;
emit_changed = FALSE;
@ -541,7 +547,7 @@ st_adjustment_get_values (StAdjustment *adjustment,
g_return_if_fail (ST_IS_ADJUSTMENT (adjustment));
priv = st_adjustment_get_instance_private (adjustment);
priv = adjustment->priv;
if (lower)
*lower = priv->lower;
@ -583,7 +589,7 @@ st_adjustment_adjust_for_scroll_event (StAdjustment *adjustment,
g_return_if_fail (ST_IS_ADJUSTMENT (adjustment));
priv = st_adjustment_get_instance_private (adjustment);
priv = adjustment->priv;
scroll_unit = pow (priv->page_size, 2.0 / 3.0);

View File

@ -30,8 +30,31 @@
G_BEGIN_DECLS
#define ST_TYPE_ADJUSTMENT (st_adjustment_get_type())
G_DECLARE_DERIVABLE_TYPE (StAdjustment, st_adjustment, ST, ADJUSTMENT, GObject)
#define ST_TYPE_ADJUSTMENT (st_adjustment_get_type())
#define ST_ADJUSTMENT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), ST_TYPE_ADJUSTMENT, StAdjustment))
#define ST_IS_ADJUSTMENT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), ST_TYPE_ADJUSTMENT))
#define ST_ADJUSTMENT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), ST_TYPE_ADJUSTMENT, StAdjustmentClass))
#define ST_IS_ADJUSTMENT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), ST_TYPE_ADJUSTMENT))
#define ST_ADJUSTMENT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), ST_TYPE_ADJUSTMENT, StAdjustmentClass))
typedef struct _StAdjustment StAdjustment;
typedef struct _StAdjustmentPrivate StAdjustmentPrivate;
typedef struct _StAdjustmentClass StAdjustmentClass;
/**
* StAdjustment:
*
* Class for handling an interval between to values. The contents of
* the #StAdjustment are private and should be accessed using the
* public API.
*/
struct _StAdjustment
{
/*< private >*/
GObject parent_instance;
StAdjustmentPrivate *priv;
};
/**
* StAdjustmentClass:
@ -48,6 +71,8 @@ struct _StAdjustmentClass
void (* changed) (StAdjustment *adjustment);
};
GType st_adjustment_get_type (void) G_GNUC_CONST;
StAdjustment *st_adjustment_new (gdouble value,
gdouble lower,
gdouble upper,

View File

@ -38,7 +38,8 @@
#include "st-enum-types.h"
#include "st-private.h"
typedef struct _StBinPrivate StBinPrivate;
#define ST_BIN_GET_PRIVATE(obj) (G_TYPE_INSTANCE_GET_PRIVATE ((obj), ST_TYPE_BIN, StBinPrivate))
struct _StBinPrivate
{
ClutterActor *child;
@ -64,7 +65,6 @@ enum
static void clutter_container_iface_init (ClutterContainerIface *iface);
G_DEFINE_TYPE_WITH_CODE (StBin, st_bin, ST_TYPE_WIDGET,
G_ADD_PRIVATE (StBin)
G_IMPLEMENT_INTERFACE (CLUTTER_TYPE_CONTAINER,
clutter_container_iface_init));
@ -79,11 +79,10 @@ static void
st_bin_remove (ClutterContainer *container,
ClutterActor *actor)
{
StBin *bin = ST_BIN (container);
StBinPrivate *priv = st_bin_get_instance_private (bin);
StBinPrivate *priv = ST_BIN (container)->priv;
if (priv->child == actor)
st_bin_set_child (bin, NULL);
st_bin_set_child (ST_BIN (container), NULL);
}
static void
@ -98,7 +97,7 @@ st_bin_allocate (ClutterActor *self,
const ClutterActorBox *box,
ClutterAllocationFlags flags)
{
StBinPrivate *priv = st_bin_get_instance_private (ST_BIN (self));
StBinPrivate *priv = ST_BIN (self)->priv;
clutter_actor_set_allocation (self, box, flags);
@ -124,7 +123,7 @@ st_bin_get_preferred_width (ClutterActor *self,
gfloat *min_width_p,
gfloat *natural_width_p)
{
StBinPrivate *priv = st_bin_get_instance_private (ST_BIN (self));
StBinPrivate *priv = ST_BIN (self)->priv;
StThemeNode *theme_node = st_widget_get_theme_node (ST_WIDGET (self));
st_theme_node_adjust_for_height (theme_node, &for_height);
@ -153,7 +152,7 @@ st_bin_get_preferred_height (ClutterActor *self,
gfloat *min_height_p,
gfloat *natural_height_p)
{
StBinPrivate *priv = st_bin_get_instance_private (ST_BIN (self));
StBinPrivate *priv = ST_BIN (self)->priv;
StThemeNode *theme_node = st_widget_get_theme_node (ST_WIDGET (self));
st_theme_node_adjust_for_width (theme_node, &for_width);
@ -179,7 +178,7 @@ st_bin_get_preferred_height (ClutterActor *self,
static void
st_bin_dispose (GObject *gobject)
{
StBinPrivate *priv = st_bin_get_instance_private (ST_BIN (gobject));
StBinPrivate *priv = ST_BIN (gobject)->priv;
if (priv->child)
clutter_actor_destroy (priv->child);
@ -191,7 +190,7 @@ st_bin_dispose (GObject *gobject)
static void
st_bin_popup_menu (StWidget *widget)
{
StBinPrivate *priv = st_bin_get_instance_private (ST_BIN (widget));
StBinPrivate *priv = ST_BIN (widget)->priv;
if (priv->child && ST_IS_WIDGET (priv->child))
st_widget_popup_menu (ST_WIDGET (priv->child));
@ -202,7 +201,7 @@ st_bin_navigate_focus (StWidget *widget,
ClutterActor *from,
GtkDirectionType direction)
{
StBinPrivate *priv = st_bin_get_instance_private (ST_BIN (widget));
StBinPrivate *priv = ST_BIN (widget)->priv;
ClutterActor *bin_actor = CLUTTER_ACTOR (widget);
if (st_widget_get_can_focus (widget))
@ -233,7 +232,6 @@ st_bin_set_property (GObject *gobject,
GParamSpec *pspec)
{
StBin *bin = ST_BIN (gobject);
StBinPrivate *priv = st_bin_get_instance_private (bin);
switch (prop_id)
{
@ -244,24 +242,24 @@ st_bin_set_property (GObject *gobject,
case PROP_X_ALIGN:
st_bin_set_alignment (bin,
g_value_get_enum (value),
priv->y_align);
bin->priv->y_align);
break;
case PROP_Y_ALIGN:
st_bin_set_alignment (bin,
priv->x_align,
bin->priv->x_align,
g_value_get_enum (value));
break;
case PROP_X_FILL:
st_bin_set_fill (bin,
g_value_get_boolean (value),
priv->y_fill);
bin->priv->y_fill);
break;
case PROP_Y_FILL:
st_bin_set_fill (bin,
priv->x_fill,
bin->priv->x_fill,
g_value_get_boolean (value));
break;
@ -276,7 +274,7 @@ st_bin_get_property (GObject *gobject,
GValue *value,
GParamSpec *pspec)
{
StBinPrivate *priv = st_bin_get_instance_private (ST_BIN (gobject));
StBinPrivate *priv = ST_BIN (gobject)->priv;
switch (prop_id)
{
@ -313,6 +311,8 @@ st_bin_class_init (StBinClass *klass)
StWidgetClass *widget_class = ST_WIDGET_CLASS (klass);
GParamSpec *pspec;
g_type_class_add_private (klass, sizeof (StBinPrivate));
gobject_class->set_property = st_bin_set_property;
gobject_class->get_property = st_bin_get_property;
gobject_class->dispose = st_bin_dispose;
@ -392,10 +392,10 @@ st_bin_class_init (StBinClass *klass)
static void
st_bin_init (StBin *bin)
{
StBinPrivate *priv = st_bin_get_instance_private (bin);
bin->priv = ST_BIN_GET_PRIVATE (bin);
priv->x_align = ST_ALIGN_MIDDLE;
priv->y_align = ST_ALIGN_MIDDLE;
bin->priv->x_align = ST_ALIGN_MIDDLE;
bin->priv->y_align = ST_ALIGN_MIDDLE;
}
/**
@ -429,7 +429,7 @@ st_bin_set_child (StBin *bin,
g_return_if_fail (ST_IS_BIN (bin));
g_return_if_fail (child == NULL || CLUTTER_IS_ACTOR (child));
priv = st_bin_get_instance_private (bin);
priv = bin->priv;
if (priv->child == child)
return;
@ -463,7 +463,7 @@ st_bin_get_child (StBin *bin)
{
g_return_val_if_fail (ST_IS_BIN (bin), NULL);
return ((StBinPrivate *)st_bin_get_instance_private (bin))->child;
return bin->priv->child;
}
/**
@ -485,7 +485,7 @@ st_bin_set_alignment (StBin *bin,
g_return_if_fail (ST_IS_BIN (bin));
priv = st_bin_get_instance_private (bin);
priv = bin->priv;
g_object_freeze_notify (G_OBJECT (bin));
@ -527,7 +527,7 @@ st_bin_get_alignment (StBin *bin,
g_return_if_fail (ST_IS_BIN (bin));
priv = st_bin_get_instance_private (bin);
priv = bin->priv;
if (x_align)
*x_align = priv->x_align;
@ -555,7 +555,7 @@ st_bin_set_fill (StBin *bin,
g_return_if_fail (ST_IS_BIN (bin));
priv = st_bin_get_instance_private (bin);
priv = bin->priv;
g_object_freeze_notify (G_OBJECT (bin));
@ -594,15 +594,11 @@ st_bin_get_fill (StBin *bin,
gboolean *x_fill,
gboolean *y_fill)
{
StBinPrivate *priv;
g_return_if_fail (ST_IS_BIN (bin));
priv = st_bin_get_instance_private (bin);
if (x_fill)
*x_fill = priv->x_fill;
*x_fill = bin->priv->x_fill;
if (y_fill)
*y_fill = priv->y_fill;
*y_fill = bin->priv->y_fill;
}

View File

@ -30,7 +30,28 @@
G_BEGIN_DECLS
#define ST_TYPE_BIN (st_bin_get_type ())
G_DECLARE_DERIVABLE_TYPE (StBin, st_bin, ST, BIN, StWidget)
#define ST_BIN(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), ST_TYPE_BIN, StBin))
#define ST_IS_BIN(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), ST_TYPE_BIN))
#define ST_BIN_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), ST_TYPE_BIN, StBinClass))
#define ST_IS_BIN_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), ST_TYPE_BIN))
#define ST_BIN_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), ST_TYPE_BIN, StBinClass))
typedef struct _StBin StBin;
typedef struct _StBinPrivate StBinPrivate;
typedef struct _StBinClass StBinClass;
/**
* StBin:
*
* The #StBin struct contains only private data
*/
struct _StBin
{
/*< private >*/
StWidget parent_instance;
StBinPrivate *priv;
};
/**
* StBinClass:
@ -43,6 +64,8 @@ struct _StBinClass
StWidgetClass parent_class;
};
GType st_bin_get_type (void) G_GNUC_CONST;
StWidget * st_bin_new (void);
void st_bin_set_child (StBin *bin,
ClutterActor *child);

View File

@ -28,9 +28,17 @@ G_BEGIN_DECLS
/* A StBorderImage encapsulates an image with specified unscaled borders on each edge.
*/
typedef struct _StBorderImage StBorderImage;
typedef struct _StBorderImageClass StBorderImageClass;
#define ST_TYPE_BORDER_IMAGE (st_border_image_get_type ())
G_DECLARE_FINAL_TYPE (StBorderImage, st_border_image, ST, BORDER_IMAGE, GObject)
#define ST_BORDER_IMAGE(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), ST_TYPE_BORDER_IMAGE, StBorderImage))
#define ST_BORDER_IMAGE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), ST_TYPE_BORDER_IMAGE, StBorderImageClass))
#define ST_IS_BORDER_IMAGE(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), ST_TYPE_BORDER_IMAGE))
#define ST_IS_BORDER_IMAGE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), ST_TYPE_BORDER_IMAGE))
#define ST_BORDER_IMAGE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), ST_TYPE_BORDER_IMAGE, StBorderImageClass))
GType st_border_image_get_type (void) G_GNUC_CONST;
StBorderImage *st_border_image_new (GFile *file,
int border_top,

View File

@ -30,6 +30,9 @@
G_DEFINE_TYPE (StBoxLayoutChild, st_box_layout_child, CLUTTER_TYPE_CHILD_META)
#define BOX_LAYOUT_CHILD_PRIVATE(o) \
(G_TYPE_INSTANCE_GET_PRIVATE ((o), ST_TYPE_BOX_LAYOUT_CHILD, StBoxLayoutChildPrivate))
enum
{

View File

@ -27,9 +27,29 @@
G_BEGIN_DECLS
#define ST_TYPE_BOX_LAYOUT_CHILD st_box_layout_child_get_type()
G_DECLARE_FINAL_TYPE (StBoxLayoutChild, st_box_layout_child, ST, BOX_LAYOUT_CHILD, ClutterChildMeta)
#define ST_BOX_LAYOUT_CHILD(obj) \
(G_TYPE_CHECK_INSTANCE_CAST ((obj), \
ST_TYPE_BOX_LAYOUT_CHILD, StBoxLayoutChild))
#define ST_BOX_LAYOUT_CHILD_CLASS(klass) \
(G_TYPE_CHECK_CLASS_CAST ((klass), \
ST_TYPE_BOX_LAYOUT_CHILD, StBoxLayoutChildClass))
#define ST_IS_BOX_LAYOUT_CHILD(obj) \
(G_TYPE_CHECK_INSTANCE_TYPE ((obj), \
ST_TYPE_BOX_LAYOUT_CHILD))
#define ST_IS_BOX_LAYOUT_CHILD_CLASS(klass) \
(G_TYPE_CHECK_CLASS_TYPE ((klass), \
ST_TYPE_BOX_LAYOUT_CHILD))
#define ST_BOX_LAYOUT_CHILD_GET_CLASS(obj) \
(G_TYPE_INSTANCE_GET_CLASS ((obj), \
ST_TYPE_BOX_LAYOUT_CHILD, StBoxLayoutChildClass))
typedef struct _StBoxLayoutChild StBoxLayoutChild;
typedef struct _StBoxLayoutChildClass StBoxLayoutChildClass;
typedef struct _StBoxLayoutChildPrivate StBoxLayoutChildPrivate;
/**
@ -47,6 +67,13 @@ struct _StBoxLayoutChild
gboolean y_fill_set;
};
struct _StBoxLayoutChildClass
{
ClutterChildMetaClass parent_class;
};
GType st_box_layout_child_get_type (void);
G_END_DECLS
#endif /* _ST_BOX_LAYOUT_CHILD_H */

View File

@ -59,6 +59,15 @@
static void st_box_container_iface_init (ClutterContainerIface *iface);
static void st_box_scrollable_interface_init (StScrollableInterface *iface);
G_DEFINE_TYPE_WITH_CODE (StBoxLayout, st_box_layout, ST_TYPE_WIDGET,
G_IMPLEMENT_INTERFACE (CLUTTER_TYPE_CONTAINER,
st_box_container_iface_init)
G_IMPLEMENT_INTERFACE (ST_TYPE_SCROLLABLE,
st_box_scrollable_interface_init));
#define BOX_LAYOUT_PRIVATE(o) \
(G_TYPE_INSTANCE_GET_PRIVATE ((o), ST_TYPE_BOX_LAYOUT, StBoxLayoutPrivate))
enum {
PROP_0,
@ -75,13 +84,6 @@ struct _StBoxLayoutPrivate
StAdjustment *vadjustment;
};
G_DEFINE_TYPE_WITH_CODE (StBoxLayout, st_box_layout, ST_TYPE_WIDGET,
G_ADD_PRIVATE (StBoxLayout)
G_IMPLEMENT_INTERFACE (CLUTTER_TYPE_CONTAINER,
st_box_container_iface_init)
G_IMPLEMENT_INTERFACE (ST_TYPE_SCROLLABLE,
st_box_scrollable_interface_init));
/*
* StScrollable Interface Implementation
*/
@ -560,24 +562,6 @@ layout_notify (GObject *object,
g_object_notify (self, prop_name);
}
static void
on_layout_manager_notify (GObject *object,
GParamSpec *pspec,
gpointer user_data)
{
ClutterActor *actor = CLUTTER_ACTOR (object);
ClutterLayoutManager *layout = clutter_actor_get_layout_manager (actor);
g_warn_if_fail (CLUTTER_IS_BOX_LAYOUT (layout));
if (layout == NULL)
return;
g_signal_connect_swapped (layout, "layout-changed",
G_CALLBACK (clutter_actor_queue_relayout), actor);
g_signal_connect (layout, "notify", G_CALLBACK (layout_notify), object);
}
static void
st_box_layout_class_init (StBoxLayoutClass *klass)
{
@ -586,6 +570,8 @@ st_box_layout_class_init (StBoxLayoutClass *klass)
StWidgetClass *widget_class = ST_WIDGET_CLASS (klass);
GParamSpec *pspec;
g_type_class_add_private (klass, sizeof (StBoxLayoutPrivate));
object_class->get_property = st_box_layout_get_property;
object_class->set_property = st_box_layout_set_property;
object_class->dispose = st_box_layout_dispose;
@ -628,11 +614,14 @@ st_box_layout_class_init (StBoxLayoutClass *klass)
static void
st_box_layout_init (StBoxLayout *self)
{
self->priv = st_box_layout_get_instance_private (self);
ClutterLayoutManager *layout;
g_signal_connect (self, "notify::layout-manager",
G_CALLBACK (on_layout_manager_notify), NULL);
clutter_actor_set_layout_manager (CLUTTER_ACTOR (self), clutter_box_layout_new ());
self->priv = BOX_LAYOUT_PRIVATE (self);
layout = clutter_box_layout_new ();
g_signal_connect_swapped (layout, "layout-changed",
G_CALLBACK (clutter_actor_queue_relayout), self);
g_signal_connect (layout, "notify", G_CALLBACK (layout_notify), self);
clutter_actor_set_layout_manager (CLUTTER_ACTOR (self), layout);
}
/**

View File

@ -30,9 +30,29 @@
G_BEGIN_DECLS
#define ST_TYPE_BOX_LAYOUT st_box_layout_get_type()
G_DECLARE_FINAL_TYPE (StBoxLayout, st_box_layout, ST, BOX_LAYOUT, StWidget)
#define ST_BOX_LAYOUT(obj) \
(G_TYPE_CHECK_INSTANCE_CAST ((obj), \
ST_TYPE_BOX_LAYOUT, StBoxLayout))
#define ST_BOX_LAYOUT_CLASS(klass) \
(G_TYPE_CHECK_CLASS_CAST ((klass), \
ST_TYPE_BOX_LAYOUT, StBoxLayoutClass))
#define ST_IS_BOX_LAYOUT(obj) \
(G_TYPE_CHECK_INSTANCE_TYPE ((obj), \
ST_TYPE_BOX_LAYOUT))
#define ST_IS_BOX_LAYOUT_CLASS(klass) \
(G_TYPE_CHECK_CLASS_TYPE ((klass), \
ST_TYPE_BOX_LAYOUT))
#define ST_BOX_LAYOUT_GET_CLASS(obj) \
(G_TYPE_INSTANCE_GET_CLASS ((obj), \
ST_TYPE_BOX_LAYOUT, StBoxLayoutClass))
typedef struct _StBoxLayout StBoxLayout;
typedef struct _StBoxLayoutClass StBoxLayoutClass;
typedef struct _StBoxLayoutPrivate StBoxLayoutPrivate;
/**
@ -49,6 +69,13 @@ struct _StBoxLayout
StBoxLayoutPrivate *priv;
};
struct _StBoxLayoutClass
{
StWidgetClass parent_class;
};
GType st_box_layout_get_type (void);
StWidget *st_box_layout_new (void);
void st_box_layout_set_vertical (StBoxLayout *box,

View File

@ -64,7 +64,8 @@ enum
LAST_SIGNAL
};
typedef struct _StButtonPrivate StButtonPrivate;
#define ST_BUTTON_GET_PRIVATE(obj) \
(G_TYPE_INSTANCE_GET_PRIVATE ((obj), ST_TYPE_BUTTON, StButtonPrivate))
struct _StButtonPrivate
{
@ -85,7 +86,7 @@ struct _StButtonPrivate
static guint button_signals[LAST_SIGNAL] = { 0, };
G_DEFINE_TYPE_WITH_PRIVATE (StButton, st_button, ST_TYPE_BIN);
G_DEFINE_TYPE (StButton, st_button, ST_TYPE_BIN);
static GType st_button_accessible_get_type (void) G_GNUC_CONST;
@ -107,7 +108,7 @@ static void
st_button_style_changed (StWidget *widget)
{
StButton *button = ST_BUTTON (widget);
StButtonPrivate *priv = st_button_get_instance_private (button);
StButtonPrivate *priv = button->priv;
StButtonClass *button_class = ST_BUTTON_GET_CLASS (button);
StThemeNode *theme_node = st_widget_get_theme_node (ST_WIDGET (button));
double spacing;
@ -134,14 +135,12 @@ st_button_press (StButton *button,
StButtonMask mask,
ClutterEventSequence *sequence)
{
StButtonPrivate *priv = st_button_get_instance_private (button);
if (priv->pressed == 0 || sequence)
if (button->priv->pressed == 0 || sequence)
st_widget_add_style_pseudo_class (ST_WIDGET (button), "active");
priv->pressed |= mask;
priv->press_sequence = sequence;
priv->device = device;
button->priv->pressed |= mask;
button->priv->press_sequence = sequence;
button->priv->device = device;
}
static void
@ -151,27 +150,25 @@ st_button_release (StButton *button,
int clicked_button,
ClutterEventSequence *sequence)
{
StButtonPrivate *priv = st_button_get_instance_private (button);
if ((device && priv->device != device) ||
(sequence && priv->press_sequence != sequence))
if ((device && button->priv->device != device) ||
(sequence && button->priv->press_sequence != sequence))
return;
else if (!sequence)
{
priv->pressed &= ~mask;
button->priv->pressed &= ~mask;
if (priv->pressed != 0)
if (button->priv->pressed != 0)
return;
}
priv->press_sequence = NULL;
priv->device = NULL;
button->priv->press_sequence = NULL;
button->priv->device = NULL;
st_widget_remove_style_pseudo_class (ST_WIDGET (button), "active");
if (clicked_button || sequence)
{
if (priv->is_toggle)
st_button_set_checked (button, !priv->is_checked);
if (button->priv->is_toggle)
st_button_set_checked (button, !button->priv->is_checked);
g_signal_emit (button, button_signals[CLICKED], 0, clicked_button);
}
@ -182,19 +179,18 @@ st_button_button_press (ClutterActor *actor,
ClutterButtonEvent *event)
{
StButton *button = ST_BUTTON (actor);
StButtonPrivate *priv = st_button_get_instance_private (button);
StButtonMask mask = ST_BUTTON_MASK_FROM_BUTTON (event->button);
ClutterInputDevice *device = clutter_event_get_device ((ClutterEvent*) event);
if (priv->press_sequence)
if (button->priv->press_sequence)
return CLUTTER_EVENT_PROPAGATE;
if (priv->button_mask & mask)
if (button->priv->button_mask & mask)
{
if (priv->grabbed == 0)
if (button->priv->grabbed == 0)
clutter_grab_pointer (actor);
priv->grabbed |= mask;
button->priv->grabbed |= mask;
st_button_press (button, device, mask, NULL);
return TRUE;
@ -208,19 +204,18 @@ st_button_button_release (ClutterActor *actor,
ClutterButtonEvent *event)
{
StButton *button = ST_BUTTON (actor);
StButtonPrivate *priv = st_button_get_instance_private (button);
StButtonMask mask = ST_BUTTON_MASK_FROM_BUTTON (event->button);
ClutterInputDevice *device = clutter_event_get_device ((ClutterEvent*) event);
if (priv->button_mask & mask)
if (button->priv->button_mask & mask)
{
gboolean is_click;
is_click = priv->grabbed && clutter_actor_contains (actor, event->source);
is_click = button->priv->grabbed && clutter_actor_contains (actor, event->source);
st_button_release (button, device, mask, is_click ? event->button : 0, NULL);
priv->grabbed &= ~mask;
if (priv->grabbed == 0)
button->priv->grabbed &= ~mask;
if (button->priv->grabbed == 0)
clutter_ungrab_pointer ();
return TRUE;
@ -234,26 +229,25 @@ st_button_touch_event (ClutterActor *actor,
ClutterTouchEvent *event)
{
StButton *button = ST_BUTTON (actor);
StButtonPrivate *priv = st_button_get_instance_private (button);
StButtonMask mask = ST_BUTTON_MASK_FROM_BUTTON (1);
ClutterEventSequence *sequence;
ClutterInputDevice *device;
if (priv->pressed != 0)
if (button->priv->pressed != 0)
return CLUTTER_EVENT_PROPAGATE;
device = clutter_event_get_device ((ClutterEvent*) event);
sequence = clutter_event_get_event_sequence ((ClutterEvent*) event);
if (event->type == CLUTTER_TOUCH_BEGIN && !priv->press_sequence)
if (event->type == CLUTTER_TOUCH_BEGIN && !button->priv->press_sequence)
{
clutter_input_device_sequence_grab (device, sequence, actor);
st_button_press (button, device, 0, sequence);
return CLUTTER_EVENT_STOP;
}
else if (event->type == CLUTTER_TOUCH_END &&
priv->device == device &&
priv->press_sequence == sequence)
button->priv->device == device &&
button->priv->press_sequence == sequence)
{
st_button_release (button, device, mask, 0, sequence);
clutter_input_device_sequence_ungrab (device, sequence);
@ -268,9 +262,8 @@ st_button_key_press (ClutterActor *actor,
ClutterKeyEvent *event)
{
StButton *button = ST_BUTTON (actor);
StButtonPrivate *priv = st_button_get_instance_private (button);
if (priv->button_mask & ST_BUTTON_ONE)
if (button->priv->button_mask & ST_BUTTON_ONE)
{
if (event->keyval == CLUTTER_KEY_space ||
event->keyval == CLUTTER_KEY_Return ||
@ -290,9 +283,8 @@ st_button_key_release (ClutterActor *actor,
ClutterKeyEvent *event)
{
StButton *button = ST_BUTTON (actor);
StButtonPrivate *priv = st_button_get_instance_private (button);
if (priv->button_mask & ST_BUTTON_ONE)
if (button->priv->button_mask & ST_BUTTON_ONE)
{
if (event->keyval == CLUTTER_KEY_space ||
event->keyval == CLUTTER_KEY_Return ||
@ -301,7 +293,7 @@ st_button_key_release (ClutterActor *actor,
{
gboolean is_click;
is_click = (priv->pressed & ST_BUTTON_ONE);
is_click = (button->priv->pressed & ST_BUTTON_ONE);
st_button_release (button, NULL, ST_BUTTON_ONE, is_click ? 1 : 0, NULL);
return TRUE;
}
@ -314,11 +306,10 @@ static void
st_button_key_focus_out (ClutterActor *actor)
{
StButton *button = ST_BUTTON (actor);
StButtonPrivate *priv = st_button_get_instance_private (button);
/* If we lose focus between a key press and release, undo the press */
if ((priv->pressed & ST_BUTTON_ONE) &&
!(priv->grabbed & ST_BUTTON_ONE))
if ((button->priv->pressed & ST_BUTTON_ONE) &&
!(button->priv->grabbed & ST_BUTTON_ONE))
st_button_release (button, NULL, ST_BUTTON_ONE, 0, NULL);
CLUTTER_ACTOR_CLASS (st_button_parent_class)->key_focus_out (actor);
@ -329,19 +320,18 @@ st_button_enter (ClutterActor *actor,
ClutterCrossingEvent *event)
{
StButton *button = ST_BUTTON (actor);
StButtonPrivate *priv = st_button_get_instance_private (button);
gboolean ret;
ret = CLUTTER_ACTOR_CLASS (st_button_parent_class)->enter_event (actor, event);
if (priv->grabbed)
if (button->priv->grabbed)
{
if (st_widget_get_hover (ST_WIDGET (button)))
st_button_press (button, priv->device,
priv->grabbed, NULL);
st_button_press (button, button->priv->device,
button->priv->grabbed, NULL);
else
st_button_release (button, priv->device,
priv->grabbed, 0, NULL);
st_button_release (button, button->priv->device,
button->priv->grabbed, 0, NULL);
}
return ret;
@ -352,19 +342,18 @@ st_button_leave (ClutterActor *actor,
ClutterCrossingEvent *event)
{
StButton *button = ST_BUTTON (actor);
StButtonPrivate *priv = st_button_get_instance_private (button);
gboolean ret;
ret = CLUTTER_ACTOR_CLASS (st_button_parent_class)->leave_event (actor, event);
if (priv->grabbed)
if (button->priv->grabbed)
{
if (st_widget_get_hover (ST_WIDGET (button)))
st_button_press (button, priv->device,
priv->grabbed, NULL);
st_button_press (button, button->priv->device,
button->priv->grabbed, NULL);
else
st_button_release (button, priv->device,
priv->grabbed, 0, NULL);
st_button_release (button, button->priv->device,
button->priv->grabbed, 0, NULL);
}
return ret;
@ -406,7 +395,7 @@ st_button_get_property (GObject *gobject,
GValue *value,
GParamSpec *pspec)
{
StButtonPrivate *priv = st_button_get_instance_private (ST_BUTTON (gobject));
StButtonPrivate *priv = ST_BUTTON (gobject)->priv;
switch (prop_id)
{
@ -436,7 +425,7 @@ st_button_get_property (GObject *gobject,
static void
st_button_finalize (GObject *gobject)
{
StButtonPrivate *priv = st_button_get_instance_private (ST_BUTTON (gobject));
StButtonPrivate *priv = ST_BUTTON (gobject)->priv;
g_free (priv->text);
@ -451,6 +440,8 @@ st_button_class_init (StButtonClass *klass)
StWidgetClass *widget_class = ST_WIDGET_CLASS (klass);
GParamSpec *pspec;
g_type_class_add_private (klass, sizeof (StButtonPrivate));
gobject_class->set_property = st_button_set_property;
gobject_class->get_property = st_button_get_property;
gobject_class->finalize = st_button_finalize;
@ -521,10 +512,9 @@ st_button_class_init (StButtonClass *klass)
static void
st_button_init (StButton *button)
{
StButtonPrivate *priv = st_button_get_instance_private (button);
priv->spacing = 6;
priv->button_mask = ST_BUTTON_ONE;
button->priv = ST_BUTTON_GET_PRIVATE (button);
button->priv->spacing = 6;
button->priv->button_mask = ST_BUTTON_ONE;
clutter_actor_set_reactive (CLUTTER_ACTOR (button), TRUE);
st_widget_set_track_hover (ST_WIDGET (button), TRUE);
@ -570,7 +560,7 @@ st_button_get_label (StButton *button)
{
g_return_val_if_fail (ST_IS_BUTTON (button), NULL);
return ((StButtonPrivate *)st_button_get_instance_private (button))->text;
return button->priv->text;
}
/**
@ -589,7 +579,7 @@ st_button_set_label (StButton *button,
g_return_if_fail (ST_IS_BUTTON (button));
priv = st_button_get_instance_private (button);
priv = button->priv;
g_free (priv->text);
@ -636,7 +626,7 @@ st_button_get_button_mask (StButton *button)
{
g_return_val_if_fail (ST_IS_BUTTON (button), 0);
return ((StButtonPrivate *)st_button_get_instance_private (button))->button_mask;
return button->priv->button_mask;
}
/**
@ -650,12 +640,9 @@ void
st_button_set_button_mask (StButton *button,
StButtonMask mask)
{
StButtonPrivate *priv;
g_return_if_fail (ST_IS_BUTTON (button));
priv = st_button_get_instance_private (button);
priv->button_mask = mask;
button->priv->button_mask = mask;
g_object_notify (G_OBJECT (button), "button-mask");
}
@ -673,7 +660,7 @@ st_button_get_toggle_mode (StButton *button)
{
g_return_val_if_fail (ST_IS_BUTTON (button), FALSE);
return ((StButtonPrivate *)st_button_get_instance_private (button))->is_toggle;
return button->priv->is_toggle;
}
/**
@ -688,12 +675,9 @@ void
st_button_set_toggle_mode (StButton *button,
gboolean toggle)
{
StButtonPrivate *priv;
g_return_if_fail (ST_IS_BUTTON (button));
priv = st_button_get_instance_private (button);
priv->is_toggle = toggle;
button->priv->is_toggle = toggle;
g_object_notify (G_OBJECT (button), "toggle-mode");
}
@ -711,7 +695,7 @@ st_button_get_checked (StButton *button)
{
g_return_val_if_fail (ST_IS_BUTTON (button), FALSE);
return ((StButtonPrivate *)st_button_get_instance_private (button))->is_checked;
return button->priv->is_checked;
}
/**
@ -726,14 +710,11 @@ void
st_button_set_checked (StButton *button,
gboolean checked)
{
StButtonPrivate *priv;
g_return_if_fail (ST_IS_BUTTON (button));
priv = st_button_get_instance_private (button);
if (priv->is_checked != checked)
if (button->priv->is_checked != checked)
{
priv->is_checked = checked;
button->priv->is_checked = checked;
if (checked)
st_widget_add_style_pseudo_class (ST_WIDGET (button), "checked");
@ -760,30 +741,25 @@ st_button_set_checked (StButton *button,
void
st_button_fake_release (StButton *button)
{
StButtonPrivate *priv;
if (button->priv->pressed)
st_button_release (button, button->priv->device,
button->priv->pressed, 0, NULL);
g_return_if_fail (ST_IS_BUTTON (button));
priv = st_button_get_instance_private (button);
if (priv->pressed)
st_button_release (button, priv->device,
priv->pressed, 0, NULL);
if (priv->grabbed)
if (button->priv->grabbed)
{
priv->grabbed = 0;
button->priv->grabbed = 0;
clutter_ungrab_pointer ();
}
if (priv->device &&
priv->press_sequence)
if (button->priv->device &&
button->priv->press_sequence)
{
clutter_input_device_sequence_ungrab (priv->device,
priv->press_sequence);
priv->press_sequence = NULL;
clutter_input_device_sequence_ungrab (button->priv->device,
button->priv->press_sequence);
button->priv->press_sequence = NULL;
}
priv->device = NULL;
button->priv->device = NULL;
}
/******************************************************************************/
@ -846,7 +822,7 @@ st_button_accessible_get_name (AtkObject *obj)
if (name != NULL)
return name;
return st_button_get_label (button);
return button->priv->text;
}
static void
@ -876,7 +852,7 @@ static void
st_button_accessible_compute_role (AtkObject *accessible,
StButton *button)
{
atk_object_set_role (accessible, st_button_get_toggle_mode (button)
atk_object_set_role (accessible, button->priv->is_toggle
? ATK_ROLE_TOGGLE_BUTTON : ATK_ROLE_PUSH_BUTTON);
}

View File

@ -29,8 +29,31 @@ G_BEGIN_DECLS
#include <st/st-bin.h>
#define ST_TYPE_BUTTON (st_button_get_type ())
G_DECLARE_DERIVABLE_TYPE (StButton, st_button, ST, BUTTON, StBin)
#define ST_TYPE_BUTTON (st_button_get_type ())
#define ST_BUTTON(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), ST_TYPE_BUTTON, StButton))
#define ST_IS_BUTTON(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), ST_TYPE_BUTTON))
#define ST_BUTTON_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), ST_TYPE_BUTTON, StButtonClass))
#define ST_IS_BUTTON_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), ST_TYPE_BUTTON))
#define ST_BUTTON_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), ST_TYPE_BUTTON, StButtonClass))
typedef struct _StButton StButton;
typedef struct _StButtonPrivate StButtonPrivate;
typedef struct _StButtonClass StButtonClass;
/**
* StButton:
*
* The contents of this structure is private and should only be accessed using
* the provided API.
*/
struct _StButton
{
/*< private >*/
StBin parent_instance;
StButtonPrivate *priv;
};
struct _StButtonClass
{
@ -43,6 +66,8 @@ struct _StButtonClass
void (* clicked) (StButton *button);
};
GType st_button_get_type (void) G_GNUC_CONST;
StWidget *st_button_new (void);
StWidget *st_button_new_with_label (const gchar *text);
const gchar *st_button_get_label (StButton *button);

View File

@ -34,6 +34,11 @@
#include <gdk/gdkx.h>
#include <string.h>
G_DEFINE_TYPE (StClipboard, st_clipboard, G_TYPE_OBJECT)
#define CLIPBOARD_PRIVATE(o) \
(G_TYPE_INSTANCE_GET_PRIVATE ((o), ST_TYPE_CLIPBOARD, StClipboardPrivate))
struct _StClipboardPrivate
{
Window clipboard_window;
@ -43,8 +48,6 @@ struct _StClipboardPrivate
gint n_targets;
};
G_DEFINE_TYPE_WITH_PRIVATE (StClipboard, st_clipboard, G_TYPE_OBJECT)
typedef struct _EventFilterData EventFilterData;
struct _EventFilterData
{
@ -179,6 +182,8 @@ st_clipboard_class_init (StClipboardClass *klass)
{
GObjectClass *object_class = G_OBJECT_CLASS (klass);
g_type_class_add_private (klass, sizeof (StClipboardPrivate));
object_class->get_property = st_clipboard_get_property;
object_class->set_property = st_clipboard_set_property;
object_class->dispose = st_clipboard_dispose;
@ -192,7 +197,7 @@ st_clipboard_init (StClipboard *self)
Display *dpy;
StClipboardPrivate *priv;
priv = self->priv = st_clipboard_get_instance_private (self);
priv = self->priv = CLIPBOARD_PRIVATE (self);
gdk_display = gdk_display_get_default ();
dpy = GDK_DISPLAY_XDISPLAY (gdk_display);

View File

@ -29,9 +29,29 @@
G_BEGIN_DECLS
#define ST_TYPE_CLIPBOARD st_clipboard_get_type()
G_DECLARE_FINAL_TYPE (StClipboard, st_clipboard, ST, CLIPBOARD, GObject)
#define ST_CLIPBOARD(obj) \
(G_TYPE_CHECK_INSTANCE_CAST ((obj), \
ST_TYPE_CLIPBOARD, StClipboard))
#define ST_CLIPBOARD_CLASS(klass) \
(G_TYPE_CHECK_CLASS_CAST ((klass), \
ST_TYPE_CLIPBOARD, StClipboardClass))
#define ST_IS_CLIPBOARD(obj) \
(G_TYPE_CHECK_INSTANCE_TYPE ((obj), \
ST_TYPE_CLIPBOARD))
#define ST_IS_CLIPBOARD_CLASS(klass) \
(G_TYPE_CHECK_CLASS_TYPE ((klass), \
ST_TYPE_CLIPBOARD))
#define ST_CLIPBOARD_GET_CLASS(obj) \
(G_TYPE_INSTANCE_GET_CLASS ((obj), \
ST_TYPE_CLIPBOARD, StClipboardClass))
typedef struct _StClipboard StClipboard;
typedef struct _StClipboardClass StClipboardClass;
typedef struct _StClipboardPrivate StClipboardPrivate;
/**
@ -47,6 +67,11 @@ struct _StClipboard
StClipboardPrivate *priv;
};
struct _StClipboardClass
{
GObjectClass parent_class;
};
typedef enum {
ST_CLIPBOARD_TYPE_PRIMARY,
ST_CLIPBOARD_TYPE_CLIPBOARD
@ -64,6 +89,8 @@ typedef void (*StClipboardCallbackFunc) (StClipboard *clipboard,
const gchar *text,
gpointer user_data);
GType st_clipboard_get_type (void);
StClipboard* st_clipboard_get_default (void);
void st_clipboard_get_text (StClipboard *clipboard,

View File

@ -36,14 +36,16 @@
#include <cairo.h>
typedef struct _StDrawingAreaPrivate StDrawingAreaPrivate;
G_DEFINE_TYPE(StDrawingArea, st_drawing_area, ST_TYPE_WIDGET);
struct _StDrawingAreaPrivate {
CoglTexture *texture;
CoglPipeline *pipeline;
cairo_t *context;
guint needs_repaint : 1;
guint in_repaint : 1;
};
G_DEFINE_TYPE_WITH_PRIVATE (StDrawingArea, st_drawing_area, ST_TYPE_WIDGET);
/* Signals */
enum
{
@ -53,61 +55,124 @@ enum
static guint st_drawing_area_signals [LAST_SIGNAL] = { 0 };
static gboolean
draw_content (ClutterCanvas *canvas,
cairo_t *cr,
int width,
int height,
gpointer user_data)
static void
st_drawing_area_dispose (GObject *object)
{
StDrawingArea *area = ST_DRAWING_AREA (user_data);
StDrawingAreaPrivate *priv = st_drawing_area_get_instance_private (area);
StDrawingArea *area = ST_DRAWING_AREA (object);
StDrawingAreaPrivate *priv = area->priv;
priv->context = cr;
priv->in_repaint = TRUE;
g_clear_pointer (&priv->pipeline, cogl_object_unref);
g_clear_pointer (&priv->texture, cogl_object_unref);
clutter_cairo_clear (cr);
g_signal_emit (area, st_drawing_area_signals[REPAINT], 0);
priv->context = NULL;
priv->in_repaint = FALSE;
return TRUE;
G_OBJECT_CLASS (st_drawing_area_parent_class)->dispose (object);
}
static void
st_drawing_area_allocate (ClutterActor *self,
const ClutterActorBox *box,
ClutterAllocationFlags flags)
st_drawing_area_paint (ClutterActor *self)
{
StDrawingArea *area = ST_DRAWING_AREA (self);
StDrawingAreaPrivate *priv = area->priv;
StThemeNode *theme_node = st_widget_get_theme_node (ST_WIDGET (self));
ClutterContent *content = clutter_actor_get_content (self);
ClutterActorBox allocation_box;
ClutterActorBox content_box;
int width, height;
clutter_actor_set_allocation (self, box, flags);
st_theme_node_get_content_box (theme_node, box, &content_box);
(CLUTTER_ACTOR_CLASS (st_drawing_area_parent_class))->paint (self);
clutter_actor_get_allocation_box (self, &allocation_box);
st_theme_node_get_content_box (theme_node, &allocation_box, &content_box);
width = (int)(0.5 + content_box.x2 - content_box.x1);
height = (int)(0.5 + content_box.y2 - content_box.y1);
clutter_canvas_set_size (CLUTTER_CANVAS (content), width, height);
if (priv->pipeline == NULL)
{
CoglContext *ctx =
clutter_backend_get_cogl_context (clutter_get_default_backend ());
priv->pipeline = cogl_pipeline_new (ctx);
}
if (priv->texture != NULL &&
(width != (int)cogl_texture_get_width (priv->texture) ||
height != (int)cogl_texture_get_height (priv->texture)))
{
cogl_object_unref (priv->texture);
priv->texture = NULL;
}
if (width > 0 && height > 0)
{
if (priv->texture == NULL)
{
priv->texture = cogl_texture_new_with_size (width, height,
COGL_TEXTURE_NONE,
CLUTTER_CAIRO_FORMAT_ARGB32);
priv->needs_repaint = TRUE;
}
if (priv->needs_repaint)
{
cairo_surface_t *surface;
surface = cairo_image_surface_create (CAIRO_FORMAT_ARGB32, width, height);
priv->context = cairo_create (surface);
priv->in_repaint = TRUE;
priv->needs_repaint = FALSE;
g_signal_emit ((GObject*)area, st_drawing_area_signals[REPAINT], 0);
priv->in_repaint = FALSE;
cairo_destroy (priv->context);
priv->context = NULL;
cogl_texture_set_region (priv->texture, 0, 0, 0, 0, width, height, width, height,
CLUTTER_CAIRO_FORMAT_ARGB32,
cairo_image_surface_get_stride (surface),
cairo_image_surface_get_data (surface));
cairo_surface_destroy (surface);
}
}
cogl_pipeline_set_layer_texture (priv->pipeline, 0, priv->texture);
if (priv->texture)
{
CoglColor color;
guint8 paint_opacity;
CoglFramebuffer *fb = cogl_get_draw_framebuffer ();
paint_opacity = clutter_actor_get_paint_opacity (self);
cogl_color_init_from_4ub (&color, paint_opacity, paint_opacity, paint_opacity, paint_opacity);
cogl_pipeline_set_color (priv->pipeline, &color);
cogl_framebuffer_draw_rectangle (fb, priv->pipeline,
content_box.x1, content_box.y1,
content_box.x2, content_box.y2);
}
}
static void
st_drawing_area_style_changed (StWidget *self)
{
StDrawingArea *area = ST_DRAWING_AREA (self);
StDrawingAreaPrivate *priv = area->priv;
(ST_WIDGET_CLASS (st_drawing_area_parent_class))->style_changed (self);
st_drawing_area_queue_repaint (ST_DRAWING_AREA (self));
priv->needs_repaint = TRUE;
}
static void
st_drawing_area_class_init (StDrawingAreaClass *klass)
{
GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
ClutterActorClass *actor_class = CLUTTER_ACTOR_CLASS (klass);
StWidgetClass *widget_class = ST_WIDGET_CLASS (klass);
actor_class->allocate = st_drawing_area_allocate;
gobject_class->dispose = st_drawing_area_dispose;
actor_class->paint = st_drawing_area_paint;
widget_class->style_changed = st_drawing_area_style_changed;
st_drawing_area_signals[REPAINT] =
@ -117,15 +182,16 @@ st_drawing_area_class_init (StDrawingAreaClass *klass)
G_STRUCT_OFFSET (StDrawingAreaClass, repaint),
NULL, NULL, NULL,
G_TYPE_NONE, 0);
g_type_class_add_private (gobject_class, sizeof (StDrawingAreaPrivate));
}
static void
st_drawing_area_init (StDrawingArea *area)
{
ClutterContent *content = clutter_canvas_new ();
g_signal_connect (content, "draw", G_CALLBACK (draw_content), area);
clutter_actor_set_content (CLUTTER_ACTOR (area), content);
g_object_unref (content);
area->priv = G_TYPE_INSTANCE_GET_PRIVATE (area, ST_TYPE_DRAWING_AREA,
StDrawingAreaPrivate);
area->priv->texture = NULL;
}
/**
@ -141,9 +207,14 @@ st_drawing_area_init (StDrawingArea *area)
void
st_drawing_area_queue_repaint (StDrawingArea *area)
{
StDrawingAreaPrivate *priv;
g_return_if_fail (ST_IS_DRAWING_AREA (area));
clutter_content_invalidate (clutter_actor_get_content (CLUTTER_ACTOR (area)));
priv = area->priv;
priv->needs_repaint = TRUE;
clutter_actor_queue_redraw (CLUTTER_ACTOR (area));
}
/**
@ -158,14 +229,10 @@ st_drawing_area_queue_repaint (StDrawingArea *area)
cairo_t *
st_drawing_area_get_context (StDrawingArea *area)
{
StDrawingAreaPrivate *priv;
g_return_val_if_fail (ST_IS_DRAWING_AREA (area), NULL);
g_return_val_if_fail (area->priv->in_repaint, NULL);
priv = st_drawing_area_get_instance_private (area);
g_return_val_if_fail (priv->in_repaint, NULL);
return priv->context;
return area->priv->context;
}
/**
@ -184,19 +251,14 @@ st_drawing_area_get_surface_size (StDrawingArea *area,
guint *height)
{
StDrawingAreaPrivate *priv;
ClutterContent *content;
float w, h;
g_return_if_fail (ST_IS_DRAWING_AREA (area));
g_return_if_fail (area->priv->in_repaint);
priv = st_drawing_area_get_instance_private (area);
g_return_if_fail (priv->in_repaint);
content = clutter_actor_get_content (CLUTTER_ACTOR (area));
clutter_content_get_preferred_size (content, &w, &h);
priv = area->priv;
if (width)
*width = (guint)w;
*width = cogl_texture_get_width (priv->texture);
if (height)
*height = (guint)h;
*height = cogl_texture_get_height (priv->texture);
}

View File

@ -24,9 +24,24 @@
#include "st-widget.h"
#include <cairo.h>
#define ST_TYPE_DRAWING_AREA (st_drawing_area_get_type ())
G_DECLARE_DERIVABLE_TYPE (StDrawingArea, st_drawing_area,
ST, DRAWING_AREA, StWidget)
#define ST_TYPE_DRAWING_AREA (st_drawing_area_get_type ())
#define ST_DRAWING_AREA(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), ST_TYPE_DRAWING_AREA, StDrawingArea))
#define ST_DRAWING_AREA_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), ST_TYPE_DRAWING_AREA, StDrawingAreaClass))
#define ST_IS_DRAWING_AREA(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), ST_TYPE_DRAWING_AREA))
#define ST_IS_DRAWING_AREA_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), ST_TYPE_DRAWING_AREA))
#define ST_DRAWING_AREA_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), ST_TYPE_DRAWING_AREA, StDrawingAreaClass))
typedef struct _StDrawingArea StDrawingArea;
typedef struct _StDrawingAreaClass StDrawingAreaClass;
typedef struct _StDrawingAreaPrivate StDrawingAreaPrivate;
struct _StDrawingArea
{
StWidget parent;
StDrawingAreaPrivate *priv;
};
struct _StDrawingAreaClass
{
@ -35,6 +50,8 @@ struct _StDrawingAreaClass
void (*repaint) (StDrawingArea *area);
};
GType st_drawing_area_get_type (void) G_GNUC_CONST;
void st_drawing_area_queue_repaint (StDrawingArea *area);
cairo_t *st_drawing_area_get_context (StDrawingArea *area);
void st_drawing_area_get_surface_size (StDrawingArea *area,

View File

@ -87,10 +87,10 @@ enum
LAST_SIGNAL
};
#define ST_ENTRY_PRIV(x) st_entry_get_instance_private ((StEntry *) x)
#define ST_ENTRY_GET_PRIVATE(obj) (G_TYPE_INSTANCE_GET_PRIVATE ((obj), ST_TYPE_ENTRY, StEntryPrivate))
#define ST_ENTRY_PRIV(x) ((StEntry *) x)->priv
typedef struct _StEntryPrivate StEntryPrivate;
struct _StEntryPrivate
{
ClutterActor *entry;
@ -108,7 +108,7 @@ struct _StEntryPrivate
static guint entry_signals[LAST_SIGNAL] = { 0, };
G_DEFINE_TYPE_WITH_PRIVATE (StEntry, st_entry, ST_TYPE_WIDGET);
G_DEFINE_TYPE (StEntry, st_entry, ST_TYPE_WIDGET);
static GType st_entry_accessible_get_type (void) G_GNUC_CONST;
@ -183,8 +183,7 @@ st_entry_get_property (GObject *gobject,
static void
show_capslock_feedback (StEntry *entry)
{
StEntryPrivate *priv = ST_ENTRY_PRIV (entry);
if (priv->secondary_icon == NULL)
if (entry->priv->secondary_icon == NULL)
{
ClutterActor *icon = g_object_new (ST_TYPE_ICON,
"style-class", "capslock-warning",
@ -192,18 +191,17 @@ show_capslock_feedback (StEntry *entry)
NULL);
st_entry_set_secondary_icon (entry, icon);
priv->capslock_warning_shown = TRUE;
entry->priv->capslock_warning_shown = TRUE;
}
}
static void
remove_capslock_feedback (StEntry *entry)
{
StEntryPrivate *priv = ST_ENTRY_PRIV (entry);
if (priv->capslock_warning_shown)
if (entry->priv->capslock_warning_shown)
{
st_entry_set_secondary_icon (entry, NULL);
priv->capslock_warning_shown = FALSE;
entry->priv->capslock_warning_shown = FALSE;
}
}
@ -212,9 +210,8 @@ keymap_state_changed (GdkKeymap *keymap,
gpointer user_data)
{
StEntry *entry = ST_ENTRY (user_data);
StEntryPrivate *priv = ST_ENTRY_PRIV (entry);
if (clutter_text_get_password_char (CLUTTER_TEXT (priv->entry)) != 0)
if (clutter_text_get_password_char (CLUTTER_TEXT (entry->priv->entry)) != 0)
{
if (gdk_keymap_get_caps_lock_state (keymap))
show_capslock_feedback (entry);
@ -227,7 +224,7 @@ static void
st_entry_dispose (GObject *object)
{
StEntry *entry = ST_ENTRY (object);
StEntryPrivate *priv = ST_ENTRY_PRIV (entry);
StEntryPrivate *priv = entry->priv;
GdkKeymap *keymap;
if (priv->entry)
@ -483,7 +480,7 @@ clutter_text_focus_in_cb (ClutterText *text,
ClutterActor *actor)
{
StEntry *entry = ST_ENTRY (actor);
StEntryPrivate *priv = ST_ENTRY_PRIV (entry);
StEntryPrivate *priv = entry->priv;
GdkKeymap *keymap;
/* remove the hint if visible */
@ -509,7 +506,7 @@ clutter_text_focus_out_cb (ClutterText *text,
ClutterActor *actor)
{
StEntry *entry = ST_ENTRY (actor);
StEntryPrivate *priv = ST_ENTRY_PRIV (entry);
StEntryPrivate *priv = entry->priv;
GdkKeymap *keymap;
st_widget_remove_style_pseudo_class (ST_WIDGET (actor), "focus");
@ -535,9 +532,8 @@ clutter_text_password_char_cb (GObject *object,
gpointer user_data)
{
StEntry *entry = ST_ENTRY (user_data);
StEntryPrivate *priv = ST_ENTRY_PRIV (entry);
if (clutter_text_get_password_char (CLUTTER_TEXT (priv->entry)) == 0)
if (clutter_text_get_password_char (CLUTTER_TEXT (entry->priv->entry)) == 0)
remove_capslock_feedback (entry);
}
@ -546,8 +542,7 @@ st_entry_clipboard_callback (StClipboard *clipboard,
const gchar *text,
gpointer data)
{
StEntryPrivate *priv = ST_ENTRY_PRIV (data);
ClutterText *ctext = (ClutterText*)priv->entry;
ClutterText *ctext = (ClutterText*)((StEntry *) data)->priv->entry;
gint cursor_pos;
if (!text)
@ -726,15 +721,14 @@ st_entry_set_cursor (StEntry *entry,
{
cursor_func (entry, use_ibeam, cursor_func_data);
((StEntryPrivate *)ST_ENTRY_PRIV (entry))->has_ibeam = use_ibeam;
entry->priv->has_ibeam = use_ibeam;
}
static gboolean
st_entry_enter_event (ClutterActor *actor,
ClutterCrossingEvent *event)
{
StEntryPrivate *priv = ST_ENTRY_PRIV (actor);
if (event->source == priv->entry && event->related != NULL)
if (event->source == ST_ENTRY (actor)->priv->entry && event->related != NULL)
st_entry_set_cursor (ST_ENTRY (actor), TRUE);
return CLUTTER_ACTOR_CLASS (st_entry_parent_class)->enter_event (actor, event);
@ -744,8 +738,7 @@ static gboolean
st_entry_leave_event (ClutterActor *actor,
ClutterCrossingEvent *event)
{
StEntryPrivate *priv = ST_ENTRY_PRIV (actor);
if (event->source == priv->entry && event->related != NULL)
if (event->source == ST_ENTRY (actor)->priv->entry && event->related != NULL)
st_entry_set_cursor (ST_ENTRY (actor), FALSE);
return CLUTTER_ACTOR_CLASS (st_entry_parent_class)->leave_event (actor, event);
@ -754,8 +747,7 @@ st_entry_leave_event (ClutterActor *actor,
static void
st_entry_unmap (ClutterActor *actor)
{
StEntryPrivate *priv = ST_ENTRY_PRIV (actor);
if (priv->has_ibeam)
if (ST_ENTRY (actor)->priv->has_ibeam)
st_entry_set_cursor (ST_ENTRY (actor), FALSE);
CLUTTER_ACTOR_CLASS (st_entry_parent_class)->unmap (actor);
@ -769,6 +761,8 @@ st_entry_class_init (StEntryClass *klass)
StWidgetClass *widget_class = ST_WIDGET_CLASS (klass);
GParamSpec *pspec;
g_type_class_add_private (klass, sizeof (StEntryPrivate));
gobject_class->set_property = st_entry_set_property;
gobject_class->get_property = st_entry_get_property;
gobject_class->finalize = st_entry_finalize;
@ -864,7 +858,7 @@ st_entry_init (StEntry *entry)
{
StEntryPrivate *priv;
priv = st_entry_get_instance_private (entry);
priv = entry->priv = ST_ENTRY_GET_PRIVATE (entry);
priv->entry = g_object_new (ST_TYPE_IM_TEXT,
"line-alignment", PANGO_ALIGN_LEFT,
@ -926,15 +920,12 @@ st_entry_new (const gchar *text)
const gchar *
st_entry_get_text (StEntry *entry)
{
StEntryPrivate *priv;
g_return_val_if_fail (ST_IS_ENTRY (entry), NULL);
priv = st_entry_get_instance_private (entry);
if (priv->hint_visible)
if (entry->priv->hint_visible)
return "";
else
return clutter_text_get_text (CLUTTER_TEXT (priv->entry));
return clutter_text_get_text (CLUTTER_TEXT (entry->priv->entry));
}
/**
@ -952,7 +943,7 @@ st_entry_set_text (StEntry *entry,
g_return_if_fail (ST_IS_ENTRY (entry));
priv = st_entry_get_instance_private (entry);
priv = entry->priv;
/* set a hint if we are blanking the entry */
if (priv->hint
@ -989,7 +980,7 @@ st_entry_get_clutter_text (StEntry *entry)
{
g_return_val_if_fail (ST_ENTRY (entry), NULL);
return ((StEntryPrivate *)ST_ENTRY_PRIV (entry))->entry;
return entry->priv->entry;
}
/**
@ -1009,7 +1000,7 @@ st_entry_set_hint_text (StEntry *entry,
g_return_if_fail (ST_IS_ENTRY (entry));
priv = st_entry_get_instance_private (entry);
priv = entry->priv;
g_free (priv->hint);
@ -1039,7 +1030,7 @@ st_entry_get_hint_text (StEntry *entry)
{
g_return_val_if_fail (ST_IS_ENTRY (entry), NULL);
return ((StEntryPrivate *)ST_ENTRY_PRIV (entry))->hint;
return entry->priv->hint;
}
/**
@ -1055,13 +1046,11 @@ void
st_entry_set_input_purpose (StEntry *entry,
GtkInputPurpose purpose)
{
StEntryPrivate *priv;
StIMText *imtext;
g_return_if_fail (ST_IS_ENTRY (entry));
priv = st_entry_get_instance_private (entry);
imtext = ST_IM_TEXT (priv->entry);
imtext = ST_IM_TEXT (entry->priv->entry);
if (st_im_text_get_input_purpose (imtext) != purpose)
{
@ -1080,12 +1069,9 @@ st_entry_set_input_purpose (StEntry *entry,
GtkInputPurpose
st_entry_get_input_purpose (StEntry *entry)
{
StEntryPrivate *priv;
g_return_val_if_fail (ST_IS_ENTRY (entry), GTK_INPUT_PURPOSE_FREE_FORM);
priv = st_entry_get_instance_private (entry);
return st_im_text_get_input_purpose (ST_IM_TEXT (priv->entry));
return st_im_text_get_input_purpose (ST_IM_TEXT (entry->priv->entry));
}
/**
@ -1100,13 +1086,11 @@ void
st_entry_set_input_hints (StEntry *entry,
GtkInputHints hints)
{
StEntryPrivate *priv;
StIMText *imtext;
g_return_if_fail (ST_IS_ENTRY (entry));
priv = st_entry_get_instance_private (entry);
imtext = ST_IM_TEXT (priv->entry);
imtext = ST_IM_TEXT (entry->priv->entry);
if (st_im_text_get_input_hints (imtext) != hints)
{
@ -1125,12 +1109,9 @@ st_entry_set_input_hints (StEntry *entry,
GtkInputHints
st_entry_get_input_hints (StEntry *entry)
{
StEntryPrivate *priv;
g_return_val_if_fail (ST_IS_ENTRY (entry), GTK_INPUT_HINT_NONE);
priv = st_entry_get_instance_private (entry);
return st_im_text_get_input_hints (ST_IM_TEXT (priv->entry));
return st_im_text_get_input_hints (ST_IM_TEXT (entry->priv->entry));
}
static gboolean
@ -1138,7 +1119,7 @@ _st_entry_icon_press_cb (ClutterActor *actor,
ClutterButtonEvent *event,
StEntry *entry)
{
StEntryPrivate *priv = ST_ENTRY_PRIV (actor);
StEntryPrivate *priv = entry->priv;
if (actor == priv->primary_icon)
g_signal_emit (entry, entry_signals[PRIMARY_ICON_CLICKED], 0);
@ -1190,7 +1171,7 @@ st_entry_set_primary_icon (StEntry *entry,
g_return_if_fail (ST_IS_ENTRY (entry));
priv = st_entry_get_instance_private (entry);
priv = entry->priv;
_st_entry_set_icon (entry, &priv->primary_icon, icon);
}
@ -1210,7 +1191,7 @@ st_entry_set_secondary_icon (StEntry *entry,
g_return_if_fail (ST_IS_ENTRY (entry));
priv = st_entry_get_instance_private (entry);
priv = entry->priv;
_st_entry_set_icon (entry, &priv->secondary_icon, icon);
}
@ -1261,7 +1242,6 @@ static gint
st_entry_accessible_get_n_children (AtkObject *obj)
{
StEntry *entry = NULL;
StEntryPrivate *priv;
g_return_val_if_fail (ST_IS_ENTRY_ACCESSIBLE (obj), 0);
@ -1270,8 +1250,7 @@ st_entry_accessible_get_n_children (AtkObject *obj)
if (entry == NULL)
return 0;
priv = st_entry_get_instance_private (entry);
if (priv->entry == NULL)
if (entry->priv->entry == NULL)
return 0;
else
return 1;
@ -1282,7 +1261,6 @@ st_entry_accessible_ref_child (AtkObject *obj,
gint i)
{
StEntry *entry = NULL;
StEntryPrivate *priv;
AtkObject *result = NULL;
g_return_val_if_fail (ST_IS_ENTRY_ACCESSIBLE (obj), NULL);
@ -1293,11 +1271,10 @@ st_entry_accessible_ref_child (AtkObject *obj,
if (entry == NULL)
return NULL;
priv = st_entry_get_instance_private (entry);
if (priv->entry == NULL)
if (entry->priv->entry == NULL)
return NULL;
result = clutter_actor_get_accessible (priv->entry);
result = clutter_actor_get_accessible (entry->priv->entry);
g_object_ref (result);
return result;

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