Skip to content
Snippets Groups Projects
Commit d62de525 authored by Cédric Roux's avatar Cédric Roux
Browse files

scroll by one line in textlist

to scroll by only one line, hold CONTROL key and scroll with
mouse wheel
parent b07efe7a
No related branches found
No related tags found
No related merge requests found
...@@ -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;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment