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:
committed by
Carlos R. Mafra
parent
1f17fb940c
commit
db9e002ecf
129
src/winmenu.c
129
src/winmenu.c
@@ -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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user