wayland: Phase 70 — apply WIN_WORKSPACE macro to all frame->workspace reads
Mechanically replace all remaining wwin->frame->workspace reads (41
occurrences across 9 source files) with the WIN_WORKSPACE(w) macro
introduced in Phase 69. Write sites (inside if-dpy or if-frame guards)
retain direct frame->workspace assignments as they cannot reach Wayland.
Also fixes two sed-introduced malformations:
- actions.c: tmp->WIN_WORKSPACE(prev) → WIN_WORKSPACE(tmp->prev)
- placement.c: ((WIcon*)parent)->WIN_WORKSPACE(owner) → correct form
Files changed: actions.c cycling.c event.c moveres.c placement.c
switchpanel.c window.c wmspec.c workspace.c
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
parent
36aa1c5725
commit
c2c4f699f3
|
|
@ -164,7 +164,7 @@ void wSetFocusTo(WScreen *scr, WWindow *wwin)
|
|||
|
||||
/* remember last workspace where the app has been */
|
||||
if (napp)
|
||||
napp->last_workspace = wwin->frame->workspace;
|
||||
napp->last_workspace = WIN_WORKSPACE(wwin);
|
||||
|
||||
if (wwin->flags.mapped && !WFLAGP(wwin, no_focusable)) {
|
||||
/* install colormap if colormap mode is lock mode */
|
||||
|
|
@ -859,7 +859,7 @@ static void find_Maximus_geometry(WWindow *wwin, WArea usableArea, int *new_x, i
|
|||
/* The focused window is always the last in the list */
|
||||
while (tmp->prev) {
|
||||
/* ignore windows in other workspaces etc */
|
||||
if (tmp->prev->frame->workspace != wwin->screen_ptr->current_workspace
|
||||
if (WIN_WORKSPACE(tmp->prev) != wwin->screen_ptr->current_workspace
|
||||
|| tmp->prev->flags.miniaturized || tmp->prev->flags.hidden) {
|
||||
tmp = tmp->prev;
|
||||
continue;
|
||||
|
|
@ -886,7 +886,7 @@ static void find_Maximus_geometry(WWindow *wwin, WArea usableArea, int *new_x, i
|
|||
|
||||
tmp = wwin;
|
||||
while (tmp->prev) {
|
||||
if (tmp->prev->frame->workspace != wwin->screen_ptr->current_workspace
|
||||
if (WIN_WORKSPACE(tmp->prev) != wwin->screen_ptr->current_workspace
|
||||
|| tmp->prev->flags.miniaturized || tmp->prev->flags.hidden) {
|
||||
tmp = tmp->prev;
|
||||
continue;
|
||||
|
|
@ -1403,7 +1403,7 @@ void wIconifyWindow(WWindow *wwin)
|
|||
return;
|
||||
}
|
||||
|
||||
present = wwin->frame->workspace == wwin->screen_ptr->current_workspace;
|
||||
present = WIN_WORKSPACE(wwin) == wwin->screen_ptr->current_workspace;
|
||||
|
||||
/* if the window is in another workspace, simplify process */
|
||||
if (present) {
|
||||
|
|
@ -1477,7 +1477,7 @@ void wIconifyWindow(WWindow *wwin)
|
|||
wwin->flags.skip_next_animation = 0;
|
||||
|
||||
if (!wPreferences.disable_miniwindows && !wwin->flags.net_handle_icon) {
|
||||
if (wwin->screen_ptr->current_workspace == wwin->frame->workspace ||
|
||||
if (wwin->screen_ptr->current_workspace == WIN_WORKSPACE(wwin) ||
|
||||
IS_OMNIPRESENT(wwin) || wPreferences.sticky_icons)
|
||||
wm_backend->window_map(wwin->icon->core->window);
|
||||
|
||||
|
|
@ -1501,7 +1501,7 @@ void wIconifyWindow(WWindow *wwin)
|
|||
while (tmp) {
|
||||
if (!WFLAGP(tmp, no_focusable)
|
||||
&& !(tmp->flags.hidden || tmp->flags.miniaturized)
|
||||
&& (wwin->frame->workspace == tmp->frame->workspace))
|
||||
&& (WIN_WORKSPACE(wwin) == WIN_WORKSPACE(tmp)))
|
||||
break;
|
||||
tmp = tmp->prev;
|
||||
}
|
||||
|
|
@ -1543,7 +1543,7 @@ void wDeiconifyWindow(WWindow *wwin)
|
|||
|
||||
/* we're hiding for show_desktop */
|
||||
int netwm_hidden = wwin->flags.net_show_desktop &&
|
||||
wwin->frame->workspace != wwin->screen_ptr->current_workspace;
|
||||
WIN_WORKSPACE(wwin) != wwin->screen_ptr->current_workspace;
|
||||
|
||||
if (!netwm_hidden)
|
||||
wWindowChangeWorkspace(wwin, wwin->screen_ptr->current_workspace);
|
||||
|
|
@ -1721,7 +1721,7 @@ void wHideAll(WScreen *scr)
|
|||
|
||||
for (i = 0; i < wcount; i++) {
|
||||
wwin = windows[i];
|
||||
if (wwin->frame->workspace == scr->current_workspace
|
||||
if (WIN_WORKSPACE(wwin) == scr->current_workspace
|
||||
&& !(wwin->flags.miniaturized || wwin->flags.hidden)
|
||||
&& !wwin->flags.internal_window
|
||||
&& !WFLAGP(wwin, no_miniaturizable)
|
||||
|
|
@ -1745,7 +1745,7 @@ void wHideOtherApplications(WWindow *awin)
|
|||
|
||||
while (wwin) {
|
||||
if (wwin != awin
|
||||
&& wwin->frame->workspace == awin->screen_ptr->current_workspace
|
||||
&& WIN_WORKSPACE(wwin) == awin->screen_ptr->current_workspace
|
||||
&& !(wwin->flags.miniaturized || wwin->flags.hidden)
|
||||
&& !wwin->flags.internal_window
|
||||
&& wGetWindowOfInspectorForWindow(wwin) != awin && !WFLAGP(wwin, no_hide_others)) {
|
||||
|
|
@ -1866,7 +1866,7 @@ static void unhideWindow(WIcon *icon, int icon_x, int icon_y, WWindow *wwin, int
|
|||
(void) animate;
|
||||
#endif
|
||||
wwin->flags.skip_next_animation = 0;
|
||||
if (wwin->screen_ptr->current_workspace == wwin->frame->workspace) {
|
||||
if (wwin->screen_ptr->current_workspace == WIN_WORKSPACE(wwin)) {
|
||||
wm_backend->window_map(wwin->client_win);
|
||||
wm_backend->window_map(wwin->frame->core->window);
|
||||
wClientSetState(wwin, NormalState, None);
|
||||
|
|
@ -1911,7 +1911,7 @@ void wUnhideApplication(WApplication *wapp, Bool miniwindows, Bool bringToCurren
|
|||
|
||||
if (wlist->flags.miniaturized) {
|
||||
if ((bringToCurrentWS || wPreferences.sticky_icons ||
|
||||
wlist->frame->workspace == scr->current_workspace) && wlist->icon) {
|
||||
WIN_WORKSPACE(wlist) == scr->current_workspace) && wlist->icon) {
|
||||
if (!wlist->icon->mapped) {
|
||||
int x, y;
|
||||
|
||||
|
|
@ -1928,7 +1928,7 @@ void wUnhideApplication(WApplication *wapp, Bool miniwindows, Bool bringToCurren
|
|||
if (bringToCurrentWS)
|
||||
wWindowChangeWorkspace(wlist, scr->current_workspace);
|
||||
wlist->flags.hidden = 0;
|
||||
if (miniwindows && wlist->frame->workspace == scr->current_workspace)
|
||||
if (miniwindows && WIN_WORKSPACE(wlist) == scr->current_workspace)
|
||||
wDeiconifyWindow(wlist);
|
||||
WMPostNotificationName(WMNChangedState, wlist, "hide");
|
||||
} else if (wlist->flags.shaded) {
|
||||
|
|
@ -1936,7 +1936,7 @@ void wUnhideApplication(WApplication *wapp, Bool miniwindows, Bool bringToCurren
|
|||
wWindowChangeWorkspace(wlist, scr->current_workspace);
|
||||
wlist->flags.hidden = 0;
|
||||
wRaiseFrame(wlist->frame->core);
|
||||
if (wlist->frame->workspace == scr->current_workspace) {
|
||||
if (WIN_WORKSPACE(wlist) == scr->current_workspace) {
|
||||
wm_backend->window_map(wlist->frame->core->window);
|
||||
if (miniwindows)
|
||||
wUnshadeWindow(wlist);
|
||||
|
|
@ -1947,7 +1947,7 @@ void wUnhideApplication(WApplication *wapp, Bool miniwindows, Bool bringToCurren
|
|||
wapp->app_icon->y_pos, wlist, animate, bringToCurrentWS);
|
||||
animate = False;
|
||||
} else {
|
||||
if (bringToCurrentWS && wlist->frame->workspace != scr->current_workspace)
|
||||
if (bringToCurrentWS && WIN_WORKSPACE(wlist) != scr->current_workspace)
|
||||
wWindowChangeWorkspace(wlist, scr->current_workspace);
|
||||
|
||||
wRaiseFrame(wlist->frame->core);
|
||||
|
|
@ -1982,7 +1982,7 @@ void wShowAllWindows(WScreen *scr)
|
|||
old_foc = wwin = scr->focused_window;
|
||||
while (wwin) {
|
||||
if (!wwin->flags.internal_window &&
|
||||
(scr->current_workspace == wwin->frame->workspace || IS_OMNIPRESENT(wwin))) {
|
||||
(scr->current_workspace == WIN_WORKSPACE(wwin) || IS_OMNIPRESENT(wwin))) {
|
||||
if (wwin->flags.miniaturized) {
|
||||
wwin->flags.skip_next_animation = 1;
|
||||
wDeiconifyWindow(wwin);
|
||||
|
|
@ -2127,7 +2127,7 @@ void wArrangeIcons(WScreen *scr, Bool arrangeAll)
|
|||
|
||||
while (wwin) {
|
||||
if (wwin->icon && wwin->flags.miniaturized && !wwin->flags.hidden &&
|
||||
(wwin->frame->workspace == scr->current_workspace ||
|
||||
(WIN_WORKSPACE(wwin) == scr->current_workspace ||
|
||||
IS_OMNIPRESENT(wwin) || wPreferences.sticky_icons)) {
|
||||
|
||||
head = wGetHeadForWindow(wwin);
|
||||
|
|
@ -2199,8 +2199,8 @@ void wSelectWindow(WWindow *wwin, Bool flag)
|
|||
|
||||
void wMakeWindowVisible(WWindow *wwin)
|
||||
{
|
||||
if (wwin->frame->workspace != wwin->screen_ptr->current_workspace)
|
||||
wWorkspaceChange(wwin->screen_ptr, wwin->frame->workspace);
|
||||
if (WIN_WORKSPACE(wwin) != wwin->screen_ptr->current_workspace)
|
||||
wWorkspaceChange(wwin->screen_ptr, WIN_WORKSPACE(wwin));
|
||||
|
||||
if (wwin->flags.shaded)
|
||||
wUnshadeWindow(wwin);
|
||||
|
|
|
|||
|
|
@ -132,7 +132,7 @@ void StartWindozeCycle(WWindow *wwin, XEvent *event, Bool next, Bool class_only)
|
|||
|
||||
oldFocused = change_focus_and_raise(newFocused, oldFocused, swpanel, scr, False);
|
||||
} else {
|
||||
if (wwin->frame->workspace == scr->current_workspace)
|
||||
if (WIN_WORKSPACE(wwin) == scr->current_workspace)
|
||||
newFocused = wwin;
|
||||
else
|
||||
newFocused = NULL;
|
||||
|
|
|
|||
|
|
@ -892,7 +892,7 @@ static void handleUnmapNotify(XEvent * event)
|
|||
return;
|
||||
|
||||
if (!wwin->flags.mapped && !withdraw
|
||||
&& wwin->frame->workspace == wwin->screen_ptr->current_workspace
|
||||
&& WIN_WORKSPACE(wwin) == wwin->screen_ptr->current_workspace
|
||||
&& !wwin->flags.miniaturized && !wwin->flags.hidden)
|
||||
return;
|
||||
|
||||
|
|
@ -1829,7 +1829,7 @@ static void handleKeyPress(XEvent * event)
|
|||
wwin = scr->focused_window;
|
||||
|
||||
if (wwin && wwin->flags.mapped
|
||||
&& wwin->frame->workspace == wwin->screen_ptr->current_workspace
|
||||
&& WIN_WORKSPACE(wwin) == wwin->screen_ptr->current_workspace
|
||||
&& !wwin->flags.miniaturized && !wwin->flags.hidden) {
|
||||
int cur_group = wm_backend->xkb_get_group();
|
||||
|
||||
|
|
|
|||
|
|
@ -742,7 +742,7 @@ static void updateMoveData(WWindow * wwin, MoveData * data)
|
|||
data->count = 0;
|
||||
tmp = scr->focused_window;
|
||||
while (tmp) {
|
||||
if (tmp != wwin && scr->current_workspace == tmp->frame->workspace
|
||||
if (tmp != wwin && scr->current_workspace == WIN_WORKSPACE(tmp)
|
||||
&& !tmp->flags.miniaturized
|
||||
&& !tmp->flags.hidden && !tmp->flags.obscured && !WFLAGP(tmp, sunken)) {
|
||||
data->topList[data->count] = tmp;
|
||||
|
|
@ -2290,7 +2290,7 @@ static void selectWindowsInside(WScreen * scr, int x1, int y1, int x2, int y2)
|
|||
tmpw = scr->focused_window;
|
||||
while (tmpw != NULL) {
|
||||
if (!(tmpw->flags.miniaturized || tmpw->flags.hidden)) {
|
||||
if ((tmpw->frame->workspace == scr->current_workspace || IS_OMNIPRESENT(tmpw))
|
||||
if ((WIN_WORKSPACE(tmpw) == scr->current_workspace || IS_OMNIPRESENT(tmpw))
|
||||
&& (tmpw->frame_x >= x1) && (tmpw->frame_y >= y1)
|
||||
&& (tmpw->frame->core->width + tmpw->frame_x <= x2)
|
||||
&& (tmpw->frame->core->height + tmpw->frame_y <= y2)) {
|
||||
|
|
|
|||
|
|
@ -63,7 +63,7 @@ iconPosition(WCoreWindow *wcore, int sx1, int sy1, int sx2, int sy2,
|
|||
ok = 1;
|
||||
} else if (wcore->descriptor.parent_type == WCLASS_MINIWINDOW &&
|
||||
((!((WIcon *) parent)->owner->frame ||
|
||||
((WIcon *) parent)->owner->frame->workspace == workspace ||
|
||||
WIN_WORKSPACE(((WIcon *) parent)->owner) == workspace ||
|
||||
((WIcon *) parent)->owner->workspace == workspace)
|
||||
|| IS_OMNIPRESENT(((WIcon *) parent)->owner)
|
||||
|| wPreferences.sticky_icons)
|
||||
|
|
@ -76,7 +76,7 @@ iconPosition(WCoreWindow *wcore, int sx1, int sy1, int sx2, int sy2,
|
|||
} else if (wcore->descriptor.parent_type == WCLASS_WINDOW
|
||||
&& ((WWindow *) parent)->flags.icon_moved
|
||||
&& ((!((WWindow *) parent)->frame ||
|
||||
((WWindow *) parent)->frame->workspace == workspace ||
|
||||
WIN_WORKSPACE(((WWindow *) parent)) == workspace ||
|
||||
((WWindow *) parent)->workspace == workspace)
|
||||
|| IS_OMNIPRESENT((WWindow *) parent)
|
||||
|| wPreferences.sticky_icons)) {
|
||||
|
|
@ -290,7 +290,7 @@ static int calcSumOfCoveredAreas(WWindow *wwin, int x, int y, int w, int h)
|
|||
/* Phase 68: guard frame->workspace with wwin->workspace fallback */
|
||||
int tw_workspace = test_window->workspace;
|
||||
if (test_window->frame)
|
||||
tw_workspace = test_window->frame->workspace;
|
||||
tw_workspace = WIN_WORKSPACE(test_window);
|
||||
if (test_window->flags.mapped || (test_window->flags.shaded &&
|
||||
tw_workspace == wwin->screen_ptr->current_workspace &&
|
||||
!(test_window->flags.miniaturized || test_window->flags.hidden))) {
|
||||
|
|
@ -349,7 +349,7 @@ window_overlaps(WWindow *win, int x, int y, int w, int h, Bool ignore_sunken)
|
|||
(ty < (y + h)) && ((ty + th) > y) &&
|
||||
(win->flags.mapped ||
|
||||
(win->flags.shaded &&
|
||||
win->frame->workspace == win->screen_ptr->current_workspace &&
|
||||
WIN_WORKSPACE(win) == win->screen_ptr->current_workspace &&
|
||||
!(win->flags.miniaturized || win->flags.hidden)))) {
|
||||
return True;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -76,7 +76,7 @@ static short int label_height;
|
|||
|
||||
static int canReceiveFocus(WWindow *wwin)
|
||||
{
|
||||
if (wwin->frame->workspace != wwin->screen_ptr->current_workspace)
|
||||
if (WIN_WORKSPACE(wwin) != wwin->screen_ptr->current_workspace)
|
||||
return 0;
|
||||
|
||||
if (wPreferences.cycle_active_head_only &&
|
||||
|
|
|
|||
|
|
@ -950,7 +950,7 @@ WWindow *wManageWindow(WScreen *scr, WNativeWindow window)
|
|||
workspace = w;
|
||||
} else {
|
||||
if (wPreferences.open_transients_with_parent && transientOwner)
|
||||
workspace = transientOwner->frame->workspace;
|
||||
workspace = WIN_WORKSPACE(transientOwner);
|
||||
else
|
||||
workspace = scr->current_workspace;
|
||||
}
|
||||
|
|
@ -1839,7 +1839,7 @@ void wWindowChangeWorkspace(WWindow *wwin, int workspace)
|
|||
if (workspace >= scr->workspace_count || workspace < 0)
|
||||
return;
|
||||
if (!wwin->frame) return; /* Wayland: frameless windows have no workspace slot */
|
||||
if (workspace == wwin->frame->workspace)
|
||||
if (workspace == WIN_WORKSPACE(wwin))
|
||||
return;
|
||||
|
||||
if (workspace != scr->current_workspace) {
|
||||
|
|
@ -1874,8 +1874,8 @@ void wWindowChangeWorkspace(WWindow *wwin, int workspace)
|
|||
}
|
||||
}
|
||||
if (!IS_OMNIPRESENT(wwin)) {
|
||||
int oldWorkspace = wwin->frame->workspace;
|
||||
wwin->frame->workspace = workspace;
|
||||
int oldWorkspace = WIN_WORKSPACE(wwin);
|
||||
wwin->frame->workspace = workspace; /* frame != NULL: guarded above */
|
||||
WMPostNotificationName(WMNChangedWorkspace, wwin, (void *)(uintptr_t) oldWorkspace);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1036,7 +1036,7 @@ static void updateWorkspaceHint(WWindow *wwin, Bool fake, Bool del)
|
|||
if (del) {
|
||||
XDeleteProperty(dpy, wwin->client_win, net_wm_desktop);
|
||||
} else {
|
||||
l = ((fake || IS_OMNIPRESENT(wwin)) ? -1 : wwin->frame->workspace);
|
||||
l = ((fake || IS_OMNIPRESENT(wwin)) ? -1 : WIN_WORKSPACE(wwin));
|
||||
XChangeProperty(dpy, wwin->client_win, net_wm_desktop, WA_CARDINAL,
|
||||
32, PropModeReplace, (unsigned char *)&l, 1);
|
||||
}
|
||||
|
|
@ -1769,7 +1769,7 @@ Bool wNETWMProcessClientMessage(XClientMessageEvent *event)
|
|||
* - giving the client the focus does not cause a change in
|
||||
* the active workspace (XXX: or the active head if Xinerama)
|
||||
*/
|
||||
if (wwin->frame->workspace == wwin->screen_ptr->current_workspace /* No workspace change */
|
||||
if (WIN_WORKSPACE(wwin) == wwin->screen_ptr->current_workspace /* No workspace change */
|
||||
|| event->data.l[0] == 2 /* Requested by pager */
|
||||
|| WFLAGP(wwin, focus_across_wksp) /* Explicitly allowed */) {
|
||||
wNETWMShowingDesktop(wwin->screen_ptr, False);
|
||||
|
|
|
|||
|
|
@ -136,7 +136,7 @@ Bool wWorkspaceDelete(WScreen * scr, int workspace)
|
|||
/* verify if workspace is in use by some window */
|
||||
tmp = scr->focused_window;
|
||||
while (tmp) {
|
||||
if (!IS_OMNIPRESENT(tmp) && tmp->frame->workspace == workspace) {
|
||||
if (!IS_OMNIPRESENT(tmp) && WIN_WORKSPACE(tmp) == workspace) {
|
||||
char buf[256];
|
||||
snprintf(buf, sizeof(buf), _("Workspace \"%s\" in use; cannot delete"),
|
||||
scr->workspaces[workspace]->name);
|
||||
|
|
@ -469,7 +469,7 @@ void wWorkspaceForceChange(WScreen * scr, int workspace)
|
|||
while (tmp) {
|
||||
/* Phase 67: Wayland windows have no frame; use wwin->workspace
|
||||
* as the workspace slot when frame is NULL. */
|
||||
int tmp_workspace = tmp->frame ? tmp->frame->workspace : tmp->workspace;
|
||||
int tmp_workspace = tmp->frame ? WIN_WORKSPACE(tmp) : tmp->workspace;
|
||||
if (tmp_workspace != workspace && !tmp->flags.selected) {
|
||||
/* unmap windows not on this workspace */
|
||||
if ((tmp->flags.mapped || tmp->flags.shaded) &&
|
||||
|
|
|
|||
|
|
@ -64,6 +64,9 @@
|
|||
# 27. (Phase 69) WIN_WORKSPACE(w) macro added; frame->workspace reads in
|
||||
# wWindowFocusPrev/Next, wWindowObscuresWindow, wWindowSaveState,
|
||||
# session.c, and switchmenu.c replaced with the macro.
|
||||
# 28. (Phase 70) WIN_WORKSPACE macro applied to remaining frame->workspace
|
||||
# reads in actions.c, cycling.c, event.c, moveres.c, placement.c,
|
||||
# switchpanel.c, wmspec.c, workspace.c; write sites keep direct access.
|
||||
#
|
||||
# This test grows as wl_backend vtable slots are implemented.
|
||||
#
|
||||
|
|
|
|||
Loading…
Reference in New Issue