forked from vitrine/wmaker
Hide WApplication fields in favor of accessors.
This commit is contained in:
+33
-33
@@ -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
@@ -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));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user