Hello community, here is the log from the commit of package cinnamon for openSUSE:Factory checked in at 2017-06-23 09:18:04 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/cinnamon (Old) and /work/SRC/openSUSE:Factory/.cinnamon.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Package is "cinnamon" Fri Jun 23 09:18:04 2017 rev:17 rq:505528 version:3.4.2 Changes: -------- --- /work/SRC/openSUSE:Factory/cinnamon/cinnamon.changes 2017-05-27 13:13:20.706087191 +0200 +++ /work/SRC/openSUSE:Factory/.cinnamon.new/cinnamon.changes 2017-06-23 09:18:38.972021216 +0200 @@ -1,0 +2,70 @@ +Wed Jun 21 16:11:48 UTC 2017 - sor.alexei@meowr.ru + +- Update to version 3.4.2: + * st-texture-cache.c: Do not cache st_texture_cache_load_from_raw. + Its only user is the Notification Daemon. These are transient + images that were being stored in the cache that would never be + evicted during theme changes (this does not just mean times + when the user changed the icon theme). + * l10n: Translate hardcoded string for settings reset + confirmation dialogue. + * Silence a few more warnings, new warnings. + * expo, overview: Unreference actors that we destroy whenever the + respective view closes. + * cinnamon-slideshow.py: Only allow a single instance to run. + * Sound applet: Avoid spacing problem in vertical panel. + * photoframe-desklet: Fix a few issues. + * notificationDaemon.js: Silence an occasional warning. + * SettingsWidgets.py: Make switch widgets use "center" vertical + alignment instead of "fill," to prevent the switch growing in + height when the label text gets ellipsised (either through + resizing of the window, or localisation). + * Progress bar text initialises and resets. + * cinnamon-settings-users: Restrict the size of user images, as + they are displayed in the right view when a user is selected. + If the image at /var/lib/AccountsService/icons/<user> is set to + a ridiculously-sized image, it won't break the ui. + * cs_user: Don't let large images break the ui - make sure we + scale the selected image to an appropriate size. + Also, don't crop user-selected images (but keep cropping webcam + images) - it's strange to select an image file and have the + ends of it cut off. + * cinnamon-settings-users.py: Fix picture preview in file + selector to maintain a reasonable size. + * cs_user.py: Handle image previews better in the face chooser + dialogue. + * ChooserButtonWidgets.py: Fix a Python 3 error. + * window-list: Bring space around preview down and correct a + calculation problem. + * StScrollView: Queue redraws whenever the adjustments change, to + prevent artifacts outside of the view itself. + * StScrollView: More effective way of fixing the graphical + artefacts generated during scrolling. This also appears to fix + some unrelated tearing issues I was seeing in the menu while + testing. + * main.c: Own onboard's dbus name to prevent it starting when + gnome's a11y keyboard settings key is active + (org.gnome.desktop.a11y.applications screen-keyboard-enabled). + Also own caribou's daemon. Caribou's OSK won't interfere in a + Cinnamon session, but its daemon will run needlessly in the + background otherwise. + * panel: Avoid cjs giving a warning that dummyPanels[i][j] is + undefined. + * systray applet: Make sure an icon actually got parented to + this.manager_container before calling remove_child. + This issue can occur during session startup. + * spacer applet: Use a unique style class in the theme to prevent + the applet from appearing active when hovered. + * theme: Add applet-spacer class for spacer applet. + * spacer applet: Use track_hover instead of a new style to + prevent highlighting. + * osdWindow: get the correct child allocation when calculating + the width of the level bar. If a padding or margin is added to + the level-bar style class, it was causing the parent bin to + expand to accomodate the child's width plus its required + padding. +- Rebase cinnamon-wheel-and-sbin-path.patch, + cinnamon-no-gksu-requirement.patch, + cinnamon-favourite-applications.patch. + +------------------------------------------------------------------- Old: ---- Cinnamon-3.4.1.tar.gz New: ---- Cinnamon-3.4.2.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ cinnamon.spec ++++++ --- /var/tmp/diff_new_pack.SYVKLE/_old 2017-06-23 09:18:39.731913842 +0200 +++ /var/tmp/diff_new_pack.SYVKLE/_new 2017-06-23 09:18:39.731913842 +0200 @@ -21,7 +21,7 @@ %define _name Cinnamon %define _version 3.4.0 Name: cinnamon -Version: 3.4.1 +Version: 3.4.2 Release: 0 Summary: GNU/Linux Desktop featuring a traditional layout License: GPL-2.0+ and LGPL-2.1 ++++++ Cinnamon-3.4.1.tar.gz -> Cinnamon-3.4.2.tar.gz ++++++ ++++ 1717 lines of diff (skipped) ++++ retrying with extended exclude list diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/Cinnamon-3.4.1/configure.ac new/Cinnamon-3.4.2/configure.ac --- old/Cinnamon-3.4.1/configure.ac 2017-05-23 16:44:53.000000000 +0200 +++ new/Cinnamon-3.4.2/configure.ac 2017-06-20 16:17:26.000000000 +0200 @@ -1,5 +1,5 @@ AC_PREREQ(2.63) -AC_INIT([cinnamon],[3.4.1],[https://github.com/linuxmint/Cinnamon/issues],[cinnamon]) +AC_INIT([cinnamon],[3.4.2],[https://github.com/linuxmint/Cinnamon/issues],[cinnamon]) AC_CONFIG_HEADERS([config.h]) AC_CONFIG_SRCDIR([src/cinnamon-global.c]) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/Cinnamon-3.4.1/data/theme/cinnamon.css new/Cinnamon-3.4.2/data/theme/cinnamon.css --- old/Cinnamon-3.4.1/data/theme/cinnamon.css 2017-05-23 16:44:53.000000000 +0200 +++ new/Cinnamon-3.4.2/data/theme/cinnamon.css 2017-06-20 16:17:26.000000000 +0200 @@ -1514,10 +1514,12 @@ width: 2px; background: rgba(255,255,255,0.5); } + .applet-separator-line-vertical { border: 0px solid rgba(255,255,255,0.5); border-bottom-width: 2px; } + .applet-box { padding-left: 3px; padding-right: 3px; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/Cinnamon-3.4.1/debian/changelog new/Cinnamon-3.4.2/debian/changelog --- old/Cinnamon-3.4.1/debian/changelog 2017-05-23 16:44:53.000000000 +0200 +++ new/Cinnamon-3.4.2/debian/changelog 2017-06-20 16:17:26.000000000 +0200 @@ -1,3 +1,66 @@ +cinnamon (3.4.2) sonya; urgency=medium + + [ Michael Webster ] + * st-texture-cache.c: don't cache st_texture_cache_load_from_raw - its only user is the notificationDaemon. These are transient images that were being stored in the cache that would never be evicted during theme changes (this does not just mean times when the user changed the icon them.) + + [ Clement Lefebvre ] + * l10n: Translate hardcoded string for settings reset confirmation dialog + + [ Michael Webster ] + * Silence a few more warnings new warnings. + * expo, overview: unreference actors that we destroy whenever the respective view closes. + * cinnamon-slideshow.py: only allow a single instance to run. + + [ brownsr ] + * Sound applet: avoid spacing problem in vertical panel Knock on from commit 3870e42fe58533598ef8998ffb7d6bd3f213cbec + + [ JosephMcc ] + * photoframe-desklet: Fix a few issues + + [ Michael Webster ] + * notificationDaemon.js: Silence an occasional warning. + * SettingsWidgets.py: Make switch widgets use "center" vertical alignment instead of "fill," to prevent the switch growing in height when the label text gets ellipsized (either thru resizing of the window, or localization.) + + [ BinHong Lee ] + * Progress bar text initializes and resets + + [ Michael Webster ] + * cinnamon-settings-users: Restrict the size of user images, as they are displayed in the right view when a user is selected. If the image at /var/lib/AccountsService/icons/<user> is set to a ridiculously-sized image, it won't break the ui. + * cs_user: Don't let large images break the ui - make sure we scale the selected image to an appropriate size. Also, don't crop user-selected images (but keep cropping webcam images) - it's strange to select an image file and have the ends of it cut off. + * cinnamon-settings-users.py: Fix picture preview in file selector to maintain a reasonable size. + * cs_user.py: Handle image previews better in the face chooser dialog. + + [ Jason Hicks ] + * ChooserButtonWidgets.py: Fix Python 3 error + + [ brownsr ] + * window-list: bring space around preview down and correct a calculation problem beta testing user asked for the space around the window preview to be brought in a bit that in turn highlighted a bug where the scaling was calculated without taking the icon+title into effect I've brought the spare space down a bit, but I can't bring it down further and have it look right in all themes without major surgery, which would be best done in a development cycle. The space allowance for the icon is not fully adequate as the title font could be set large, and so take up more room than the icon. But I've tried with this height adjustment and this scaling across a wide selection of themes, and it appears to stand up. + + [ Michael Webster ] + * cinnamon-settings-users, cs-user, ChooserButtonWidgets: let GdkPixbuf do the work of restricting the size of images while maintaining aspect ratio. Follow-up to last few commits. + * StScrollView: queue redraws whenever the adjustments change, to prevent artifacts outside of the view itself. + * StScrollView: More effective way of fixing the graphical artifacts generated during scrolling. This also appears to fix some unrelated tearing issues I was seeing in the menu while testing. + * main.c: Own onboard's dbus name to prevent it starting when gnome's a11y keyboard settings key is active (org.gnome.desktop.a11y.applications screen-keyboard-enabled.) Also own caribou's daemon. Caribou's OSK won't interfere in a Cinnamon session, but its daemon will run needlessly in the background otherwise. + + [ brownsr ] + * panel: avoid cjs giving a warning that dummyPanels[i][j] is undefined + + [ Michael Webster ] + * systray applet: make sure an icon actually got parented to this.manager_container before calling remove_child. This issue can occur during session startup. + * StScrollView: queue redraws whenever the adjustments change, to prevent artifacts outside of the view itself. + * spacer applet: use a unique style class in the theme to prevent the applet from appearing active when hovered. + * theme: add applet-spacer class for spacer applet. + * spacer applet: use track_hover instead of a new style to prevent highlighting. + + [ leigh123linux ] + * Remove unused dep + + [ Michael Webster ] + * osdWindow: get the correct child allocation when calculating the width of the level bar. If a padding or margin is added to the level-bar style class, it was causing the parent bin to expand to accomodate the child's width plus its required padding. + * Revert "StScrollView: queue redraws whenever the adjustments change, to prevent" + + -- Clement Lefebvre <root@linuxmint.com> Tue, 20 Jun 2017 16:16:34 +0200 + cinnamon (3.4.1) sonya; urgency=medium [ Clement Lefebvre ] diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/Cinnamon-3.4.1/debian/control new/Cinnamon-3.4.2/debian/control --- old/Cinnamon-3.4.1/debian/control 2017-05-23 16:44:53.000000000 +0200 +++ new/Cinnamon-3.4.2/debian/control 2017-06-20 16:17:26.000000000 +0200 @@ -75,7 +75,6 @@ gir1.2-soup-2.4, gir1.2-upowerglib-1.0, gir1.2-gtkclutter-1.0, - gir1.2-javascriptcoregtk-3.0, gir1.2-cmenu-3.0 (>= ${cinnamon:Version}), gir1.2-nmgtk-1.0, gir1.2-notify-0.7, diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/Cinnamon-3.4.1/files/usr/share/cinnamon/applets/sound@cinnamon.org/applet.js new/Cinnamon-3.4.2/files/usr/share/cinnamon/applets/sound@cinnamon.org/applet.js --- old/Cinnamon-3.4.1/files/usr/share/cinnamon/applets/sound@cinnamon.org/applet.js 2017-05-23 16:44:53.000000000 +0200 +++ new/Cinnamon-3.4.2/files/usr/share/cinnamon/applets/sound@cinnamon.org/applet.js 2017-06-20 16:17:26.000000000 +0200 @@ -970,6 +970,7 @@ this._showFixedElements(); this.set_show_label_in_vertical_panels(false); + this.set_applet_label(this._applet_label.get_text()); let appsys = Cinnamon.AppSystem.get_default(); appsys.connect("installed-changed", Lang.bind(this, this._updateLaunchPlayer)); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/Cinnamon-3.4.1/files/usr/share/cinnamon/applets/spacer@cinnamon.org/applet.js new/Cinnamon-3.4.2/files/usr/share/cinnamon/applets/spacer@cinnamon.org/applet.js --- old/Cinnamon-3.4.1/files/usr/share/cinnamon/applets/spacer@cinnamon.org/applet.js 2017-05-23 16:44:53.000000000 +0200 +++ new/Cinnamon-3.4.2/files/usr/share/cinnamon/applets/spacer@cinnamon.org/applet.js 2017-06-20 16:17:26.000000000 +0200 @@ -11,6 +11,7 @@ _init: function(metadata, orientation, panelHeight, instance_id) { Applet.IconApplet.prototype._init.call(this, orientation, panelHeight, instance_id); + this.actor.track_hover = false; this.bin = new St.Bin(); this.actor.add(this.bin); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/Cinnamon-3.4.1/files/usr/share/cinnamon/applets/systray@cinnamon.org/applet.js new/Cinnamon-3.4.2/files/usr/share/cinnamon/applets/systray@cinnamon.org/applet.js --- old/Cinnamon-3.4.1/files/usr/share/cinnamon/applets/systray@cinnamon.org/applet.js 2017-05-23 16:44:53.000000000 +0200 +++ new/Cinnamon-3.4.2/files/usr/share/cinnamon/applets/systray@cinnamon.org/applet.js 2017-06-20 16:17:26.000000000 +0200 @@ -312,7 +312,11 @@ this._statusItems.splice(i, 1); } } - this.manager_container.remove_child(icon); + + if (icon.get_parent() == this.manager_container) { + this.manager_container.remove_child(icon); + } + icon.destroy(); }, diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/Cinnamon-3.4.1/files/usr/share/cinnamon/applets/window-list@cinnamon.org/applet.js new/Cinnamon-3.4.2/files/usr/share/cinnamon/applets/window-list@cinnamon.org/applet.js --- old/Cinnamon-3.4.1/files/usr/share/cinnamon/applets/window-list@cinnamon.org/applet.js 2017-05-23 16:44:53.000000000 +0200 +++ new/Cinnamon-3.4.2/files/usr/share/cinnamon/applets/window-list@cinnamon.org/applet.js 2017-06-20 16:17:26.000000000 +0200 @@ -86,12 +86,15 @@ Tooltips.TooltipBase.prototype._init.call(this, item.actor); this._applet = item._applet; +// FIXME: there is quite a bit of hardcoding in this part of the code, would benefit from setting up separate CSS +// and getting rid of the hard-coding. + this.actor = new St.Bin({style_class: "switcher-list", style: "margin: 0px; padding: 8px;"}); this.actor.show_on_set_parent = false; this.scaleFactor = St.ThemeContext.get_for_stage(global.stage).scale_factor; - this.actor.set_size(WINDOW_PREVIEW_WIDTH * 1.3 * this.scaleFactor, WINDOW_PREVIEW_HEIGHT * 1.3 * this.scaleFactor); + this.actor.set_size(WINDOW_PREVIEW_WIDTH * 1.2 * this.scaleFactor, WINDOW_PREVIEW_HEIGHT * 1.2 * this.scaleFactor); Main.uiGroup.add_actor(this.actor); this.metaWindow = metaWindow; @@ -111,7 +114,6 @@ this.label = new St.Label(); this.label.style = "padding: 2px;"; hbox.add_actor(this.label); - box.add_actor(hbox); this.thumbnailBin = new St.Bin(); @@ -141,7 +143,9 @@ this.muffinWindow = this.metaWindow.get_compositor_private(); let windowTexture = this.muffinWindow.get_texture(); let [width, height] = windowTexture.get_size(); - let scale = Math.min(1.0, WINDOW_PREVIEW_WIDTH / width, WINDOW_PREVIEW_HEIGHT / height); + // the 18 is 16 for the icon size + 2px min padding + // this is not foolproof - the font used might be large enough to make the label bigger than the icon + let scale = Math.min(1.0, WINDOW_PREVIEW_WIDTH / width, (WINDOW_PREVIEW_HEIGHT-18) / height); if (this.thumbnail) { this.thumbnailBin.set_child(null); @@ -156,7 +160,7 @@ this._setSize = function() { [width, height] = windowTexture.get_size(); - scale = Math.min(1.0, WINDOW_PREVIEW_WIDTH / width, WINDOW_PREVIEW_HEIGHT / height); + scale = Math.min(1.0, WINDOW_PREVIEW_WIDTH / width, (WINDOW_PREVIEW_HEIGHT-18) / height); this.thumbnail.set_size(width * scale * this.scaleFactor, height * scale * this.scaleFactor); }; this._sizeChangedId = this.muffinWindow.connect('size-changed', diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/Cinnamon-3.4.1/files/usr/share/cinnamon/cinnamon-settings/bin/ChooserButtonWidgets.py new/Cinnamon-3.4.2/files/usr/share/cinnamon/cinnamon-settings/bin/ChooserButtonWidgets.py --- old/Cinnamon-3.4.1/files/usr/share/cinnamon/cinnamon-settings/bin/ChooserButtonWidgets.py 2017-05-23 16:44:53.000000000 +0200 +++ new/Cinnamon-3.4.2/files/usr/share/cinnamon/cinnamon-settings/bin/ChooserButtonWidgets.py 2017-06-20 16:17:26.000000000 +0200 @@ -76,11 +76,12 @@ self.menu.popup(None, None, self.popup_menu_below_button, self, event.button, event.time) class PictureChooserButton(BaseChooserButton): - def __init__ (self, num_cols=4, button_picture_size=None, menu_pictures_size=None, has_button_label=False): + def __init__ (self, num_cols=4, button_picture_size=24, menu_pictures_size=24, has_button_label=False, keep_square=False): super(PictureChooserButton, self).__init__(has_button_label) self.num_cols = num_cols self.button_picture_size = button_picture_size self.menu_pictures_size = menu_pictures_size + self.keep_square = keep_square self.row = 0 self.col = 0 self.progress = 0.0 @@ -88,6 +89,12 @@ context = self.get_style_context() context.add_class("gtkstyle-fallback") + self.button_image.set_valign(Gtk.Align.CENTER) + if self.keep_square: + self.button_image.set_size_request(button_picture_size, button_picture_size) + else: + self.button_image.set_size_request(-1, button_picture_size) + self.connect_after("draw", self.on_draw) def on_draw(self, widget, cr, data=None): @@ -124,12 +131,38 @@ self.queue_draw() def set_picture_from_file (self, path): + pixbuf = None + message = "" + if os.path.exists(path): - if self.button_picture_size is None: + try: pixbuf = GdkPixbuf.Pixbuf.new_from_file(path) - else: - pixbuf = GdkPixbuf.Pixbuf.new_from_file_at_scale(path, -1, self.button_picture_size, True) + except GLib.Error as e: + message = "Could not load pixbuf from '%s': %s" % (path, e.message) + error = True + + if pixbuf != None: + h = pixbuf.get_height() + w = pixbuf.get_width() + + if (self.keep_square and (h > self.button_picture_size or w > self.button_picture_size)): + try: + pixbuf = GdkPixbuf.Pixbuf.new_from_file_at_size(path, self.button_picture_size, self.button_picture_size) + except GLib.Error as e: + message = "Could not scale pixbuf from '%s': %s" % (path, e.message) + error = True + elif h > self.button_picture_size: + try: + pixbuf = GdkPixbuf.Pixbuf.new_from_file_at_size(path, -1, self.button_picture_size) + except GLib.Error as e: + message = "Could not scale pixbuf from '%s': %s" % (path, e.message) + error = True + + if pixbuf: self.button_image.set_from_pixbuf(pixbuf) + else: + print(message) + self.button_image.set_from_file("/usr/share/cinnamon/faces/user-generic.png") def set_button_label(self, label): self.button_label.set_markup(label) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/Cinnamon-3.4.1/files/usr/share/cinnamon/cinnamon-settings/bin/SettingsWidgets.py new/Cinnamon-3.4.2/files/usr/share/cinnamon/cinnamon-settings/bin/SettingsWidgets.py --- old/Cinnamon-3.4.1/files/usr/share/cinnamon/cinnamon-settings/bin/SettingsWidgets.py 2017-05-23 16:44:53.000000000 +0200 +++ new/Cinnamon-3.4.2/files/usr/share/cinnamon/cinnamon-settings/bin/SettingsWidgets.py 2017-06-20 16:17:26.000000000 +0200 @@ -503,7 +503,7 @@ def __init__(self, label, dep_key=None, tooltip=""): super(Switch, self).__init__(dep_key=dep_key) - self.content_widget = Gtk.Switch() + self.content_widget = Gtk.Switch(valign=Gtk.Align.CENTER) self.label = SettingsLabel(label) self.pack_start(self.label, False, False, 0) self.pack_end(self.content_widget, False, False, 0) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/Cinnamon-3.4.1/files/usr/share/cinnamon/cinnamon-settings/bin/Spices.py new/Cinnamon-3.4.2/files/usr/share/cinnamon/cinnamon-settings/bin/Spices.py --- old/Cinnamon-3.4.1/files/usr/share/cinnamon/cinnamon-settings/bin/Spices.py 2017-05-23 16:44:53.000000000 +0200 +++ new/Cinnamon-3.4.2/files/usr/share/cinnamon/cinnamon-settings/bin/Spices.py 2017-06-20 16:17:26.000000000 +0200 @@ -543,6 +543,7 @@ self.progress_window.show() self.progresslabel.set_text(_("Installing %s...") % (title)) self.progressbar.set_fraction(0) + self.progressbar.set_text('0%') def uninstall(self, uuid, name, schema_filename, onFinished=None): ui_thread_do(self.ui_uninstalling_xlet, name) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/Cinnamon-3.4.1/files/usr/share/cinnamon/cinnamon-settings/modules/cs_user.py new/Cinnamon-3.4.2/files/usr/share/cinnamon/cinnamon-settings/modules/cs_user.py --- old/Cinnamon-3.4.1/files/usr/share/cinnamon/cinnamon-settings/modules/cs_user.py 2017-05-23 16:44:53.000000000 +0200 +++ new/Cinnamon-3.4.2/files/usr/share/cinnamon/cinnamon-settings/modules/cs_user.py 2017-06-20 16:17:26.000000000 +0200 @@ -38,7 +38,7 @@ settings = page.add_section(_("Account details")) - self.face_button = PictureChooserButton(num_cols=4, button_picture_size=64, menu_pictures_size=64) + self.face_button = PictureChooserButton(num_cols=4, button_picture_size=64, menu_pictures_size=64, keep_square=True) self.face_button.set_alignment(0.0, 0.5) self.face_button.set_tooltip_text(_("Click to change your picture")) @@ -106,15 +106,19 @@ def update_preview_cb (self, dialog, preview): filename = dialog.get_preview_filename() - dialog.set_preview_widget_active(False) - if filename is not None and os.path.isfile(filename): - try: - pixbuf = GdkPixbuf.Pixbuf.new_from_file_at_size(filename, 128, 128) - if pixbuf is not None: - preview.set_from_pixbuf (pixbuf) - dialog.set_preview_widget_active(True) - except: - pass + if filename is not None: + if os.path.isfile(filename): + try: + pixbuf = GdkPixbuf.Pixbuf.new_from_file_at_size(filename, 128, 128) + if pixbuf is not None: + preview.set_from_pixbuf(pixbuf) + self.frame.show() + return + except GLib.Error as e: + print("Unable to generate preview for file '%s' - %s\n" % (filename, e.message)) + + preview.clear() + self.frame.hide() def _on_face_photo_menuitem_activated(self, menuitem): @@ -163,30 +167,26 @@ filter.add_mime_type("image/*") dialog.add_filter(filter) - preview = Gtk.Image() - dialog.set_preview_widget(preview); - dialog.connect("update-preview", self.update_preview_cb, preview) + box = Gtk.Box(orientation=Gtk.Orientation.VERTICAL) + self.frame = Gtk.Frame(visible=False, no_show_all=True) + preview = Gtk.Image(visible=True) + + box.pack_start(self.frame, False, False, 0) + self.frame.add(preview) + dialog.set_preview_widget(box) + dialog.set_preview_widget_active(True) dialog.set_use_preview_label(False) + box.set_margin_end(12) + box.set_margin_top(12) + box.set_size_request(128, -1) + + dialog.connect("update-preview", self.update_preview_cb, preview) + response = dialog.run() if response == Gtk.ResponseType.OK: path = dialog.get_filename() image = PIL.Image.open(path) - width, height = image.size - if width > height: - new_width = height - new_height = height - elif height > width: - new_width = width - new_height = width - else: - new_width = width - new_height = height - left = (width - new_width)/2 - top = (height - new_height)/2 - right = (width + new_width)/2 - bottom = (height + new_height)/2 - image = image.crop((left, top, right, bottom)) image.thumbnail((255, 255), PIL.Image.ANTIALIAS) face_path = os.path.join(self.accountService.get_home_dir(), ".face") image.save(face_path, "png") diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/Cinnamon-3.4.1/files/usr/share/cinnamon/cinnamon-settings-users/cinnamon-settings-users.py new/Cinnamon-3.4.2/files/usr/share/cinnamon/cinnamon-settings-users/cinnamon-settings-users.py --- old/Cinnamon-3.4.1/files/usr/share/cinnamon/cinnamon-settings-users/cinnamon-settings-users.py 2017-05-23 16:44:53.000000000 +0200 +++ new/Cinnamon-3.4.2/files/usr/share/cinnamon/cinnamon-settings-users/cinnamon-settings-users.py 2017-06-20 16:17:26.000000000 +0200 @@ -15,7 +15,7 @@ import gi gi.require_version("Gtk", "3.0") gi.require_version("AccountsService", "1.0") -from gi.repository import Gtk, GObject, Gio, GdkPixbuf, AccountsService +from gi.repository import Gtk, GObject, Gio, GdkPixbuf, AccountsService, GLib gettext.install("cinnamon", "/usr/share/locale") @@ -480,6 +480,7 @@ self.face_button = Gtk.Button() self.face_image = Gtk.Image() + self.face_image.set_size_request(96, 96) self.face_button.set_image(self.face_image) self.face_image.set_from_file("/usr/share/cinnamon/faces/user-generic.png") self.face_button.set_alignment(0.0, 0.5) @@ -619,30 +620,26 @@ filter.add_mime_type("image/*") dialog.add_filter(filter) - preview = Gtk.Image() - dialog.set_preview_widget(preview); - dialog.connect("update-preview", self.update_preview_cb, preview) + box = Gtk.Box(orientation=Gtk.Orientation.VERTICAL) + self.frame = Gtk.Frame(visible=False, no_show_all=True) + preview = Gtk.Image(visible=True) + + box.pack_start(self.frame, False, False, 0) + self.frame.add(preview) + dialog.set_preview_widget(box) + dialog.set_preview_widget_active(True) dialog.set_use_preview_label(False) + box.set_margin_end(12) + box.set_margin_top(12) + box.set_size_request(128, -1) + + dialog.connect("update-preview", self.update_preview_cb, preview) + response = dialog.run() if response == Gtk.ResponseType.OK: path = dialog.get_filename() image = PIL.Image.open(path) - width, height = image.size - if width > height: - new_width = height - new_height = height - elif height > width: - new_width = width - new_height = width - else: - new_width = width - new_height = height - left = (width - new_width)/2 - top = (height - new_height)/2 - right = (width + new_width)/2 - bottom = (height + new_height)/2 - image = image.crop((left, top, right, bottom)) image.thumbnail((96, 96), Image.ANTIALIAS) face_path = os.path.join(user.get_home_dir(), ".face") image.save(face_path, "png") @@ -654,15 +651,22 @@ dialog.destroy() def update_preview_cb (self, dialog, preview): + # Different widths make the dialog look really crappy as it resizes - + # constrain the width and adjust the height to keep perspective. filename = dialog.get_preview_filename() - if filename is None: - return - dialog.set_preview_widget_active(False) - if os.path.isfile(filename): - pixbuf = GdkPixbuf.Pixbuf.new_from_file_at_size(filename, 128, 128) - if pixbuf is not None: - preview.set_from_pixbuf (pixbuf) - dialog.set_preview_widget_active(True) + if filename is not None: + if os.path.isfile(filename): + try: + pixbuf = GdkPixbuf.Pixbuf.new_from_file_at_size(filename, 128, 128) + if pixbuf is not None: + preview.set_from_pixbuf(pixbuf) + self.frame.show() + return + except GLib.Error as e: + print("Unable to generate preview for file '%s' - %s\n" % (filename, e.message)) + + preview.clear() + self.frame.hide() def _on_face_menuitem_activated(self, menuitem, path): if os.path.exists(path): @@ -749,9 +753,30 @@ else: self.account_type_combo.set_active(0) - if os.path.exists(user.get_icon_file()): - self.face_image.set_from_file(user.get_icon_file()) + pixbuf = None + path = user.get_icon_file() + message = "" + + if os.path.exists(path): + try: + pixbuf = GdkPixbuf.Pixbuf.new_from_file(path) + except GLib.Error as e: + message = "Could not load pixbuf from '%s': %s" % (path, e.message) + error = True + + if pixbuf != None: + if pixbuf.get_height() > 96 or pixbuf.get_width() > 96: + try: + pixbuf = GdkPixbuf.Pixbuf.new_from_file_at_size(path, 96, 96) + except GLib.Error as e: + message = "Could not scale pixbuf from '%s': %s" % (path, e.message) + error = True + + if pixbuf: + self.face_image.set_from_pixbuf(pixbuf) else: + if message != "": + print message self.face_image.set_from_file("/usr/share/cinnamon/faces/user-generic.png") groups = [] diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/Cinnamon-3.4.1/files/usr/share/cinnamon/cinnamon-slideshow/cinnamon-slideshow.py new/Cinnamon-3.4.2/files/usr/share/cinnamon/cinnamon-slideshow/cinnamon-slideshow.py --- old/Cinnamon-3.4.1/files/usr/share/cinnamon/cinnamon-slideshow/cinnamon-slideshow.py 2017-05-23 16:44:53.000000000 +0200 +++ new/Cinnamon-3.4.2/files/usr/share/cinnamon/cinnamon-slideshow/cinnamon-slideshow.py 2017-06-20 16:17:26.000000000 +0200 @@ -309,6 +309,14 @@ if __name__ == "__main__": DBusGMainLoop(set_as_default=True) - slideshow = CinnamonSlideshow() + + sessionBus = dbus.SessionBus () + request = sessionBus.request_name(SLIDESHOW_DBUS_NAME, dbus.bus.NAME_FLAG_DO_NOT_QUEUE) + if request != dbus.bus.REQUEST_NAME_REPLY_EXISTS: + slideshow = CinnamonSlideshow() + else: + print "cinnamon-slideshow already running." + quit() + ml = GLib.MainLoop.new(None, True) ml.run() diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/Cinnamon-3.4.1/files/usr/share/cinnamon/desklets/photoframe@cinnamon.org/desklet.js new/Cinnamon-3.4.2/files/usr/share/cinnamon/desklets/photoframe@cinnamon.org/desklet.js --- old/Cinnamon-3.4.1/files/usr/share/cinnamon/desklets/photoframe@cinnamon.org/desklet.js 2017-05-23 16:44:53.000000000 +0200 +++ new/Cinnamon-3.4.2/files/usr/share/cinnamon/desklets/photoframe@cinnamon.org/desklet.js 2017-06-20 16:17:26.000000000 +0200 @@ -21,7 +21,7 @@ this.metadata = metadata - this.update_id = null; + this.update_id = 0; try { this.settings = new Settings.DeskletSettings(this, this.metadata["uuid"], this.instance_id); @@ -36,20 +36,19 @@ global.logError(e); } - this.dir_monitor_id = null; + this.dir_monitor_id = 0; this.dir_monitor = null; this.dir_file = null; - this.setHeader(_("Photo Frame")); this._setup_dir_monitor(); this.setup_display(); }, on_setting_changed: function() { - if (this.update_id > 0) + if (this.update_id != 0) Mainloop.source_remove(this.update_id); - this.update_id = null; + this.update_id = 0; this._setup_dir_monitor(); if (this.currentPicture) this.currentPicture.destroy(); @@ -58,13 +57,27 @@ }, _setup_dir_monitor: function() { - if (this.dir_monitor_id && this.dir_monitor) { + if ((this.dir_monitor_id != 0) && (this.dir_monitor)) { this.dir_monitor.disconnect(this.dir_monitor_id) - this.dir_monitor_id = null + this.dir_monitor_id = 0; + } + + /* The widget used to choose the folder the images are drawn from + was changed to use a URI instead of a path. This check is just + to ensure that people upgrading cinnamon versions will get the + existing path converted to a proper URI */ + if (this.dir.indexOf("://") === -1) { + let file = Gio.file_new_for_path(this.dir); + this.dir = file.get_uri() } - this.dir = this.dir.replace('~', GLib.get_home_dir()) - this.dir_file = Gio.file_new_for_path(this.dir); - this.dir_monitor = this.dir_file.monitor_directory(0, null, null); + + if (this.dir === " ") { + let file = Gio.file_new_for_path(GLib.get_user_special_dir(GLib.UserDirectory.DIRECTORY_PICTURES)); + this.dir = file.get_uri(); + } + + this.dir_file = Gio.file_new_for_uri(this.dir); + this.dir_monitor = this.dir_file.monitor_directory(0, null); this.dir_monitor_id = this.dir_monitor.connect('changed', Lang.bind(this, this.on_setting_changed)); }, @@ -81,7 +94,7 @@ }, _scan_dir: function(dir) { - let dir_file = Gio.file_new_for_path(dir); + let dir_file = Gio.file_new_for_uri(dir); let fileEnum = dir_file.enumerate_children('standard::type,standard::name', Gio.FileQueryInfoFlags.NONE, null); let info; @@ -232,10 +245,7 @@ _loadImage: function(filePath) { try { - let file = Gio.file_new_for_path(filePath); - let uri = file.get_uri(); - - let image = St.TextureCache.get_default().load_uri_async(uri, this.width, this.height); + let image = St.TextureCache.get_default().load_uri_async(filePath, this.width, this.height); image._notif_id = image.connect("notify::size", Lang.bind(this, this._size_pic)); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/Cinnamon-3.4.1/files/usr/share/cinnamon/desklets/photoframe@cinnamon.org/settings-schema.json new/Cinnamon-3.4.2/files/usr/share/cinnamon/desklets/photoframe@cinnamon.org/settings-schema.json --- old/Cinnamon-3.4.1/files/usr/share/cinnamon/desklets/photoframe@cinnamon.org/settings-schema.json 2017-05-23 16:44:53.000000000 +0200 +++ new/Cinnamon-3.4.2/files/usr/share/cinnamon/desklets/photoframe@cinnamon.org/settings-schema.json 2017-06-20 16:17:26.000000000 +0200 @@ -1,6 +1,6 @@ { "directory": { - "default": "~/Pictures", + "default": " ", "type": "filechooser", "description" : "Folder", "allow-none" : false, diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/Cinnamon-3.4.1/js/ui/applet.js new/Cinnamon-3.4.2/js/ui/applet.js --- old/Cinnamon-3.4.1/js/ui/applet.js 2017-05-23 16:44:53.000000000 +0200 +++ new/Cinnamon-3.4.2/js/ui/applet.js 2017-06-20 16:17:26.000000000 +0200 @@ -35,9 +35,16 @@ * @short_description: Deprecated. Use #PopupMenu.PopupIconMenuItem instead. */ function MenuItem(label, icon, callback) { - this.__proto__ = PopupMenu.PopupIconMenuItem.prototype; - PopupMenu.PopupIconMenuItem.prototype._init.call(this, label, icon, St.IconType.SYMBOLIC); - this.connect('activate', callback); + this._init(label, icon, callback); +} + +MenuItem.prototype = { + __proto__ : PopupMenu.PopupIconMenuItem.prototype, + + _init: function(label, icon, callback) { + PopupMenu.PopupIconMenuItem.prototype._init.call(this, label, icon, St.IconType.SYMBOLIC); + this.connect('activate', callback); + } } /** diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/Cinnamon-3.4.1/js/ui/expo.js new/Cinnamon-3.4.2/js/ui/expo.js --- old/Cinnamon-3.4.1/js/ui/expo.js 2017-05-23 16:44:53.000000000 +0200 +++ new/Cinnamon-3.4.2/js/ui/expo.js 2017-06-20 16:17:26.000000000 +0200 @@ -472,10 +472,14 @@ this._animateVisible(); this._syncInputMode(); + global.overlay_group.remove_actor(this._group); this._group.destroy(); + this._group = null; + global.overlay_group.remove_actor(this._background); this._background.destroy(); + this._background = null; Main.layoutManager._chrome.updateRegions(); } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/Cinnamon-3.4.1/js/ui/notificationDaemon.js new/Cinnamon-3.4.2/js/ui/notificationDaemon.js --- old/Cinnamon-3.4.1/js/ui/notificationDaemon.js 2017-05-23 16:44:53.000000000 +0200 +++ new/Cinnamon-3.4.2/js/ui/notificationDaemon.js 2017-06-20 16:17:26.000000000 +0200 @@ -255,10 +255,14 @@ this._startExpire(); }, _expireNotification: function() { - let ndata = this._expireNotifications[0]; - ndata.notification.destroy(MessageTray.NotificationDestroyedReason.EXPIRED); - this._expireTimer = 0; - return false; + let ndata = this._expireNotifications[0]; + + if (ndata) { + ndata.notification.destroy(MessageTray.NotificationDestroyedReason.EXPIRED); + } + + this._expireTimer = 0; + return false; }, // Sends a notification to the notification daemon. Returns the id allocated to the notification. @@ -457,7 +461,7 @@ } if (actions.length) { - notification.setUseActionIcons(hints['action-icons'] == true); + notification.setUseActionIcons(hints.maybeGet('action-icons') == true); for (let i = 0; i < actions.length - 1; i += 2) { if (actions[i] == 'default') notification.connect('clicked', Lang.bind(this, diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/Cinnamon-3.4.1/js/ui/osdWindow.js new/Cinnamon-3.4.2/js/ui/osdWindow.js --- old/Cinnamon-3.4.1/js/ui/osdWindow.js 2017-05-23 16:44:53.000000000 +0200 +++ new/Cinnamon-3.4.2/js/ui/osdWindow.js 2017-06-20 16:17:26.000000000 +0200 @@ -44,6 +44,9 @@ this._bar = new St.Widget({ style_class: 'level-bar', important: true }); + this.stored_actor_width = 0; + this.max_bar_width = 0; + this.actor.set_child(this._bar); }, @@ -54,10 +57,23 @@ set level(value) { this._level = Math.max(0, Math.min(value, 100)); - let alloc = this.actor.get_allocation_box(); - let newWidth = Math.round((alloc.x2 - alloc.x1) * this._level / 100); - if (newWidth != this._bar.width) - this._bar.width = newWidth; + /* Track our actor's width - if it changes, we can be certain some setting + * or the theme changed. Make sure we update it, as well as figure out our + * level bar's allocation. + */ + if (this.stored_actor_width != this.actor.width) { + this.stored_actor_width = this.actor.width; + + let box = this.actor.get_theme_node().get_content_box(this.actor.get_allocation_box()); + + this.max_bar_width = box.x2 - box.x1; + } + + let newWidth = this.max_bar_width * (this._level / 100); + + if (newWidth != this._bar.width) { + this._bar.width = newWidth; + } }, setLevelBarHeight: function(sizeMultiplier) { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/Cinnamon-3.4.1/js/ui/overview.js new/Cinnamon-3.4.2/js/ui/overview.js --- old/Cinnamon-3.4.1/js/ui/overview.js 2017-05-23 16:44:53.000000000 +0200 +++ new/Cinnamon-3.4.2/js/ui/overview.js 2017-06-20 16:17:26.000000000 +0200 @@ -433,8 +433,11 @@ _hideDone: function() { this._group.remove_actor(this._coverPane); this._coverPane.destroy(); + this._coverPane = null; + global.overlay_group.remove_actor(this._background); this._background.destroy(); + this._background = null; // Re-enable unredirection Meta.enable_unredirect_for_screen(global.screen); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/Cinnamon-3.4.1/js/ui/panel.js new/Cinnamon-3.4.2/js/ui/panel.js --- old/Cinnamon-3.4.1/js/ui/panel.js 2017-05-23 16:44:53.000000000 +0200 +++ new/Cinnamon-3.4.2/js/ui/panel.js 2017-06-20 16:17:26.000000000 +0200 @@ -1020,17 +1020,17 @@ this.dummyCallback = callback; this.dummyPanels = []; - while (this.dummyPanels.push([]) < monitorCount); // Generate a 2D array of length monitorCount; Push returns new length of array + while (this.dummyPanels.push([true, true, true, true]) < monitorCount); // 4 possible panels per monitor for (let i in this.panelsMeta) { - if (this.panelsMeta[i][0] >= monitorCount) // Monitor does not exist + if (this.panelsMeta[i][0] >= monitorCount) // Monitor does not exist continue; - this.dummyPanels[this.panelsMeta[i][0]][this.panelsMeta[i][1]] = false; // every location where there is an actual existing panel is noted + this.dummyPanels[this.panelsMeta[i][0]][this.panelsMeta[i][1]] = false; // there is an existing panel showing } for (let i = 0; i < monitorCount; i++) { - for (let j = 0; j < 4; j++) { // max of 4 panels per monitor - bottom. top, left, right - if (this.dummyPanels[i][j] != false) { // no panel there at the moment, so show a dummy + for (let j = 0; j < 4; j++) { + if (this.dummyPanels[i][j] == true) { // no panel there at the moment, so show a dummy this.dummyPanels[i][j] = new PanelDummy(i, j, callback); } } @@ -1574,7 +1574,7 @@ }); menu.troubleshootItem.menu.addAction(_("Restore all settings to default"), function(event) { - let confirm = new ModalDialog.ConfirmDialog("Are you sure you want to restore all settings to default?\n\n", + let confirm = new ModalDialog.ConfirmDialog(_("Are you sure you want to restore all settings to default?\n\n"), function() { Util.spawnCommandLine("gsettings reset-recursively org.cinnamon"); global.reexec_self(); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/Cinnamon-3.4.1/src/main.c new/Cinnamon-3.4.2/src/main.c --- old/Cinnamon-3.4.1/src/main.c 2017-05-23 16:44:53.000000000 +0200 +++ new/Cinnamon-3.4.2/src/main.c 2017-06-20 16:17:26.000000000 +0200 @@ -148,6 +148,14 @@ DBUS_NAME_FLAG_REPLACE_EXISTING, &request_name_result, "org.gnome.Caribou.Keyboard", FALSE); + cinnamon_dbus_acquire_name (bus, + DBUS_NAME_FLAG_REPLACE_EXISTING, + &request_name_result, + "org.gnome.Caribou.Daemon", FALSE); + cinnamon_dbus_acquire_name (bus, + DBUS_NAME_FLAG_REPLACE_EXISTING, + &request_name_result, + "org.onboard.Onboard", FALSE); g_object_unref (bus); g_object_unref (session); } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/Cinnamon-3.4.1/src/st/st-scroll-bar.c new/Cinnamon-3.4.2/src/st/st-scroll-bar.c --- old/Cinnamon-3.4.1/src/st/st-scroll-bar.c 2017-05-23 16:44:53.000000000 +0200 +++ new/Cinnamon-3.4.2/src/st/st-scroll-bar.c 2017-06-20 16:17:26.000000000 +0200 @@ -481,6 +481,8 @@ break; } + clutter_actor_queue_redraw (actor); + return TRUE; } @@ -584,6 +586,8 @@ + lower; st_adjustment_set_value (priv->adjustment, position); + + clutter_actor_queue_redraw (CLUTTER_ACTOR (bar)); } static void @@ -675,10 +679,17 @@ static void animation_completed_cb (ClutterAnimation *animation, - StScrollBarPrivate *priv) + StScrollBar *self) { - g_object_unref (priv->paging_animation); - priv->paging_animation = NULL; + ClutterTimeline *t; + + t = clutter_animation_get_timeline (animation); + g_signal_handlers_disconnect_by_func (t, clutter_actor_queue_redraw, self); + + clutter_actor_queue_redraw (CLUTTER_ACTOR (self)); + + g_object_unref (self->priv->paging_animation); + self->priv->paging_animation = NULL; } static gboolean @@ -790,7 +801,8 @@ clutter_animation_bind (self->priv->paging_animation, "value", &v); t = clutter_animation_get_timeline (self->priv->paging_animation); g_signal_connect (a, "completed", G_CALLBACK (animation_completed_cb), - self->priv); + self); + g_signal_connect_swapped (t, "new-frame", G_CALLBACK (clutter_actor_queue_redraw), self); clutter_timeline_start (t); return ret; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/Cinnamon-3.4.1/src/st/st-scroll-view.c new/Cinnamon-3.4.2/src/st/st-scroll-view.c --- old/Cinnamon-3.4.1/src/st/st-scroll-view.c 2017-05-23 16:44:53.000000000 +0200 +++ new/Cinnamon-3.4.2/src/st/st-scroll-view.c 2017-06-20 16:17:26.000000000 +0200 @@ -257,6 +257,8 @@ "value", &vvalue, NULL); st_adjustment_set_value (priv->vadjustment, vvalue + delta); + + clutter_actor_queue_redraw (self); } static void @@ -893,6 +895,8 @@ break; } + clutter_actor_queue_redraw (self); + return TRUE; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/Cinnamon-3.4.1/src/st/st-texture-cache.c new/Cinnamon-3.4.2/src/st/st-texture-cache.c --- old/Cinnamon-3.4.1/src/st/st-texture-cache.c 2017-05-23 16:44:53.000000000 +0200 +++ new/Cinnamon-3.4.2/src/st/st-texture-cache.c 2017-06-20 16:17:26.000000000 +0200 @@ -121,6 +121,8 @@ gpointer key; gpointer value; + g_debug ("%s: Pre-evict count: %d\n", G_STRFUNC, g_hash_table_size (cache->priv->keyed_cache)); + g_hash_table_iter_init (&iter, cache->priv->keyed_cache); while (g_hash_table_iter_next (&iter, &key, &value)) { @@ -133,6 +135,8 @@ if (g_str_has_prefix (cache_key, CACHE_PREFIX_ICON)) g_hash_table_iter_remove (&iter); } + + g_debug ("%s: Post-evict count: %d\n", G_STRFUNC, g_hash_table_size (cache->priv->keyed_cache)); } static void @@ -1858,29 +1862,11 @@ { ClutterTexture *texture; CoglTexture *texdata; - char *key; - char *checksum; texture = create_default_texture (); clutter_actor_set_size (CLUTTER_ACTOR (texture), size, size); - /* In theory, two images of with different width and height could have the same - * pixel data and thus hash the same. (Say, a 16x16 and a 8x32 blank image.) - * We ignore this for now. If anybody hits this problem they should use - * GChecksum directly to compute a checksum including the width and height. - */ - checksum = g_compute_checksum_for_data (G_CHECKSUM_SHA1, data, len); - key = g_strdup_printf (CACHE_PREFIX_RAW_CHECKSUM "checksum=%s", checksum); - g_free (checksum); - - texdata = g_hash_table_lookup (cache->priv->keyed_cache, key); - if (texdata == NULL) - { - texdata = data_to_cogl_texture (data, has_alpha, width, height, rowstride, TRUE); - g_hash_table_insert (cache->priv->keyed_cache, g_strdup (key), texdata); - } - - g_free (key); + texdata = data_to_cogl_texture (data, has_alpha, width, height, rowstride, TRUE); set_texture_cogl_texture (texture, texdata); return CLUTTER_ACTOR (texture); ++++++ cinnamon-favourite-applications.patch ++++++ --- /var/tmp/diff_new_pack.SYVKLE/_old 2017-06-23 09:18:40.143855633 +0200 +++ /var/tmp/diff_new_pack.SYVKLE/_new 2017-06-23 09:18:40.143855633 +0200 @@ -1,6 +1,6 @@ --- a/data/org.cinnamon.gschema.xml.in +++ b/data/org.cinnamon.gschema.xml.in -@@ -382,7 +382,7 @@ +@@ -388,7 +388,7 @@ </key> <key name="favorite-apps" type="as"> ++++++ cinnamon-no-gksu-requirement.patch ++++++ --- /var/tmp/diff_new_pack.SYVKLE/_old 2017-06-23 09:18:40.167852242 +0200 +++ /var/tmp/diff_new_pack.SYVKLE/_new 2017-06-23 09:18:40.167852242 +0200 @@ -43,7 +43,7 @@ tool = "/usr/share/cinnamon/cinnamon-settings/bin/installSchema.py %s" % (os.path.join(dirname, file.filename)) command = "%s %s" % (launcher, tool) os.system(command) -@@ -550,9 +549,8 @@ class Spice_Harvester: +@@ -551,9 +550,8 @@ class Spice_Harvester: try: if not self.themes: if schema_filename != "": ++++++ cinnamon-wheel-and-sbin-path.patch ++++++ --- /var/tmp/diff_new_pack.SYVKLE/_old 2017-06-23 09:18:40.187849417 +0200 +++ /var/tmp/diff_new_pack.SYVKLE/_new 2017-06-23 09:18:40.191848852 +0200 @@ -47,7 +47,7 @@ self.destroy() def set_passwords_visibility(self): -@@ -569,7 +561,7 @@ class Module: +@@ -570,7 +562,7 @@ class Module: model, treeiter = self.users_treeview.get_selection().get_selected() if treeiter != None: user = model[treeiter][INDEX_USER_OBJECT] @@ -56,7 +56,7 @@ response = dialog.run() def _on_groups_button_clicked(self, widget): -@@ -580,7 +572,7 @@ class Module: +@@ -581,7 +573,7 @@ class Module: response = dialog.run() if response == Gtk.ResponseType.OK: groups = dialog.get_selected_groups() @@ -65,7 +65,7 @@ groups.sort() self.groups_label.set_text(", ".join(groups)) dialog.destroy() -@@ -814,11 +806,11 @@ class Module: +@@ -839,11 +831,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]) @@ -80,7 +80,7 @@ self.load_groups() dialog.destroy() -@@ -863,7 +855,7 @@ class Module: +@@ -888,7 +880,7 @@ class Module: d.set_default_response(Gtk.ResponseType.NO) r = d.run() if r == Gtk.ResponseType.YES: @@ -89,7 +89,7 @@ self.load_groups() d.destroy() -@@ -871,7 +863,7 @@ class Module: +@@ -896,7 +888,7 @@ class Module: dialog = GroupDialog(_("Group Name"), "") response = dialog.run() if response == Gtk.ResponseType.OK: @@ -98,7 +98,7 @@ self.load_groups() dialog.destroy() -@@ -882,7 +874,7 @@ class Module: +@@ -907,7 +899,7 @@ class Module: dialog = GroupDialog(_("Group Name"), group) response = dialog.run() if response == Gtk.ResponseType.OK: