mirror of
https://github.com/gryf/wmaker.git
synced 2025-12-22 05:48:01 +01:00
Eliminate Workspaces menu magic numbers.
A number of functions relating to the Workspaces menu assume that the menu contains at least three entries: New, Destroy Last and Workspace1. Because it is assumed that index 1 contains the Destroy Last entry and index 2 contains the first workspace entry there are several occurrences throughout workspace.c of magic numbers relating to those indices. Replace the magic numbers with some #defines, making the code more readable and allowing the menu to be expanded later.
This commit is contained in:
committed by
Carlos R. Mafra
parent
cd5382cedf
commit
9b27217b53
@@ -49,6 +49,11 @@
|
|||||||
#include "wmspec.h"
|
#include "wmspec.h"
|
||||||
#include "xinerama.h"
|
#include "xinerama.h"
|
||||||
|
|
||||||
|
#define MC_NEW 0
|
||||||
|
#define MC_DESTROY_LAST 1
|
||||||
|
/* index of the first workspace menu entry */
|
||||||
|
#define MC_WORKSPACE1 2
|
||||||
|
|
||||||
#define MAX_SHORTCUT_LENGTH 32
|
#define MAX_SHORTCUT_LENGTH 32
|
||||||
#define WORKSPACE_NAME_DISPLAY_PADDING 32
|
#define WORKSPACE_NAME_DISPLAY_PADDING 32
|
||||||
|
|
||||||
@@ -660,16 +665,16 @@ void wWorkspaceRename(WScreen * scr, int workspace, char *name)
|
|||||||
scr->workspaces[workspace]->name = wstrdup(buf);
|
scr->workspaces[workspace]->name = wstrdup(buf);
|
||||||
|
|
||||||
if (scr->clip_ws_menu) {
|
if (scr->clip_ws_menu) {
|
||||||
if (strcmp(scr->clip_ws_menu->entries[workspace + 2]->text, buf) != 0) {
|
if (strcmp(scr->clip_ws_menu->entries[workspace + MC_WORKSPACE1]->text, buf) != 0) {
|
||||||
wfree(scr->clip_ws_menu->entries[workspace + 2]->text);
|
wfree(scr->clip_ws_menu->entries[workspace + MC_WORKSPACE1]->text);
|
||||||
scr->clip_ws_menu->entries[workspace + 2]->text = wstrdup(buf);
|
scr->clip_ws_menu->entries[workspace + MC_WORKSPACE1]->text = wstrdup(buf);
|
||||||
wMenuRealize(scr->clip_ws_menu);
|
wMenuRealize(scr->clip_ws_menu);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (scr->workspace_menu) {
|
if (scr->workspace_menu) {
|
||||||
if (strcmp(scr->workspace_menu->entries[workspace + 2]->text, buf) != 0) {
|
if (strcmp(scr->workspace_menu->entries[workspace + MC_WORKSPACE1]->text, buf) != 0) {
|
||||||
wfree(scr->workspace_menu->entries[workspace + 2]->text);
|
wfree(scr->workspace_menu->entries[workspace + MC_WORKSPACE1]->text);
|
||||||
scr->workspace_menu->entries[workspace + 2]->text = wstrdup(buf);
|
scr->workspace_menu->entries[workspace + MC_WORKSPACE1]->text = wstrdup(buf);
|
||||||
wMenuRealize(scr->workspace_menu);
|
wMenuRealize(scr->workspace_menu);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -719,10 +724,10 @@ void wWorkspaceMenuUpdate(WScreen * scr, WMenu * menu)
|
|||||||
if (!menu)
|
if (!menu)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (menu->entry_no < scr->workspace_count + 2) {
|
if (menu->entry_no < scr->workspace_count + MC_WORKSPACE1) {
|
||||||
/* new workspace(s) added */
|
/* new workspace(s) added */
|
||||||
i = scr->workspace_count - (menu->entry_no - 2);
|
i = scr->workspace_count - (menu->entry_no - MC_WORKSPACE1);
|
||||||
ws = menu->entry_no - 2;
|
ws = menu->entry_no - MC_WORKSPACE1;
|
||||||
while (i > 0) {
|
while (i > 0) {
|
||||||
wstrlcpy(title, scr->workspaces[ws]->name, MAX_WORKSPACENAME_WIDTH);
|
wstrlcpy(title, scr->workspaces[ws]->name, MAX_WORKSPACENAME_WIDTH);
|
||||||
|
|
||||||
@@ -733,24 +738,24 @@ void wWorkspaceMenuUpdate(WScreen * scr, WMenu * menu)
|
|||||||
i--;
|
i--;
|
||||||
ws++;
|
ws++;
|
||||||
}
|
}
|
||||||
} else if (menu->entry_no > scr->workspace_count + 2) {
|
} else if (menu->entry_no > scr->workspace_count + MC_WORKSPACE1) {
|
||||||
/* removed workspace(s) */
|
/* removed workspace(s) */
|
||||||
for (i = menu->entry_no - 1; i >= scr->workspace_count + 2; i--) {
|
for (i = menu->entry_no - 1; i >= scr->workspace_count + MC_WORKSPACE1; i--) {
|
||||||
wMenuRemoveItem(menu, i);
|
wMenuRemoveItem(menu, i);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
wMenuRealize(menu);
|
wMenuRealize(menu);
|
||||||
|
|
||||||
for (i = 0; i < scr->workspace_count; i++) {
|
for (i = 0; i < scr->workspace_count; i++) {
|
||||||
menu->entries[i + 2]->flags.indicator_on = 0;
|
menu->entries[i + MC_WORKSPACE1]->flags.indicator_on = 0;
|
||||||
}
|
}
|
||||||
menu->entries[scr->current_workspace + 2]->flags.indicator_on = 1;
|
menu->entries[scr->current_workspace + MC_WORKSPACE1]->flags.indicator_on = 1;
|
||||||
|
|
||||||
/* don't let user destroy current workspace */
|
/* don't let user destroy current workspace */
|
||||||
if (scr->current_workspace == scr->workspace_count - 1) {
|
if (scr->current_workspace == scr->workspace_count - 1) {
|
||||||
wMenuSetEnabled(menu, 1, False);
|
wMenuSetEnabled(menu, MC_DESTROY_LAST, False);
|
||||||
} else {
|
} else {
|
||||||
wMenuSetEnabled(menu, 1, True);
|
wMenuSetEnabled(menu, MC_DESTROY_LAST, True);
|
||||||
}
|
}
|
||||||
|
|
||||||
tmp = menu->frame->top_width + 5;
|
tmp = menu->frame->top_width + 5;
|
||||||
@@ -818,8 +823,8 @@ void wWorkspaceRestoreState(WScreen *scr)
|
|||||||
wWorkspaceNew(scr);
|
wWorkspaceNew(scr);
|
||||||
|
|
||||||
if (scr->workspace_menu) {
|
if (scr->workspace_menu) {
|
||||||
wfree(scr->workspace_menu->entries[i + 2]->text);
|
wfree(scr->workspace_menu->entries[i + MC_WORKSPACE1]->text);
|
||||||
scr->workspace_menu->entries[i + 2]->text = wstrdup(WMGetFromPLString(pstr));
|
scr->workspace_menu->entries[i + MC_WORKSPACE1]->text = wstrdup(WMGetFromPLString(pstr));
|
||||||
scr->workspace_menu->flags.realized = 0;
|
scr->workspace_menu->flags.realized = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user