cinnamon: update to 2.2.16.
This commit is contained in:
parent
b660fa9d1b
commit
2fef51d7b4
6 changed files with 74 additions and 430 deletions
|
@ -0,0 +1,17 @@
|
||||||
|
Index: cinnamon/files/usr/share/cinnamon/applets/calendar@cinnamon.org/applet.js
|
||||||
|
===================================================================
|
||||||
|
--- cinnamon.orig/files/usr/share/cinnamon/applets/calendar@cinnamon.org/applet.js 2014-04-27 11:56:10.582581808 +0200
|
||||||
|
+++ cinnamon/files/usr/share/cinnamon/applets/calendar@cinnamon.org/applet.js 2014-07-14 00:44:37.882215797 +0200
|
||||||
|
@@ -94,7 +94,11 @@
|
||||||
|
|
||||||
|
// https://bugzilla.gnome.org/show_bug.cgi?id=655129
|
||||||
|
this._upClient = new UPowerGlib.Client();
|
||||||
|
- this._upClient.connect('notify-resume', this._updateClockAndDate);
|
||||||
|
+ try {
|
||||||
|
+ this._upClient.connect('notify-resume', this._updateClockAndDate);
|
||||||
|
+ } catch (e) {
|
||||||
|
+ this._upClient.connect('notify::resume', this._updateClockAndDate);
|
||||||
|
+ }
|
||||||
|
|
||||||
|
// Start the clock
|
||||||
|
this.on_settings_changed();
|
|
@ -1,282 +0,0 @@
|
||||||
diff -ruN a/configure.ac b/configure.ac
|
|
||||||
--- a/configure.ac 2013-10-16 15:10:22.237511846 +0000
|
|
||||||
+++ b/configure.ac 2013-10-16 15:00:45.501321091 +0000
|
|
||||||
@@ -44,15 +44,15 @@
|
|
||||||
|
|
||||||
# We need at least this, since gst_plugin_register_static() was added
|
|
||||||
# in 0.10.16, but nothing older than 0.10.21 has been tested.
|
|
||||||
-GSTREAMER_MIN_VERSION=0.10.16
|
|
||||||
+GSTREAMER_MIN_VERSION=0.11.92
|
|
||||||
|
|
||||||
recorder_modules=
|
|
||||||
build_recorder=false
|
|
||||||
AC_MSG_CHECKING([for GStreamer (needed for recording functionality)])
|
|
||||||
-if $PKG_CONFIG --exists gstreamer-0.10 '>=' $GSTREAMER_MIN_VERSION ; then
|
|
||||||
+if $PKG_CONFIG --exists gstreamer-1.0 '>=' $GSTREAMER_MIN_VERSION ; then
|
|
||||||
AC_MSG_RESULT(yes)
|
|
||||||
build_recorder=true
|
|
||||||
- recorder_modules="gstreamer-0.10 gstreamer-base-0.10 x11"
|
|
||||||
+ recorder_modules="gstreamer-1.0 gstreamer-base-1.0 x11"
|
|
||||||
PKG_CHECK_MODULES(TEST_CINNAMON_RECORDER, $recorder_modules clutter-1.0 xfixes)
|
|
||||||
else
|
|
||||||
AC_MSG_RESULT(no)
|
|
||||||
diff -ruN a/src/cinnamon-recorder.c b/src/cinnamon-recorder.c
|
|
||||||
--- a/src/cinnamon-recorder.c 2013-10-16 15:10:22.344177808 +0000
|
|
||||||
+++ b/src/cinnamon-recorder.c 2013-10-16 15:26:42.801040167 +0000
|
|
||||||
@@ -8,6 +8,7 @@
|
|
||||||
#include <string.h>
|
|
||||||
#include <unistd.h>
|
|
||||||
|
|
||||||
+#define GST_USE_UNSTABLE_API
|
|
||||||
#include <gst/gst.h>
|
|
||||||
|
|
||||||
#include "cinnamon-recorder-src.h"
|
|
||||||
@@ -147,7 +148,7 @@
|
|
||||||
* (Theora does have some support for frames at non-uniform times, but
|
|
||||||
* things seem to break down if there are large gaps.)
|
|
||||||
*/
|
|
||||||
-#define DEFAULT_PIPELINE "videorate ! vp8enc quality=10 speed=2 threads=%T ! queue ! webmmux"
|
|
||||||
+#define DEFAULT_PIPELINE "vp8enc min_quantizer=13 max_quantizer=13 cpu-used=5 deadline=1000000 threads=%T ! queue ! webmmux"
|
|
||||||
|
|
||||||
/* The default filename pattern. Example cinnamon-20090311b-2.webm
|
|
||||||
*/
|
|
||||||
@@ -446,6 +447,7 @@
|
|
||||||
recorder_draw_cursor (CinnamonRecorder *recorder,
|
|
||||||
GstBuffer *buffer)
|
|
||||||
{
|
|
||||||
+ GstMapInfo info;
|
|
||||||
cairo_surface_t *surface;
|
|
||||||
cairo_t *cr;
|
|
||||||
|
|
||||||
@@ -464,7 +466,8 @@
|
|
||||||
if (!recorder->cursor_image)
|
|
||||||
return;
|
|
||||||
|
|
||||||
- surface = cairo_image_surface_create_for_data (GST_BUFFER_DATA(buffer),
|
|
||||||
+ gst_buffer_map (buffer, &info, GST_MAP_WRITE);
|
|
||||||
+ surface = cairo_image_surface_create_for_data (info.data,
|
|
||||||
CAIRO_FORMAT_ARGB32,
|
|
||||||
recorder->stage_width,
|
|
||||||
recorder->stage_height,
|
|
||||||
@@ -479,6 +482,7 @@
|
|
||||||
|
|
||||||
cairo_destroy (cr);
|
|
||||||
cairo_surface_destroy (surface);
|
|
||||||
+ gst_buffer_unmap (buffer, &info);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Draw an overlay indicating how much of the target memory is used
|
|
||||||
@@ -541,10 +545,11 @@
|
|
||||||
data = g_malloc (size);
|
|
||||||
|
|
||||||
buffer = gst_buffer_new();
|
|
||||||
- GST_BUFFER_SIZE(buffer) = size;
|
|
||||||
- GST_BUFFER_MALLOCDATA(buffer) = GST_BUFFER_DATA(buffer) = data;
|
|
||||||
+ gst_buffer_insert_memory (buffer, -1,
|
|
||||||
+ gst_memory_new_wrapped (0, data, size, 0,
|
|
||||||
+ size, data, g_free));
|
|
||||||
|
|
||||||
- GST_BUFFER_TIMESTAMP(buffer) = get_wall_time() - recorder->start_time;
|
|
||||||
+ GST_BUFFER_PTS(buffer) = get_wall_time() - recorder->start_time;
|
|
||||||
|
|
||||||
cogl_read_pixels (0, 0,
|
|
||||||
recorder->stage_width, recorder->stage_height,
|
|
||||||
@@ -1042,23 +1047,18 @@
|
|
||||||
{
|
|
||||||
GstCaps *caps;
|
|
||||||
|
|
||||||
- /* The data is always native-endian xRGB; ffmpegcolorspace
|
|
||||||
+ /* The data is always native-endian xRGB; videoconvert
|
|
||||||
* doesn't support little-endian xRGB, but does support
|
|
||||||
* big-endian BGRx.
|
|
||||||
*/
|
|
||||||
- caps = gst_caps_new_simple ("video/x-raw-rgb",
|
|
||||||
- "bpp", G_TYPE_INT, 32,
|
|
||||||
- "depth", G_TYPE_INT, 24,
|
|
||||||
+ caps = gst_caps_new_simple ("video/x-raw",
|
|
||||||
#if G_BYTE_ORDER == G_LITTLE_ENDIAN
|
|
||||||
- "red_mask", G_TYPE_INT, 0x0000ff00,
|
|
||||||
- "green_mask", G_TYPE_INT, 0x00ff0000,
|
|
||||||
- "blue_mask", G_TYPE_INT, 0xff000000,
|
|
||||||
+ "format", G_TYPE_STRING, "BGRx",
|
|
||||||
#else
|
|
||||||
- "red_mask", G_TYPE_INT, 0xff0000,
|
|
||||||
- "green_mask", G_TYPE_INT, 0x00ff00,
|
|
||||||
- "blue_mask", G_TYPE_INT, 0x0000ff,
|
|
||||||
+ "format", G_TYPE_STRING, "xRGB",
|
|
||||||
#endif
|
|
||||||
- "endianness", G_TYPE_INT, G_BIG_ENDIAN,
|
|
||||||
+ "bpp", G_TYPE_INT, 32,
|
|
||||||
+ "depth", G_TYPE_INT, 24,
|
|
||||||
"framerate", GST_TYPE_FRACTION, pipeline->recorder->framerate, 1,
|
|
||||||
"width", G_TYPE_INT, pipeline->recorder->stage_width,
|
|
||||||
"height", G_TYPE_INT, pipeline->recorder->stage_height,
|
|
||||||
@@ -1076,7 +1076,7 @@
|
|
||||||
{
|
|
||||||
GstPad *sink_pad = NULL, *src_pad = NULL;
|
|
||||||
gboolean result = FALSE;
|
|
||||||
- GstElement *ffmpegcolorspace;
|
|
||||||
+ GstElement *videoconvert;
|
|
||||||
|
|
||||||
sink_pad = gst_bin_find_unlinked_pad (GST_BIN (pipeline->pipeline), GST_PAD_SINK);
|
|
||||||
if (sink_pad == NULL)
|
|
||||||
@@ -1095,19 +1095,19 @@
|
|
||||||
|
|
||||||
recorder_pipeline_set_caps (pipeline);
|
|
||||||
|
|
||||||
- /* The ffmpegcolorspace element is a generic converter; it will convert
|
|
||||||
+ /* The videoconvert element is a generic converter; it will convert
|
|
||||||
* our supplied fixed format data into whatever the encoder wants
|
|
||||||
*/
|
|
||||||
- ffmpegcolorspace = gst_element_factory_make ("ffmpegcolorspace", NULL);
|
|
||||||
- if (!ffmpegcolorspace)
|
|
||||||
+ videoconvert = gst_element_factory_make ("videoconvert", NULL);
|
|
||||||
+ if (!videoconvert)
|
|
||||||
{
|
|
||||||
- g_warning("Can't create ffmpegcolorspace element");
|
|
||||||
+ g_warning("Can't create videoconvert element");
|
|
||||||
goto out;
|
|
||||||
}
|
|
||||||
- gst_bin_add (GST_BIN (pipeline->pipeline), ffmpegcolorspace);
|
|
||||||
+ gst_bin_add (GST_BIN (pipeline->pipeline), videoconvert);
|
|
||||||
|
|
||||||
- gst_element_link_many (pipeline->src, ffmpegcolorspace, NULL);
|
|
||||||
- src_pad = gst_element_get_static_pad (ffmpegcolorspace, "src");
|
|
||||||
+ gst_element_link_many (pipeline->src, videoconvert, NULL);
|
|
||||||
+ src_pad = gst_element_get_static_pad (videoconvert, "src");
|
|
||||||
|
|
||||||
if (!src_pad)
|
|
||||||
{
|
|
||||||
@@ -1637,7 +1637,7 @@
|
|
||||||
* might be used to send the output to an icecast server
|
|
||||||
* via shout2send or similar.
|
|
||||||
*
|
|
||||||
- * The default value is 'videorate ! theoraenc ! oggmux'
|
|
||||||
+ * The default value is 'vp8enc min_quantizer=13 max_quantizer=13 cpu-used=5 deadline=1000000 threads=%T ! queue ! webmmux'
|
|
||||||
*/
|
|
||||||
void
|
|
||||||
cinnamon_recorder_set_pipeline (CinnamonRecorder *recorder,
|
|
||||||
diff -ruN a/src/cinnamon-recorder-src.c b/src/cinnamon-recorder-src.c
|
|
||||||
--- a/src/cinnamon-recorder-src.c 2013-10-16 15:10:22.347511119 +0000
|
|
||||||
+++ b/src/cinnamon-recorder-src.c 2013-10-16 15:33:41.581609206 +0000
|
|
||||||
@@ -2,6 +2,7 @@
|
|
||||||
|
|
||||||
#include "config.h"
|
|
||||||
|
|
||||||
+#define GST_USE_UNSTABLE_API
|
|
||||||
#include <gst/base/gstpushsrc.h>
|
|
||||||
|
|
||||||
#include "cinnamon-recorder-src.h"
|
|
||||||
@@ -12,6 +13,9 @@
|
|
||||||
|
|
||||||
GMutex *mutex;
|
|
||||||
|
|
||||||
+ GstClock *clock;
|
|
||||||
+ GstClockTime last_frame_time;
|
|
||||||
+
|
|
||||||
GstCaps *caps;
|
|
||||||
GAsyncQueue *queue;
|
|
||||||
gboolean closed;
|
|
||||||
@@ -33,21 +37,21 @@
|
|
||||||
/* Special marker value once the source is closed */
|
|
||||||
#define RECORDER_QUEUE_END ((GstBuffer *)1)
|
|
||||||
|
|
||||||
-GST_BOILERPLATE(CinnamonRecorderSrc, cinnamon_recorder_src, GstPushSrc, GST_TYPE_PUSH_SRC);
|
|
||||||
+G_DEFINE_TYPE(CinnamonRecorderSrc, cinnamon_recorder_src, GST_TYPE_PUSH_SRC);
|
|
||||||
|
|
||||||
static void
|
|
||||||
-cinnamon_recorder_src_init (CinnamonRecorderSrc *src,
|
|
||||||
- CinnamonRecorderSrcClass *klass)
|
|
||||||
+cinnamon_recorder_src_init (CinnamonRecorderSrc *src)
|
|
||||||
{
|
|
||||||
+ gst_base_src_set_format (GST_BASE_SRC (src), GST_FORMAT_TIME);
|
|
||||||
+ gst_base_src_set_live (GST_BASE_SRC (src), TRUE);
|
|
||||||
+
|
|
||||||
+ src->clock = gst_system_clock_obtain ();
|
|
||||||
+ src->last_frame_time = 0;
|
|
||||||
+
|
|
||||||
src->queue = g_async_queue_new ();
|
|
||||||
src->mutex = g_mutex_new ();
|
|
||||||
}
|
|
||||||
|
|
||||||
-static void
|
|
||||||
-cinnamon_recorder_src_base_init (gpointer klass)
|
|
||||||
-{
|
|
||||||
-}
|
|
||||||
-
|
|
||||||
static gboolean
|
|
||||||
cinnamon_recorder_src_memory_used_update_idle (gpointer data)
|
|
||||||
{
|
|
||||||
@@ -87,21 +91,28 @@
|
|
||||||
GstBuffer *buffer;
|
|
||||||
|
|
||||||
if (src->closed)
|
|
||||||
- return GST_FLOW_UNEXPECTED;
|
|
||||||
+ return GST_FLOW_EOS;
|
|
||||||
|
|
||||||
buffer = g_async_queue_pop (src->queue);
|
|
||||||
+ if (src->last_frame_time == 0)
|
|
||||||
+ src->last_frame_time = gst_clock_get_time (GST_CLOCK (src->clock));
|
|
||||||
+
|
|
||||||
if (buffer == RECORDER_QUEUE_END)
|
|
||||||
{
|
|
||||||
/* Returning UNEXPECTED here will cause a EOS message to be sent */
|
|
||||||
src->closed = TRUE;
|
|
||||||
- return GST_FLOW_UNEXPECTED;
|
|
||||||
+ return GST_FLOW_EOS;
|
|
||||||
}
|
|
||||||
|
|
||||||
cinnamon_recorder_src_update_memory_used (src,
|
|
||||||
- - (int)(GST_BUFFER_SIZE(buffer) / 1024));
|
|
||||||
+ - (int)(gst_buffer_get_size(buffer) / 1024));
|
|
||||||
|
|
||||||
*buffer_out = buffer;
|
|
||||||
|
|
||||||
+ GST_BUFFER_DURATION(*buffer_out) = GST_CLOCK_DIFF (src->last_frame_time, gst_clock_get_time (GST_CLOCK (src->clock)));
|
|
||||||
+
|
|
||||||
+ src->last_frame_time = gst_clock_get_time (GST_CLOCK (src->clock));
|
|
||||||
+
|
|
||||||
return GST_FLOW_OK;
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -142,7 +153,9 @@
|
|
||||||
|
|
||||||
g_mutex_free (src->mutex);
|
|
||||||
|
|
||||||
- G_OBJECT_CLASS (parent_class)->finalize (object);
|
|
||||||
+ gst_object_unref (src->clock);
|
|
||||||
+
|
|
||||||
+ G_OBJECT_CLASS (cinnamon_recorder_src_parent_class)->finalize (object);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
@@ -246,9 +259,9 @@
|
|
||||||
g_return_if_fail (CINNAMON_IS_RECORDER_SRC (src));
|
|
||||||
g_return_if_fail (src->caps != NULL);
|
|
||||||
|
|
||||||
- gst_buffer_set_caps (buffer, src->caps);
|
|
||||||
+ gst_base_src_set_caps (GST_BASE_SRC (src), src->caps);
|
|
||||||
cinnamon_recorder_src_update_memory_used (src,
|
|
||||||
- (int) (GST_BUFFER_SIZE(buffer) / 1024));
|
|
||||||
+ (int)(gst_buffer_get_size(buffer) / 1024));
|
|
||||||
|
|
||||||
g_async_queue_push (src->queue, gst_buffer_ref (buffer));
|
|
||||||
}
|
|
||||||
diff -ruN a/src/test-recorder.c b/src/test-recorder.c
|
|
||||||
--- a/src/test-recorder.c 2013-10-16 15:10:22.240845159 +0000
|
|
||||||
+++ b/src/test-recorder.c 2013-10-16 15:48:03.685915756 +0000
|
|
||||||
@@ -1,5 +1,6 @@
|
|
||||||
/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */
|
|
||||||
|
|
||||||
+#define GST_USE_UNSTABLE_API
|
|
||||||
#include "cinnamon-recorder.h"
|
|
||||||
#include <clutter/clutter.h>
|
|
||||||
#include <gst/gst.h>
|
|
||||||
@@ -29,7 +30,6 @@
|
|
||||||
ClutterAnimation *animation;
|
|
||||||
ClutterColor red, green, blue;
|
|
||||||
|
|
||||||
- g_thread_init (NULL);
|
|
||||||
gst_init (&argc, &argv);
|
|
||||||
if (clutter_init (&argc, &argv) != CLUTTER_INIT_SUCCESS)
|
|
||||||
return 1;
|
|
|
@ -1,11 +0,0 @@
|
||||||
--- a/files/usr/lib/cinnamon-settings/modules/cs_keyboard.py
|
|
||||||
+++ b/files/usr/lib/cinnamon-settings/modules/cs_keyboard.py
|
|
||||||
@@ -119,6 +119,8 @@ KEYBINDINGS = [
|
|
||||||
[_("Log out"), MEDIA_KEYS_SCHEMA, "logout", False, "system"],
|
|
||||||
[_("Lock screen"), MEDIA_KEYS_SCHEMA, "screensaver", False, "system"],
|
|
||||||
[_("Toggle recording desktop (must restart Cinnamon)"), MUFFIN_KEYBINDINGS_SCHEMA, "toggle-recording", True, "system"],
|
|
||||||
+ [_("Switch to next source"), MEDIA_KEYS_SCHEMA, "switch-input-source", False, "system"],
|
|
||||||
+ [_("Switch to previous source"), MEDIA_KEYS_SCHEMA, "switch-input-source-backward", False, "system"],
|
|
||||||
|
|
||||||
# Launchers
|
|
||||||
[_("Launch help browser"), MEDIA_KEYS_SCHEMA, "help", False, "launchers"],
|
|
|
@ -1,133 +0,0 @@
|
||||||
--- a/files/usr/share/cinnamon/applets/keyboard@cinnamon.org/applet.js
|
|
||||||
+++ b/files/usr/share/cinnamon/applets/keyboard@cinnamon.org/applet.js
|
|
||||||
@@ -1,9 +1,10 @@
|
|
||||||
const Applet = imports.ui.applet;
|
|
||||||
-const Gkbd = imports.gi.Gkbd;
|
|
||||||
const Lang = imports.lang;
|
|
||||||
-const Cinnamon = imports.gi.Cinnamon;
|
|
||||||
+const Gio = imports.gi.Gio;
|
|
||||||
+const GLib = imports.gi.GLib;
|
|
||||||
const St = imports.gi.St;
|
|
||||||
const Gtk = imports.gi.Gtk;
|
|
||||||
+const CinnamonDesktop = imports.gi.CinnamonDesktop;
|
|
||||||
const Main = imports.ui.main;
|
|
||||||
const PopupMenu = imports.ui.popupMenu;
|
|
||||||
const Util = imports.misc.util;
|
|
||||||
@@ -16,11 +17,12 @@ function LayoutMenuItem() {
|
|
||||||
LayoutMenuItem.prototype = {
|
|
||||||
__proto__: PopupMenu.PopupBaseMenuItem.prototype,
|
|
||||||
|
|
||||||
- _init: function(config, id, indicator, long_name) {
|
|
||||||
+ _init: function(ipsettings, id, index, indicator, long_name) {
|
|
||||||
PopupMenu.PopupBaseMenuItem.prototype._init.call(this);
|
|
||||||
|
|
||||||
- this._config = config;
|
|
||||||
+ this._ipsettings = ipsettings;
|
|
||||||
this._id = id;
|
|
||||||
+ this._index = index;
|
|
||||||
this.label = new St.Label({ text: long_name });
|
|
||||||
this.indicator = indicator;
|
|
||||||
this.addActor(this.label);
|
|
||||||
@@ -29,7 +31,7 @@ LayoutMenuItem.prototype = {
|
|
||||||
|
|
||||||
activate: function(event) {
|
|
||||||
PopupMenu.PopupBaseMenuItem.prototype.activate.call(this);
|
|
||||||
- this._config.lock_group(this._id);
|
|
||||||
+ this._ipsettings.set_value('current', GLib.Variant.new_uint32(this._index));
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
@@ -62,18 +64,18 @@ MyApplet.prototype = {
|
|
||||||
this._syncConfig,
|
|
||||||
null);
|
|
||||||
|
|
||||||
- this._config = Gkbd.Configuration.get();
|
|
||||||
- this._config.connect('changed', Lang.bind(this, this._syncConfig));
|
|
||||||
- this._config.connect('group-changed', Lang.bind(this, this._syncGroup));
|
|
||||||
+ this._xkbInfo = new CinnamonDesktop.XkbInfo();
|
|
||||||
+ this._ipsettings = new Gio.Settings({ schema: 'org.cinnamon.desktop.input-sources' });
|
|
||||||
+ this._ipsettings.connect('changed::sources', Lang.bind(this, this._syncConfig));
|
|
||||||
+ this._ipsettings.connect('changed::current', Lang.bind(this, this._syncGroup));
|
|
||||||
|
|
||||||
- this._config.start_listen();
|
|
||||||
|
|
||||||
this._syncConfig();
|
|
||||||
|
|
||||||
this.menu.addMenuItem(new PopupMenu.PopupSeparatorMenuItem());
|
|
||||||
this.menu.addAction(_("Show Keyboard Layout"), Lang.bind(this, function() {
|
|
||||||
Main.overview.hide();
|
|
||||||
- Util.spawn(['gkbd-keyboard-display', '-g', String(this._config.get_current_group() + 1)]);
|
|
||||||
+ Util.spawn(['gkbd-keyboard-display', '-l', this._selectedLayout._id]);
|
|
||||||
}));
|
|
||||||
this.menu.addAction(_("Show Character Table"), Lang.bind(this, function() {
|
|
||||||
Main.overview.hide();
|
|
||||||
@@ -113,8 +115,8 @@ MyApplet.prototype = {
|
|
||||||
},
|
|
||||||
|
|
||||||
_syncConfig: function() {
|
|
||||||
- let groups = this._config.get_group_names();
|
|
||||||
- if (groups.length > 1) {
|
|
||||||
+ let sources = this._ipsettings.get_value('sources');
|
|
||||||
+ if (sources.n_children() > 1) {
|
|
||||||
this.actor.show();
|
|
||||||
} else {
|
|
||||||
this.menu.close();
|
|
||||||
@@ -127,25 +129,30 @@ MyApplet.prototype = {
|
|
||||||
for (let i = 0; i < this._labelActors.length; i++)
|
|
||||||
this._labelActors[i].destroy();
|
|
||||||
|
|
||||||
- let short_names = this._adjustGroupNames(this._config.get_short_group_names());
|
|
||||||
|
|
||||||
this._selectedLayout = null;
|
|
||||||
this._layoutItems = [ ];
|
|
||||||
this._labelActors = [ ];
|
|
||||||
- for (let i = 0; i < groups.length; i++) {
|
|
||||||
- let icon_name = this._config.get_group_name(i);
|
|
||||||
+ for (let i = 0; i < sources.n_children(); i++) {
|
|
||||||
+ let [type, id] = sources.get_child_value(i).deep_unpack();
|
|
||||||
+ let displayName = id;
|
|
||||||
+ let shortName = id;
|
|
||||||
+ let xkbLayout = id;
|
|
||||||
+ if (type == 'xkb') {
|
|
||||||
+ [_exists, displayName, shortName, xkbLayout, _xkbVariant] = this._xkbInfo.get_layout_info(id);
|
|
||||||
+ } // TODO: errorhandling, handle 'ibus'
|
|
||||||
+ let icon_name = xkbLayout; // FIXME: Really?
|
|
||||||
let actor;
|
|
||||||
if (this._showFlags)
|
|
||||||
actor = new St.Icon({ icon_name: icon_name, icon_type: St.IconType.FULLCOLOR, style_class: 'popup-menu-icon' });
|
|
||||||
else
|
|
||||||
- actor = new St.Label({ text: short_names[i] });
|
|
||||||
- let item = new LayoutMenuItem(this._config, i, actor, groups[i]);
|
|
||||||
- item._short_group_name = short_names[i];
|
|
||||||
+ actor = new St.Label({ text: shortName });
|
|
||||||
+ let item = new LayoutMenuItem(this._ipsettings, id, i, actor, displayName);
|
|
||||||
item._icon_name = icon_name;
|
|
||||||
this._layoutItems.push(item);
|
|
||||||
this.menu.addMenuItem(item, i);
|
|
||||||
|
|
||||||
- let shortLabel = new St.Label({ text: short_names[i] });
|
|
||||||
+ let shortLabel = new St.Label({ text: shortName });
|
|
||||||
this._labelActors.push(shortLabel);
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -153,17 +160,17 @@ MyApplet.prototype = {
|
|
||||||
},
|
|
||||||
|
|
||||||
_syncGroup: function() {
|
|
||||||
- let selected = this._config.get_current_group();
|
|
||||||
+ let current = this._ipsettings.get_uint('current');
|
|
||||||
|
|
||||||
if (this._selectedLayout) {
|
|
||||||
this._selectedLayout.setShowDot(false);
|
|
||||||
this._selectedLayout = null;
|
|
||||||
}
|
|
||||||
|
|
||||||
- let item = this._layoutItems[selected];
|
|
||||||
+ let item = this._layoutItems[current];
|
|
||||||
item.setShowDot(true);
|
|
||||||
|
|
||||||
- let selectedLabel = this._labelActors[selected];
|
|
||||||
+ let selectedLabel = this._labelActors[current];
|
|
||||||
|
|
||||||
if (this._showFlags) {
|
|
||||||
this.set_applet_icon_name(item._icon_name);
|
|
53
srcpkgs/cinnamon/patches/set_wheel.patch
Normal file
53
srcpkgs/cinnamon/patches/set_wheel.patch
Normal file
|
@ -0,0 +1,53 @@
|
||||||
|
--- a/files/usr/lib/cinnamon-settings-users/cinnamon-settings-users.py
|
||||||
|
+++ b/files/usr/lib/cinnamon-settings-users/cinnamon-settings-users.py
|
||||||
|
@@ -144,12 +144,11 @@ class EditableEntry (Gtk.Notebook):
|
||||||
|
|
||||||
|
class PasswordDialog(Gtk.Dialog):
|
||||||
|
|
||||||
|
- def __init__ (self, user, password_mask, group_mask):
|
||||||
|
+ def __init__ (self, user, password_mask):
|
||||||
|
super(PasswordDialog, self).__init__()
|
||||||
|
|
||||||
|
self.user = user
|
||||||
|
self.password_mask = password_mask
|
||||||
|
- self.group_mask = group_mask
|
||||||
|
|
||||||
|
self.set_modal(True)
|
||||||
|
self.set_skip_taskbar_hint(True)
|
||||||
|
@@ -215,12 +214,6 @@ class PasswordDialog(Gtk.Dialog):
|
||||||
|
def change_password(self):
|
||||||
|
newpass = self.new_password.get_text()
|
||||||
|
self.user.set_password(newpass, "")
|
||||||
|
- os.system("gpasswd -d '%s' nopasswdlogin" % self.user.get_user_name())
|
||||||
|
- mask = self.group_mask.get_text()
|
||||||
|
- mask = mask.split(", ")
|
||||||
|
- mask.remove("nopasswdlogin")
|
||||||
|
- mask = ", ".join(mask)
|
||||||
|
- self.group_mask.set_text(mask)
|
||||||
|
self.password_mask.set_text(u'\u2022\u2022\u2022\u2022\u2022\u2022')
|
||||||
|
self.destroy()
|
||||||
|
|
||||||
|
@@ -515,7 +508,7 @@ class Module:
|
||||||
|
model, treeiter = self.users_treeview.get_selection().get_selected()
|
||||||
|
if treeiter != None:
|
||||||
|
user = model[treeiter][INDEX_USER_OBJECT]
|
||||||
|
- dialog = PasswordDialog(user, self.password_mask, self.groups_label)
|
||||||
|
+ dialog = PasswordDialog(user, self.password_mask)
|
||||||
|
response = dialog.run()
|
||||||
|
|
||||||
|
def _on_groups_button_clicked(self, widget):
|
||||||
|
@@ -745,11 +738,11 @@ class Module:
|
||||||
|
pixbuf = GdkPixbuf.Pixbuf.new_from_file_at_size("/usr/share/cinnamon/faces/user-generic.png", 48, 48)
|
||||||
|
description = "<b>%s</b>\n%s" % (fullname, username)
|
||||||
|
piter = self.users.append(None, [new_user, pixbuf, description])
|
||||||
|
- # Add the user to his/her own group and sudo if Administrator was selected
|
||||||
|
+ # Add the user to his/her own group and wheel if Administrator was selected
|
||||||
|
if dialog.account_type_combo.get_active() == 1:
|
||||||
|
- os.system("usermod %s -G %s,sudo,nopasswdlogin" % (username, username))
|
||||||
|
+ os.system("usermod %s -G %s,wheel" % (username, username))
|
||||||
|
else:
|
||||||
|
- os.system("usermod %s -G %s,nopasswdlogin" % (username, username))
|
||||||
|
+ os.system("usermod %s -G %s" % (username, username))
|
||||||
|
self.load_groups()
|
||||||
|
dialog.destroy()
|
||||||
|
|
|
@ -4,11 +4,11 @@ _RUNTIMEDEPS="
|
||||||
accountsservice caribou cinnamon-settings-daemon cinnamon-session muffin
|
accountsservice caribou cinnamon-settings-daemon cinnamon-session muffin
|
||||||
cinnamon-control-center cinnamon-screensaver cinnamon-translations nemo
|
cinnamon-control-center cinnamon-screensaver cinnamon-translations nemo
|
||||||
gnome-icon-theme gnome-themes-standard librsvg network-manager-applet
|
gnome-icon-theme gnome-themes-standard librsvg network-manager-applet
|
||||||
pygtk dbus-python python-pam python-pexpect python-inotify
|
pygtk python-dbus python-pam python-pexpect python-inotify
|
||||||
python-lxml python-imaging network-manager-applet polkit-gnome"
|
python-lxml python-Pillow network-manager-applet polkit-gnome"
|
||||||
|
|
||||||
pkgname=cinnamon
|
pkgname=cinnamon
|
||||||
version=2.0.14
|
version=2.2.16
|
||||||
revision=1
|
revision=1
|
||||||
patch_args="-Np1"
|
patch_args="-Np1"
|
||||||
short_desc="GNOME3 fork of Linux Mint with GNOME2 aspect"
|
short_desc="GNOME3 fork of Linux Mint with GNOME2 aspect"
|
||||||
|
@ -16,7 +16,7 @@ build_style=gnu-configure
|
||||||
configure_args="--disable-static --disable-schemas-compile --enable-compile-warnings=no"
|
configure_args="--disable-static --disable-schemas-compile --enable-compile-warnings=no"
|
||||||
hostmakedepends="automake libtool gnome-common pkg-config gobject-introspection
|
hostmakedepends="automake libtool gnome-common pkg-config gobject-introspection
|
||||||
gettext-devel intltool which xmlto docbook-xml gtk-doc git"
|
gettext-devel intltool which xmlto docbook-xml gtk-doc git"
|
||||||
makedepends="cjs-devel clutter-gtk-devel gnome-menus-devel gstreamer1-devel
|
makedepends="cjs-devel clutter-gtk-devel cinnamon-menus-devel gstreamer1-devel
|
||||||
muffin-devel webkitgtk-devel libgnomekbd-devel polkit-devel libcanberra-devel
|
muffin-devel webkitgtk-devel libgnomekbd-devel polkit-devel libcanberra-devel
|
||||||
startup-notification-devel pulseaudio-devel dbus-glib-devel GConf-devel
|
startup-notification-devel pulseaudio-devel dbus-glib-devel GConf-devel
|
||||||
libgnome-keyring-devel NetworkManager-devel libcroco-devel ${_RUNTIMEDEPS}"
|
libgnome-keyring-devel NetworkManager-devel libcroco-devel ${_RUNTIMEDEPS}"
|
||||||
|
|
Loading…
Reference in a new issue