From b4d1dbe95379e046f3e5b1b179cbfccf31b74dc3 Mon Sep 17 00:00:00 2001 From: Stu Black Date: Sun, 24 Aug 2025 23:41:16 -0400 Subject: [PATCH] Hide WApplication fields in favor of accessors. --- src/actions.c | 66 +++++++++--------- src/appicon.c | 166 +++++++++++++++++++++++----------------------- src/application.c | 118 ++++++++++++++++++++++++++++++++ src/application.h | 57 ++++++++++------ src/balloon.c | 4 +- src/client.c | 22 +++--- src/dock.c | 12 ++-- src/event.c | 14 ++-- src/icon.c | 2 +- src/session.c | 14 ++-- src/superfluous.c | 32 +++++---- src/window.c | 16 ++--- src/winmenu.c | 2 +- src/winspector.c | 38 +++++------ src/wmspec.c | 6 +- src/workspace.c | 2 +- 16 files changed, 353 insertions(+), 218 deletions(-) diff --git a/src/actions.c b/src/actions.c index d013d0a2..bb84919f 100644 --- a/src/actions.c +++ b/src/actions.c @@ -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); } } diff --git a/src/appicon.c b/src/appicon.c index 6d6ddf22..45d4c06f 100644 --- a/src/appicon.c +++ b/src/appicon.c @@ -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)); } } diff --git a/src/application.c b/src/application.c index 6ff3d3fc..464f09d1 100644 --- a/src/application.c +++ b/src/application.c @@ -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) { diff --git a/src/application.h b/src/application.h index 1a959993..cf9d99a8 100644 --- a/src/application.h +++ b/src/application.h @@ -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 *); diff --git a/src/balloon.c b/src/balloon.c index bc47c38a..056d4399 100644 --- a/src/balloon.c +++ b/src/balloon.c @@ -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; } } diff --git a/src/client.c b/src/client.c index 68c82c52..19a38db5 100644 --- a/src/client.c +++ b/src/client.c @@ -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); diff --git a/src/dock.c b/src/dock.c index 45282057..3736bff3 100644 --- a/src/dock.c +++ b/src/dock.c @@ -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); diff --git a/src/event.c b/src/event.c index 67d30098..f7b5570c 100644 --- a/src/event.c +++ b/src/event.c @@ -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); } } diff --git a/src/icon.c b/src/icon.c index 943e2d84..aea60693 100644 --- a/src/icon.c +++ b/src/icon.c @@ -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; diff --git a/src/session.c b/src/session.c index 50c9ec8d..24c88214 100644 --- a/src/session.c +++ b/src/session.c @@ -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); diff --git a/src/superfluous.c b/src/superfluous.c index 4e30542f..a8b9a0be 100644 --- a/src/superfluous.c +++ b/src/superfluous.c @@ -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); } } } diff --git a/src/window.c b/src/window.c index 1f16f458..56949dff 100644 --- a/src/window.c +++ b/src/window.c @@ -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) { diff --git a/src/winmenu.c b/src/winmenu.c index 706378f5..422e0663 100644 --- a/src/winmenu.c +++ b/src/winmenu.c @@ -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))); diff --git a/src/winspector.c b/src/winspector.c index e0d0f6e8..31b9fb59 100644 --- a/src/winspector.c +++ b/src/winspector.c @@ -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)); diff --git a/src/wmspec.c b/src/wmspec.c index e61e6ae7..ba5de29f 100644 --- a/src/wmspec.c +++ b/src/wmspec.c @@ -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)); } } diff --git a/src/workspace.c b/src/workspace.c index 640d481d..400a4330 100644 --- a/src/workspace.c +++ b/src/workspace.c @@ -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;