From: Rodolfo García Peñas (kix) <[email protected]>
The variable shortcutWindows is moved to w_global. Now, the shortcuts
are used in whole Window Maker, not only in the current screen.
---
src/WindowMaker.h | 5 +++++
src/event.c | 27 ++++++++++++---------------
src/screen.h | 4 ----
src/session.c | 4 ++--
src/window.c | 23 ++++++++++++-----------
src/winmenu.c | 20 +++++++++-----------
6 files changed, 40 insertions(+), 43 deletions(-)
diff --git a/src/WindowMaker.h b/src/WindowMaker.h
index a0801e9..e31c9c3 100644
--- a/src/WindowMaker.h
+++ b/src/WindowMaker.h
@@ -563,6 +563,11 @@ extern struct wmaker_global_variables {
/* Session related */
WMPropList *session_state;
+ /* Keyboard and shortcuts */
+ struct {
+ WMArray *windows[MAX_WINDOW_SHORTCUTS];
+ } shortcut;
+
/* Application related */
struct WAppIcon *app_icon_list; /* list of all aplication icons */
diff --git a/src/event.c b/src/event.c
index 3e79db0..a69be0d 100644
--- a/src/event.c
+++ b/src/event.c
@@ -1634,8 +1634,8 @@ static void handleKeyPress(XEvent * event)
widx = command - WKBD_WINDOW1;
- if (scr->shortcutWindows[widx]) {
- WMArray *list = scr->shortcutWindows[widx];
+ if (w_global.shortcut.windows[widx]) {
+ WMArray *list = w_global.shortcut.windows[widx];
int cw;
int count = WMGetArrayItemCount(list);
WWindow *twin;
@@ -1661,18 +1661,16 @@ static void handleKeyPress(XEvent * event)
WMAddToArray(list, twin);
} else if (wwin && ISMAPPED(wwin) && ISFOCUSED(wwin)) {
- if (scr->shortcutWindows[widx]) {
- WMFreeArray(scr->shortcutWindows[widx]);
- scr->shortcutWindows[widx] = NULL;
+ if (w_global.shortcut.windows[widx]) {
+ WMFreeArray(w_global.shortcut.windows[widx]);
+ w_global.shortcut.windows[widx] = NULL;
}
if (wwin->flags.selected && scr->selected_windows) {
- scr->shortcutWindows[widx] =
WMDuplicateArray(scr->selected_windows);
-
/*WMRemoveFromArray(scr->shortcutWindows[index], wwin);
- WMInsertInArray(scr->shortcutWindows[index],
0, wwin); */
+ w_global.shortcut.windows[widx] =
WMDuplicateArray(scr->selected_windows);
} else {
- scr->shortcutWindows[widx] = WMCreateArray(4);
- WMAddToArray(scr->shortcutWindows[widx], wwin);
+ w_global.shortcut.windows[widx] =
WMCreateArray(4);
+ WMAddToArray(w_global.shortcut.windows[widx],
wwin);
}
wSelectWindow(wwin, !wwin->flags.selected);
@@ -1682,12 +1680,11 @@ static void handleKeyPress(XEvent * event)
XFlush(dpy);
} else if (scr->selected_windows &&
WMGetArrayItemCount(scr->selected_windows)) {
-
if (wwin->flags.selected && scr->selected_windows) {
- if (scr->shortcutWindows[widx]) {
- WMFreeArray(scr->shortcutWindows[widx]);
- }
- scr->shortcutWindows[widx] =
WMDuplicateArray(scr->selected_windows);
+ if (w_global.shortcut.windows[widx])
+
WMFreeArray(w_global.shortcut.windows[widx]);
+
+ w_global.shortcut.windows[widx] =
WMDuplicateArray(scr->selected_windows);
}
}
diff --git a/src/screen.h b/src/screen.h
index 5675915..ea1edcc 100644
--- a/src/screen.h
+++ b/src/screen.h
@@ -257,10 +257,6 @@ typedef struct _WScreen {
WMHandlerID *autoRaiseTimer;
Window autoRaiseWindow; /* window that is scheduled to be
* raised */
-
- /* for window shortcuts */
- WMArray *shortcutWindows[MAX_WINDOW_SHORTCUTS];
-
#ifdef XDND
char *xdestring;
#endif
diff --git a/src/session.c b/src/session.c
index 89784a6..e0b9579 100644
--- a/src/session.c
+++ b/src/session.c
@@ -208,8 +208,8 @@ static WMPropList *makeWindowState(WWindow * wwin,
WApplication * wapp)
geometry = WMCreatePLString(buffer);
for (mask = 0, i = 0; i < MAX_WINDOW_SHORTCUTS; i++) {
- if (scr->shortcutWindows[i] != NULL &&
- WMGetFirstInArray(scr->shortcutWindows[i], wwin) !=
WANotFound)
+ if (w_global.shortcut.windows[i] != NULL &&
+ WMGetFirstInArray(w_global.shortcut.windows[i],
wwin) != WANotFound)
mask |= 1 << i;
}
diff --git a/src/window.c b/src/window.c
index 5ec8630..be5af54 100644
--- a/src/window.c
+++ b/src/window.c
@@ -184,14 +184,14 @@ void wWindowDestroy(WWindow *wwin)
wwin->flags.destroyed = 1;
for (i = 0; i < MAX_WINDOW_SHORTCUTS; i++) {
- if (!wwin->screen_ptr->shortcutWindows[i])
+ if (!w_global.shortcut.windows[i])
continue;
- WMRemoveFromArray(wwin->screen_ptr->shortcutWindows[i], wwin);
+ WMRemoveFromArray(w_global.shortcut.windows[i], wwin);
- if (!WMGetArrayItemCount(wwin->screen_ptr->shortcutWindows[i]))
{
- WMFreeArray(wwin->screen_ptr->shortcutWindows[i]);
- wwin->screen_ptr->shortcutWindows[i] = NULL;
+ if (!WMGetArrayItemCount(w_global.shortcut.windows[i])) {
+ WMFreeArray(w_global.shortcut.windows[i]);
+ w_global.shortcut.windows[i] = NULL;
}
}
@@ -890,10 +890,10 @@ WWindow *wManageWindow(WScreen *scr, Window window)
for (i = 0; i < MAX_WINDOW_SHORTCUTS; i++) {
if (mask & (1 << i)) {
- if (!scr->shortcutWindows[i])
- scr->shortcutWindows[i]
= WMCreateArray(4);
+ if
(!w_global.shortcut.windows[i])
+
w_global.shortcut.windows[i] = WMCreateArray(4);
-
WMAddToArray(scr->shortcutWindows[i], wwin);
+
WMAddToArray(w_global.shortcut.windows[i], wwin);
}
}
}
@@ -2272,7 +2272,7 @@ void wWindowConfigureBorders(WWindow *wwin)
}
}
-void wWindowSaveState(WWindow * wwin)
+void wWindowSaveState(WWindow *wwin)
{
long data[10];
int i;
@@ -2296,10 +2296,11 @@ void wWindowSaveState(WWindow * wwin)
}
for (i = 0; i < MAX_WINDOW_SHORTCUTS; i++) {
- if (wwin->screen_ptr->shortcutWindows[i] &&
- WMCountInArray(wwin->screen_ptr->shortcutWindows[i], wwin))
+ if (w_global.shortcut.windows[i] &&
+ WMCountInArray(w_global.shortcut.windows[i], wwin))
data[9] |= 1 << i;
}
+
XChangeProperty(dpy, wwin->client_win, w_global.atom.wmaker.state,
w_global.atom.wmaker.state, 32, PropModeReplace,
(unsigned char *)data, 10);
}
diff --git a/src/winmenu.c b/src/winmenu.c
index 62e9314..b4773a6 100644
--- a/src/winmenu.c
+++ b/src/winmenu.c
@@ -187,24 +187,22 @@ static void switchWSCommand(WMenu * menu, WMenuEntry *
entry)
wWindowChangeWorkspace(wwin, entry->order);
}
-static void makeShortcutCommand(WMenu * menu, WMenuEntry * entry)
+static void makeShortcutCommand(WMenu *menu, WMenuEntry *entry)
{
WWindow *wwin = (WWindow *) entry->clientdata;
WScreen *scr = wwin->screen_ptr;
int index = entry->order - WO_ENTRIES;
- if (scr->shortcutWindows[index]) {
- WMFreeArray(scr->shortcutWindows[index]);
- scr->shortcutWindows[index] = NULL;
+ if (w_global.shortcut.windows[index]) {
+ WMFreeArray(w_global.shortcut.windows[index]);
+ w_global.shortcut.windows[index] = NULL;
}
if (wwin->flags.selected && scr->selected_windows) {
- scr->shortcutWindows[index] =
WMDuplicateArray(scr->selected_windows);
- /*WMRemoveFromArray(scr->shortcutWindows[index], wwin);
- WMInsertInArray(scr->shortcutWindows[index], 0, wwin); */
+ w_global.shortcut.windows[index] =
WMDuplicateArray(scr->selected_windows);
} else {
- scr->shortcutWindows[index] = WMCreateArray(4);
- WMAddToArray(scr->shortcutWindows[index], wwin);
+ w_global.shortcut.windows[index] = WMCreateArray(4);
+ WMAddToArray(w_global.shortcut.windows[index], wwin);
}
wSelectWindow(wwin, !wwin->flags.selected);
@@ -253,7 +251,7 @@ static void updateWorkspaceMenu(WMenu * menu)
wMenuRealize(menu);
}
-static void updateMakeShortcutMenu(WMenu * menu, WWindow * wwin)
+static void updateMakeShortcutMenu(WMenu *menu, WWindow *wwin)
{
WMenu *smenu = menu->cascades[menu->entries[MC_SHORTCUT]->cascade];
int i;
@@ -271,7 +269,7 @@ static void updateMakeShortcutMenu(WMenu * menu, WWindow *
wwin)
char *tmp;
int shortcutNo = i - WO_ENTRIES;
WMenuEntry *entry = smenu->entries[i];
- WMArray *shortSelWindows =
wwin->screen_ptr->shortcutWindows[shortcutNo];
+ WMArray *shortSelWindows =
w_global.shortcut.windows[shortcutNo];
snprintf(buffer, buflen, "%s %i", _("Set Shortcut"), shortcutNo
+ 1);
--
1.8.4.rc3
--
To unsubscribe, send mail to [email protected].