This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project wmaker-crm.git.

The branch, next has been updated
       via  2a025b2edddee55298076fad693683d53b7b3bd1 (commit)
       via  806784e194c891feee064d4b75e17426f5dc9cd2 (commit)
       via  5a3cab3cef8c98bc8de55b29e0d28b20d0baf293 (commit)
      from  2eb1107e20f889ef88f0055b8544b950dd5024a5 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
http://repo.or.cz/w/wmaker-crm.git/commit/2a025b2edddee55298076fad693683d53b7b3bd1

commit 2a025b2edddee55298076fad693683d53b7b3bd1
Author: BALATON Zoltan <bala...@eik.bme.hu>
Date:   Thu Nov 15 02:53:50 2012 +0100

    WPrefs: More moving around of options and tweaks to layout
    
    Managed to squeeze two more options from the expert page to the
    corresponding pages and also reorganised some widgets to avoid large
    now unused spaces in one place and clipped text in the other.

diff --git a/WPrefs.app/Configurations.c b/WPrefs.app/Configurations.c
index 952fd26..e64d8c1 100644
--- a/WPrefs.app/Configurations.c
+++ b/WPrefs.app/Configurations.c
@@ -173,14 +173,14 @@ static void createPanel(Panel *p)
 
     /*********** Icon Slide Speed **********/
        panel->icoF = WMCreateFrame(panel->box);
-       WMResizeWidget(panel->icoF, 230, 45);
+       WMResizeWidget(panel->icoF, 212, 45);
        WMMoveWidget(panel->icoF, 15, 10);
        WMSetFrameTitle(panel->icoF, _("Icon Slide Speed"));
 
     /*********** Shade Animation Speed **********/
        panel->shaF = WMCreateFrame(panel->box);
-       WMResizeWidget(panel->shaF, 230, 45);
-       WMMoveWidget(panel->shaF, 15, 60);
+       WMResizeWidget(panel->shaF, 212, 45);
+       WMMoveWidget(panel->shaF, 15, 65);
        WMSetFrameTitle(panel->shaF, _("Shade Animation Speed"));
 
        buf1 = wmalloc(strlen(SPEED_IMAGE) + 1);
@@ -190,9 +190,9 @@ static void createPanel(Panel *p)
                panel->icoB[i] = WMCreateCustomButton(panel->icoF, 
WBBStateChangeMask);
                panel->shaB[i] = WMCreateCustomButton(panel->shaF, 
WBBStateChangeMask);
                WMResizeWidget(panel->icoB[i], 40, 24);
-               WMMoveWidget(panel->icoB[i], 10 + (40 * i), 15);
+               WMMoveWidget(panel->icoB[i], 2 + (40 * i), 15);
                WMResizeWidget(panel->shaB[i], 40, 24);
-               WMMoveWidget(panel->shaB[i], 10 + (40 * i), 15);
+               WMMoveWidget(panel->shaB[i], 2 + (40 * i), 15);
                WMSetButtonBordered(panel->icoB[i], False);
                WMSetButtonImagePosition(panel->icoB[i], WIPImageOnly);
                if (i > 0) {
@@ -238,8 +238,8 @@ static void createPanel(Panel *p)
 
     /***************** Smoothed Scaling *****************/
        panel->smoF = WMCreateFrame(panel->box);
-       WMResizeWidget(panel->smoF, 115, 110);
-       WMMoveWidget(panel->smoF, 18, 115);
+       WMResizeWidget(panel->smoF, 94, 100);
+       WMMoveWidget(panel->smoF, 420, 10);
        WMSetFrameTitle(panel->smoF, _("Smooth Scaling"));
        WMSetBalloonTextForView(_("Smooth scaled background images, 
neutralizingn"
                                  "the `pixelization' effect. This will slown"
@@ -247,7 +247,7 @@ static void createPanel(Panel *p)
 
        panel->smoB = WMCreateButton(panel->smoF, WBTToggle);
        WMResizeWidget(panel->smoB, 64, 64);
-       WMMoveWidget(panel->smoB, 25, 25);
+       WMMoveWidget(panel->smoB, 15, 23);
        WMSetButtonImagePosition(panel->smoB, WIPImageOnly);
        path = LocateImage(SMOOTH_IMAGE);
        if (path) {
@@ -279,41 +279,41 @@ static void createPanel(Panel *p)
 
     /***************** Titlebar Style Size ****************/
        panel->titlF = WMCreateFrame(panel->box);
-       WMResizeWidget(panel->titlF, 105, 110);
-       WMMoveWidget(panel->titlF, 140, 115);
+       WMResizeWidget(panel->titlF, 212, 97);
+       WMMoveWidget(panel->titlF, 15, 120);
        WMSetFrameTitle(panel->titlF, _("Titlebar Style"));
 
-       panel->newsB = WMCreateButton(panel->titlF, WBTOnOff);
-       WMResizeWidget(panel->newsB, 74, 40);
-       WMMoveWidget(panel->newsB, 15, 20);
-       WMSetButtonImagePosition(panel->newsB, WIPImageOnly);
-       path = LocateImage(NEWS_IMAGE);
+       panel->oldsB = WMCreateButton(panel->titlF, WBTOnOff);
+       WMResizeWidget(panel->oldsB, 60, 40);
+       WMMoveWidget(panel->oldsB, 16, 32);
+       WMSetButtonImagePosition(panel->oldsB, WIPImageOnly);
+       path = LocateImage(OLDS_IMAGE);
        if (path) {
                icon = WMCreatePixmapFromFile(scr, path);
                if (icon) {
-                       WMSetButtonImage(panel->newsB, icon);
+                       WMSetButtonImage(panel->oldsB, icon);
                        WMReleasePixmap(icon);
                }
                wfree(path);
        }
 
-       panel->oldsB = WMCreateButton(panel->titlF, WBTOnOff);
-    WMResizeWidget(panel->oldsB, 37, 40);
-       WMMoveWidget(panel->oldsB, 15, 60);
-       WMSetButtonImagePosition(panel->oldsB, WIPImageOnly);
-       path = LocateImage(OLDS_IMAGE);
+       panel->newsB = WMCreateButton(panel->titlF, WBTOnOff);
+       WMResizeWidget(panel->newsB, 60, 40);
+       WMMoveWidget(panel->newsB, 76, 32);
+       WMSetButtonImagePosition(panel->newsB, WIPImageOnly);
+       path = LocateImage(NEWS_IMAGE);
        if (path) {
                icon = WMCreatePixmapFromFile(scr, path);
                if (icon) {
-                       WMSetButtonImage(panel->oldsB, icon);
+                       WMSetButtonImage(panel->newsB, icon);
                        WMReleasePixmap(icon);
                }
                wfree(path);
        }
 
        panel->nextB = WMCreateButton(panel->titlF, WBTOnOff);
-       WMResizeWidget(panel->nextB, 37, 40);
-       WMMoveWidget(panel->nextB, 52, 60);
+       WMResizeWidget(panel->nextB, 60, 40);
+       WMMoveWidget(panel->nextB, 136, 32);
        WMSetButtonImagePosition(panel->nextB, WIPImageOnly);
        path = LocateImage(NEXT_IMAGE);
        if (path) {
@@ -332,13 +332,13 @@ static void createPanel(Panel *p)
 
     /**************** Features ******************/
        panel->animF = WMCreateFrame(panel->box);
-       WMResizeWidget(panel->animF, 255, 115);
-       WMMoveWidget(panel->animF, 255, 10);
+       WMResizeWidget(panel->animF, 173, 100);
+       WMMoveWidget(panel->animF, 237, 10);
        WMSetFrameTitle(panel->animF, _("Animations"));
 
        panel->animB = WMCreateButton(panel->animF, WBTToggle);
        WMResizeWidget(panel->animB, 64, 64);
-       WMMoveWidget(panel->animB, 15, 20);
+       WMMoveWidget(panel->animB, 15, 23);
        WMSetButtonFont(panel->animB, font);
        WMSetButtonText(panel->animB, _("Animations"));
        WMSetButtonImagePosition(panel->animB, WIPAbove);
@@ -356,7 +356,7 @@ static void createPanel(Panel *p)
 
        panel->supB = WMCreateButton(panel->animF, WBTToggle);
        WMResizeWidget(panel->supB, 64, 64);
-       WMMoveWidget(panel->supB, 95, 20);
+       WMMoveWidget(panel->supB, 94, 23);
        WMSetButtonFont(panel->supB, font);
        WMSetButtonText(panel->supB, _("Superfluous"));
        WMSetButtonImagePosition(panel->supB, WIPAbove);
@@ -380,8 +380,8 @@ static void createPanel(Panel *p)
        panel->cmapSize = 4;
 
        panel->dithF = WMCreateFrame(panel->box);
-       WMResizeWidget(panel->dithF, 255, 95);
-       WMMoveWidget(panel->dithF, 255, 130);
+       WMResizeWidget(panel->dithF, 277, 97);
+       WMMoveWidget(panel->dithF, 237, 120);
        WMSetFrameTitle(panel->dithF, _("Dithering colormap for 8bpp"));
 
        WMSetBalloonTextForView(_("Number of colors to reserve for Window 
Makern"
@@ -395,28 +395,28 @@ static void createPanel(Panel *p)
 
        panel->dithL = WMCreateLabel(panel->dithF);
        WMResizeWidget(panel->dithL, 75, 16);
-       WMMoveWidget(panel->dithL, 90, 50);
+       WMMoveWidget(panel->dithL, 98, 50);
        WMSetLabelTextAlignment(panel->dithL, WACenter);
        WMSetLabelText(panel->dithL, "64");
 
        panel->dithS = WMCreateSlider(panel->dithF);
        WMResizeWidget(panel->dithS, 95, 16);
-       WMMoveWidget(panel->dithS, 80, 65);
+       WMMoveWidget(panel->dithS, 90, 65);
        WMSetSliderMinValue(panel->dithS, 2);
        WMSetSliderMaxValue(panel->dithS, 6);
        WMSetSliderContinuous(panel->dithS, True);
        WMSetSliderAction(panel->dithS, updateLabel, panel);
 
        panel->dith1L = WMCreateLabel(panel->dithF);
-       WMResizeWidget(panel->dith1L, 70, 35);
+       WMResizeWidget(panel->dith1L, 80, 35);
        WMMoveWidget(panel->dith1L, 5, 50);
        WMSetLabelTextAlignment(panel->dith1L, WACenter);
        WMSetLabelFont(panel->dith1L, font);
        WMSetLabelText(panel->dith1L, _("More colors fornapplications"));
 
        panel->dith2L = WMCreateLabel(panel->dithF);
-       WMResizeWidget(panel->dith2L, 70, 35);
-       WMMoveWidget(panel->dith2L, 180, 50);
+       WMResizeWidget(panel->dith2L, 80, 35);
+       WMMoveWidget(panel->dith2L, 190, 50);
        WMSetLabelTextAlignment(panel->dith2L, WACenter);
        WMSetLabelFont(panel->dith2L, font);
        WMSetLabelText(panel->dith2L, _("More colors fornWindow Maker"));
diff --git a/WPrefs.app/Expert.c b/WPrefs.app/Expert.c
index 5d539fc..f897384 100644
--- a/WPrefs.app/Expert.c
+++ b/WPrefs.app/Expert.c
@@ -22,9 +22,9 @@
 #include "WPrefs.h"
 
 #ifdef XKB_MODELOCK
-#define NUMITEMS  12
+#define NUMITEMS  10
 #else
-#define NUMITEMS  11
+#define NUMITEMS  9
 #endif
 
 typedef struct _Panel {
@@ -54,12 +54,10 @@ static void showData(_Panel * panel)
        WMSetButtonSelected(panel->swi[4], GetBoolForKey("DontConfirmKill"));
        WMSetButtonSelected(panel->swi[5], GetBoolForKey("DisableBlinking"));
        WMSetButtonSelected(panel->swi[6], GetBoolForKey("AntialiasedText"));
-       WMSetButtonSelected(panel->swi[7], GetBoolForKey("SingleClickLaunch"));
-       WMSetButtonSelected(panel->swi[8], 
GetBoolForKey("CycleActiveHeadOnly"));
-       WMSetButtonSelected(panel->swi[9], GetBoolForKey("ShowClipTitle"));
-       WMSetButtonSelected(panel->swi[10], 
GetBoolForKey("OpaqueMoveResizeKeyboard"));
+       WMSetButtonSelected(panel->swi[7], 
GetBoolForKey("CycleActiveHeadOnly"));
+       WMSetButtonSelected(panel->swi[8], GetBoolForKey("ShowClipTitle"));
 #ifdef XKB_MODELOCK
-       WMSetButtonSelected(panel->swi[11], GetBoolForKey("KbdModeLock"));
+       WMSetButtonSelected(panel->swi[9], GetBoolForKey("KbdModeLock"));
 #endif /* XKB_MODELOCK */
 }
 
@@ -98,17 +96,15 @@ static void createPanel(Panel * p)
        WMSetButtonText(panel->swi[4], _("Disable confirmation panel for the 
Kill command."));
        WMSetButtonText(panel->swi[5], _("Disable selection animation for 
selected icons."));
        WMSetButtonText(panel->swi[6], _("Smooth font edges (needs restart)."));
-       WMSetButtonText(panel->swi[7], _("Launch applications and restore 
windows with a single click."));
-       WMSetButtonText(panel->swi[8], _("Cycle windows only on the active 
head."));
-       WMSetButtonText(panel->swi[9], _("Show workspace title on Clip."));
-       WMSetButtonText(panel->swi[10], _("Opaque Move,Resize with keyboard."));
+       WMSetButtonText(panel->swi[7], _("Cycle windows only on the active 
head."));
+       WMSetButtonText(panel->swi[8], _("Show workspace title on Clip."));
 #ifdef XKB_MODELOCK
-       WMSetButtonText(panel->swi[11], _("Enable keyboard language switch 
button in window titlebars."));
+       WMSetButtonText(panel->swi[9], _("Enable keyboard language switch 
button in window titlebars."));
 #endif /* XKB_MODELOCK */
 
        /* If the item is default true, enable the button here */
        WMSetButtonEnabled(panel->swi[6], True);
-       WMSetButtonEnabled(panel->swi[9], True);
+       WMSetButtonEnabled(panel->swi[8], True);
 
        WMMapSubwidgets(panel->box);
        WMSetScrollViewContentView(sv, WMWidgetView(f));
@@ -130,12 +126,10 @@ static void storeDefaults(_Panel * panel)
        SetBoolForKey(WMGetButtonSelected(panel->swi[4]), "DontConfirmKill");
        SetBoolForKey(WMGetButtonSelected(panel->swi[5]), "DisableBlinking");
        SetBoolForKey(WMGetButtonSelected(panel->swi[6]), "AntialiasedText");
-       SetBoolForKey(WMGetButtonSelected(panel->swi[7]), "SingleClickLaunch");
-       SetBoolForKey(WMGetButtonSelected(panel->swi[8]), 
"CycleActiveHeadOnly");
-       SetBoolForKey(WMGetButtonSelected(panel->swi[9]), "ShowClipTitle");
-       SetBoolForKey(WMGetButtonSelected(panel->swi[10]), 
"OpaqueMoveResizeKeyboard");
+       SetBoolForKey(WMGetButtonSelected(panel->swi[7]), 
"CycleActiveHeadOnly");
+       SetBoolForKey(WMGetButtonSelected(panel->swi[8]), "ShowClipTitle");
 #ifdef XKB_MODELOCK
-       SetBoolForKey(WMGetButtonSelected(panel->swi[11]), "KbdModeLock");
+       SetBoolForKey(WMGetButtonSelected(panel->swi[9]), "KbdModeLock");
 #endif /* XKB_MODELOCK */
 }
 
diff --git a/WPrefs.app/Focus.c b/WPrefs.app/Focus.c
index 8d8eb39..d664cfa 100644
--- a/WPrefs.app/Focus.c
+++ b/WPrefs.app/Focus.c
@@ -190,8 +190,8 @@ static void createPanel(Panel * p)
 
     /***************** Input Focus Mode *****************/
        panel->kfocF = WMCreateFrame(panel->box);
-       WMResizeWidget(panel->kfocF, 240, 130);
-       WMMoveWidget(panel->kfocF, 15, 15);
+       WMResizeWidget(panel->kfocF, 240, 125);
+       WMMoveWidget(panel->kfocF, 15, 10);
        WMSetFrameTitle(panel->kfocF, _("Input Focus Mode"));
 
        {
@@ -217,18 +217,18 @@ static void createPanel(Panel * p)
     /***************** Colormap Installation Mode ****************/
 
        panel->cfocF = WMCreateFrame(panel->box);
-       WMResizeWidget(panel->cfocF, 240, 70);
-       WMMoveWidget(panel->cfocF, 15, 150);
+       WMResizeWidget(panel->cfocF, 240, 77);
+       WMMoveWidget(panel->cfocF, 15, 143);
        WMSetFrameTitle(panel->cfocF, _("Install colormap in the window..."));
 
        panel->manB = WMCreateRadioButton(panel->cfocF);
        WMResizeWidget(panel->manB, 225, 20);
-       WMMoveWidget(panel->manB, 10, 18);
+       WMMoveWidget(panel->manB, 10, 20);
        WMSetButtonText(panel->manB, _("...that has the input focus."));
 
        panel->autB = WMCreateRadioButton(panel->cfocF);
        WMResizeWidget(panel->autB, 225, 20);
-       WMMoveWidget(panel->autB, 10, 43);
+       WMMoveWidget(panel->autB, 10, 45);
        WMSetButtonText(panel->autB, _("...that's under the mouse pointer."));
        WMGroupButtons(panel->manB, panel->autB);
 
@@ -236,8 +236,8 @@ static void createPanel(Panel * p)
 
     /***************** Automatic window raise delay *****************/
        panel->raisF = WMCreateFrame(panel->box);
-       WMResizeWidget(panel->raisF, 245, 70);
-       WMMoveWidget(panel->raisF, 265, 15);
+       WMResizeWidget(panel->raisF, 245, 68);
+       WMMoveWidget(panel->raisF, 265, 10);
        WMSetFrameTitle(panel->raisF, _("Automatic Window Raise Delay"));
 
        buf1 = wmalloc(strlen(DELAY_ICON) + 1);
@@ -248,7 +248,7 @@ static void createPanel(Panel * p)
 
                panel->raisB[i] = WMCreateCustomButton(panel->raisF, 
WBBStateChangeMask);
                WMResizeWidget(panel->raisB[i], 25, 25);
-               WMMoveWidget(panel->raisB[i], 10 + (30 * i), 25);
+               WMMoveWidget(panel->raisB[i], 12 + (30 * i), 25);
                WMSetButtonBordered(panel->raisB[i], False);
                WMSetButtonImagePosition(panel->raisB[i], WIPImageOnly);
                WMSetButtonAction(panel->raisB[i], pushDelayButton, panel);
@@ -284,7 +284,7 @@ static void createPanel(Panel * p)
 
        panel->raisT = WMCreateTextField(panel->raisF);
        WMResizeWidget(panel->raisT, 36, 20);
-       WMMoveWidget(panel->raisT, 165, 30);
+       WMMoveWidget(panel->raisT, 165, 28);
        WMAddNotificationObserver(raiseTextChanged, panel, 
WMTextDidChangeNotification, panel->raisT);
 
        color = WMDarkGrayColor(scr);
@@ -292,7 +292,7 @@ static void createPanel(Panel * p)
 
        panel->raisL = WMCreateLabel(panel->raisF);
        WMResizeWidget(panel->raisL, 36, 16);
-       WMMoveWidget(panel->raisL, 205, 35);
+       WMMoveWidget(panel->raisL, 205, 32);
        WMSetLabelText(panel->raisL, _("msec"));
        WMSetLabelTextColor(panel->raisL, color);
        WMSetLabelFont(panel->raisL, font);
@@ -304,8 +304,8 @@ static void createPanel(Panel * p)
 
     /***************** Options ****************/
        panel->optF = WMCreateFrame(panel->box);
-       WMResizeWidget(panel->optF, 245, 125);
-       WMMoveWidget(panel->optF, 265, 95);
+       WMResizeWidget(panel->optF, 245, 132);
+       WMMoveWidget(panel->optF, 265, 88);
 
        panel->ignB = WMCreateSwitchButton(panel->optF);
        WMResizeWidget(panel->ignB, 225, 50);
@@ -314,12 +314,12 @@ static void createPanel(Panel * p)
 
        panel->newB = WMCreateSwitchButton(panel->optF);
        WMResizeWidget(panel->newB, 225, 35);
-       WMMoveWidget(panel->newB, 10, 44);
+       WMMoveWidget(panel->newB, 10, 49);
        WMSetButtonText(panel->newB, _("Automatically focus new windows."));
 
        panel->craisB = WMCreateSwitchButton(panel->optF);
        WMResizeWidget(panel->craisB, 225, 36);
-       WMMoveWidget(panel->craisB, 10, 75);
+       WMMoveWidget(panel->craisB, 10, 85);
        WMSetButtonText(panel->craisB, _("Raise window when switchingnfocus 
with keyboard."));
 
        WMMapSubwidgets(panel->optF);
diff --git a/WPrefs.app/Icons.c b/WPrefs.app/Icons.c
index 599dfb0..97b3c2f 100644
--- a/WPrefs.app/Icons.c
+++ b/WPrefs.app/Icons.c
@@ -44,6 +44,7 @@ typedef struct _Panel {
        WMFrame *optF;
        WMButton *arrB;
        WMButton *omnB;
+       WMButton *sclB;
 
        WMFrame *sizeF;
        WMPopUpButton *sizeP;
@@ -160,8 +161,8 @@ static void createPanel(Panel * p)
 
     /***************** Positioning of Icons *****************/
        panel->posF = WMCreateFrame(panel->box);
-       WMResizeWidget(panel->posF, 260, 135);
-       WMMoveWidget(panel->posF, 25, 10);
+       WMResizeWidget(panel->posF, 210, 140);
+       WMMoveWidget(panel->posF, 20, 10);
        WMSetFrameTitle(panel->posF, _("Icon Positioning"));
 
        for (i = 0; i < 8; i++) {
@@ -171,30 +172,30 @@ static void createPanel(Panel * p)
                if (i > 0)
                        WMGroupButtons(panel->posB[0], panel->posB[i]);
        }
-       WMMoveWidget(panel->posB[1], 70, 23);
+       WMMoveWidget(panel->posB[1], 58, 25);
        WMResizeWidget(panel->posB[1], 47, 15);
-       WMMoveWidget(panel->posB[3], 70 + 47, 23);
+       WMMoveWidget(panel->posB[3], 58 + 47, 25);
        WMResizeWidget(panel->posB[3], 47, 15);
 
-       WMMoveWidget(panel->posB[0], 55, 38);
+       WMMoveWidget(panel->posB[0], 43, 40);
        WMResizeWidget(panel->posB[0], 15, 35);
-       WMMoveWidget(panel->posB[4], 55, 38 + 35);
+       WMMoveWidget(panel->posB[4], 43, 40 + 35);
        WMResizeWidget(panel->posB[4], 15, 35);
 
-       WMMoveWidget(panel->posB[5], 70, 38 + 70);
+       WMMoveWidget(panel->posB[5], 58, 40 + 70);
        WMResizeWidget(panel->posB[5], 47, 15);
-       WMMoveWidget(panel->posB[7], 70 + 47, 38 + 70);
+       WMMoveWidget(panel->posB[7], 58 + 47, 40 + 70);
        WMResizeWidget(panel->posB[7], 47, 15);
 
-       WMMoveWidget(panel->posB[2], 70 + 95, 38);
+       WMMoveWidget(panel->posB[2], 58 + 95, 40);
        WMResizeWidget(panel->posB[2], 15, 35);
-       WMMoveWidget(panel->posB[6], 70 + 95, 38 + 35);
+       WMMoveWidget(panel->posB[6], 58 + 95, 40 + 35);
        WMResizeWidget(panel->posB[6], 15, 35);
 
        color = WMCreateRGBColor(WMWidgetScreen(panel->parent), 0x5100, 0x5100, 
0x7100, True);
        panel->posVF = WMCreateFrame(panel->posF);
        WMResizeWidget(panel->posVF, 95, 70);
-       WMMoveWidget(panel->posVF, 70, 38);
+       WMMoveWidget(panel->posVF, 58, 40);
        WMSetFrameRelief(panel->posVF, WRSunken);
        WMSetWidgetBackgroundColor(panel->posVF, color);
        WMReleaseColor(color);
@@ -204,16 +205,35 @@ static void createPanel(Panel * p)
 
        WMMapSubwidgets(panel->posF);
 
+    /***************** Icon Size ****************/
+       panel->sizeF = WMCreateFrame(panel->box);
+       WMResizeWidget(panel->sizeF, 210, 70);
+       WMMoveWidget(panel->sizeF, 20, 155);
+       WMSetFrameTitle(panel->sizeF, _("Icon Size"));
+
+       WMSetBalloonTextForView(_("The size of the dock/application icon and 
miniwindows"),
+                               WMWidgetView(panel->sizeF));
+
+       panel->sizeP = WMCreatePopUpButton(panel->sizeF);
+       WMResizeWidget(panel->sizeP, 161, 20);
+       WMMoveWidget(panel->sizeP, 25, 30);
+       for (i = 24; i <= 96; i += 8) {
+               sprintf(buf, "%ix%i", i, i);
+               WMAddPopUpButtonItem(panel->sizeP, buf);
+       }
+
+       WMMapSubwidgets(panel->sizeF);
+
     /***************** Animation ****************/
        panel->animF = WMCreateFrame(panel->box);
-       WMResizeWidget(panel->animF, 205, 135);
-       WMMoveWidget(panel->animF, 295, 10);
+       WMResizeWidget(panel->animF, 260, 110);
+       WMMoveWidget(panel->animF, 240, 10);
        WMSetFrameTitle(panel->animF, _("Iconification Animation"));
 
        for (i = 0; i < 4; i++) {
                panel->animB[i] = WMCreateRadioButton(panel->animF);
-               WMResizeWidget(panel->animB[i], 170, 20);
-               WMMoveWidget(panel->animB[i], 20, 24 + i * 25);
+               WMResizeWidget(panel->animB[i], 145, 20);
+               WMMoveWidget(panel->animB[i], 15, 18 + i * 22);
        }
        WMGroupButtons(panel->animB[0], panel->animB[1]);
        WMGroupButtons(panel->animB[0], panel->animB[2]);
@@ -228,44 +248,32 @@ static void createPanel(Panel * p)
 
     /***************** Options ****************/
        panel->optF = WMCreateFrame(panel->box);
-       WMResizeWidget(panel->optF, 260, 70);
-       WMMoveWidget(panel->optF, 25, 150);
+       WMResizeWidget(panel->optF, 260, 95);
+       WMMoveWidget(panel->optF, 240, 130);
        /*    WMSetFrameTitle(panel->optF, _("Icon Display")); */
 
        panel->arrB = WMCreateSwitchButton(panel->optF);
        WMResizeWidget(panel->arrB, 235, 20);
-       WMMoveWidget(panel->arrB, 15, 15);
+       WMMoveWidget(panel->arrB, 15, 10);
        WMSetButtonText(panel->arrB, _("Auto-arrange icons"));
 
        WMSetBalloonTextForView(_("Keep icons and miniwindows arranged all the 
time."), WMWidgetView(panel->arrB));
 
        panel->omnB = WMCreateSwitchButton(panel->optF);
        WMResizeWidget(panel->omnB, 235, 20);
-       WMMoveWidget(panel->omnB, 15, 40);
+       WMMoveWidget(panel->omnB, 15, 37);
        WMSetButtonText(panel->omnB, _("Omnipresent miniwindows"));
 
        WMSetBalloonTextForView(_("Make miniwindows be present in all 
workspaces."), WMWidgetView(panel->omnB));
 
-       WMMapSubwidgets(panel->optF);
-
-    /***************** Icon Size ****************/
-       panel->sizeF = WMCreateFrame(panel->box);
-       WMResizeWidget(panel->sizeF, 205, 70);
-       WMMoveWidget(panel->sizeF, 295, 150);
-       WMSetFrameTitle(panel->sizeF, _("Icon Size"));
-
-       WMSetBalloonTextForView(_("The size of the dock/application icon and 
miniwindows"),
-                               WMWidgetView(panel->sizeF));
+       panel->sclB = WMCreateSwitchButton(panel->optF);
+       WMResizeWidget(panel->sclB, 235, 28);
+       WMMoveWidget(panel->sclB, 15, 60);
+       WMSetButtonText(panel->sclB, _("Single click activation"));
 
-       panel->sizeP = WMCreatePopUpButton(panel->sizeF);
-       WMResizeWidget(panel->sizeP, 156, 20);
-       WMMoveWidget(panel->sizeP, 25, 30);
-       for (i = 24; i <= 96; i += 8) {
-               sprintf(buf, "%ix%i", i, i);
-               WMAddPopUpButtonItem(panel->sizeP, buf);
-       }
+       WMSetBalloonTextForView(_("Launch applications and restore windows with 
a single click."), WMWidgetView(panel->sclB));
 
-       WMMapSubwidgets(panel->sizeF);
+       WMMapSubwidgets(panel->optF);
 
        WMRealizeWidget(panel->box);
        WMMapSubwidgets(panel->box);
diff --git a/WPrefs.app/Preferences.c b/WPrefs.app/Preferences.c
index 91b04db..8c0ef2c 100644
--- a/WPrefs.app/Preferences.c
+++ b/WPrefs.app/Preferences.c
@@ -209,7 +209,7 @@ static void createPanel(Panel * p)
     /***************** Size Display ****************/
        panel->sizeF = WMCreateFrame(panel->box);
        WMResizeWidget(panel->sizeF, 240, 60);
-       WMMoveWidget(panel->sizeF, 20, 10);
+       WMMoveWidget(panel->sizeF, 15, 10);
        WMSetFrameTitle(panel->sizeF, _("Size Display"));
 
        WMSetBalloonTextForView(_("The position or style of the window sizen"
@@ -217,7 +217,7 @@ static void createPanel(Panel * p)
 
        panel->sizeP = WMCreatePopUpButton(panel->sizeF);
        WMResizeWidget(panel->sizeP, 200, 20);
-       WMMoveWidget(panel->sizeP, 22, 24);
+       WMMoveWidget(panel->sizeP, 20, 24);
        WMAddPopUpButtonItem(panel->sizeP, _("Corner of screen"));
        WMAddPopUpButtonItem(panel->sizeP, _("Center of screen"));
        WMAddPopUpButtonItem(panel->sizeP, _("Center of resized window"));
@@ -229,7 +229,7 @@ static void createPanel(Panel * p)
     /***************** Position Display ****************/
        panel->posiF = WMCreateFrame(panel->box);
        WMResizeWidget(panel->posiF, 240, 60);
-       WMMoveWidget(panel->posiF, 20, 75);
+       WMMoveWidget(panel->posiF, 15, 75);
        WMSetFrameTitle(panel->posiF, _("Position Display"));
 
        WMSetBalloonTextForView(_("The position or style of the window 
positionn"
@@ -237,7 +237,7 @@ static void createPanel(Panel * p)
 
        panel->posiP = WMCreatePopUpButton(panel->posiF);
        WMResizeWidget(panel->posiP, 200, 20);
-       WMMoveWidget(panel->posiP, 22, 24);
+       WMMoveWidget(panel->posiP, 20, 24);
        WMAddPopUpButtonItem(panel->posiP, _("Corner of screen"));
        WMAddPopUpButtonItem(panel->posiP, _("Center of screen"));
        WMAddPopUpButtonItem(panel->posiP, _("Center of resized window"));
@@ -247,14 +247,14 @@ static void createPanel(Panel * p)
 
     /***************** Balloon Text ****************/
        panel->ballF = WMCreateFrame(panel->box);
-       WMResizeWidget(panel->ballF, 235, 113);
-       WMMoveWidget(panel->ballF, 270, 10);
+       WMResizeWidget(panel->ballF, 240, 109);
+       WMMoveWidget(panel->ballF, 265, 10);
        WMSetFrameTitle(panel->ballF, _("Show balloon text for..."));
 
        for (i = 0; i < 4; i++) {
                panel->ballB[i] = WMCreateSwitchButton(panel->ballF);
-               WMResizeWidget(panel->ballB[i], 205, 20);
-               WMMoveWidget(panel->ballB[i], 15, 20 + i * 22);
+               WMResizeWidget(panel->ballB[i], 210, 20);
+               WMMoveWidget(panel->ballB[i], 15, 16 + i * 22);
        }
        WMSetButtonText(panel->ballB[0], _("incomplete window titles"));
        WMSetButtonText(panel->ballB[1], _("miniwindow titles"));
@@ -265,23 +265,24 @@ static void createPanel(Panel * p)
 
     /***************** Options ****************/
        panel->optF = WMCreateFrame(panel->box);
-       WMResizeWidget(panel->optF, 235, 97);
-       WMMoveWidget(panel->optF, 270, 128);
+       WMResizeWidget(panel->optF, 240, 101);
+       WMMoveWidget(panel->optF, 265, 124);
+       WMSetFrameTitle(panel->optF, _("AppIcon bouncing"));
 
        panel->bounceB = WMCreateSwitchButton(panel->optF);
        WMResizeWidget(panel->bounceB, 210, 25);
-       WMMoveWidget(panel->bounceB, 15, 8);
-       WMSetButtonText(panel->bounceB, _("Do not make AppIcons bounce."));
+       WMMoveWidget(panel->bounceB, 15, 14);
+       WMSetButtonText(panel->bounceB, _("Disable AppIcon bounce."));
 
        panel->bounceUrgB = WMCreateSwitchButton(panel->optF);
        WMResizeWidget(panel->bounceUrgB, 210, 30);
-       WMMoveWidget(panel->bounceUrgB, 15, 33);
-       WMSetButtonText(panel->bounceUrgB, _("Bounce AppIcons when the 
application wants attention."));
+       WMMoveWidget(panel->bounceUrgB, 15, 39);
+       WMSetButtonText(panel->bounceUrgB, _("Bounce AppIcon when the 
application wants attention."));
        WMSetButtonEnabled(panel->bounceUrgB, True); /* defaults to true */
 
        panel->bounceRaisB = WMCreateSwitchButton(panel->optF);
        WMResizeWidget(panel->bounceRaisB, 210, 25);
-       WMMoveWidget(panel->bounceRaisB, 15, 64);
+       WMMoveWidget(panel->bounceRaisB, 15, 70);
        WMSetButtonText(panel->bounceRaisB, _("Raise AppIcons when bouncing."));
 
        WMMapSubwidgets(panel->optF);
@@ -289,7 +290,7 @@ static void createPanel(Panel * p)
     /***************** Workspace border ****************/
        panel->borderF = WMCreateFrame(panel->box);
        WMResizeWidget(panel->borderF, 240, 80);
-       WMMoveWidget(panel->borderF, 20, 145);
+       WMMoveWidget(panel->borderF, 15, 145);
        WMSetFrameTitle(panel->borderF, _("Workspace border"));
 
        panel->borderS = WMCreateSlider(panel->borderF);
diff --git a/WPrefs.app/WindowHandling.c b/WPrefs.app/WindowHandling.c
index 335690c..f89344d 100644
--- a/WPrefs.app/WindowHandling.c
+++ b/WPrefs.app/WindowHandling.c
@@ -58,8 +58,8 @@ typedef struct _Panel {
 
        WMFrame *opaqF;
        WMButton *opaqB;
-
        WMButton *opaqresizeB;
+       WMButton *opaqkeybB;
 
        WMFrame *tranF;
        WMButton *tranB;
@@ -198,11 +198,10 @@ static void showData(_Panel * panel)
        WMSetButtonSelected(panel->tranB, 
GetBoolForKey("OpenTransientOnOwnerWorkspace"));
 
        WMSetButtonSelected(panel->opaqB, GetBoolForKey("OpaqueMove"));
-
        WMSetButtonSelected(panel->opaqresizeB, GetBoolForKey("OpaqueResize"));
+       WMSetButtonSelected(panel->opaqkeybB, 
GetBoolForKey("OpaqueMoveResizeKeyboard"));
 
        WMSetButtonSelected(panel->miconB, GetBoolForKey("NoWindowOverIcons"));
-
        WMSetButtonSelected(panel->mdockB, GetBoolForKey("NoWindowOverDock"));
 
        if (GetBoolForKey("Attraction"))
@@ -218,17 +217,24 @@ static void storeData(_Panel * panel)
 
        SetBoolForKey(WMGetButtonSelected(panel->miconB), "NoWindowOverIcons");
        SetBoolForKey(WMGetButtonSelected(panel->mdockB), "NoWindowOverDock");
+
        SetBoolForKey(WMGetButtonSelected(panel->opaqB), "OpaqueMove");
        SetBoolForKey(WMGetButtonSelected(panel->opaqresizeB), "OpaqueResize");
+       SetBoolForKey(WMGetButtonSelected(panel->opaqkeybB), 
"OpaqueMoveResizeKeyboard");
+
        SetBoolForKey(WMGetButtonSelected(panel->tranB), 
"OpenTransientOnOwnerWorkspace");
+
        SetStringForKey(placements[WMGetPopUpButtonSelectedItem(panel->placP)], 
"WindowPlacement");
        sprintf(x, "%i", WMGetSliderValue(panel->hsli));
        sprintf(y, "%i", WMGetSliderValue(panel->vsli));
        arr = WMCreatePLArray(WMCreatePLString(x), WMCreatePLString(y), NULL);
        SetObjectForKey(arr, "WindowPlaceOrigin");
+
        SetIntegerForKey(WMGetSliderValue(panel->resS), "EdgeResistance");
+
        SetIntegerForKey(WMGetSliderValue(panel->resizeS), "ResizeIncrement");
        SetBoolForKey(WMGetButtonSelected(panel->resrB), "Attraction");
+
        WMReleasePropList(arr);
 }
 
@@ -263,7 +269,7 @@ static void createPanel(Panel * p)
 
        panel->placP = WMCreatePopUpButton(panel->placF);
        WMResizeWidget(panel->placP, 105, 20);
-       WMMoveWidget(panel->placP, 15, 20);
+       WMMoveWidget(panel->placP, 10, 20);
        WMAddPopUpButtonItem(panel->placP, _("Automatic"));
        WMAddPopUpButtonItem(panel->placP, _("Random"));
        WMAddPopUpButtonItem(panel->placP, _("Manual"));
@@ -272,14 +278,14 @@ static void createPanel(Panel * p)
        WMAddPopUpButtonItem(panel->placP, _("Center"));
 
        panel->porigL = WMCreateLabel(panel->placF);
-       WMResizeWidget(panel->porigL, 120, 32);
-       WMMoveWidget(panel->porigL, 5, 45);
+       WMResizeWidget(panel->porigL, 110, 32);
+       WMMoveWidget(panel->porigL, 3, 45);
        WMSetLabelTextAlignment(panel->porigL, WACenter);
        WMSetLabelText(panel->porigL, _("Placement Origin"));
 
        panel->porigvL = WMCreateLabel(panel->placF);
        WMResizeWidget(panel->porigvL, 80, 20);
-       WMMoveWidget(panel->porigvL, 30, 75);
+       WMMoveWidget(panel->porigvL, 18, 75);
        WMSetLabelTextAlignment(panel->porigvL, WACenter);
 
        color = WMCreateRGBColor(scr, 0x5100, 0x5100, 0x7100, True);
@@ -292,20 +298,18 @@ static void createPanel(Panel * p)
        sheight = HeightOfScreen(DefaultScreenOfDisplay(WMScreenDisplay(scr)));
 
        if (sheight > swidth) {
-               height = 70;
                width = 70 * swidth / sheight;
-               if (width > 240)
-                       width = 240;
-               height = 240 * sheight / swidth;
+               if (width > 195)
+                       width = 195;
+               height = 195 * sheight / swidth;
        } else {
-               width = 240;
-               height = 240 * sheight / swidth;
+               height = 195 * sheight / swidth;
                if (height > 70)
                        height = 70;
                width = 70 * swidth / sheight;
        }
        WMResizeWidget(panel->porigF, width, height);
-       WMMoveWidget(panel->porigF, 130 + (240 - width) / 2, 20 + (70 - height) 
/ 2);
+       WMMoveWidget(panel->porigF, 125 + (195 - width) / 2, 20 + (70 - height) 
/ 2);
 
        panel->porigW = WMCreateLabel(panel->porigF);
        WMResizeWidget(panel->porigW, THUMB_SIZE, THUMB_SIZE);
@@ -314,14 +318,14 @@ static void createPanel(Panel * p)
 
        panel->hsli = WMCreateSlider(panel->placF);
        WMResizeWidget(panel->hsli, width, 12);
-       WMMoveWidget(panel->hsli, 130 + (240 - width) / 2, 20 + (70 - height) / 
2 + height + 2);
+       WMMoveWidget(panel->hsli, 125 + (195 - width) / 2, 20 + (70 - height) / 
2 + height + 2);
        WMSetSliderAction(panel->hsli, sliderCallback, panel);
        WMSetSliderMinValue(panel->hsli, 0);
        WMSetSliderMaxValue(panel->hsli, swidth);
 
        panel->vsli = WMCreateSlider(panel->placF);
        WMResizeWidget(panel->vsli, 12, height);
-       WMMoveWidget(panel->vsli, 130 + (240 - width) / 2 + width + 2, 20 + (70 
- height) / 2);
+       WMMoveWidget(panel->vsli, 125 + (195 - width) / 2 + width + 2, 20 + (70 
- height) / 2);
        WMSetSliderAction(panel->vsli, sliderCallback, panel);
        WMSetSliderMinValue(panel->vsli, 0);
        WMSetSliderMaxValue(panel->vsli, sheight);
@@ -333,7 +337,7 @@ static void createPanel(Panel * p)
     /************** Opaque Move, Resize ***************/
        panel->opaqF = WMCreateFrame(hbox);
        WMMapWidget(panel->opaqF);
-       WMAddBoxSubview(hbox, WMWidgetView(panel->opaqF), False, True, 122, 0, 
0);
+       WMAddBoxSubview(hbox, WMWidgetView(panel->opaqF), False, True, 150, 0, 
0);
 
        WMSetFrameTitle(panel->opaqF, _("Opaque Move/Resize"));
        WMSetBalloonTextForView(_("Whether the window contents or only a frame 
shouldn"
@@ -342,7 +346,7 @@ static void createPanel(Panel * p)
 
        panel->opaqB = WMCreateButton(panel->opaqF, WBTToggle);
        WMResizeWidget(panel->opaqB, 48,48);
-       WMMoveWidget(panel->opaqB, 7, 35);
+       WMMoveWidget(panel->opaqB, 18, 20);
        WMSetButtonImagePosition(panel->opaqB, WIPImageOnly);
 
        path = LocateImage(NON_OPAQUE_MOVE_PIXMAP);
@@ -373,7 +377,7 @@ static void createPanel(Panel * p)
 
        panel->opaqresizeB = WMCreateButton(panel->opaqF, WBTToggle);
        WMResizeWidget(panel->opaqresizeB, 48,48);
-       WMMoveWidget(panel->opaqresizeB, 65, 35);
+       WMMoveWidget(panel->opaqresizeB, 86, 20);
        WMSetButtonImagePosition(panel->opaqresizeB, WIPImageOnly);
 
        path = LocateImage(NON_OPAQUE_RESIZE_PIXMAP);
@@ -400,48 +404,52 @@ static void createPanel(Panel * p)
                wfree(path);
        }
 
+       panel->opaqkeybB = WMCreateSwitchButton(panel->opaqF);
+       WMResizeWidget(panel->opaqkeybB, 100, 25);
+       WMMoveWidget(panel->opaqkeybB, 18, 76);
+       WMSetButtonText(panel->opaqkeybB, _("by keyboard"));
+
        WMMapSubwidgets(panel->opaqF);
 
 
     /**************** Account for Icon/Dock ***************/
        panel->maxiF = WMCreateFrame(panel->box);
-       WMResizeWidget(panel->maxiF, 205, 95);
-       WMMoveWidget(panel->maxiF, 305, 125);
+       WMResizeWidget(panel->maxiF, 205, 100);
+       WMMoveWidget(panel->maxiF, 307, 125);
        WMSetFrameTitle(panel->maxiF, _("When maximizing..."));
 
        panel->miconB = WMCreateSwitchButton(panel->maxiF);
        WMResizeWidget(panel->miconB, 190, 30);
-       WMMoveWidget(panel->miconB, 10, 12);
+       WMMoveWidget(panel->miconB, 10, 14);
        WMSetButtonText(panel->miconB, _("...do not cover icons"));
 
        panel->mdockB = WMCreateSwitchButton(panel->maxiF);
        WMResizeWidget(panel->mdockB, 190, 30);
-       WMMoveWidget(panel->mdockB, 10, 35);
+       WMMoveWidget(panel->mdockB, 10, 39);
 
        WMSetButtonText(panel->mdockB, _("...do not cover dock"));
 
        panel->resizeS = WMCreateSlider(panel->maxiF);
        WMResizeWidget(panel->resizeS, 50, 15);
-       WMMoveWidget(panel->resizeS, 10, 70);
+       WMMoveWidget(panel->resizeS, 10, 74);
        WMSetSliderMinValue(panel->resizeS, 0);
        WMSetSliderMaxValue(panel->resizeS, 100);
        WMSetSliderAction(panel->resizeS, resizeCallback, panel);
 
        panel->resizeL = WMCreateLabel(panel->maxiF);
        WMResizeWidget(panel->resizeL, 30, 15);
-       WMMoveWidget(panel->resizeL, 60, 70);
+       WMMoveWidget(panel->resizeL, 60, 74);
 
        panel->resizeTextL = WMCreateLabel(panel->maxiF);
        WMSetLabelText(panel->resizeTextL, "Mod+Wheelnresize increment");
        WMResizeWidget(panel->resizeTextL, 110, 30);
-       WMMoveWidget(panel->resizeTextL, 90, 62);
+       WMMoveWidget(panel->resizeTextL, 90, 66);
 
        WMMapSubwidgets(panel->maxiF);
 
     /**************** Edge Resistance  ****************/
-
        panel->resF = WMCreateFrame(panel->box);
-       WMResizeWidget(panel->resF, 285, 45);
+       WMResizeWidget(panel->resF, 289, 50);
        WMMoveWidget(panel->resF, 8, 125);
        WMSetFrameTitle(panel->resF, _("Edge Resistance"));
 
@@ -452,33 +460,32 @@ static void createPanel(Panel * p)
 
        panel->resS = WMCreateSlider(panel->resF);
        WMResizeWidget(panel->resS, 80, 15);
-       WMMoveWidget(panel->resS, 10, 20);
+       WMMoveWidget(panel->resS, 10, 22);
        WMSetSliderMinValue(panel->resS, 0);
        WMSetSliderMaxValue(panel->resS, 80);
        WMSetSliderAction(panel->resS, resistanceCallback, panel);
 
        panel->resL = WMCreateLabel(panel->resF);
        WMResizeWidget(panel->resL, 30, 15);
-       WMMoveWidget(panel->resL, 95, 20);
+       WMMoveWidget(panel->resL, 95, 22);
 
        panel->resaB = WMCreateRadioButton(panel->resF);
        WMMoveWidget(panel->resaB, 130, 15);
-       WMResizeWidget(panel->resaB, 70, 25);
+       WMResizeWidget(panel->resaB, 70, 27);
        WMSetButtonText(panel->resaB, _("Resist"));
 
        panel->resrB = WMCreateRadioButton(panel->resF);
        WMMoveWidget(panel->resrB, 200, 15);
-       WMResizeWidget(panel->resrB, 70, 25);
+       WMResizeWidget(panel->resrB, 70, 27);
        WMSetButtonText(panel->resrB, _("Attract"));
        WMGroupButtons(panel->resrB, panel->resaB);
 
        WMMapSubwidgets(panel->resF);
 
     /**************** Transients on Parent Workspace ****************/
-
        panel->tranF = WMCreateFrame(panel->box);
-       WMResizeWidget(panel->tranF, 285, 40);
-       WMMoveWidget(panel->tranF, 8, 180);
+       WMResizeWidget(panel->tranF, 289, 40);
+       WMMoveWidget(panel->tranF, 8, 185);
 
        panel->tranB = WMCreateSwitchButton(panel->tranF);
        WMMoveWidget(panel->tranB, 10, 5);
diff --git a/WPrefs.app/po/ja.po b/WPrefs.app/po/ja.po
index 8cbfec0..7e94580 100644
--- a/WPrefs.app/po/ja.po
+++ b/WPrefs.app/po/ja.po
@@ -387,7 +387,7 @@ msgid "Show workspace title on Clip."
 msgstr "ワークスペースのタイトルをクリップに表示する"
 
 #: ../../WPrefs.app/Expert.c:97
-msgid "Bounce AppIcons when the application wants attention."
+msgid "Bounce AppIcon when the application wants attention."
 msgstr "注意喚起のためにアイコンが飛び跳ねるようにする"
 
 #: ../../WPrefs.app/Expert.c:98

http://repo.or.cz/w/wmaker-crm.git/commit/806784e194c891feee064d4b75e17426f5dc9cd2

commit 806784e194c891feee064d4b75e17426f5dc9cd2
Author: Christophe CURIS <christophe.cu...@free.fr>
Date:   Thu Nov 15 01:30:33 2012 +0100

    Fixed wrong count to release temporary memory
    
    As found by Rodolfo, it looks like there could be memory leak in the
    function 'RSmoothScaleImage' because it reserveda given number of
    memory blocs but used another count to free them after use.
    
    This patch uses the same count for release as it seems this variable
    is not modified in between. Took the opportunity as Rodolfo proposed
    to convert a global variable to a local variable - this global
    definition seems incorrect.

diff --git a/wrlib/scale.c b/wrlib/scale.c
index 82ed57e..c5b5caf 100644
--- a/wrlib/scale.c
+++ b/wrlib/scale.c
@@ -278,14 +278,13 @@ typedef struct {
        CONTRIB *p;             /* pointer to list of contributions */
 } CLIST;
 
-CLIST *contrib;                        /* array of contribution lists */
-
 /* clamp the input to the specified range */
 #define CLAMP(v,l,h)    ((v)<(l) ? (l) : (v) > (h) ? (h) : v)
 
 /* return of calloc is not checked if NULL in the function below! */
 RImage *RSmoothScaleImage(RImage * src, unsigned new_width, unsigned 
new_height)
 {
+       CLIST *contrib;                 /* array of contribution lists */
        RImage *tmp;            /* intermediate image */
        double xscale, yscale;  /* zoom scale factors */
        int i, j, k;            /* loop variables */
@@ -381,7 +380,7 @@ RImage *RSmoothScaleImage(RImage * src, unsigned new_width, 
unsigned new_height)
        }
 
        /* free the memory allocated for horizontal filter weights */
-       for (i = 0; i < tmp->width; ++i) {
+       for (i = 0; i < new_width; ++i) {
                free(contrib[i].p);
        }
        free(contrib);

http://repo.or.cz/w/wmaker-crm.git/commit/5a3cab3cef8c98bc8de55b29e0d28b20d0baf293

commit 5a3cab3cef8c98bc8de55b29e0d28b20d0baf293
Author: Christophe CURIS <christophe.cu...@free.fr>
Date:   Wed Nov 14 22:05:35 2012 +0100

    Changed handling of quoted strings in the menu parser for consistency
    
    As reported by Amadeusz Sławiński, the support for (d)quoted string
    in the menu file was not exactly the same as in previous versions
    of WindowMaker, so we had a regression which is not acceptable.
    
    This patch propose a consistent handling for (d)quoted text instead
    of the previous on-the-title-only code; now all (d)quoted strings
    are still kept as-is (as expected) but the (d)quotes are always
    removed.
    As a side note, it also improve the support for escaped character
    to work correctly as mentioned in the example of the default menu.
    
    Note: This reverts b2e7620868aa18cebb8f6d1e653f8c46dc959a34 which
    was an incomplete solution to the problem.

diff --git a/WINGs/menuparser.c b/WINGs/menuparser.c
index c18f9b9..e812ba3 100644
--- a/WINGs/menuparser.c
+++ b/WINGs/menuparser.c
@@ -228,24 +228,6 @@ read_next_line:
                }
        }
 
-       if (title != NULL) {
-               char eot, *src, *dst;
-
-               src = *title;
-               eot = *src++;
-               if ((eot == '"') || (eot == ''')) {
-                       dst = *title;
-
-                       while (*src != '0')
-                               *dst++ = *src++;
-
-                       if ((dst > *title) && (dst[-1] == eot))
-                               dst--;
-
-                       *dst = '0';
-               }
-       }
-
        if (params != NULL) {
                lineparam[sizeof(lineparam) - 1] = '0';
                *parameter = wstrdup(lineparam);
@@ -319,10 +301,12 @@ found_end_of_comment:
  * the result is wmalloc's, so it needs to be free'd */
 static char *menu_parser_isolate_token(WMenuParser parser, WParserMacro 
*list_macros)
 {
-       char *start, *token;
+       char buffer_token[sizeof(parser->line_buffer)];
+       char *token;
        int limit = MAX_NESTED_MACROS;
 
-       start = parser->rd;
+       token = buffer_token;
+
 restart_token_split:
 
        while (*parser->rd != '0')
@@ -333,48 +317,64 @@ restart_token_split:
                         ((parser->rd[1] == '*') || (parser->rd[1] == '/'))) {
                        break;
 
-               } else if ((parser->rd[0] == '\') && (parser->rd[1] == 'n')) {
-                       break;
+               } else if (parser->rd[0] == '\') {
+                       if ((parser->rd[1] == 'n') || (parser->rd[1] == '0'))
+                               break;
 
-               } else if ((*parser->rd == '"' ) || (*parser->rd == ''')) {
-                       char eot = *parser->rd++;
+                       parser->rd++;
+                       *token++ = *parser->rd++;
+
+               } else if (*parser->rd == '"' ) {
+                       char ch;
 
-                       while ((*parser->rd != '0') && (*parser->rd != 'n'))
-                               if (*parser->rd++ == eot)
-                                       goto found_end_quote;
+                       /* Double-quoted string deserve special processing 
because macros are not expanded
+                               inside. We also remove the double quotes. */
+                       parser->rd++;
+                       while ((*parser->rd != '0') && (*parser->rd != 'n')) {
+                               ch = *parser->rd++;
+                               if (ch == '\') {
+                                       if ((*parser->rd == '0') || 
(*parser->rd == 'n'))
+                                               break;
+                                       *token++ = *parser->rd++;
+                               } else if (ch == '"')
+                                       goto found_end_dquote;
+                               else
+                                       *token++ = ch;
+                       }
 
-                       WMenuParserError(parser, _("missing closing quote or 
double-quote before end-of-line") );
+                       WMenuParserError(parser, _("missing closing 
double-quote before end-of-line") );
 
-found_end_quote:
+found_end_dquote:
                        ;
-               } else if (isnamechr(*parser->rd)) {
-                       WParserMacro *macro;
-                       char *start_macro;
 
-                       start_macro = parser->rd;
-                       while (isnamechr(*parser->rd))
-                               parser->rd++;
+               } else if (*parser->rd == ''') {
+                       char ch;
+
+                       /* Simple-quoted string deserve special processing 
because we keep their content
+                               as-is, including the quotes and the -escaped 
text */
+                       *token++ = *parser->rd++;
+                       while ((*parser->rd != '0') && (*parser->rd != 'n')) {
+                               ch = *parser->rd++;
+                               *token++ = ch;
+                               if (ch == ''')
+                                       goto found_end_squote;
+                       }
 
-                       macro = menu_parser_find_macro(parser, start_macro);
-                       if (macro != NULL) {
-                               char *expand_there;
+                       WMenuParserError(parser, _("missing closing 
simple-quote before end-of-line") );
 
-                               /* Copy the chars before the macro to the 
beginning of the buffer to
-                                * leave as much room as possible for expansion 
*/
-                               expand_there = parser->line_buffer;
-                               if (start != parser->line_buffer)
-                                       while (start < start_macro)
-                                               *expand_there++ = *start++;
+found_end_squote:
+                       ;
 
-                               start = parser->line_buffer;
+               } else if (isnamechr(*parser->rd)) {
+                       WParserMacro *macro;
 
-                               /* Macro expansion will take care to keep the 
rest of the line after
-                                * the macro to the end of the line for future 
token extraction */
-                               menu_parser_expand_macro(parser, macro, 
expand_there,
-                                                        
sizeof(parser->line_buffer) - (start - parser->line_buffer) );
+                       macro = menu_parser_find_macro(parser, parser->rd);
+                       if (macro != NULL) {
+                               /* The expansion is done inside the parser's 
buffer
+                                       this is needed to allow sub macro calls 
*/
+                               menu_parser_expand_macro(parser, macro);
 
                                /* Restart parsing to allow expansion of sub 
macro calls */
-                               parser->rd = expand_there;
                                if (limit-- > 0)
                                        goto restart_token_split;
 
@@ -384,15 +384,17 @@ found_end_quote:
                                        parser->rd++;
 
                                break;
+                       } else {
+                               while (isnamechr(*parser->rd))
+                                       *token++ = *parser->rd++;
                        }
-                       /* else: the text was passed over so it will be counted 
in the token from 'start' */
                } else {
-                       parser->rd++;
+                       *token++ = *parser->rd++;
                }
 
-       token = wmalloc(parser->rd - start + 1);
-       strncpy(token, start, parser->rd - start);
-       token[parser->rd - start] = '0';
+       *token++ = '0';
+       token = wmalloc(token - buffer_token);
+       strcpy(token, buffer_token);
 
        return token;
 }
diff --git a/WINGs/menuparser.h b/WINGs/menuparser.h
index 692ef69..dbf78f9 100644
--- a/WINGs/menuparser.h
+++ b/WINGs/menuparser.h
@@ -79,8 +79,7 @@ void menu_parser_free_macros(WMenuParser parser);
 
 WParserMacro *menu_parser_find_macro(WMenuParser parser, const char *name);
 
-void menu_parser_expand_macro(WMenuParser parser, WParserMacro *macro,
-                                                                               
char *write_buf, int write_buf_size);
+void menu_parser_expand_macro(WMenuParser parser, WParserMacro *macro);
 
 int isnamechr(char ch); // Check if char is valid character for a macro name
 
diff --git a/WINGs/menuparser_macros.c b/WINGs/menuparser_macros.c
index bada620..511334f 100644
--- a/WINGs/menuparser_macros.c
+++ b/WINGs/menuparser_macros.c
@@ -381,8 +381,7 @@ static Bool menu_parser_read_macro_def(WMenuParser parser, 
WParserMacro *macro,
 /* When a macro is being used in the file, this function will generate the
        expanded value for the macro in the parser's work line.
        It blindly supposes that the data generated in macro->value is valid */
-void menu_parser_expand_macro(WMenuParser parser, WParserMacro *macro,
-                                                                               
char *write_buf, int write_buf_size)
+void menu_parser_expand_macro(WMenuParser parser, WParserMacro *macro)
 {
        char save_buf[sizeof(parser->line_buffer)];
        char arg_values_buf[MAXLINE];
@@ -390,7 +389,11 @@ void menu_parser_expand_macro(WMenuParser parser, 
WParserMacro *macro,
        char *src, *dst;
        unsigned char *rd;
        unsigned int size;
-       int space_left;
+       int i, space_left;
+
+       /* Skip the name of the macro, this was not done by caller */
+       for (i = 0; macro->name[i] != '0'; i++)
+               parser->rd++;
 
        if (macro->arg_count >= 0) {
                menu_parser_skip_spaces_and_comments(parser);
@@ -409,8 +412,9 @@ void menu_parser_expand_macro(WMenuParser parser, 
WParserMacro *macro,
        while ((*dst++ = *parser->rd++) != '0') ;
 
        /* Generate expanded macro */
-       dst = write_buf;
-       space_left = write_buf_size - 1;
+       dst = parser->line_buffer;
+       parser->rd = dst;
+       space_left = sizeof(parser->line_buffer) - 1;
        if (macro->function != NULL) {
         /* Parser's pre-defined macros actually proposes a function call to
                          generate dynamic value for the expansion of the 
macro. In this case

-----------------------------------------------------------------------

Summary of changes:
 WINGs/menuparser.c          |  112 ++++++++++++++++++++++---------------------
 WINGs/menuparser.h          |    3 +-
 WINGs/menuparser_macros.c   |   14 ++++--
 WPrefs.app/Configurations.c |   70 +++++++++++++-------------
 WPrefs.app/Expert.c         |   30 +++++-------
 WPrefs.app/Focus.c          |   30 ++++++------
 WPrefs.app/Icons.c          |   82 +++++++++++++++++--------------
 WPrefs.app/Preferences.c    |   33 +++++++------
 WPrefs.app/WindowHandling.c |   77 ++++++++++++++++-------------
 WPrefs.app/po/ja.po         |    2 +-
 wrlib/scale.c               |    5 +-
 11 files changed, 236 insertions(+), 222 deletions(-)


repo.or.cz automatic notification. Contact project admin crma...@gmail.com
if you want to unsubscribe, or site admin ad...@repo.or.cz if you receive
no reply.
-- 
wmaker-crm.git ("The Window Maker window manager")


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

Reply via email to