scroll by one line in textlist
to scroll by only one line, hold CONTROL key and scroll with mouse wheel
This commit is contained in:
@@ -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);
|
|||||||
/* 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,
|
|||||||
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,
|
|||||||
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,
|
|||||||
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;
|
||||||
|
|||||||
Reference in New Issue
Block a user