Hide WDock fields in favor of accessors.

This commit is contained in:
2025-08-25 22:46:23 -04:00
parent b4d1dbe953
commit 18db22063c
12 changed files with 183 additions and 101 deletions

View File

@@ -2073,7 +2073,7 @@ void wArrangeIcons(WScreen *scr, Bool arrangeAll)
if (scr->dock) {
int offset = wPreferences.icon_size + DOCK_EXTRA_SPACE;
if (scr->dock->on_right_side)
if (wDockIsOnRightSide(scr->dock))
area.x2 -= offset;
else
area.x1 += offset;

View File

@@ -186,7 +186,7 @@ void unpaint_app_icon(WApplication *wapp)
scr = wApplicationGetMainWindowDesc(wapp)->screen_ptr;
clip = scr->workspaces[scr->current_workspace]->clip;
if (!clip || !aicon->attracted || !clip->collapsed)
if (!clip || !aicon->attracted || !wDockIsCollapsed(clip))
XUnmapWindow(dpy, aicon->icon->core->window);
/* We want to avoid having it on the list because otherwise
@@ -220,7 +220,7 @@ void paint_app_icon(WApplication *wapp)
attracting_dock = scr->attracting_drawer != NULL ?
scr->attracting_drawer :
scr->workspaces[scr->current_workspace]->clip;
if (attracting_dock && attracting_dock->attract_icons &&
if (attracting_dock && wDockGetAttractIcons(attracting_dock) &&
wDockFindFreeSlot(attracting_dock, &x, &y)) {
wApplicationGetAppIcon(wapp)->attracted = 1;
if (!icon->shadowed) {
@@ -246,7 +246,7 @@ void paint_app_icon(WApplication *wapp)
wApplicationGetAppIcon(wapp)->next == NULL && wApplicationGetAppIcon(wapp)->prev == NULL)
add_to_appicon_list(scr, wApplicationGetAppIcon(wapp));
if (!attracting_dock || !wApplicationGetAppIcon(wapp)->attracted || !attracting_dock->collapsed)
if (!attracting_dock || !wApplicationGetAppIcon(wapp)->attracted || !wDockIsCollapsed(attracting_dock))
XMapWindow(dpy, icon->core->window);
if (wPreferences.auto_arrange_icons && !wApplicationGetAppIcon(wapp)->attracted)
@@ -281,7 +281,7 @@ void removeAppIconFor(WApplication *wapp)
wAppIconPaint(wApplicationGetAppIcon(wapp));
} else if (wApplicationGetAppIcon(wapp)->docked) {
wApplicationGetAppIcon(wapp)->running = 0;
if (wApplicationGetAppIcon(wapp)->dock->type == WM_DRAWER) {
if (wDockGetType(wApplicationGetAppIcon(wapp)->dock) == WM_DRAWER) {
wDrawerFillTheGap(wApplicationGetAppIcon(wapp)->dock, wApplicationGetAppIcon(wapp), True);
}
wDockDetach(wApplicationGetAppIcon(wapp)->dock, wApplicationGetAppIcon(wapp));
@@ -381,7 +381,7 @@ static void updateDockNumbers(WScreen *scr)
{
int length;
char ws_numbers[20];
WAppIcon *dicon = scr->dock->icon_array[0];
WAppIcon *dicon = wDockGetIcon(scr->dock, 0);
snprintf(ws_numbers, sizeof(ws_numbers), "%i [ %i ]", scr->current_workspace + 1, ((scr->current_workspace / 10) + 1));
length = strlen(ws_numbers);
@@ -905,26 +905,26 @@ Bool wHandleAppIconMove(WAppIcon *aicon, XEvent *event)
}
if (lastDock != NULL && lastDock != theNewDock) {
/* Leave lastDock in the state we found it */
if (lastDock->type == WM_DRAWER) {
if (wDockGetType(lastDock) == WM_DRAWER) {
wDrawerFillTheGap(lastDock, aicon, (lastDock == originalDock));
}
if (collapsed) {
lastDock->collapsed = 1;
wDockSetCollapsed(lastDock, 1);
wDockHideIcons(lastDock);
collapsed = False;
}
if (lastDock->auto_raise_lower) {
if (wDockIsAutoRaiseLower(lastDock)) {
wDockLower(lastDock);
}
}
if (theNewDock != NULL) {
if (lastDock != theNewDock) {
collapsed = theNewDock->collapsed;
collapsed = wDockIsCollapsed(theNewDock);
if (collapsed) {
theNewDock->collapsed = 0;
wDockSetCollapsed(theNewDock, 0);
wDockShowIcons(theNewDock);
}
if (theNewDock->auto_raise_lower) {
if (wDockIsAutoRaiseLower(theNewDock)) {
wDockRaise(theNewDock);
/* And raise the moving tile above it */
wRaiseFrame(aicon->icon->core);
@@ -932,8 +932,8 @@ Bool wHandleAppIconMove(WAppIcon *aicon, XEvent *event)
lastDock = theNewDock;
}
shad_x = lastDock->x_pos + ix*wPreferences.icon_size;
shad_y = lastDock->y_pos + iy*wPreferences.icon_size;
shad_x = wDockGetXPos(lastDock) + ix*wPreferences.icon_size;
shad_y = wDockGetYPos(lastDock) + iy*wPreferences.icon_size;
XMoveWindow(dpy, scr->dock_shadow, shad_x, shad_y);
@@ -977,7 +977,7 @@ Bool wHandleAppIconMove(WAppIcon *aicon, XEvent *event)
command for that appicon, and the user cancels the
wInputDialog asking for one). Make the rejection obvious by
sliding the icon to its old position */
if (lastDock->type == WM_DRAWER) {
if (wDockGetType(lastDock) == WM_DRAWER) {
// Also fill the gap left in the drawer
wDrawerFillTheGap(lastDock, aicon, False);
}
@@ -995,25 +995,25 @@ Bool wHandleAppIconMove(WAppIcon *aicon, XEvent *event)
/* Possible scenario: user moved an auto-attracted appicon
from the clip to the dock, and cancelled the wInputDialog
asking for a command */
if (lastDock->type == WM_DRAWER) {
if (wDockGetType(lastDock) == WM_DRAWER) {
wDrawerFillTheGap(lastDock, aicon, False);
}
/* If aicon comes from a drawer, make some room to reattach it */
if (originalDock->type == WM_DRAWER) {
WAppIcon *aiconsToShift[ originalDock->icon_count ];
if (wDockGetType(originalDock) == WM_DRAWER) {
WAppIcon *aiconsToShift[ wDockGetIconCount(originalDock) ];
int j = 0;
for (i = 0; i < originalDock->max_icons; i++) {
WAppIcon *ai = originalDock->icon_array[ i ];
for (i = 0; i < wDockGetMaxIcons(originalDock); i++) {
WAppIcon *ai = wDockGetIcon(originalDock, i);
if (ai && ai != aicon &&
abs(ai->xindex) >= abs(aicon->xindex))
aiconsToShift[j++] = ai;
}
if (j != originalDock->icon_count - abs(aicon->xindex) - 1)
if (j != wDockGetIconCount(originalDock) - abs(aicon->xindex) - 1)
// Trust this never happens?
wwarning("Shifting j=%d appicons (instead of %d!) to reinsert aicon at index %d.",
j, originalDock->icon_count - abs(aicon->xindex) - 1, aicon->xindex);
wSlideAppicons(aiconsToShift, j, originalDock->on_right_side);
j, wDockGetIconCount(originalDock) - abs(aicon->xindex) - 1, aicon->xindex);
wSlideAppicons(aiconsToShift, j, wDockIsOnRightSide(originalDock));
// Trust the appicon is inserted at exactly the same place, so its oldX/oldY are consistent with its "new" location?
}
@@ -1021,11 +1021,11 @@ Bool wHandleAppIconMove(WAppIcon *aicon, XEvent *event)
wDockReattachIcon(originalDock, aicon, aicon->xindex, aicon->yindex);
}
else {
if (originalDock->auto_collapse && !originalDock->collapsed) {
originalDock->collapsed = 1;
if (wDockIsAutoCollapse(originalDock) && !wDockIsCollapsed(originalDock)) {
wDockSetCollapsed(originalDock, 1);
wDockHideIcons(originalDock);
}
if (originalDock->auto_raise_lower)
if (wDockIsAutoRaiseLower(originalDock))
wDockLower(originalDock);
}
}
@@ -1037,7 +1037,7 @@ Bool wHandleAppIconMove(WAppIcon *aicon, XEvent *event)
/* If docked (or tried to dock) to a auto_collapsing dock, unset
* collapsed, so that wHandleAppIconMove doesn't collapse it
* right away (the timer will take care of it) */
if (lastDock->auto_collapse)
if (wDockIsAutoCollapse(lastDock))
collapsed = 0;
}
else {
@@ -1053,11 +1053,11 @@ Bool wHandleAppIconMove(WAppIcon *aicon, XEvent *event)
}
}
wDockDetach(originalDock, aicon);
if (originalDock->auto_collapse && !originalDock->collapsed) {
originalDock->collapsed = 1;
if (wDockIsAutoCollapse(originalDock) && !wDockIsCollapsed(originalDock)) {
wDockSetCollapsed(originalDock, 1);
wDockHideIcons(originalDock);
}
if (originalDock->auto_raise_lower)
if (wDockIsAutoRaiseLower(originalDock))
wDockLower(originalDock);
}
}

View File

@@ -1318,7 +1318,7 @@ void wDefaultUpdateIcons(WScreen *scr)
wClipIconPaint(scr->clip_icon);
for (dc = scr->drawers; dc != NULL; dc = dc->next)
wDrawerIconPaint(dc->adrawer->icon_array[0]);
wDrawerIconPaint(wDockGetIcon(dc->adrawer, 0));
while (wwin) {
if (wwin->icon && wwin->flags.miniaturized)

View File

@@ -69,6 +69,96 @@
#define MOD_MASK wPreferences.modifier_mask
#define ICON_SIZE wPreferences.icon_size
struct WDock {
WScreen *screen_ptr;
int x_pos, y_pos; /* position of the first icon */
WAppIcon **icon_array; /* array of docked icons */
int max_icons;
int icon_count;
int type;
WMagicNumber auto_expand_magic;
WMagicNumber auto_collapse_magic;
WMagicNumber auto_raise_magic;
WMagicNumber auto_lower_magic;
unsigned int auto_collapse:1; /* if clip auto-collapse itself */
unsigned int auto_raise_lower:1; /* if clip should raise/lower when
* entered/leaved */
unsigned int on_right_side:1;
unsigned int collapsed:1;
unsigned int mapped:1;
unsigned int lowered:1;
unsigned int attract_icons:1; /* If clip should attract app-icons */
unsigned int lclip_button_pushed:1;
unsigned int rclip_button_pushed:1;
struct WMenu *menu;
struct WDDomain *defaults;
};
/******** Accessors/mutators ********/
int wDockGetXPos(WDock *dock) {
return dock->x_pos;
}
int wDockGetYPos(WDock *dock) {
return dock->y_pos;
}
int wDockGetMaxIcons(WDock *dock) {
return dock->max_icons;
}
int wDockGetIconCount(WDock *dock) {
return dock->icon_count;
}
void wDockAddIconCount(WDock *dock, int count) {
dock->icon_count += count;
}
WAppIcon *wDockGetIcon(WDock *dock, int index) {
return dock->icon_array[index];
}
void wDockSetIcon(WDock *dock, int index, WAppIcon *icon) {
dock->icon_array[index] = icon;
}
void wDockClearIcon(WDock *dock, int index) {
dock->icon_array[index] = NULL;
--dock->icon_count;
}
int wDockGetType(WDock *dock) {
return dock->type;
}
int wDockIsAutoCollapse(WDock *dock) {
return dock->auto_collapse;
}
int wDockIsAutoRaiseLower(WDock *dock) {
return dock->auto_raise_lower;
}
int wDockIsOnRightSide(WDock *dock) {
return dock->on_right_side;
}
int wDockIsCollapsed(WDock *dock) {
return dock->collapsed;
}
void wDockSetCollapsed(WDock *dock, int collapsed) {
dock->collapsed = !!collapsed;
}
int wDockGetAttractIcons(WDock *dock) {
return dock->attract_icons;
}
void wDockSetAttractIcons(WDock *dock, int attract_icons) {
dock->attract_icons = !!attract_icons;
}
/***** Local variables ****/
static WMPropList *dCommand = NULL;
@@ -475,7 +565,7 @@ static void removeIcons(WMArray *icons, WDock *dock)
PlaceIcon(dock->screen_ptr, &aicon->x_pos, &aicon->y_pos,
wGetHeadForWindow(aicon->icon->owner));
XMoveWindow(dpy, aicon->icon->core->window, aicon->x_pos, aicon->y_pos);
if (!dock->mapped || dock->collapsed)
if (!dock->mapped || wDockIsCollapsed(dock))
XMapWindow(dpy, aicon->icon->core->window);
}
}
@@ -669,7 +759,7 @@ static void attractIconsCallback(WMenu *menu, WMenuEntry *entry)
update_icon = True;
}
wDockAttachIcon(clip, aicon, x, y, update_icon);
if (clip->collapsed || !clip->mapped)
if (wDockIsCollapsed(clip) || !clip->mapped)
XUnmapWindow(dpy, aicon->icon->core->window);
}
aicon = aicon->next;
@@ -712,7 +802,7 @@ static void toggleCollapsedCallback(WMenu *menu, WMenuEntry *entry)
toggleCollapsed(entry->clientdata);
entry->flags.indicator_on = ((WDock *) entry->clientdata)->collapsed;
entry->flags.indicator_on = wDockIsCollapsed((WDock *) entry->clientdata);
wMenuPaint(menu);
}
@@ -1033,7 +1123,7 @@ static void updateClipOptionsMenu(WMenu *menu, WDock *dock)
/* collapsed */
entry = menu->entries[++index];
entry->flags.indicator_on = dock->collapsed;
entry->flags.indicator_on = wDockIsCollapsed(dock);
entry->clientdata = dock;
/* auto-collapse */
@@ -1356,7 +1446,7 @@ WDock *wDockCreate(WScreen *scr, int type, const char *name)
dock->on_right_side = scr->dock->on_right_side;
else
dock->on_right_side = 1;
dock->collapsed = 0;
wDockSetCollapsed(dock, 0);
dock->auto_collapse = 0;
dock->auto_collapse_magic = NULL;
dock->auto_raise_lower = 0;
@@ -1394,7 +1484,7 @@ void wDockDestroy(WDock *dock)
PlaceIcon(dock->screen_ptr, &aicon->x_pos, &aicon->y_pos,
wGetHeadForWindow(aicon->icon->owner));
XMoveWindow(dpy, aicon->icon->core->window, aicon->x_pos, aicon->y_pos);
if (!dock->mapped || dock->collapsed)
if (!dock->mapped || wDockIsCollapsed(dock))
XMapWindow(dpy, aicon->icon->core->window);
}
}
@@ -1427,7 +1517,7 @@ void wClipIconPaint(WAppIcon *aicon)
snprintf(ws_number, sizeof ws_number, "%u", scr->current_workspace + 1);
nlength = strlen(ws_number);
if (wPreferences.flags.noclip || !workspace->clip->collapsed)
if (wPreferences.flags.noclip || !wDockIsCollapsed(workspace->clip))
color = scr->clip_title_color[CLIP_NORMAL];
else
color = scr->clip_title_color[CLIP_COLLAPSED];
@@ -1577,7 +1667,7 @@ static WMPropList *dockSaveState(WDock *dock)
WMReleasePropList(list);
if (dock->type == WM_CLIP || dock->type == WM_DRAWER) {
value = (dock->collapsed ? dYes : dNo);
value = (wDockIsCollapsed(dock) ? dYes : dNo);
WMPutInPLDictionary(dock_state, dCollapsed, value);
value = (dock->auto_collapse ? dYes : dNo);
@@ -1886,7 +1976,7 @@ WDock *wDockRestoreState(WScreen *scr, WMPropList *dock_state, int type)
COMPLAIN("Collapsed");
} else {
if (strcasecmp(WMGetFromPLString(value), "YES") == 0)
dock->collapsed = 1;
wDockSetCollapsed(dock, 1);
}
}
@@ -1898,7 +1988,7 @@ WDock *wDockRestoreState(WScreen *scr, WMPropList *dock_state, int type)
} else {
if (strcasecmp(WMGetFromPLString(value), "YES") == 0) {
dock->auto_collapse = 1;
dock->collapsed = 1;
wDockSetCollapsed(dock, 1);
}
}
}

View File

@@ -25,45 +25,38 @@
#include "appicon.h"
typedef struct WDock {
WScreen *screen_ptr;
int x_pos, y_pos; /* position of the first icon */
WAppIcon **icon_array; /* array of docked icons */
int max_icons;
int icon_count;
#define WM_DOCK 0
#define WM_CLIP 1
#define WM_DRAWER 2
int type;
WMagicNumber auto_expand_magic;
WMagicNumber auto_collapse_magic;
WMagicNumber auto_raise_magic;
WMagicNumber auto_lower_magic;
unsigned int auto_collapse:1; /* if clip auto-collapse itself */
unsigned int auto_raise_lower:1; /* if clip should raise/lower when
* entered/leaved */
unsigned int on_right_side:1;
unsigned int collapsed:1;
unsigned int mapped:1;
unsigned int lowered:1;
unsigned int attract_icons:1; /* If clip should attract app-icons */
typedef struct WDock WDock;
unsigned int lclip_button_pushed:1;
unsigned int rclip_button_pushed:1;
/******** Accessors/mutators ********/
int wDockGetXPos(WDock *dock);
int wDockGetYPos(WDock *dock);
struct WMenu *menu;
int wDockGetMaxIcons(WDock *dock);
int wDockGetIconCount(WDock *dock);
void wDockAddIconCount(WDock *dock, int count);
WAppIcon *wDockGetIcon(WDock *dock, int index);
void wDockSetIcon(WDock *doc, int index, WAppIcon *icon);
void wDockClearIcon(WDock *dock, int index);
struct WDDomain *defaults;
} WDock;
int wDockGetType(WDock *dock);
int wDockIsAutoCollapse(WDock *dock);
int wDockIsAutoRaiseLower(WDock *dock);
int wDockIsOnRightSide(WDock *dock);
int wDockIsCollapsed(WDock *dock);
void wDockSetCollapsed(WDock *dock, int collapsed);
int wDockGetAttractIcons(WDock *dock);
void wDockSetAttractIcons(WDock *dock, int attract_icons);
/******** Lifecycle/resource management ********/
WDock *wDockCreate(WScreen *scr, int type, const char *name);
WDock *wDockRestoreState(WScreen *scr, WMPropList *dock_state, int type);

View File

@@ -398,8 +398,8 @@ void ShowDockAppSettingsPanel(WAppIcon * aicon)
else if (y + pheight > rect.pos.y + rect.size.height)
y = rect.pos.y + rect.size.height - pheight - 3 * WMScaleY(10);
if (aicon->dock && aicon->dock->type == WM_DOCK) {
if (aicon->dock->on_right_side)
if (aicon->dock && wDockGetType(aicon->dock) == WM_DOCK) {
if (wDockIsOnRightSide(aicon->dock))
x = rect.pos.x + rect.size.width / 2;
else
x = rect.pos.x + rect.size.width / 2 - pwidth - WMScaleX(2);

View File

@@ -121,7 +121,7 @@ void PlaceIcon(WScreen *scr, int *x_ret, int *y_ret, int head)
if (scr->dock) {
int offset = wPreferences.icon_size + DOCK_EXTRA_SPACE;
if (scr->dock->on_right_side)
if (wDockIsOnRightSide(scr->dock))
area.x2 -= offset;
else
area.x1 += offset;

View File

@@ -927,7 +927,7 @@ void wScreenRestoreState(WScreen * scr)
}
if (!wPreferences.flags.nodrawer) {
if (!scr->dock->on_right_side) {
if (!wDockIsOnRightSide(scr->dock)) {
/* Drawer tile was created early in wScreenInit() -> wReadDefaults(). At
* that time, scr->dock was NULL and the tile was created as if we were on
* the right side. If we aren't, redo it now. */

View File

@@ -278,7 +278,7 @@ static WMPropList *makeWindowState(WWindow * wwin, WApplication * wapp)
break;
}
assert(dc != NULL);
name = dc->adrawer->icon_array[0]->wm_instance;
name = wDockGetIcon(dc->adrawer, 0)->wm_instance;
}
dock = WMCreatePLString(name);
WMPutInPLDictionary(win_state, sDock, dock);
@@ -536,7 +536,7 @@ void wSessionRestoreState(WScreen *scr)
WDrawerChain *dc;
for (dc = scr->drawers; dc != NULL; dc = dc->next)
{
if (strcmp(dc->adrawer->icon_array[0]->wm_instance, tmp) == 0)
if (strcmp(wDockGetIcon(dc->adrawer, 0)->wm_instance, tmp) == 0)
{
dock = dc->adrawer;
break;
@@ -554,8 +554,8 @@ void wSessionRestoreState(WScreen *scr)
found = 0;
if (dock != NULL) {
for (j = 0; j < dock->max_icons; j++) {
btn = dock->icon_array[j];
for (j = 0; j < wDockGetMaxIcons(dock); j++) {
btn = wDockGetIcon(dock, j);
if (btn && is_same(instance, btn->wm_instance) &&
is_same(class, btn->wm_class) &&
is_same(command, btn->command) &&

View File

@@ -650,10 +650,10 @@ void wWorkspaceForceChange(WScreen * scr, int workspace)
wArrangeIcons(scr, False);
if (scr->dock)
wAppIconPaint(scr->dock->icon_array[0]);
wAppIconPaint(wDockGetIcon(scr->dock, 0));
if (!wPreferences.flags.noclip && (scr->workspaces[workspace]->clip->auto_collapse ||
scr->workspaces[workspace]->clip->auto_raise_lower)) {
if (!wPreferences.flags.noclip && (wDockIsAutoCollapse(scr->workspaces[workspace]->clip) ||
wDockIsAutoRaiseLower(scr->workspaces[workspace]->clip))) {
/* to handle enter notify. This will also */
XUnmapWindow(dpy, scr->clip_icon->icon->core->window);
XMapWindow(dpy, scr->clip_icon->icon->core->window);
@@ -925,8 +925,8 @@ void wWorkspaceRestoreState(WScreen *scr)
* There we only set icon->omnipresent to know which icons we
* need to set here.
*/
for (j = 0; j < scr->workspaces[i]->clip->max_icons; j++) {
WAppIcon *aicon = scr->workspaces[i]->clip->icon_array[j];
for (j = 0; j < wDockGetMaxIcons(scr->workspaces[i]->clip); j++) {
WAppIcon *aicon = wDockGetIcon(scr->workspaces[i]->clip, j);
int k;
if (!aicon || !aicon->omnipresent)
@@ -938,21 +938,20 @@ void wWorkspaceRestoreState(WScreen *scr)
continue;
/* Move this appicon from workspace i to workspace 0 */
scr->workspaces[i]->clip->icon_array[j] = NULL;
scr->workspaces[i]->clip->icon_count--;
wDockClearIcon(scr->workspaces[i]->clip, j);
added_omnipresent_icons++;
/* If there are too many omnipresent appicons, we are in trouble */
assert(scr->workspaces[0]->clip->icon_count + added_omnipresent_icons
<= scr->workspaces[0]->clip->max_icons);
assert(wDockGetIconCount(scr->workspaces[0]->clip) + added_omnipresent_icons
<= wDockGetMaxIcons(scr->workspaces[0]->clip));
/* Find first free spot on workspace 0 */
for (k = 0; k < scr->workspaces[0]->clip->max_icons; k++)
if (scr->workspaces[0]->clip->icon_array[k] == NULL)
for (k = 0; k < wDockGetMaxIcons(scr->workspaces[0]->clip); k++)
if (wDockGetIcon(scr->workspaces[0]->clip, k) == NULL)
break;
scr->workspaces[0]->clip->icon_array[k] = aicon;
wDockSetIcon(scr->workspaces[0]->clip, k, aicon);
aicon->dock = scr->workspaces[0]->clip;
}
scr->workspaces[0]->clip->icon_count += added_omnipresent_icons;
wDockAddIconCount(scr->workspaces[0]->clip, added_omnipresent_icons);
}
WMPostNotificationName(WMNWorkspaceNameChanged, scr, (void *)(uintptr_t) i);

View File

@@ -205,9 +205,9 @@ static Bool acceptXDND(Window window)
icon_pos = -1;
dock = scr->dock;
if (dock) {
for (i = 0; i < dock->max_icons; i++) {
if (dock->icon_array[i]
&& dock->icon_array[i]->icon->core->window == window) {
for (i = 0; i < wDockGetMaxIcons(dock); i++) {
if (wDockGetIcon(dock, i)
&& wDockGetIcon(dock, i)->icon->core->window == window) {
icon_pos = i;
break;
}
@@ -216,9 +216,9 @@ static Bool acceptXDND(Window window)
if (icon_pos < 0) {
dock = scr->workspaces[scr->current_workspace]->clip;
if (dock) {
for (i = 0; i < dock->max_icons; i++) {
if (dock->icon_array[i]
&& dock->icon_array[i]->icon->core->window == window) {
for (i = 0; i < wDockGetMaxIcons(dock); i++) {
if (wDockGetIcon(dock, i)
&& wDockGetIcon(dock, i)->icon->core->window == window) {
icon_pos = i;
break;
}
@@ -228,10 +228,10 @@ static Bool acceptXDND(Window window)
if (icon_pos < 0)
return False;
if (isAwareXDND(dock->icon_array[icon_pos]->icon->icon_win))
if (isAwareXDND(wDockGetIcon(dock, icon_pos)->icon->icon_win))
return False;
if (dock->icon_array[icon_pos]->dnd_command != NULL)
if (wDockGetIcon(dock, icon_pos)->dnd_command != NULL)
return True;
return False;

View File

@@ -376,10 +376,10 @@ WArea wGetUsableAreaForHead(WScreen * scr, int head, WArea * totalAreaPtr, Bool
if (noicons) {
/* check if user wants dock covered */
if (scr->dock && wPreferences.no_window_over_dock && wAppIconTouchesHead(scr->dock->icon_array[0], head)) {
if (scr->dock && wPreferences.no_window_over_dock && wAppIconTouchesHead(wDockGetIcon(scr->dock, 0), head)) {
int offset = wPreferences.icon_size + DOCK_EXTRA_SPACE;
if (scr->dock->on_right_side)
if (wDockIsOnRightSide(scr->dock))
usableArea.x2 -= offset;
else
usableArea.x1 += offset;
@@ -389,10 +389,10 @@ WArea wGetUsableAreaForHead(WScreen * scr, int head, WArea * totalAreaPtr, Bool
if (scr->dock && wPreferences.no_window_over_icons && !wPreferences.no_window_over_dock && (wPreferences.icon_yard & IY_VERT)) {
int offset = wPreferences.icon_size + DOCK_EXTRA_SPACE;
if (scr->dock->on_right_side && (wPreferences.icon_yard & IY_RIGHT))
if (wDockIsOnRightSide(scr->dock) && (wPreferences.icon_yard & IY_RIGHT))
usableArea.x2 -= offset;
/* can't use IY_LEFT in if, it's 0 ... */
if (!scr->dock->on_right_side && !(wPreferences.icon_yard & IY_RIGHT))
if (!wDockIsOnRightSide(scr->dock) && !(wPreferences.icon_yard & IY_RIGHT))
usableArea.x1 += offset;
}
}