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.