static void wAppIcon_map(WAppIcon *aicon) { icon_for_wwindow_miniwindow_map(aicon->icon); #ifdef USE_DOCK_XDND wXDNDMakeAwareness(aicon->icon->core->window); #endif AddToStackList(aicon->icon->vscr, aicon->icon->core); }
WAppIcon* wAppIconCreate(WWindow *leader_win) { WAppIcon *aicon; WScreen *scr = leader_win->screen_ptr; aicon = wmalloc(sizeof(WAppIcon)); wretain(aicon); memset(aicon, 0, sizeof(WAppIcon)); aicon->yindex = -1; aicon->xindex = -1; aicon->prev = NULL; aicon->next = scr->app_icon_list; if (scr->app_icon_list) { scr->app_icon_list->prev = aicon; } scr->app_icon_list = aicon; if (leader_win->wm_class) aicon->wm_class = wstrdup(leader_win->wm_class); if (leader_win->wm_instance) aicon->wm_instance = wstrdup(leader_win->wm_instance); aicon->icon = wIconCreate(leader_win); #ifdef DEMATERIALIZE_ICON { XSetWindowAttributes attribs; attribs.save_under = True; XChangeWindowAttributes(dpy, aicon->icon->core->window, CWSaveUnder, &attribs); } #endif #ifdef XDND wXDNDMakeAwareness(aicon->icon->core->window); #endif /* will be overriden if docked */ aicon->icon->core->descriptor.handle_mousedown = appIconMouseDown; aicon->icon->core->descriptor.handle_expose = iconExpose; aicon->icon->core->descriptor.parent_type = WCLASS_APPICON; aicon->icon->core->descriptor.parent = aicon; AddToStackList(aicon->icon->core); aicon->icon->show_title = 0; wIconUpdate(aicon->icon); return aicon; }
void appicon_map(WAppIcon *aicon) { WIcon *icon = aicon->icon; WCoreWindow *wcore = icon->core; virtual_screen *vscr = aicon->icon->vscr; WScreen *scr = aicon->icon->vscr->screen_ptr; wcore_map_toplevel(wcore, vscr, 0, 0, icon->width, icon->height, 0, scr->w_depth, scr->w_visual, scr->w_colormap, scr->white_pixel); map_icon_image(icon); WMAddNotificationObserver(icon_appearanceObserver, aicon->icon, WNIconAppearanceSettingsChanged, icon); WMAddNotificationObserver(icon_tileObserver, aicon->icon, WNIconTileSettingsChanged, icon); #ifdef USE_DOCK_XDND wXDNDMakeAwareness(wcore->window); #endif AddToStackList(vscr, wcore); }
WAppIcon* wAppIconCreateForDock(WScreen *scr, char *command, char *wm_instance, char *wm_class, int tile) { WAppIcon *dicon; char *path; dicon = wmalloc(sizeof(WAppIcon)); wretain(dicon); memset(dicon, 0, sizeof(WAppIcon)); dicon->yindex = -1; dicon->xindex = -1; dicon->prev = NULL; dicon->next = scr->app_icon_list; if (scr->app_icon_list) { scr->app_icon_list->prev = dicon; } scr->app_icon_list = dicon; if (command) { dicon->command = wstrdup(command); } if (wm_class) dicon->wm_class = wstrdup(wm_class); if (wm_instance) dicon->wm_instance = wstrdup(wm_instance); path = wDefaultGetIconFile(scr, wm_instance, wm_class, True); if (!path && command) { wApplicationExtractDirPackIcon(scr, command, wm_instance, wm_class); path = wDefaultGetIconFile(scr, wm_instance, wm_class, False); } if (path) path = FindImage(wPreferences.icon_path, path); dicon->icon = wIconCreateWithIconFile(scr, path, tile); if (path) wfree(path); #ifdef XDND wXDNDMakeAwareness(dicon->icon->core->window); #endif #ifdef DEMATERIALIZE_ICON { XSetWindowAttributes attribs; attribs.save_under = True; XChangeWindowAttributes(dpy, dicon->icon->core->window, CWSaveUnder, &attribs); } #endif /* will be overriden by dock */ dicon->icon->core->descriptor.handle_mousedown = appIconMouseDown; dicon->icon->core->descriptor.handle_expose = iconExpose; dicon->icon->core->descriptor.parent_type = WCLASS_APPICON; dicon->icon->core->descriptor.parent = dicon; AddToStackList(dicon->icon->core); return dicon; }