Mouse effects: tint icons

This commit is contained in:
o9000
2015-11-04 13:02:12 +01:00
parent 1b554ebc1e
commit 68d3799c47
6 changed files with 82 additions and 4 deletions

View File

@@ -153,6 +153,8 @@ void cleanup_launcher_theme(Launcher *launcher)
LauncherIcon *launcherIcon = (LauncherIcon*)l->data;
if (launcherIcon) {
free_icon(launcherIcon->image);
free_icon(launcherIcon->image_hover);
free_icon(launcherIcon->image_pressed);
free(launcherIcon->icon_name);
free(launcherIcon->icon_path);
free(launcherIcon->cmd);
@@ -197,12 +199,16 @@ int resize_launcher(void *obj)
if (!new_icon_path) {
// Draw a blank icon
free_icon(launcherIcon->image);
free_icon(launcherIcon->image_hover);
free_icon(launcherIcon->image_pressed);
launcherIcon->image = NULL;
continue;
}
// Free the old files
free_icon(launcherIcon->image);
free_icon(launcherIcon->image_hover);
free_icon(launcherIcon->image_pressed);
// Load the new file
launcherIcon->image = load_image(new_icon_path, 1);
// On loading error, fallback to default
@@ -226,6 +232,11 @@ int resize_launcher(void *obj)
fprintf(stderr, "launcher.c %d: Using icon %s\n", __LINE__, launcherIcon->icon_path);
}
}
if (panel_config.mouse_effects) {
launcherIcon->image_hover = adjust_icon(launcherIcon->image, 100, 0, 10);
launcherIcon->image_pressed = adjust_icon(launcherIcon->image, 100, 0, -10);
}
}
count = g_slist_length(launcher->list_icons);
@@ -322,8 +333,19 @@ void draw_launcher_icon(void *obj, cairo_t *c)
{
LauncherIcon *launcherIcon = (LauncherIcon*)obj;
Imlib_Image image;
// Render
imlib_context_set_image(launcherIcon->image);
if (panel_config.mouse_effects) {
if (launcherIcon->area.mouse_state == MOUSE_OVER)
image = launcherIcon->image_hover ? launcherIcon->image_hover : launcherIcon->image;
else if (launcherIcon->area.mouse_state == MOUSE_DOWN)
image = launcherIcon->image_pressed ? launcherIcon->image_pressed : launcherIcon->image;
else
image = launcherIcon->image;
} else {
image = launcherIcon->image;
}
imlib_context_set_image(image);
render_image(launcherIcon->area.pix, 0, 0);
}

View File

@@ -24,6 +24,8 @@ typedef struct LauncherIcon {
// always start with area
Area area;
Imlib_Image image;
Imlib_Image image_hover;
Imlib_Image image_pressed;
char *cmd;
char *icon_name;
char *icon_path;