Hide WApplication fields in favor of accessors.

This commit is contained in:
2025-08-24 23:41:16 -04:00
parent da676c9e9e
commit b4d1dbe953
16 changed files with 353 additions and 218 deletions
+33 -33
View File
@@ -148,7 +148,7 @@ void wSetFocusTo(WScreen *scr, WWindow *wwin)
wWindowUnfocus(old_focused);
if (oapp) {
wAppMenuUnmap(oapp->menu);
wAppMenuUnmap(wApplicationGetMenu(oapp));
if (wPreferences.highlight_active_app)
wApplicationDeactivate(oapp);
}
@@ -165,7 +165,7 @@ void wSetFocusTo(WScreen *scr, WWindow *wwin)
/* remember last workspace where the app has been */
if (napp)
napp->last_workspace = wwin->frame->workspace;
wApplicationSetLastWorkspace(napp, wwin->frame->workspace);
if (wwin->flags.mapped && !WFLAGP(wwin, no_focusable)) {
/* install colormap if colormap mode is lock mode */
@@ -212,7 +212,7 @@ void wSetFocusTo(WScreen *scr, WWindow *wwin)
scr->focused_window = wwin;
if (oapp && oapp != napp) {
wAppMenuUnmap(oapp->menu);
wAppMenuUnmap(wApplicationGetMenu(oapp));
if (wPreferences.highlight_active_app)
wApplicationDeactivate(oapp);
}
@@ -226,12 +226,12 @@ void wSetFocusTo(WScreen *scr, WWindow *wwin)
if (napp && !wasfocused) {
#ifdef USER_MENU
wUserMenuRefreshInstances(napp->menu, wwin);
wUserMenuRefreshInstances(wApplicationGetMenu(napp), wwin);
#endif /* USER_MENU */
/* kix: Only menu map with mouse, not alt+tab! */
if (wwin->flags.mapped)
wAppMenuMap(napp->menu, wwin);
wAppMenuMap(wApplicationGetMenu(napp), wwin);
}
if (napp && wPreferences.highlight_active_app)
wApplicationActivate(napp);
@@ -1783,7 +1783,7 @@ void wHideOtherApplications(WWindow *awin)
} else if (wwin->main_window != None && awin->main_window != wwin->main_window) {
tapp = wApplicationOf(wwin->main_window);
if (tapp) {
tapp->flags.skip_next_animation = 1;
wApplicationSetSkipNextAnimation(tapp, 1);
wHideApplication(tapp);
} else {
if (!WFLAGP(wwin, no_miniaturizable)) {
@@ -1811,37 +1811,37 @@ void wHideApplication(WApplication *wapp)
wwarning("trying to hide a non grouped window");
return;
}
if (!wapp->main_window_desc) {
if (!wApplicationGetMainWindowDesc(wapp)) {
wwarning("group leader not found for window group");
return;
}
scr = wapp->main_window_desc->screen_ptr;
scr = wApplicationGetMainWindowDesc(wapp)->screen_ptr;
hadfocus = 0;
wlist = scr->focused_window;
if (!wlist)
return;
if (wlist->main_window == wapp->main_window)
wapp->last_focused = wlist;
if (wlist->main_window == wApplicationGetMainWindow(wapp))
wApplicationSetLastFocused(wapp, wlist);
else
wapp->last_focused = NULL;
wApplicationSetLastFocused(wapp, NULL);
animate = !wapp->flags.skip_next_animation;
animate = !wApplicationGetSkipNextAnimation(wapp);
while (wlist) {
if (wlist->main_window == wapp->main_window) {
if (wlist->main_window == wApplicationGetMainWindow(wapp)) {
if (wlist->flags.focused)
hadfocus = 1;
if (wapp->app_icon) {
hideWindow(wapp->app_icon->icon, wapp->app_icon->x_pos,
wapp->app_icon->y_pos, wlist, animate);
if (wApplicationGetAppIcon(wapp)) {
hideWindow(wApplicationGetAppIcon(wapp)->icon, wApplicationGetAppIcon(wapp)->x_pos,
wApplicationGetAppIcon(wapp)->y_pos, wlist, animate);
animate = False;
}
}
wlist = wlist->prev;
}
wapp->flags.skip_next_animation = 0;
wApplicationSetSkipNextAnimation(wapp, 0);
if (hadfocus) {
if (wPreferences.focus_mode == WKF_CLICK) {
@@ -1858,14 +1858,14 @@ void wHideApplication(WApplication *wapp)
}
}
wapp->flags.hidden = 1;
wApplicationSetHidden(wapp, 1);
if (wPreferences.auto_arrange_icons)
wArrangeIcons(scr, True);
#ifdef HIDDENDOT
if (wapp->app_icon)
wAppIconPaint(wapp->app_icon);
if (wApplicationGetAppIcon(wapp))
wAppIconPaint(wApplicationGetAppIcon(wapp));
#endif
}
@@ -1914,7 +1914,7 @@ void wUnhideApplication(WApplication *wapp, Bool miniwindows, Bool bringToCurren
if (!wapp)
return;
scr = wapp->main_window_desc->screen_ptr;
scr = wApplicationGetMainWindowDesc(wapp)->screen_ptr;
wlist = scr->focused_window;
if (!wlist)
return;
@@ -1923,12 +1923,12 @@ void wUnhideApplication(WApplication *wapp, Bool miniwindows, Bool bringToCurren
while (wlist->prev)
wlist = wlist->prev;
animate = !wapp->flags.skip_next_animation;
animate = !wApplicationGetSkipNextAnimation(wapp);
while (wlist) {
next = wlist->next;
if (wlist->main_window == wapp->main_window) {
if (wlist->main_window == wApplicationGetMainWindow(wapp)) {
if (wlist->flags.focused)
focused = wlist;
else if (!focused || !focused->flags.focused)
@@ -1968,8 +1968,8 @@ void wUnhideApplication(WApplication *wapp, Bool miniwindows, Bool bringToCurren
}
WMPostNotificationName(WMNChangedState, wlist, "hide");
} else if (wlist->flags.hidden) {
unhideWindow(wapp->app_icon->icon, wapp->app_icon->x_pos,
wapp->app_icon->y_pos, wlist, animate, bringToCurrentWS);
unhideWindow(wApplicationGetAppIcon(wapp)->icon, wApplicationGetAppIcon(wapp)->x_pos,
wApplicationGetAppIcon(wapp)->y_pos, wlist, animate, bringToCurrentWS);
animate = False;
} else {
if (bringToCurrentWS && wlist->frame->workspace != scr->current_workspace)
@@ -1981,21 +1981,21 @@ void wUnhideApplication(WApplication *wapp, Bool miniwindows, Bool bringToCurren
wlist = next;
}
wapp->flags.skip_next_animation = 0;
wapp->flags.hidden = 0;
wApplicationSetSkipNextAnimation(wapp, 0);
wApplicationSetHidden(wapp, 0);
if (wapp->last_focused && wapp->last_focused->flags.mapped) {
wRaiseFrame(wapp->last_focused->frame->core);
wSetFocusTo(scr, wapp->last_focused);
if (wApplicationGetLastWorkspace(wapp) && wApplicationGetLastFocused(wapp)->flags.mapped) {
wRaiseFrame(wApplicationGetLastFocused(wapp)->frame->core);
wSetFocusTo(scr, wApplicationGetLastFocused(wapp));
} else if (focused) {
wSetFocusTo(scr, focused);
}
wapp->last_focused = NULL;
wApplicationSetLastFocused(wapp, NULL);
if (wPreferences.auto_arrange_icons)
wArrangeIcons(scr, True);
#ifdef HIDDENDOT
wAppIconPaint(wapp->app_icon);
wAppIconPaint(wApplicationGetAppIcon(wapp));
#endif
}
@@ -2243,7 +2243,7 @@ void wMakeWindowVisible(WWindow *wwin)
app = wApplicationOf(wwin->main_window);
if (app) {
/* trick to get focus to this window */
app->last_focused = wwin;
wApplicationSetLastFocused(app, wwin);
wUnhideApplication(app, False, False);
}
}
+83 -83
View File
@@ -147,16 +147,16 @@ WAppIcon *wAppIconCreateForDock(WScreen *scr, const char *command, const char *w
void create_appicon_for_application(WApplication *wapp, WWindow *wwin)
{
/* Try to create an icon from the dock or clip */
create_appicon_from_dock(wwin, wapp, wapp->main_window);
create_appicon_from_dock(wwin, wapp, wApplicationGetMainWindow(wapp));
/* If app_icon was not found, create it */
if (!wapp->app_icon) {
if (!wApplicationGetAppIcon(wapp)) {
/* Create the icon */
wapp->app_icon = wAppIconCreate(wapp->main_window_desc);
wIconUpdate(wapp->app_icon->icon);
wApplicationSetAppIcon(wapp, wAppIconCreate(wApplicationGetMainWindowDesc(wapp)));
wIconUpdate(wApplicationGetAppIcon(wapp)->icon);
/* Now, paint the icon */
if (!WFLAGP(wapp->main_window_desc, no_appicon))
if (!WFLAGP(wApplicationGetMainWindowDesc(wapp), no_appicon))
paint_app_icon(wapp);
}
@@ -164,8 +164,8 @@ void create_appicon_for_application(WApplication *wapp, WWindow *wwin)
* window data are known - so try to save the icon file for docked
* applications to ensure that the file exists when window maker
* starts up next time. */
if (wapp->app_icon->docked && !WFLAGP(wapp->main_window_desc, no_appicon))
save_appicon(wapp->app_icon);
if (wApplicationGetAppIcon(wapp)->docked && !WFLAGP(wApplicationGetMainWindowDesc(wapp), no_appicon))
save_appicon(wApplicationGetAppIcon(wapp));
}
void unpaint_app_icon(WApplication *wapp)
@@ -174,16 +174,16 @@ void unpaint_app_icon(WApplication *wapp)
WScreen *scr;
WDock *clip;
if (!wapp || !wapp->app_icon)
if (!wapp || !wApplicationGetAppIcon(wapp))
return;
aicon = wapp->app_icon;
aicon = wApplicationGetAppIcon(wapp);
/* If the icon is docked, don't continue */
if (aicon->docked)
return;
scr = wapp->main_window_desc->screen_ptr;
scr = wApplicationGetMainWindowDesc(wapp)->screen_ptr;
clip = scr->workspaces[scr->current_workspace]->clip;
if (!clip || !aicon->attracted || !clip->collapsed)
@@ -206,15 +206,15 @@ void paint_app_icon(WApplication *wapp)
int x = 0, y = 0;
Bool update_icon = False;
if (!wapp || !wapp->app_icon || !wapp->main_window_desc)
if (!wapp || !wApplicationGetAppIcon(wapp) || !wApplicationGetMainWindowDesc(wapp))
return;
icon = wapp->app_icon->icon;
scr = wapp->main_window_desc->screen_ptr;
wapp->app_icon->main_window = wapp->main_window;
icon = wApplicationGetAppIcon(wapp)->icon;
scr = wApplicationGetMainWindowDesc(wapp)->screen_ptr;
wApplicationGetAppIcon(wapp)->main_window = wApplicationGetMainWindow(wapp);
/* If the icon is docked, don't continue */
if (wapp->app_icon->docked)
if (wApplicationGetAppIcon(wapp)->docked)
return;
attracting_dock = scr->attracting_drawer != NULL ?
@@ -222,19 +222,19 @@ void paint_app_icon(WApplication *wapp)
scr->workspaces[scr->current_workspace]->clip;
if (attracting_dock && attracting_dock->attract_icons &&
wDockFindFreeSlot(attracting_dock, &x, &y)) {
wapp->app_icon->attracted = 1;
wApplicationGetAppIcon(wapp)->attracted = 1;
if (!icon->shadowed) {
icon->shadowed = 1;
update_icon = True;
}
wDockAttachIcon(attracting_dock, wapp->app_icon, x, y, update_icon);
wDockAttachIcon(attracting_dock, wApplicationGetAppIcon(wapp), x, y, update_icon);
} else {
/* We must know if the icon is painted in the screen,
* because if painted, then PlaceIcon will return the next
* space on the screen, and the icon will move */
if (wapp->app_icon->next == NULL && wapp->app_icon->prev == NULL) {
PlaceIcon(scr, &x, &y, wGetHeadForWindow(wapp->main_window_desc));
wAppIconMove(wapp->app_icon, x, y);
if (wApplicationGetAppIcon(wapp)->next == NULL && wApplicationGetAppIcon(wapp)->prev == NULL) {
PlaceIcon(scr, &x, &y, wGetHeadForWindow(wApplicationGetMainWindowDesc(wapp)));
wAppIconMove(wApplicationGetAppIcon(wapp), x, y);
wLowerFrame(icon->core);
}
}
@@ -242,57 +242,57 @@ void paint_app_icon(WApplication *wapp)
/* If we want appicon (no_appicon is not set) and the icon is not
* in the appicon_list, we must add it. Else, we want to avoid
* having it on the list */
if (!WFLAGP(wapp->main_window_desc, no_appicon) &&
wapp->app_icon->next == NULL && wapp->app_icon->prev == NULL)
add_to_appicon_list(scr, wapp->app_icon);
if (!WFLAGP(wApplicationGetMainWindowDesc(wapp), no_appicon) &&
wApplicationGetAppIcon(wapp)->next == NULL && wApplicationGetAppIcon(wapp)->prev == NULL)
add_to_appicon_list(scr, wApplicationGetAppIcon(wapp));
if (!attracting_dock || !wapp->app_icon->attracted || !attracting_dock->collapsed)
if (!attracting_dock || !wApplicationGetAppIcon(wapp)->attracted || !attracting_dock->collapsed)
XMapWindow(dpy, icon->core->window);
if (wPreferences.auto_arrange_icons && !wapp->app_icon->attracted)
if (wPreferences.auto_arrange_icons && !wApplicationGetAppIcon(wapp)->attracted)
wArrangeIcons(scr, True);
}
void removeAppIconFor(WApplication *wapp)
{
if (!wapp->app_icon)
if (!wApplicationGetAppIcon(wapp))
return;
if (wPreferences.highlight_active_app)
wIconSetHighlited(wapp->app_icon->icon, False);
if (wapp->app_icon->docked && !wapp->app_icon->attracted) {
wapp->app_icon->running = 0;
wIconSetHighlited(wApplicationGetAppIcon(wapp)->icon, False);
if (wApplicationGetAppIcon(wapp)->docked && !wApplicationGetAppIcon(wapp)->attracted) {
wApplicationGetAppIcon(wapp)->running = 0;
/* since we keep it, we don't care if it was attracted or not */
wapp->app_icon->attracted = 0;
wapp->app_icon->icon->shadowed = 0;
wapp->app_icon->main_window = None;
wapp->app_icon->pid = 0;
wapp->app_icon->icon->owner = NULL;
wapp->app_icon->icon->icon_win = None;
wApplicationGetAppIcon(wapp)->attracted = 0;
wApplicationGetAppIcon(wapp)->icon->shadowed = 0;
wApplicationGetAppIcon(wapp)->main_window = None;
wApplicationGetAppIcon(wapp)->pid = 0;
wApplicationGetAppIcon(wapp)->icon->owner = NULL;
wApplicationGetAppIcon(wapp)->icon->icon_win = None;
/* Set the icon image */
set_icon_image_from_database(wapp->app_icon->icon, wapp->app_icon->wm_instance,
wapp->app_icon->wm_class, wapp->app_icon->command);
set_icon_image_from_database(wApplicationGetAppIcon(wapp)->icon, wApplicationGetAppIcon(wapp)->wm_instance,
wApplicationGetAppIcon(wapp)->wm_class, wApplicationGetAppIcon(wapp)->command);
/* Update the icon, because wapp->app_icon->icon could be NULL */
wIconUpdate(wapp->app_icon->icon);
/* Update the icon, because wApplicationGetAppIcon(wapp)->icon could be NULL */
wIconUpdate(wApplicationGetAppIcon(wapp)->icon);
/* Paint it */
wAppIconPaint(wapp->app_icon);
} else if (wapp->app_icon->docked) {
wapp->app_icon->running = 0;
if (wapp->app_icon->dock->type == WM_DRAWER) {
wDrawerFillTheGap(wapp->app_icon->dock, wapp->app_icon, True);
wAppIconPaint(wApplicationGetAppIcon(wapp));
} else if (wApplicationGetAppIcon(wapp)->docked) {
wApplicationGetAppIcon(wapp)->running = 0;
if (wApplicationGetAppIcon(wapp)->dock->type == WM_DRAWER) {
wDrawerFillTheGap(wApplicationGetAppIcon(wapp)->dock, wApplicationGetAppIcon(wapp), True);
}
wDockDetach(wapp->app_icon->dock, wapp->app_icon);
wDockDetach(wApplicationGetAppIcon(wapp)->dock, wApplicationGetAppIcon(wapp));
} else {
wAppIconDestroy(wapp->app_icon);
wAppIconDestroy(wApplicationGetAppIcon(wapp));
}
wapp->app_icon = NULL;
wApplicationSetAppIcon(wapp, NULL);
if (wPreferences.auto_arrange_icons)
wArrangeIcons(wapp->main_window_desc->screen_ptr, True);
wArrangeIcons(wApplicationGetMainWindowDesc(wapp)->screen_ptr, True);
}
static WAppIcon *wAppIconCreate(WWindow *leader_win)
@@ -419,7 +419,7 @@ void wAppIconPaint(WAppIcon *aicon)
scr->copy_gc, 0, 0, scr->dock_dots->width, scr->dock_dots->height, 0, 0);
}
#ifdef HIDDENDOT
if (wapp && wapp->flags.hidden) {
if (wapp && wApplicationIsHidden(wapp)) {
XSetClipMask(dpy, scr->copy_gc, scr->dock_dots->mask);
XSetClipOrigin(dpy, scr->copy_gc, 0, 0);
XCopyArea(dpy, scr->dock_dots->image,
@@ -463,7 +463,7 @@ static void relaunchApplication(WApplication *wapp)
WScreen *scr;
WWindow *wlist, *next;
scr = wapp->main_window_desc->screen_ptr;
scr = wApplicationGetMainWindowDesc(wapp)->screen_ptr;
wlist = scr->focused_window;
if (! wlist)
return;
@@ -474,7 +474,7 @@ static void relaunchApplication(WApplication *wapp)
while (wlist) {
next = wlist->next;
if (wlist->main_window == wapp->main_window) {
if (wlist->main_window == wApplicationGetMainWindow(wapp)) {
if (RelaunchWindow(wlist))
return;
}
@@ -497,8 +497,8 @@ static void hideCallback(WMenu * menu, WMenuEntry * entry)
{
WApplication *wapp = (WApplication *) entry->clientdata;
if (wapp->flags.hidden) {
wWorkspaceChange(menu->menu->screen_ptr, wapp->last_workspace);
if (wApplicationIsHidden(wapp)) {
wWorkspaceChange(menu->menu->screen_ptr, wApplicationGetLastWorkspace(wapp));
wUnhideApplication(wapp, False, False);
} else {
wHideApplication(wapp);
@@ -517,7 +517,7 @@ static void unhideHereCallback(WMenu * menu, WMenuEntry * entry)
static void setIconCallback(WMenu *menu, WMenuEntry *entry)
{
WAppIcon *icon = ((WApplication *) entry->clientdata)->app_icon;
WAppIcon *icon = wApplicationGetAppIcon((WApplication *) entry->clientdata);
char *file = NULL;
WScreen *scr;
int result;
@@ -569,33 +569,33 @@ static void killCallback(WMenu * menu, WMenuEntry * entry)
assert(entry->clientdata != NULL);
shortname = basename(wapp->app_icon->wm_instance);
shortname = basename(wApplicationGetAppIcon(wapp)->wm_instance);
buffer = wstrconcat(wapp->app_icon ? shortname : NULL,
buffer = wstrconcat(wApplicationGetAppIcon(wapp) ? shortname : NULL,
_(" will be forcibly closed.\n"
"Any unsaved changes will be lost.\n" "Please confirm."));
fPtr = wapp->main_window_desc->fake_group;
fPtr = wApplicationGetMainWindowDesc(wapp)->fake_group;
wretain(wapp->main_window_desc);
wretain(wApplicationGetMainWindowDesc(wapp));
if (wPreferences.dont_confirm_kill
|| wMessageDialog(menu->frame->screen_ptr, _("Kill Application"),
buffer, _("Yes"), _("No"), NULL) == WAPRDefault) {
if (fPtr != NULL) {
WWindow *wwin, *twin;
wwin = wapp->main_window_desc->screen_ptr->focused_window;
wwin = wApplicationGetMainWindowDesc(wapp)->screen_ptr->focused_window;
while (wwin) {
twin = wwin->prev;
if (wwin->fake_group == fPtr)
wClientKill(wwin);
wwin = twin;
}
} else if (!wapp->main_window_desc->flags.destroyed) {
wClientKill(wapp->main_window_desc);
} else if (!wApplicationGetMainWindowDesc(wapp)->flags.destroyed) {
wClientKill(wApplicationGetMainWindowDesc(wapp));
}
}
wrelease(wapp->main_window_desc);
wrelease(wApplicationGetMainWindowDesc(wapp));
wfree(buffer);
WCHANGE_STATE(WSTATE_NORMAL);
}
@@ -617,7 +617,7 @@ static WMenu *createApplicationMenu(WScreen *scr)
static void openApplicationMenu(WApplication * wapp, int x, int y)
{
WMenu *menu;
WScreen *scr = wapp->main_window_desc->screen_ptr;
WScreen *scr = wApplicationGetMainWindowDesc(wapp)->screen_ptr;
int i;
if (!scr->icon_menu) {
@@ -627,7 +627,7 @@ static void openApplicationMenu(WApplication * wapp, int x, int y)
menu = scr->icon_menu;
if (wapp->flags.hidden)
if (wApplicationIsHidden(wapp))
menu->entries[1]->text = _("Unhide");
else
menu->entries[1]->text = _("Hide");
@@ -677,8 +677,8 @@ static void iconDblClick(WObjDescriptor *desc, XEvent *event)
unhideHere = (event->xbutton.state & ShiftMask);
/* go to the last workspace that the user worked on the app */
if (!unhideHere && wapp->last_workspace != scr->current_workspace)
wWorkspaceChange(scr, wapp->last_workspace);
if (!unhideHere && wApplicationGetLastWorkspace(wapp) != scr->current_workspace)
wWorkspaceChange(scr, wApplicationGetLastWorkspace(wapp));
wUnhideApplication(wapp, event->xbutton.button == Button2, unhideHere);
@@ -1147,53 +1147,53 @@ static WAppIcon *findDockIconFor(WDock *dock, Window main_window)
static void create_appicon_from_dock(WWindow *wwin, WApplication *wapp, Window main_window)
{
WScreen *scr = wwin->screen_ptr;
wapp->app_icon = NULL;
wApplicationSetAppIcon(wapp, NULL);
if (scr->last_dock)
wapp->app_icon = findDockIconFor(scr->last_dock, main_window);
wApplicationSetAppIcon(wapp, findDockIconFor(scr->last_dock, main_window));
/* check main dock if we did not find it in last dock */
if (!wapp->app_icon && scr->dock)
wapp->app_icon = findDockIconFor(scr->dock, main_window);
if (!wApplicationGetAppIcon(wapp) && scr->dock)
wApplicationSetAppIcon(wapp, findDockIconFor(scr->dock, main_window));
/* check clips */
if (!wapp->app_icon) {
if (!wApplicationGetAppIcon(wapp)) {
int i;
for (i = 0; i < scr->workspace_count; i++) {
WDock *dock = scr->workspaces[i]->clip;
if (dock)
wapp->app_icon = findDockIconFor(dock, main_window);
wApplicationSetAppIcon(wapp, findDockIconFor(dock, main_window));
if (wapp->app_icon)
if (wApplicationGetAppIcon(wapp))
break;
}
}
/* Finally check drawers */
if (!wapp->app_icon) {
if (!wApplicationGetAppIcon(wapp)) {
WDrawerChain *dc;
for (dc = scr->drawers; dc != NULL; dc = dc->next) {
wapp->app_icon = findDockIconFor(dc->adrawer, main_window);
if (wapp->app_icon)
wApplicationSetAppIcon(wapp, findDockIconFor(dc->adrawer, main_window));
if (wApplicationGetAppIcon(wapp))
break;
}
}
/* If created, then set some flags */
if (wapp->app_icon && !WFLAGP(wapp->main_window_desc, no_appicon)) {
WWindow *mainw = wapp->main_window_desc;
if (wApplicationGetAppIcon(wapp) && !WFLAGP(wApplicationGetMainWindowDesc(wapp), no_appicon)) {
WWindow *mainw = wApplicationGetMainWindowDesc(wapp);
wapp->app_icon->running = 1;
wapp->app_icon->icon->owner = mainw;
wApplicationGetAppIcon(wapp)->running = 1;
wApplicationGetAppIcon(wapp)->icon->owner = mainw;
if (mainw->wm_hints && (mainw->wm_hints->flags & IconWindowHint))
wapp->app_icon->icon->icon_win = mainw->wm_hints->icon_window;
wApplicationGetAppIcon(wapp)->icon->icon_win = mainw->wm_hints->icon_window;
/* Update the icon images */
wIconUpdate(wapp->app_icon->icon);
wIconUpdate(wApplicationGetAppIcon(wapp)->icon);
/* Paint it */
wAppIconPaint(wapp->app_icon);
wAppIconPaint(wApplicationGetAppIcon(wapp));
}
}
+118
View File
@@ -37,6 +37,109 @@
#include "dock.h"
#include "defaults.h"
struct WApplication {
struct WApplication *next;
struct WApplication *prev;
Window main_window; /* ID of the group leader */
struct WWindow *main_window_desc; /* main (leader) window descriptor */
WMenu *menu; /* application menu */
struct WAppIcon *app_icon;
int refcount;
struct WWindow *last_focused; /* focused window before hide */
int last_workspace; /* last workspace used to work on the
* app */
WMHandlerID *urgent_bounce_timer;
struct {
unsigned int skip_next_animation:1;
unsigned int hidden:1;
unsigned int emulated:1;
unsigned int bouncing:1;
} flags;
};
/******** Accessors/mutators ********/
Window wApplicationGetMainWindow(WApplication *wapp) {
return wapp->main_window;
}
WMenu *wApplicationGetMenu(WApplication *wapp) {
return wapp->menu;
}
void wApplicationSetMenu(WApplication *wapp, WMenu *menu) {
wapp->menu = menu;
}
struct WWindow *wApplicationGetMainWindowDesc(WApplication *wapp) {
return wapp->main_window_desc;
}
struct WAppIcon *wApplicationGetAppIcon(WApplication *wapp) {
return wapp->app_icon;
}
void wApplicationSetAppIcon(WApplication *wapp, struct WAppIcon *icon) {
wapp->app_icon = icon;
}
int wApplicationGetLastWorkspace(WApplication *wapp) {
return wapp->last_workspace;
}
void wApplicationSetLastWorkspace(WApplication *wapp, int workspace) {
wapp->last_workspace = workspace;
}
struct WWindow *wApplicationGetLastFocused(WApplication *wapp) {
return wapp->last_focused;
}
void wApplicationSetLastFocused(WApplication *wapp, struct WWindow *win) {
wapp->last_focused = win;
}
WMHandlerID *wApplicationGetUrgentBounceTimer(WApplication *wapp) {
return wapp->urgent_bounce_timer;
}
int wApplicationHasUrgentBounceTimer(WApplication *wapp) {
return wapp->urgent_bounce_timer != NULL;
}
void wApplicationClearUrgentBounceTimer(WApplication *wapp) {
if (wapp->urgent_bounce_timer) {
WMDeleteTimerHandler(wapp->urgent_bounce_timer);
wapp->urgent_bounce_timer = NULL;
}
}
void wApplicationSetUrgentBounceTimer(WApplication *wapp, WMHandlerID *timer) {
wapp->urgent_bounce_timer = timer;
}
int wApplicationGetSkipNextAnimation(WApplication *wapp) {
return wapp->flags.skip_next_animation;
}
void wApplicationSetSkipNextAnimation(WApplication *wapp, int skip) {
wapp->flags.skip_next_animation = !!skip;
}
int wApplicationIsHidden(WApplication *wapp) {
return wapp->flags.hidden;
}
void wApplicationSetHidden(WApplication *wapp, int hidden) {
wapp->flags.hidden = !!hidden;
}
int wApplicationIsEmulated(WApplication *wapp) {
return wapp->flags.emulated;
}
void wApplicationSetEmulated(WApplication *wapp, int emulated) {
wapp->flags.emulated = !!emulated;
}
int wApplicationIsBouncing(WApplication *wapp) {
return wapp->flags.bouncing;
}
void wApplicationSetBouncing(WApplication *wapp, int bouncing) {
wapp->flags.bouncing = !!bouncing;
}
/******** Local variables ********/
@@ -198,6 +301,21 @@ void wApplicationDestroy(WApplication *wapp)
wfree(wapp);
}
void wApplicationIncrementRefcount(WApplication *wapp)
{
++wapp->refcount;
}
int wApplicationHasLiveRefcount(WApplication *wapp)
{
return wapp->refcount > 1;
}
void wApplicationClearRefcount(WApplication *wapp)
{
wapp->refcount = 0;
}
void wApplicationActivate(WApplication *wapp)
{
if (wapp->app_icon) {
+38 -19
View File
@@ -23,32 +23,51 @@
#define WMAPPLICATION_H_
/* for tracking single application instances */
typedef struct WApplication {
struct WApplication *next;
struct WApplication *prev;
typedef struct WApplication WApplication;
Window main_window; /* ID of the group leader */
struct WWindow *main_window_desc; /* main (leader) window descriptor */
WMenu *menu; /* application menu */
struct WAppIcon *app_icon;
int refcount;
struct WWindow *last_focused; /* focused window before hide */
int last_workspace; /* last workspace used to work on the
* app */
WMHandlerID *urgent_bounce_timer;
struct {
unsigned int skip_next_animation:1;
unsigned int hidden:1;
unsigned int emulated:1;
unsigned int bouncing:1;
} flags;
} WApplication;
/******** Accessors/mutators ********/
Window wApplicationGetMainWindow(WApplication *wapp);
struct WWindow *wApplicationGetMainWindowDesc(WApplication *wapp);
WMenu *wApplicationGetMenu(WApplication *wapp);
void wApplicationSetMenu(WApplication *wapp, WMenu *menu);
struct WAppIcon *wApplicationGetAppIcon(WApplication *wapp);
void wApplicationSetAppIcon(WApplication *wapp, struct WAppIcon *icon);
int wApplicationGetLastWorkspace(WApplication *wapp);
void wApplicationSetLastWorkspace(WApplication *wapp, int workspace);
struct WWindow *wApplicationGetLastFocused(WApplication *wapp);
void wApplicationSetLastFocused(WApplication *wapp, struct WWindow *win);
WMHandlerID *wApplicationGetUrgentBounceTimer(WApplication *wapp);
int wApplicationHasUrgentBounceTimer(WApplication *wapp);
void wApplicationClearUrgentBounceTimer(WApplication *wapp);
void wApplicationSetUrgentBounceTimer(WApplication *wapp, WMHandlerID *timer);
int wApplicationGetSkipNextAnimation(WApplication *wapp);
void wApplicationSetSkipNextAnimation(WApplication *wapp, int skip);
int wApplicationIsHidden(WApplication *wapp);
void wApplicationSetHidden(WApplication *wapp, int hidden);
int wApplicationIsEmulated(WApplication *wapp);
void wApplicationSetEmulated(WApplication *wapp, int emulated);
int wApplicationIsBouncing(WApplication *wapp);
void wApplicationSetBouncing(WApplication *wapp, int bouncing);
/******** Lifecycle/resource management ********/
WApplication *wApplicationCreate(struct WWindow *wwin);
WApplication *wApplicationOf(Window window);
void wApplicationDestroy(WApplication *wapp);
void wApplicationIncrementRefcount(WApplication *wapp);
int wApplicationHasLiveRefcount(WApplication *wapp);
void wApplicationClearRefcount(WApplication *wapp);
void wAppBounce(WApplication *);
void wAppBounceWhileUrgent(WApplication *);
void wApplicationActivate(WApplication *);
+2 -2
View File
@@ -527,8 +527,8 @@ static void appiconBalloon(WObjDescriptor *object)
if (object->parent_type == WCLASS_DOCK_ICON) {
if (aicon->main_window) {
app = wApplicationOf(aicon->main_window);
if (app && app->main_window_desc && app->main_window_desc->fake_group)
app_win_cnt = app->main_window_desc->fake_group->retainCount - 1;
if (app && wApplicationGetMainWindowDesc(app) && wApplicationGetMainWindowDesc(app)->fake_group)
app_win_cnt = wApplicationGetMainWindowDesc(app)->fake_group->retainCount - 1;
}
}
+11 -11
View File
@@ -324,14 +324,14 @@ void wClientCheckProperty(WWindow * wwin, XPropertyEvent * event)
WApplication *wapp = wApplicationOf(wwin->main_window);
char *command;
if (!wapp || !wapp->app_icon || wapp->app_icon->docked)
if (!wapp || !wApplicationGetAppIcon(wapp) || wApplicationGetAppIcon(wapp)->docked)
break;
command = GetCommandForWindow(wwin->main_window);
if (command) {
if (wapp->app_icon->command)
wfree(wapp->app_icon->command);
wapp->app_icon->command = command;
if (wApplicationGetAppIcon(wapp)->command)
wfree(wApplicationGetAppIcon(wapp)->command);
wApplicationGetAppIcon(wapp)->command = command;
}
}
break;
@@ -460,9 +460,9 @@ void wClientCheckProperty(WWindow * wwin, XPropertyEvent * event)
wIconUpdate(wwin->icon);
wapp = wApplicationOf(wwin->main_window);
if (wapp && wapp->app_icon) {
wIconUpdate(wapp->app_icon->icon);
wAppIconPaint(wapp->app_icon);
if (wapp && wApplicationGetAppIcon(wapp)) {
wIconUpdate(wApplicationGetAppIcon(wapp)->icon);
wAppIconPaint(wApplicationGetAppIcon(wapp));
}
}
@@ -560,10 +560,10 @@ void wClientCheckProperty(WWindow * wwin, XPropertyEvent * event)
wapp = wApplicationOf(wwin->main_window);
if (wapp) {
if (wapp->menu) {
if (wApplicationGetMenu(wapp)) {
/* update menu */
/* TODO: remake appmenu update */
wAppMenuDestroy(wapp->menu);
wAppMenuDestroy(wApplicationGetMenu(wapp));
}
if (wwin->fake_group) {
WScreen *scr = wwin->screen_ptr;
@@ -599,13 +599,13 @@ void wClientCheckProperty(WWindow * wwin, XPropertyEvent * event)
wapp = wApplicationOf(wwin->main_window);
if (wapp) {
wapp->menu = wAppMenuGet(scr, wwin->main_window);
wApplicationSetMenu(wapp, wAppMenuGet(scr, wwin->main_window));
}
if (wPreferences.auto_arrange_icons) {
wArrangeIcons(wwin->screen_ptr, True);
}
} else {
wapp->menu = wAppMenuGet(wwin->screen_ptr, wwin->main_window);
wApplicationSetMenu(wapp, wAppMenuGet(wwin->screen_ptr, wwin->main_window));
}
/* make the appmenu be mapped */
wSetFocusTo(wwin->screen_ptr, NULL);
+6 -6
View File
@@ -794,8 +794,8 @@ static void hideCallback(WMenu *menu, WMenuEntry *entry)
wapp = wApplicationOf(btn->icon->owner->main_window);
if (wapp->flags.hidden) {
wWorkspaceChange(btn->icon->core->screen_ptr, wapp->last_workspace);
if (wApplicationIsHidden(wapp)) {
wWorkspaceChange(btn->icon->core->screen_ptr, wApplicationGetLastWorkspace(wapp));
wUnhideApplication(wapp, False, False);
} else {
wHideApplication(wapp);
@@ -3575,7 +3575,7 @@ static void openDockMenu(WDock *dock, WAppIcon *aicon, XEvent *event)
/* unhide here */
entry = dock->menu->entries[++index];
entry->clientdata = aicon;
if (wapp && wapp->flags.hidden)
if (wapp && wApplicationIsHidden(wapp))
entry->text = _("Unhide Here");
else
entry->text = _("Bring Here");
@@ -3585,7 +3585,7 @@ static void openDockMenu(WDock *dock, WAppIcon *aicon, XEvent *event)
/* hide */
entry = dock->menu->entries[++index];
entry->clientdata = aicon;
if (wapp && wapp->flags.hidden)
if (wapp && wApplicationIsHidden(wapp))
entry->text = _("Unhide");
else
entry->text = _("Hide");
@@ -3652,8 +3652,8 @@ static void iconDblClick(WObjDescriptor *desc, XEvent *event)
unhideHere = (event->xbutton.state & ShiftMask);
/* go to the last workspace that the user worked on the app */
if (wapp->last_workspace != dock->screen_ptr->current_workspace && !unhideHere)
wWorkspaceChange(dock->screen_ptr, wapp->last_workspace);
if (wApplicationGetLastWorkspace(wapp) != dock->screen_ptr->current_workspace && !unhideHere)
wWorkspaceChange(dock->screen_ptr, wApplicationGetLastWorkspace(wapp));
wUnhideApplication(wapp, event->xbutton.button == Button2, unhideHere);
+7 -7
View File
@@ -605,7 +605,7 @@ static void handleMapRequest(XEvent * ev)
WApplication *wapp = wApplicationOf(wwin->main_window);
/* go to the last workspace that the user worked on the app */
if (wapp) {
wWorkspaceChange(wwin->screen_ptr, wapp->last_workspace);
wWorkspaceChange(wwin->screen_ptr, wApplicationGetLastWorkspace(wapp));
}
wUnhideApplication(wapp, False, False);
}
@@ -693,9 +693,9 @@ static void handleDestroyNotify(XEvent * event)
app = wApplicationOf(window);
if (app) {
if (window == app->main_window) {
app->refcount = 0;
wwin = app->main_window_desc->screen_ptr->focused_window;
if (window == wApplicationGetMainWindow(app)) {
wApplicationClearRefcount(app);
wwin = wApplicationGetMainWindowDesc(app)->screen_ptr->focused_window;
while (wwin) {
if (wwin->main_window == window) {
wwin->main_window = None;
@@ -984,7 +984,7 @@ static void handlePropertyNotify(XEvent * event)
}
wapp = wApplicationOf(event->xproperty.window);
if (wapp) {
wClientCheckProperty(wapp->main_window_desc, &event->xproperty);
wClientCheckProperty(wApplicationGetMainWindowDesc(wapp), &event->xproperty);
}
}
@@ -1038,7 +1038,7 @@ static void handleClientMessage(XEvent * event)
if (wapp) {
switch (event->xclient.data.l[0]) {
case WMFHideOtherApplications:
wHideOtherApplications(wapp->main_window_desc);
wHideOtherApplications(wApplicationGetMainWindowDesc(wapp));
done = 1;
break;
@@ -1481,7 +1481,7 @@ static void handleKeyPress(XEvent * event)
WApplication *wapp = wApplicationOf(wwin->main_window);
CloseWindowMenu(scr);
if (wapp && !WFLAGP(wapp->main_window_desc, no_appicon)) {
if (wapp && !WFLAGP(wApplicationGetMainWindowDesc(wapp), no_appicon)) {
wHideApplication(wapp);
}
}
+1 -1
View File
@@ -125,7 +125,7 @@ WIcon *icon_create_for_wwindow(WWindow *wwin)
WApplication *wapp;
/* do not let miniwindow steal app-icon's icon window */
wapp = wApplicationOf(wwin->client_win);
if (!wapp || wapp->app_icon == NULL)
if (!wapp || wApplicationGetAppIcon(wapp) == NULL)
icon->icon_win = wwin->wm_hints->icon_window;
} else {
icon->icon_win = wwin->wm_hints->icon_window;
+7 -7
View File
@@ -202,9 +202,9 @@ static WMPropList *makeWindowState(WWindow * wwin, WApplication * wapp)
command = GetCommandForWindow(win);
if (!command) {
if (wapp->app_icon && wapp->app_icon->command) {
command = wmalloc(strlen(wapp->app_icon->command) + 1);
strcpy(command, wapp->app_icon->command);
if (wApplicationGetAppIcon(wapp) && wApplicationGetAppIcon(wapp)->command) {
command = wmalloc(strlen(wApplicationGetAppIcon(wapp)->command) + 1);
strcpy(command, wApplicationGetAppIcon(wapp)->command);
} else
return NULL;
}
@@ -256,16 +256,16 @@ static WMPropList *makeWindowState(WWindow * wwin, WApplication * wapp)
WMReleasePropList(maximized);
WMReleasePropList(geometry);
WMReleasePropList(shortcut);
if (wapp && wapp->app_icon && wapp->app_icon->dock) {
if (wapp && wApplicationGetAppIcon(wapp) && wApplicationGetAppIcon(wapp)->dock) {
int i;
char *name = NULL;
if (wapp->app_icon->dock == scr->dock)
if (wApplicationGetAppIcon(wapp)->dock == scr->dock)
name = "Dock";
/* Try the clips */
if (name == NULL) {
for (i = 0; i < scr->workspace_count; i++)
if (scr->workspaces[i]->clip == wapp->app_icon->dock)
if (scr->workspaces[i]->clip == wApplicationGetAppIcon(wapp)->dock)
break;
if (i < scr->workspace_count)
name = scr->workspaces[i]->name;
@@ -274,7 +274,7 @@ static WMPropList *makeWindowState(WWindow * wwin, WApplication * wapp)
if (name == NULL) {
WDrawerChain *dc;
for (dc = scr->drawers; dc != NULL; dc = dc->next) {
if (dc->adrawer == wapp->app_icon->dock)
if (dc->adrawer == wApplicationGetAppIcon(wapp)->dock)
break;
}
assert(dc != NULL);
+15 -17
View File
@@ -193,13 +193,13 @@ typedef struct AppBouncerData {
static void doAppBounce(void *arg)
{
AppBouncerData *data = (AppBouncerData*)arg;
WAppIcon *aicon = data->wapp->app_icon;
WAppIcon *aicon = wApplicationGetAppIcon(data->wapp);
if (!aicon)
return;
reinit:
if (data->wapp->refcount > 1) {
if (wApplicationHasLiveRefcount(data->wapp)) {
if (wPreferences.raise_appicons_when_bouncing)
XRaiseWindow(dpy, aicon->icon->core->window);
@@ -241,7 +241,7 @@ reinit:
XMoveWindow(dpy, aicon->icon->core->window,
aicon->x_pos, aicon->y_pos);
CommitStackingForWindow(aicon->icon->core);
data->wapp->flags.bouncing = 0;
wApplicationSetBouncing(data->wapp, 0);
WMDeleteTimerHandler(data->timer);
wApplicationDestroy(data->wapp);
free(data);
@@ -319,15 +319,15 @@ static int bounceDirection(WAppIcon *aicon)
void wAppBounce(WApplication *wapp)
{
if (!wPreferences.no_animations && wapp->app_icon && !wapp->flags.bouncing
if (!wPreferences.no_animations && wApplicationGetAppIcon(wapp) && !wApplicationIsBouncing(wapp)
&& !wPreferences.do_not_make_appicons_bounce) {
++wapp->refcount;
wapp->flags.bouncing = 1;
wApplicationIncrementRefcount(wapp);
wApplicationSetBouncing(wapp, 1);
AppBouncerData *data = (AppBouncerData *)malloc(sizeof(AppBouncerData));
data->wapp = wapp;
data->count = data->pow = 0;
data->dir = bounceDirection(wapp->app_icon);
data->dir = bounceDirection(wApplicationGetAppIcon(wapp));
data->timer = WMAddPersistentTimerHandler(BOUNCE_DELAY, doAppBounce, data);
}
}
@@ -337,17 +337,17 @@ static int appIsUrgent(WApplication *wapp)
WScreen *scr;
WWindow *wlist;
if (!wapp->main_window_desc) {
if (!wApplicationGetMainWindowDesc(wapp)) {
wwarning("group leader not found for window group");
return 0;
}
scr = wapp->main_window_desc->screen_ptr;
scr = wApplicationGetMainWindowDesc(wapp)->screen_ptr;
wlist = scr->focused_window;
if (!wlist)
return 0;
while (wlist) {
if (wlist->main_window == wapp->main_window) {
if (wlist->main_window == wApplicationGetMainWindow(wapp)) {
if (wlist->flags.urgent)
return 1;
}
@@ -364,8 +364,7 @@ static void doAppUrgentBounce(void *arg)
if (appIsUrgent(wapp)) {
if(wPreferences.bounce_appicons_when_urgent) wAppBounce(wapp);
} else {
WMDeleteTimerHandler(wapp->urgent_bounce_timer);
wapp->urgent_bounce_timer = NULL;
wApplicationClearUrgentBounceTimer(wapp);
}
}
@@ -373,14 +372,13 @@ void wAppBounceWhileUrgent(WApplication *wapp)
{
if (!wapp) return;
if (appIsUrgent(wapp)) {
if (!wapp->urgent_bounce_timer) {
wapp->urgent_bounce_timer = WMAddPersistentTimerHandler(URGENT_BOUNCE_DELAY, doAppUrgentBounce, wapp);
if (!wApplicationHasUrgentBounceTimer(wapp)) {
wApplicationSetUrgentBounceTimer(wapp, WMAddPersistentTimerHandler(URGENT_BOUNCE_DELAY, doAppUrgentBounce, wapp));
doAppUrgentBounce(wapp);
}
} else {
if (wapp->urgent_bounce_timer) {
WMDeleteTimerHandler(wapp->urgent_bounce_timer);
wapp->urgent_bounce_timer = NULL;
if (wApplicationHasUrgentBounceTimer(wapp)) {
wApplicationClearUrgentBounceTimer(wapp);
}
}
}
+8 -8
View File
@@ -438,7 +438,7 @@ void wWindowSetupInitialAttributes(WWindow *wwin, int *level, int *workspace)
if (wwin->main_window != None) {
WApplication *wapp = wApplicationOf(wwin->main_window);
if (wapp && !wapp->flags.emulated)
if (wapp && !wApplicationIsEmulated(wapp))
wwin->user_flags.emulate_appicon = 0;
}
@@ -826,7 +826,7 @@ WWindow *wManageWindow(WScreen *scr, Window window)
if (wwin->main_window) {
WApplication *app = wApplicationOf(wwin->main_window);
if (app && app->app_icon)
if (app && wApplicationGetAppIcon(app))
wwin->client_flags.shared_appicon = 0;
}
@@ -1241,7 +1241,7 @@ WWindow *wManageWindow(WScreen *scr, Window window)
app = wApplicationCreate(wwin);
if (app) {
app->last_workspace = workspace;
wApplicationSetLastWorkspace(app, workspace);
/* Do application specific stuff, like setting application
* wide attributes. */
@@ -1249,9 +1249,9 @@ WWindow *wManageWindow(WScreen *scr, Window window)
if (wwin->flags.hidden) {
/* if the window was set to hidden because it was hidden
* in a previous incarnation and that state was restored */
app->flags.hidden = 1;
} else if (app->flags.hidden) {
if (WFLAGP(app->main_window_desc, start_hidden)) {
wApplicationSetHidden(app, 1);
} else if (wApplicationIsHidden(app)) {
if (WFLAGP(wApplicationGetMainWindowDesc(app), start_hidden)) {
wwin->flags.hidden = 1;
} else {
wUnhideApplication(app, False, False);
@@ -1683,7 +1683,7 @@ void wUnmanageWindow(WWindow *wwin, Bool restore, Bool destroyed)
WApplication *oapp = wApplicationOf(wwin->main_window);
WApplication *napp = scr->focused_window ? wApplicationOf(scr->focused_window->main_window) : NULL;
if (oapp && oapp != napp) {
wAppMenuUnmap(oapp->menu);
wAppMenuUnmap(wApplicationGetMenu(oapp));
if (wPreferences.highlight_active_app)
wApplicationDeactivate(oapp);
}
@@ -2037,7 +2037,7 @@ void wWindowChangeWorkspace(WWindow *wwin, int workspace)
wapp = wApplicationOf(wwin->main_window);
if (wapp)
wapp->last_workspace = workspace;
wApplicationSetLastWorkspace(wapp, workspace);
if (wwin->flags.miniaturized) {
if (wwin->icon) {
+1 -1
View File
@@ -636,7 +636,7 @@ static void updateMenuForWindow(WMenu * menu, WWindow * wwin)
updateMakeShortcutMenu(menu, wwin);
wMenuSetEnabled(menu, MC_HIDE, wapp != NULL && !WFLAGP(wapp->main_window_desc, no_appicon));
wMenuSetEnabled(menu, MC_HIDE, wapp != NULL && !WFLAGP(wApplicationGetMainWindowDesc(wapp), no_appicon));
wMenuSetEnabled(menu, MC_CLOSE, (wwin->protocols.DELETE_WINDOW && !WFLAGP(wwin, no_closable)));
+19 -19
View File
@@ -679,8 +679,8 @@ static void saveSettings(WMWidget *button, void *client_data)
WApplication *wapp = wApplicationOf(wwin->main_window);
if (wapp) {
buf2 = StrConcatDot(wapp->main_window_desc->wm_instance,
wapp->main_window_desc->wm_class);
buf2 = StrConcatDot(wApplicationGetMainWindowDesc(wapp)->wm_instance,
wApplicationGetMainWindowDesc(wapp)->wm_class);
key2 = WMCreatePLString(buf2);
wfree(buf2);
@@ -795,14 +795,14 @@ static void applySettings(WMWidget *button, void *client_data)
/* do application wide stuff */
for (i = 0; i < wlengthof(application_attr); i++) {
if (WMGetButtonSelected(panel->appChk[i]))
set_attr_flag(&wapp->main_window_desc->user_flags, &application_attr[i].flag);
set_attr_flag(&wApplicationGetMainWindowDesc(wapp)->user_flags, &application_attr[i].flag);
else
clear_attr_flag(&wapp->main_window_desc->user_flags, &application_attr[i].flag);
clear_attr_flag(&wApplicationGetMainWindowDesc(wapp)->user_flags, &application_attr[i].flag);
set_attr_flag(&wapp->main_window_desc->defined_user_flags, &application_attr[i].flag);
set_attr_flag(&wApplicationGetMainWindowDesc(wapp)->defined_user_flags, &application_attr[i].flag);
}
if (WFLAGP(wapp->main_window_desc, no_appicon))
if (WFLAGP(wApplicationGetMainWindowDesc(wapp), no_appicon))
unpaint_app_icon(wapp);
else
paint_app_icon(wapp);
@@ -836,13 +836,13 @@ static void applySettings(WMWidget *button, void *client_data)
* the icon text box has an icon path */
if (!WFLAGP(wwin, always_user_icon)) {
/* Change App Icon image, using the icon provided by the client */
if (wapp->app_icon) {
RImage *image = get_rimage_icon_from_wm_hints(wapp->app_icon->icon);
if (wApplicationGetAppIcon(wapp)) {
RImage *image = get_rimage_icon_from_wm_hints(wApplicationGetAppIcon(wapp)->icon);
if (image) {
set_icon_image_from_image(wapp->app_icon->icon, image);
update_icon_pixmap(wapp->app_icon->icon);
set_icon_image_from_image(wApplicationGetAppIcon(wapp)->icon, image);
update_icon_pixmap(wApplicationGetAppIcon(wapp)->icon);
} else {
wIconUpdate(wapp->app_icon->icon);
wIconUpdate(wApplicationGetAppIcon(wapp)->icon);
}
}
@@ -859,8 +859,8 @@ static void applySettings(WMWidget *button, void *client_data)
}
} else {
/* Change App Icon image */
if (wapp->app_icon)
wIconChangeImageFile(wapp->app_icon->icon, file);
if (wApplicationGetAppIcon(wapp))
wIconChangeImageFile(wApplicationGetAppIcon(wapp)->icon, file);
/* Change icon image if the app is minimized */
if (wwin->icon)
@@ -931,11 +931,11 @@ static void revertSettings(WMWidget *button, void *client_data)
for (i = 0; i < wlengthof(application_attr); i++) {
int is_userdef, flag = 0;
is_userdef = get_attr_flag(&wapp->main_window_desc->defined_user_flags, &application_attr[i].flag);
is_userdef = get_attr_flag(&wApplicationGetMainWindowDesc(wapp)->defined_user_flags, &application_attr[i].flag);
if (is_userdef)
flag = get_attr_flag(&wapp->main_window_desc->user_flags, &application_attr[i].flag);
flag = get_attr_flag(&wApplicationGetMainWindowDesc(wapp)->user_flags, &application_attr[i].flag);
else
flag = get_attr_flag(&wapp->main_window_desc->client_flags, &application_attr[i].flag);
flag = get_attr_flag(&wApplicationGetMainWindowDesc(wapp)->client_flags, &application_attr[i].flag);
WMSetButtonSelected(panel->appChk[i], flag);
}
@@ -1444,11 +1444,11 @@ static void create_tab_app_specific(WWindow *wwin, InspectorPanel *panel, int fr
for (i = 0; i < wlengthof(application_attr); i++) {
int is_userdef, flag;
is_userdef = get_attr_flag(&wapp->main_window_desc->defined_user_flags, &application_attr[i].flag);
is_userdef = get_attr_flag(&wApplicationGetMainWindowDesc(wapp)->defined_user_flags, &application_attr[i].flag);
if (is_userdef)
flag = get_attr_flag(&wapp->main_window_desc->user_flags, &application_attr[i].flag);
flag = get_attr_flag(&wApplicationGetMainWindowDesc(wapp)->user_flags, &application_attr[i].flag);
else
flag = get_attr_flag(&wapp->main_window_desc->client_flags, &application_attr[i].flag);
flag = get_attr_flag(&wApplicationGetMainWindowDesc(wapp)->client_flags, &application_attr[i].flag);
panel->appChk[i] = WMCreateSwitchButton(panel->appFrm);
WMMoveWidget(panel->appChk[i], 10, 20 * (i + 1));
+3 -3
View File
@@ -565,9 +565,9 @@ static void updateIconImage(WWindow *wwin)
/* Refresh the application icon */
WApplication *app = wApplicationOf(wwin->main_window);
if (app && app->app_icon) {
wIconUpdate(app->app_icon->icon);
wAppIconPaint(app->app_icon);
if (app && wApplicationGetAppIcon(app)) {
wIconUpdate(wApplicationGetAppIcon(app)->icon);
wAppIconPaint(wApplicationGetAppIcon(app));
}
}
+1 -1
View File
@@ -539,7 +539,7 @@ void wWorkspaceForceChange(WScreen * scr, int workspace)
tmp->frame->workspace = workspace;
if (wapp) {
wapp->last_workspace = workspace;
wApplicationSetLastWorkspace(wapp, workspace);
}
if (!foc2 && (tmp->flags.mapped || tmp->flags.shaded)) {
foc2 = tmp;