1
0
mirror of https://github.com/gryf/wmaker.git synced 2025-12-24 15:12:32 +01:00

wmaker: Created an array to hold the maximize menu entries

The idea is that an array is easier to work with, when it's about to add,
remove or change entries, because all data end up stored in one place
instead of dispatched around the code.

It also makes code smaller as it avoids repetitions.

Signed-off-by: Christophe CURIS <christophe.curis@free.fr>
This commit is contained in:
Christophe CURIS
2013-11-10 17:41:10 +01:00
committed by Carlos R. Mafra
parent 1f17fb940c
commit db9e002ecf

View File

@@ -73,19 +73,22 @@ enum
WO_ENTRIES
};
enum
{
MAXC_V,
MAXC_H,
MAXC_LH,
MAXC_RH,
MAXC_TH,
MAXC_BH,
MAXC_LTC,
MAXC_RTC,
MAXC_LBC,
MAXC_RBC,
MAXC_MAXIMUS
static const struct {
const char *label;
unsigned int shortcut_idx;
int maxim_direction;
} menu_maximize_entries[] = {
{ N_("Maximize vertically"), WKBD_VMAXIMIZE, MAX_VERTICAL },
{ N_("Maximize horizontally"), WKBD_HMAXIMIZE, MAX_HORIZONTAL },
{ N_("Maximize left half"), WKBD_LHMAXIMIZE, MAX_VERTICAL | MAX_LEFTHALF },
{ N_("Maximize right half"), WKBD_RHMAXIMIZE, MAX_VERTICAL | MAX_RIGHTHALF },
{ N_("Maximize top half"), WKBD_THMAXIMIZE, MAX_HORIZONTAL | MAX_TOPHALF },
{ N_("Maximize bottom half"), WKBD_BHMAXIMIZE, MAX_HORIZONTAL | MAX_BOTTOMHALF },
{ N_("Maximize left top corner"), WKBD_LTCMAXIMIZE, MAX_LEFTHALF | MAX_TOPHALF },
{ N_("Maximize right top corner"), WKBD_RTCMAXIMIZE, MAX_RIGHTHALF | MAX_TOPHALF },
{ N_("Maximize left bottom corner"), WKBD_LBCMAXIMIZE, MAX_LEFTHALF | MAX_BOTTOMHALF },
{ N_("Maximize right bottom corner"), WKBD_RBCMAXIMIZE, MAX_RIGHTHALF | MAX_BOTTOMHALF },
{ N_("Maximus: tiled maximization"), WKBD_MAXIMUS, MAX_MAXIMUS }
};
static void updateOptionsMenu(WMenu * menu, WWindow * wwin);
@@ -122,55 +125,10 @@ static void execMaximizeCommand(WMenu * menu, WMenuEntry * entry)
{
WWindow *wwin = (WWindow *) entry->clientdata;
/* Parameter not used, but tell the compiler that it is ok */
(void) menu;
switch (entry->order) {
case MAXC_V:
handleMaximize(wwin, MAX_VERTICAL);
break;
case MAXC_H:
handleMaximize(wwin,MAX_HORIZONTAL);
break;
case MAXC_LH:
handleMaximize(wwin,MAX_VERTICAL | MAX_LEFTHALF);
break;
case MAXC_RH:
handleMaximize(wwin,MAX_VERTICAL | MAX_RIGHTHALF);
break;
case MAXC_TH:
handleMaximize(wwin,MAX_HORIZONTAL | MAX_TOPHALF);
break;
case MAXC_BH:
handleMaximize(wwin,MAX_HORIZONTAL | MAX_BOTTOMHALF);
break;
case MAXC_LTC:
handleMaximize(wwin,MAX_LEFTHALF | MAX_TOPHALF);
break;
case MAXC_RTC:
handleMaximize(wwin,MAX_RIGHTHALF | MAX_TOPHALF);
break;
case MAXC_LBC:
handleMaximize(wwin,MAX_LEFTHALF | MAX_BOTTOMHALF);
break;
case MAXC_RBC:
handleMaximize(wwin,MAX_RIGHTHALF | MAX_BOTTOMHALF);
break;
case MAXC_MAXIMUS:
handleMaximize(wwin,MAX_MAXIMUS);
break;
}
handleMaximize(wwin, menu_maximize_entries[entry->order].maxim_direction);
}
static void updateUnmaximizeShortcut(WMenuEntry * entry, int flags)
@@ -479,39 +437,12 @@ static void updateOptionsMenu(WMenu * menu, WWindow * wwin)
static void updateMaximizeMenu(WMenu * menu, WWindow * wwin)
{
WMenu *smenu = menu->cascades[menu->entries[MC_OTHERMAX]->cascade];
int i;
smenu->entries[MAXC_V]->clientdata = wwin;
smenu->entries[MAXC_V]->rtext = GetShortcutKey(wKeyBindings[WKBD_VMAXIMIZE]);
smenu->entries[MAXC_H]->clientdata = wwin;
smenu->entries[MAXC_H]->rtext = GetShortcutKey(wKeyBindings[WKBD_HMAXIMIZE]);
smenu->entries[MAXC_LH]->clientdata = wwin;
smenu->entries[MAXC_LH]->rtext = GetShortcutKey(wKeyBindings[WKBD_LHMAXIMIZE]);
smenu->entries[MAXC_RH]->clientdata = wwin;
smenu->entries[MAXC_RH]->rtext = GetShortcutKey(wKeyBindings[WKBD_RHMAXIMIZE]);
smenu->entries[MAXC_TH]->clientdata = wwin;
smenu->entries[MAXC_TH]->rtext = GetShortcutKey(wKeyBindings[WKBD_THMAXIMIZE]);
smenu->entries[MAXC_BH]->clientdata = wwin;
smenu->entries[MAXC_BH]->rtext = GetShortcutKey(wKeyBindings[WKBD_BHMAXIMIZE]);
smenu->entries[MAXC_LTC]->clientdata = wwin;
smenu->entries[MAXC_LTC]->rtext = GetShortcutKey(wKeyBindings[WKBD_LTCMAXIMIZE]);
smenu->entries[MAXC_RTC]->clientdata = wwin;
smenu->entries[MAXC_RTC]->rtext = GetShortcutKey(wKeyBindings[WKBD_RTCMAXIMIZE]);
smenu->entries[MAXC_LBC]->clientdata = wwin;
smenu->entries[MAXC_LBC]->rtext = GetShortcutKey(wKeyBindings[WKBD_LBCMAXIMIZE]);
smenu->entries[MAXC_RBC]->clientdata = wwin;
smenu->entries[MAXC_RBC]->rtext = GetShortcutKey(wKeyBindings[WKBD_RBCMAXIMIZE]);
smenu->entries[MAXC_MAXIMUS]->clientdata = wwin;
smenu->entries[MAXC_MAXIMUS]->rtext = GetShortcutKey(wKeyBindings[WKBD_MAXIMUS]);
for (i = 0; i < smenu->entry_no; i++) {
smenu->entries[i]->clientdata = wwin;
smenu->entries[i]->rtext = GetShortcutKey(wKeyBindings[menu_maximize_entries[i].shortcut_idx]);
}
smenu->flags.realized = 0;
wMenuRealize(smenu);
@@ -575,6 +506,7 @@ static WMenu *makeOptionsMenu(WScreen * scr)
static WMenu *makeMaximizeMenu(WScreen * scr)
{
WMenu *menu;
int i;
menu = wMenuCreate(scr, NULL, False);
if (!menu) {
@@ -582,17 +514,8 @@ static WMenu *makeMaximizeMenu(WScreen * scr)
return NULL;
}
(void) wMenuAddCallback(menu, _("Maximize vertically"), execMaximizeCommand, NULL);
(void) wMenuAddCallback(menu, _("Maximize horizontally"), execMaximizeCommand, NULL);
(void) wMenuAddCallback(menu, _("Maximize left half"), execMaximizeCommand, NULL);
(void) wMenuAddCallback(menu, _("Maximize right half"), execMaximizeCommand, NULL);
(void) wMenuAddCallback(menu, _("Maximize top half"), execMaximizeCommand, NULL);
(void) wMenuAddCallback(menu, _("Maximize bottom half"), execMaximizeCommand, NULL);
(void) wMenuAddCallback(menu, _("Maximize left top corner"), execMaximizeCommand, NULL);
(void) wMenuAddCallback(menu, _("Maximize right top corner"), execMaximizeCommand, NULL);
(void) wMenuAddCallback(menu, _("Maximize left bottom corner"), execMaximizeCommand, NULL);
(void) wMenuAddCallback(menu, _("Maximize right bottom corner"), execMaximizeCommand, NULL);
(void) wMenuAddCallback(menu, _("Maximus: tiled maximization"), execMaximizeCommand, NULL);
for (i = 0; i < wlengthof(menu_maximize_entries); i++)
wMenuAddCallback(menu, _(menu_maximize_entries[i].label), execMaximizeCommand, NULL);
return menu;
}