summaryrefslogtreecommitdiff
path: root/src/screen
diff options
context:
space:
mode:
Diffstat (limited to 'src/screen')
-rw-r--r--src/screen/screen.c18
-rw-r--r--src/screen/screen.h1
2 files changed, 12 insertions, 7 deletions
diff --git a/src/screen/screen.c b/src/screen/screen.c
index f949c1d..aa61ba6 100644
--- a/src/screen/screen.c
+++ b/src/screen/screen.c
@@ -133,15 +133,19 @@ static bool mouse_button_callback(void *userdata, u8 state, u8 button)
static bool scroll_callback(void *userdata, f64 y)
{
struct camu_screen *scr = (struct camu_screen *)userdata;
- struct camu_view *view = get_view_from_mouse_pos(scr);
- if (view) {
- if (scr->flags & CAMU_SCREEN_ZOOM_PAN_SIMPLE) {
- y = -y / SCROLL_MULTIPLIER;
- if (camu_view_zoom_simple(view, scr->width, scr->height, scr->last_mouse_x, scr->last_mouse_y, y)) {
- view->mode = CAMU_VIEW_DETACHED;
- return true;
+ y = -y / SCROLL_MULTIPLIER;
+ if (!(scr->flags & CAMU_SCREEN_MODIFIER)) {
+ struct camu_view *view = get_view_from_mouse_pos(scr);
+ if (view) {
+ if (scr->flags & CAMU_SCREEN_ZOOM_PAN_SIMPLE) {
+ if (camu_view_zoom_simple(view, scr->width, scr->height, scr->last_mouse_x, scr->last_mouse_y, y)) {
+ view->mode = CAMU_VIEW_DETACHED;
+ return true;
+ }
}
}
+ } else {
+ scr->callback(scr->userdata, CAMU_SCREEN_VOLUME, &y);
}
return false;
}
diff --git a/src/screen/screen.h b/src/screen/screen.h
index a10796a..0c56cf9 100644
--- a/src/screen/screen.h
+++ b/src/screen/screen.h
@@ -34,6 +34,7 @@ enum {
CAMU_SCREEN_TOGGLE_PAUSE,
CAMU_SCREEN_SEEK,
CAMU_SCREEN_RESEEK,
+ CAMU_SCREEN_VOLUME,
CAMU_SCREEN_CLOSE
};