As pointed by Josip, the code for loading the legacy setting keywords for
the Minipreview feature did not update correctly the configuration:

 - if the setting used a size as a multiple of icon size, this was
understood as the minimum pixel size, which meant here disabling the
feature. The code is now consistent with what Window Maker does;

 - if the old keyword were found, they were loaded but not removed from the
database after creating the new ones, which is a source of problem as
Window Maker assumes that the presence of the legacy keywords means they
are to be taken in consideration.

Reported-by: Josip Deanovic <djosip+n...@linuxpages.net>
Signed-off-by: Christophe CURIS <christophe.cu...@free.fr>
---
 WPrefs.app/Icons.c | 18 +++++++++++++++++-
 1 file changed, 17 insertions(+), 1 deletion(-)

diff --git a/WPrefs.app/Icons.c b/WPrefs.app/Icons.c
index 4e7f237..e68da56 100644
--- a/WPrefs.app/Icons.c
+++ b/WPrefs.app/Icons.c
@@ -60,6 +60,8 @@ typedef struct _Panel {
 
        CallbackRec callbacks;
 
+       Bool have_legacy_apercu;
+
        WMWidget *parent;
 
        WMFrame *posF;
@@ -206,6 +208,7 @@ static void showData(_Panel * panel)
         * new settings
         * This hack should be kept for at least 2 years, that means >= 2017.
         */
+       panel->have_legacy_apercu = False;
        str = GetStringForKey("MiniwindowPreviewBalloons");
        if (str != NULL) {
                /* New names found, use them in priority */
@@ -221,9 +224,18 @@ static void showData(_Panel * panel)
                /* No new names, try the legacy names */
                b = GetBoolForKey("MiniwindowApercuBalloons");
                if (b) {
+                       panel->have_legacy_apercu = True;
                        i = GetIntegerForKey("ApercuSize");
+
+                       /*
+                        * In the beginning, the option was coded as a multiple 
of the icon
+                        * size; then it was converted to pixel size
+                        */
+                       if (i < 24)
+                               i *= GetIntegerForKey("IconSize");
+
                        if (i <= minipreview_minimum_size)
-                               i = minipreview_minimum_size;
+                               i = minipreview_minimum_size + 1;       /* +1 
to not display as "off" */
                } else {
                        i = minipreview_minimum_size;
                }
@@ -466,6 +478,10 @@ static void storeData(_Panel * panel)
                }
                SetIntegerForKey(i, "MiniPreviewSize");
        }
+       if (panel->have_legacy_apercu) {
+               RemoveObjectForKey("MiniwindowApercuBalloons");
+               RemoveObjectForKey("ApercuSize");
+       }
 
        for (i = 0; i < wlengthof(icon_animation); i++) {
                if (WMGetButtonSelected(panel->animB[i])) {
-- 
2.1.4


-- 
To unsubscribe, send mail to wmaker-dev-unsubscr...@lists.windowmaker.org.

Reply via email to