Allow clicking and mousewheeling on the battery panel
This commit is the same as vimishor's original [*] except that I have
added middle-click and up/down mousewheel actions. In order to fix a
ftbs I also added guards to panel.c, panel.h & tint.c
The following configuration settings have been created :-
battery_lclick_command
battery_mclick_command
battery_rclick_command
battery_uwheel_command
battery_dwheel_command
[*] c78732c46a
This commit is contained in:
parent
e84d963ab6
commit
fd78e6d886
6 changed files with 124 additions and 0 deletions
|
@ -56,6 +56,11 @@ static char buf_bat_time[20];
|
|||
int8_t battery_low_status;
|
||||
unsigned char battery_low_cmd_sent;
|
||||
char *battery_low_cmd;
|
||||
char *battery_lclick_command;
|
||||
char *battery_mclick_command;
|
||||
char *battery_rclick_command;
|
||||
char *battery_uwheel_command;
|
||||
char *battery_dwheel_command;
|
||||
gchar *path_energy_now;
|
||||
gchar *path_energy_full;
|
||||
gchar *path_current_now;
|
||||
|
@ -141,6 +146,11 @@ void default_battery()
|
|||
bat1_font_desc = NULL;
|
||||
bat2_font_desc = NULL;
|
||||
battery_low_cmd = NULL;
|
||||
battery_lclick_command = NULL;
|
||||
battery_mclick_command = NULL;
|
||||
battery_rclick_command = NULL;
|
||||
battery_uwheel_command = NULL;
|
||||
battery_dwheel_command = NULL;
|
||||
path_energy_now = NULL;
|
||||
path_energy_full = NULL;
|
||||
path_current_now = NULL;
|
||||
|
@ -171,6 +181,16 @@ void cleanup_battery()
|
|||
path_status = NULL;
|
||||
free(battery_low_cmd);
|
||||
battery_low_cmd = NULL;
|
||||
free(battery_lclick_command);
|
||||
battery_lclick_command = NULL;
|
||||
free(battery_mclick_command);
|
||||
battery_mclick_command = NULL;
|
||||
free(battery_rclick_command);
|
||||
battery_rclick_command = NULL;
|
||||
free(battery_uwheel_command);
|
||||
battery_uwheel_command = NULL;
|
||||
free(battery_dwheel_command);
|
||||
battery_dwheel_command = NULL;
|
||||
stop_timeout(battery_timeout);
|
||||
battery_timeout = NULL;
|
||||
battery_found = 0;
|
||||
|
@ -574,3 +594,26 @@ int resize_battery(void *obj)
|
|||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
void battery_action(int button)
|
||||
{
|
||||
char *command = 0;
|
||||
switch (button) {
|
||||
case 1:
|
||||
command = battery_lclick_command;
|
||||
break;
|
||||
case 2:
|
||||
command = battery_mclick_command;
|
||||
break;
|
||||
case 3:
|
||||
command = battery_rclick_command;
|
||||
break;
|
||||
case 4:
|
||||
command = battery_uwheel_command;
|
||||
break;
|
||||
case 5:
|
||||
command = battery_dwheel_command;
|
||||
break;
|
||||
}
|
||||
tint_exec(command);
|
||||
}
|
|
@ -56,6 +56,12 @@ extern int percentage_hide;
|
|||
extern int8_t battery_low_status;
|
||||
extern char *battery_low_cmd;
|
||||
|
||||
extern char *battery_lclick_command;
|
||||
extern char *battery_mclick_command;
|
||||
extern char *battery_rclick_command;
|
||||
extern char *battery_uwheel_command;
|
||||
extern char *battery_dwheel_command;
|
||||
|
||||
// default global data
|
||||
void default_battery();
|
||||
|
||||
|
@ -71,4 +77,6 @@ void draw_battery(void *obj, cairo_t *c);
|
|||
|
||||
int resize_battery(void *obj);
|
||||
|
||||
void battery_action(int button);
|
||||
|
||||
#endif
|
||||
|
|
30
src/config.c
30
src/config.c
|
@ -349,6 +349,36 @@ void add_entry (char *key, char *value)
|
|||
battery_low_status = atoi(value);
|
||||
if(battery_low_status < 0 || battery_low_status > 100)
|
||||
battery_low_status = 0;
|
||||
#endif
|
||||
}
|
||||
else if (strcmp(key, "battery_lclick_command") == 0) {
|
||||
#ifdef ENABLE_BATTERY
|
||||
if (strlen(value) > 0)
|
||||
battery_lclick_command = strdup(value);
|
||||
#endif
|
||||
}
|
||||
else if (strcmp(key, "battery_mclick_command") == 0) {
|
||||
#ifdef ENABLE_BATTERY
|
||||
if (strlen(value) > 0)
|
||||
battery_mclick_command = strdup(value);
|
||||
#endif
|
||||
}
|
||||
else if (strcmp(key, "battery_rclick_command") == 0) {
|
||||
#ifdef ENABLE_BATTERY
|
||||
if (strlen(value) > 0)
|
||||
battery_rclick_command = strdup(value);
|
||||
#endif
|
||||
}
|
||||
else if (strcmp(key, "battery_uwheel_command") == 0) {
|
||||
#ifdef ENABLE_BATTERY
|
||||
if (strlen(value) > 0)
|
||||
battery_uwheel_command = strdup(value);
|
||||
#endif
|
||||
}
|
||||
else if (strcmp(key, "battery_dwheel_command") == 0) {
|
||||
#ifdef ENABLE_BATTERY
|
||||
if (strlen(value) > 0)
|
||||
battery_dwheel_command = strdup(value);
|
||||
#endif
|
||||
}
|
||||
else if (strcmp (key, "battery_low_cmd") == 0) {
|
||||
|
|
16
src/panel.c
16
src/panel.c
|
@ -796,6 +796,22 @@ int click_clock(Panel *panel, int x, int y)
|
|||
}
|
||||
|
||||
|
||||
#ifdef ENABLE_BATTERY
|
||||
int click_battery(Panel *panel, int x, int y)
|
||||
{
|
||||
Battery bat = panel->battery;
|
||||
if (panel_horizontal) {
|
||||
if (bat.area.on_screen && x >= bat.area.posx && x <= (bat.area.posx + bat.area.width))
|
||||
return TRUE;
|
||||
} else {
|
||||
if (bat.area.on_screen && y >= bat.area.posy && y <= (bat.area.posy + bat.area.height))
|
||||
return TRUE;
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
Area* click_area(Panel *panel, int x, int y)
|
||||
{
|
||||
Area* result = &panel->area;
|
||||
|
|
|
@ -160,6 +160,11 @@ Launcher *click_launcher (Panel *panel, int x, int y);
|
|||
LauncherIcon *click_launcher_icon (Panel *panel, int x, int y);
|
||||
int click_padding(Panel *panel, int x, int y);
|
||||
int click_clock(Panel *panel, int x, int y);
|
||||
|
||||
#ifdef ENABLE_BATTERY
|
||||
int click_battery(Panel *panel, int x, int y);
|
||||
#endif
|
||||
|
||||
Area* click_area(Panel *panel, int x, int y);
|
||||
|
||||
void autohide_show(void* p);
|
||||
|
|
22
src/tint.c
22
src/tint.c
|
@ -456,6 +456,18 @@ int tint2_handles_click(Panel* panel, XButtonEvent* e)
|
|||
else
|
||||
return 0;
|
||||
}
|
||||
#ifdef ENABLE_BATTERY
|
||||
if (click_battery(panel, e->x, e->y)) {
|
||||
if ( (e->button == 1 && battery_lclick_command) ||
|
||||
(e->button == 2 && battery_mclick_command) ||
|
||||
(e->button == 3 && battery_rclick_command) ||
|
||||
(e->button == 4 && battery_uwheel_command) ||
|
||||
(e->button == 5 && battery_dwheel_command) )
|
||||
return 1;
|
||||
else
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -603,6 +615,16 @@ void event_button_release (XEvent *e)
|
|||
return;
|
||||
}
|
||||
|
||||
#ifdef ENABLE_BATTERY
|
||||
if (click_battery(panel, e->xbutton.x, e->xbutton.y)) {
|
||||
battery_action(e->xbutton.button);
|
||||
if (panel_layer == BOTTOM_LAYER)
|
||||
XLowerWindow (server.dsp, panel->main_win);
|
||||
task_drag = 0;
|
||||
return;
|
||||
}
|
||||
#endif
|
||||
|
||||
if (e->xbutton.button == 1 && click_launcher(panel, e->xbutton.x, e->xbutton.y)) {
|
||||
LauncherIcon *icon = click_launcher_icon(panel, e->xbutton.x, e->xbutton.y);
|
||||
if (icon) {
|
||||
|
|
Loading…
Reference in a new issue