Commit d62de525 authored by Cedric Roux's avatar Cedric Roux

scroll by one line in textlist

to scroll by only one line, hold CONTROL key and scroll with
mouse wheel
parent b07efe7a
...@@ -34,11 +34,14 @@ static void scroll(void *private, gui *g, ...@@ -34,11 +34,14 @@ static void scroll(void *private, gui *g,
int number_of_lines; int number_of_lines;
int new_line; int new_line;
int inc; int inc;
int *d = notification_data;
int key_modifiers = *d;
textlist_state(g, w, &visible_lines, &start_line, &number_of_lines); textlist_state(g, w, &visible_lines, &start_line, &number_of_lines);
inc = 10; inc = 10;
if (inc > visible_lines - 2) inc = visible_lines - 2; if (inc > visible_lines - 2) inc = visible_lines - 2;
if (inc < 1) inc = 1; if (inc < 1) inc = 1;
if (key_modifiers & KEY_CONTROL) inc = 1;
if (!strcmp(notification, "scrollup")) inc = -inc; if (!strcmp(notification, "scrollup")) inc = -inc;
new_line = start_line + inc; new_line = start_line + inc;
......
...@@ -83,8 +83,8 @@ int new_color(gui *gui, char *color); ...@@ -83,8 +83,8 @@ int new_color(gui *gui, char *color);
/* notifications */ /* notifications */
/* known notifications: /* known notifications:
* - textlist: * - textlist:
* - scrollup { void *: NULL } * - scrollup { int: key_modifiers }
* - scrolldown { void *: NULL } * - scrolldown { int: key_modifiers }
* - click { int [2]: line, button } * - click { int [2]: line, button }
* - label: * - label:
* - click { int: button } (if enabled) * - click { int: button } (if enabled)
......
...@@ -54,11 +54,11 @@ static void button(gui *_g, widget *_this, int x, int y, ...@@ -54,11 +54,11 @@ static void button(gui *_g, widget *_this, int x, int y,
x -= this->common.x; x -= this->common.x;
/* scroll up */ /* scroll up */
if (button == 4 && up == 0) { if (button == 4 && up == 0) {
gui_notify(g, "scrollup", _this, NULL); gui_notify(g, "scrollup", _this, &key_modifiers);
} }
/* scroll down */ /* scroll down */
if (button == 5 && up == 0) { if (button == 5 && up == 0) {
gui_notify(g, "scrolldown", _this, NULL); gui_notify(g, "scrolldown", _this, &key_modifiers);
} }
/* button 1/2/3 click */ /* button 1/2/3 click */
if (button >= 1 && button <= 3 && up == 0) { if (button >= 1 && button <= 3 && up == 0) {
......
...@@ -89,6 +89,8 @@ static void scroll(void *private, gui *g, ...@@ -89,6 +89,8 @@ static void scroll(void *private, gui *g,
int number_of_lines; int number_of_lines;
int new_line; int new_line;
int inc; int inc;
int *d = notification_data;
int key_modifiers = *d;
if (pthread_mutex_lock(&this->lock)) abort(); if (pthread_mutex_lock(&this->lock)) abort();
...@@ -96,6 +98,7 @@ static void scroll(void *private, gui *g, ...@@ -96,6 +98,7 @@ static void scroll(void *private, gui *g,
inc = 10; inc = 10;
if (inc > visible_lines - 2) inc = visible_lines - 2; if (inc > visible_lines - 2) inc = visible_lines - 2;
if (inc < 1) inc = 1; if (inc < 1) inc = 1;
if (key_modifiers & KEY_CONTROL) inc = 1;
if (!strcmp(notification, "scrollup")) inc = -inc; if (!strcmp(notification, "scrollup")) inc = -inc;
new_line = start_line + inc; new_line = start_line + inc;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment