From d908940ef37dd6a5b72148ded8b995c17a01604a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20M=C3=BCllner?= Date: Wed, 1 Aug 2018 13:27:07 +0200 Subject: [PATCH] showOSD: Fix handling of defined 'falsy' parameters For the OSD, all parameters except for the icon are optional - if the caller doesn't include the 'label' option, the OSD won't show a label etc. While this makes sense for an API, it means that we have to be careful to correctly differentiate an option that was omitted and an option that has a 'falsy' value like false or 0. Unfortunately since commit ccaae5d3c we no longer do, with the result that OSDs meant for the first monitor will show up on all, and a level of 0 is presented as no level bar instead of an empty one, whoops. https://bugzilla.gnome.org/show_bug.cgi?id=791669 --- js/ui/shellDBus.js | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/js/ui/shellDBus.js b/js/ui/shellDBus.js index 55e1e5737..4d60ef45b 100644 --- a/js/ui/shellDBus.js +++ b/js/ui/shellDBus.js @@ -145,14 +145,18 @@ var GnomeShell = new Lang.Class({ for (let param in params) params[param] = params[param].deep_unpack(); - let monitorIndex = params['monitor'] || -1; - let label = params['label'] || undefined; - let level = params['level'] || undefined; - let maxLevel = params['max_level'] || undefined; + let { monitor: monitorIndex, + label, + level, + max_level: maxLevel, + icon: serializedIcon } = params; + + if (monitorIndex === undefined) + monitorIndex = -1; let icon = null; - if (params['icon']) - icon = Gio.Icon.new_for_string(params['icon']); + if (serializedIcon) + icon = Gio.Icon.new_for_string(serializedIcon); Main.osdWindowManager.show(monitorIndex, icon, label, level, maxLevel); },