mirror of
https://github.com/gryf/wmaker.git
synced 2025-12-21 05:18:06 +01:00
New function create_default_icon
The function create_default_icon sets the panel's default icon. This is interesting to have a "cache" icon and don't search the default icon more than one time if the icons don't have icon associated. The code of create_default_icon was included in the addIconForWindow() function, this patch only moves it to get a better (clear) code.
This commit is contained in:
committed by
Carlos R. Mafra
parent
6d08aa22d8
commit
829830c010
@@ -162,6 +162,27 @@ static RImage *scaleDownIfNeeded(RImage *image)
|
|||||||
return image;
|
return image;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* This function sets the default icon (defIcon) in the switchpanel */
|
||||||
|
static void create_default_icon(WSwitchPanel *panel)
|
||||||
|
{
|
||||||
|
RImage *image = NULL;
|
||||||
|
char *path = NULL;
|
||||||
|
char *file = wDefaultGetIconFile(NULL, NULL, False);
|
||||||
|
|
||||||
|
if (file) {
|
||||||
|
path = FindImage(wPreferences.icon_path, file);
|
||||||
|
if (path) {
|
||||||
|
image = RLoadImage(panel->scr->rcontext, path, 0);
|
||||||
|
wfree(path);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (image)
|
||||||
|
panel->defIcon = scaleDownIfNeeded(image);
|
||||||
|
|
||||||
|
image = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
static void addIconForWindow(WSwitchPanel *panel, WMWidget *parent, WWindow *wwin, int x, int y)
|
static void addIconForWindow(WSwitchPanel *panel, WMWidget *parent, WWindow *wwin, int x, int y)
|
||||||
{
|
{
|
||||||
WMFrame *icon = WMCreateFrame(parent);
|
WMFrame *icon = WMCreateFrame(parent);
|
||||||
@@ -174,27 +195,14 @@ static void addIconForWindow(WSwitchPanel *panel, WMWidget *parent, WWindow *wwi
|
|||||||
if (!WFLAGP(wwin, always_user_icon) && wwin->net_icon_image)
|
if (!WFLAGP(wwin, always_user_icon) && wwin->net_icon_image)
|
||||||
image = RRetainImage(wwin->net_icon_image);
|
image = RRetainImage(wwin->net_icon_image);
|
||||||
|
|
||||||
// Make this use a caching thing. When there are many windows,
|
|
||||||
// it's very likely that most of them are instances of the same thing,
|
|
||||||
// so caching them should get performance acceptable in these cases.
|
|
||||||
if (!image)
|
if (!image)
|
||||||
image = wDefaultGetImage(panel->scr, wwin->wm_instance, wwin->wm_class, ICON_TILE_SIZE);
|
image = wDefaultGetImage(panel->scr, wwin->wm_instance, wwin->wm_class, ICON_TILE_SIZE);
|
||||||
|
|
||||||
if (!image && !panel->defIcon) {
|
// Make this use a caching thing. When there are many windows,
|
||||||
char *file = wDefaultGetIconFile(NULL, NULL, False);
|
// it's very likely that most of them are instances of the same thing,
|
||||||
if (file) {
|
// so caching them should get performance acceptable in these cases.
|
||||||
char *path = FindImage(wPreferences.icon_path, file);
|
if (!image && !panel->defIcon)
|
||||||
if (path) {
|
create_default_icon(panel);
|
||||||
image = RLoadImage(panel->scr->rcontext, path, 0);
|
|
||||||
wfree(path);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (image)
|
|
||||||
panel->defIcon = scaleDownIfNeeded(image);
|
|
||||||
|
|
||||||
image = NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!image && panel->defIcon)
|
if (!image && panel->defIcon)
|
||||||
image = RRetainImage(panel->defIcon);
|
image = RRetainImage(panel->defIcon);
|
||||||
|
|||||||
Reference in New Issue
Block a user