exposable: add ‘btn’ argument to on_mouse()

This commit is contained in:
Daniel Eklöf 2021-06-21 21:00:07 +02:00
parent 8f7ef7c20b
commit dd724d1bc2
No known key found for this signature in database
GPG key ID: 5BBD4992C116573F
11 changed files with 69 additions and 38 deletions

View file

@ -67,13 +67,13 @@ dynlist_expose(const struct exposable *exposable, pixman_image_t *pix, int x, in
static void
on_mouse(struct exposable *exposable, struct bar *bar,
enum mouse_event event, int x, int y)
enum mouse_event event, enum mouse_button btn, int x, int y)
{
//const struct particle *p = exposable->particle;
const struct private *e = exposable->private;
if (exposable->on_click != NULL) {
exposable_default_on_mouse(exposable, bar, event, x, y);
exposable_default_on_mouse(exposable, bar, event, btn, x, y);
return;
}
@ -82,7 +82,7 @@ on_mouse(struct exposable *exposable, struct bar *bar,
if (x >= px && x < px + e->exposables[i]->width) {
if (e->exposables[i]->on_mouse != NULL) {
e->exposables[i]->on_mouse(
e->exposables[i], bar, event, x - px, y);
e->exposables[i], bar, event, btn, x - px, y);
}
return;
}
@ -91,7 +91,7 @@ on_mouse(struct exposable *exposable, struct bar *bar,
}
LOG_DBG("on_mouse missed all sub-particles");
exposable_default_on_mouse(exposable, bar, event, x, y);
exposable_default_on_mouse(exposable, bar, event, btn, x, y);
}
struct exposable *

View file

@ -75,14 +75,14 @@ expose(const struct exposable *exposable, pixman_image_t *pix, int x, int y, int
static void
on_mouse(struct exposable *exposable, struct bar *bar,
enum mouse_event event, int x, int y)
enum mouse_event event, enum mouse_button btn, int x, int y)
{
const struct particle *p = exposable->particle;
const struct eprivate *e = exposable->private;
if (exposable->on_click != NULL) {
/* We have our own handler */
exposable_default_on_mouse(exposable, bar, event, x, y);
exposable_default_on_mouse(exposable, bar, event, btn, x, y);
return;
}
@ -91,7 +91,7 @@ on_mouse(struct exposable *exposable, struct bar *bar,
if (x >= px && x < px + e->exposables[i]->width) {
if (e->exposables[i]->on_mouse != NULL) {
e->exposables[i]->on_mouse(
e->exposables[i], bar, event, x - px, y);
e->exposables[i], bar, event, btn, x - px, y);
}
return;
}
@ -100,7 +100,7 @@ on_mouse(struct exposable *exposable, struct bar *bar,
}
/* We're between sub-particles (or in the left/right margin) */
exposable_default_on_mouse(exposable, bar, event, x, y);
exposable_default_on_mouse(exposable, bar, event, btn, x, y);
}
static struct exposable *

View file

@ -61,26 +61,26 @@ expose(const struct exposable *exposable, pixman_image_t *pix, int x, int y, int
static void
on_mouse(struct exposable *exposable, struct bar *bar, enum mouse_event event,
int x, int y)
enum mouse_button btn, int x, int y)
{
const struct particle *p = exposable->particle;
const struct eprivate *e = exposable->private;
if (exposable->on_click != NULL) {
/* We have our own handler */
exposable_default_on_mouse(exposable, bar, event, x, y);
exposable_default_on_mouse(exposable, bar, event, btn, x, y);
return;
}
int px = p->left_margin;
if (x >= px && x < px + e->exposable->width) {
if (e->exposable->on_mouse != NULL)
e->exposable->on_mouse(e->exposable, bar, event, x - px, y);
e->exposable->on_mouse(e->exposable, bar, event, btn, x - px, y);
return;
}
/* In the left- or right margin */
exposable_default_on_mouse(exposable, bar, event, x, y);
exposable_default_on_mouse(exposable, bar, event, btn, x, y);
}
static struct exposable *

View file

@ -85,10 +85,10 @@ expose(const struct exposable *exposable, pixman_image_t *pix, int x, int y, int
static void
on_mouse(struct exposable *exposable, struct bar *bar, enum mouse_event event,
int x, int y)
enum mouse_button btn, int x, int y)
{
if (exposable->on_click == NULL) {
exposable_default_on_mouse(exposable, bar, event, x, y);
exposable_default_on_mouse(exposable, bar, event, btn, x, y);
return;
}
@ -120,7 +120,7 @@ on_mouse(struct exposable *exposable, struct bar *bar, enum mouse_event event,
/* Mouse is over the start-marker */
struct exposable *start = e->exposables[0];
if (start->on_mouse != NULL)
start->on_mouse(start, bar, event, x - p->left_margin, y);
start->on_mouse(start, bar, event, btn, x - p->left_margin, y);
} else {
/* Mouse if over left margin */
bar->set_cursor(bar, "left_ptr");
@ -139,7 +139,7 @@ on_mouse(struct exposable *exposable, struct bar *bar, enum mouse_event event,
/* Mouse is over the end-marker */
struct exposable *end = e->exposables[e->count - 1];
if (end->on_mouse != NULL)
end->on_mouse(end, bar, event, x - x_offset - clickable_width, y);
end->on_mouse(end, bar, event, btn, x - x_offset - clickable_width, y);
} else {
/* Mouse is over the right margin */
bar->set_cursor(bar, "left_ptr");
@ -165,7 +165,7 @@ on_mouse(struct exposable *exposable, struct bar *bar, enum mouse_event event,
}
/* Call default implementation, which will execute our handler */
exposable_default_on_mouse(exposable, bar, event, x, y);
exposable_default_on_mouse(exposable, bar, event, btn, x, y);
if (event == ON_MOUSE_CLICK) {
/* Reset handler string */

View file

@ -57,26 +57,26 @@ expose(const struct exposable *exposable, pixman_image_t *pix, int x, int y, int
static void
on_mouse(struct exposable *exposable, struct bar *bar, enum mouse_event event,
int x, int y)
enum mouse_button btn, int x, int y)
{
const struct particle *p = exposable->particle;
const struct eprivate *e = exposable->private;
if (exposable->on_click != NULL) {
/* We have our own handler */
exposable_default_on_mouse(exposable, bar, event, x, y);
exposable_default_on_mouse(exposable, bar, event, btn, x, y);
return;
}
int px = p->left_margin;
if (x >= px && x < px + e->exposable->width) {
if (e->exposable->on_mouse != NULL)
e->exposable->on_mouse(e->exposable, bar, event, x - px, y);
e->exposable->on_mouse(e->exposable, bar, event, btn, x - px, y);
return;
}
/* In the left- or right margin */
exposable_default_on_mouse(exposable, bar, event, x, y);
exposable_default_on_mouse(exposable, bar, event, btn, x, y);
}
static void