Remove ClickSelItem
This commit removes ClickSelItem. It doesn't make very much sense to keep a separate click for the click and output functionality.
This commit is contained in:
parent
4bd225b32f
commit
4e716ee80c
|
@ -849,9 +849,7 @@ spmenu supports mouse clicks. The following parts can be clicked on:
|
|||
- `ClickRArrow`
|
||||
- Clicking on the right arrow
|
||||
- `ClickItem`
|
||||
- Clicking on the item area
|
||||
- `ClickSelItem`
|
||||
- Clicking on an item, function here doesn't matter, it will always be selected
|
||||
- Clicking on an item
|
||||
- `ClickImage`
|
||||
- Clicking on an image
|
||||
- `ClickNumber`
|
||||
|
@ -883,7 +881,7 @@ These are the default mouse binds. Mode does not apply for mouse binds.
|
|||
| ClickPrompt | Left Click | clear | 0 |
|
||||
| ClickMode | Left Click | switchmode | 0 |
|
||||
| ClickNumber | Left Click | viewhist | 0 |
|
||||
| ClickSelItem | Left Click | Outputs the item | 0 |
|
||||
| ClickItem | Left Click | selecthover | 0 |
|
||||
| None | Scroll Up | moveprev | 0 |
|
||||
| None | Scroll Down | movenext | 0 |
|
||||
|
||||
|
@ -1021,6 +1019,8 @@ bind:
|
|||
- Open profile menu if available
|
||||
- `switchmode`
|
||||
- Switch between Normal mode and Insert mode
|
||||
- `selecthover`
|
||||
- Output the item clicked on
|
||||
- `screenshot`
|
||||
- Take a screenshot of spmenu
|
||||
|
||||
|
|
|
@ -606,6 +606,11 @@ void switchmode(Arg *arg) {
|
|||
drawmenu();
|
||||
}
|
||||
|
||||
void selecthover(Arg *arg) {
|
||||
puts(items[sp.clickitemindex].text);
|
||||
exit(0);
|
||||
}
|
||||
|
||||
void screenshot(Arg *arg) {
|
||||
char *file = NULL;
|
||||
char *home = NULL;
|
||||
|
|
|
@ -73,3 +73,6 @@ static void togglemode(Arg *arg);
|
|||
static void togglehighlight(Arg *arg);
|
||||
static void toggleregex(Arg *arg);
|
||||
static void toggleimg(Arg *arg);
|
||||
|
||||
/* hover */
|
||||
static void selecthover(Arg *arg);
|
||||
|
|
|
@ -394,6 +394,7 @@ static FuncList fl[] = {
|
|||
{ "setprofile", setprofile },
|
||||
{ "setlineheight", setlineheight },
|
||||
{ "switchmode", switchmode },
|
||||
{ "selecthover", selecthover },
|
||||
{ "spawn", spawn },
|
||||
};
|
||||
|
||||
|
@ -687,7 +688,6 @@ static ClickType ctp[] = {
|
|||
{ "ClickInput", ClickInput },
|
||||
{ "ClickLArrow", ClickLArrow },
|
||||
{ "ClickItem", ClickItem },
|
||||
{ "ClickSelItem", ClickSelItem },
|
||||
{ "ClickRArrow", ClickRArrow },
|
||||
{ "ClickNumber", ClickNumber },
|
||||
{ "ClickCaps", ClickCaps },
|
||||
|
|
|
@ -9,7 +9,7 @@ static Mouse buttons[] = {
|
|||
{ ClickPrompt, Button1, clear, {0} },
|
||||
{ ClickMode, Button1, switchmode, {0} },
|
||||
{ ClickNumber, Button1, viewhist, {0} },
|
||||
{ ClickSelItem, Button1, NULL, {0} },
|
||||
{ ClickItem, Button1, selecthover, {0} },
|
||||
{ ClickNone, Button5, movenext, {0} },
|
||||
{ ClickNone, Button4, moveprev, {0} },
|
||||
};
|
||||
|
@ -22,7 +22,7 @@ static WlMouse wl_buttons[] = {
|
|||
{ ClickPrompt, WL_Left, clear, {0} },
|
||||
{ ClickMode, WL_Left, switchmode, {0} },
|
||||
{ ClickNumber, WL_Left, viewhist, {0} },
|
||||
{ ClickSelItem, WL_Left, NULL, {0} },
|
||||
{ ClickItem, WL_Left, selecthover, {0} },
|
||||
{ ClickNone, WL_Down, movenext, {0} },
|
||||
{ ClickNone, WL_Up, moveprev, {0} },
|
||||
};
|
||||
|
|
|
@ -289,6 +289,8 @@ void buttonpress_wl(uint32_t button, double ex, double ey) {
|
|||
ey += h;
|
||||
}
|
||||
|
||||
i = 0;
|
||||
|
||||
for (item = currentitem; item != nextitem; item = item->right) {
|
||||
if (item_num++ == lines) {
|
||||
item_num = 1;
|
||||
|
@ -298,31 +300,16 @@ void buttonpress_wl(uint32_t button, double ex, double ey) {
|
|||
|
||||
y += h;
|
||||
|
||||
// ClickSelItem, called function doesn't matter
|
||||
if (ey >= y && ey <= (y + h) && ex >= x + (powerlineitems ? sp.plw : 0) && ex <= (x + w / columns) + (powerlineitems ? sp.plw : 0)) {
|
||||
for (i = 0; i < LENGTH(wl_buttons); i++) {
|
||||
if (sp.ignoreglobalmouse) break;
|
||||
if (wl_buttons[i].click == ClickSelItem && wl_buttons[i].button == button) {
|
||||
puts(item->text);
|
||||
exit(0);
|
||||
} else if (wl_buttons[i].click == ClickItem) {
|
||||
click = ClickItem;
|
||||
}
|
||||
}
|
||||
for (i = 0; i < LENGTH(wl_cbuttons); i++) {
|
||||
if (sp.ignoreconfmouse) break;
|
||||
if (wl_cbuttons[i].click == ClickSelItem && wl_cbuttons[i].button == button) {
|
||||
puts(item->text);
|
||||
exit(0);
|
||||
} else if (wl_cbuttons[i].click == ClickItem) {
|
||||
click = ClickItem;
|
||||
}
|
||||
}
|
||||
sp.clickitemindex = i;
|
||||
click = ClickItem;
|
||||
#if USEIMAGE
|
||||
} else if (ey >= y && ey <= (y + h) && ex >= x + (powerlineitems ? sp.plw : 0) - MAX((img.imagegaps * 2) + img.imagewidth, indentitems ? sp.promptw : 0) && ex <= (x - MAX((img.imagegaps * 2) + img.imagewidth, indentitems ? sp.promptw : 0) + w / columns) + (powerlineitems ? sp.plw : 0)) {
|
||||
click = ClickImage;
|
||||
#endif
|
||||
}
|
||||
|
||||
i++;
|
||||
}
|
||||
} else if (matches) { // a single line, meaning it could be arrows too, so we check that here
|
||||
x += sp.inputw;
|
||||
|
|
|
@ -73,6 +73,8 @@ void buttonpress_x11(XEvent *e) {
|
|||
ev->y += h;
|
||||
}
|
||||
|
||||
i = 0;
|
||||
|
||||
for (item = currentitem; item != nextitem; item = item->right) {
|
||||
if (item_num++ == lines) {
|
||||
item_num = 1;
|
||||
|
@ -84,29 +86,15 @@ void buttonpress_x11(XEvent *e) {
|
|||
|
||||
// ClickSelItem, called function doesn't matter
|
||||
if (ev->y >= y && ev->y <= (y + h) && ev->x >= x + (powerlineitems ? sp.plw : 0) && ev->x <= (x + w / columns) + (powerlineitems ? sp.plw : 0)) {
|
||||
for (i = 0; i < LENGTH(buttons); i++) {
|
||||
if (sp.ignoreglobalmouse) break;
|
||||
if (buttons[i].click == ClickSelItem && buttons[i].button == ev->button) {
|
||||
puts(item->text);
|
||||
exit(0);
|
||||
} else if (buttons[i].click == ClickItem) {
|
||||
click = ClickItem;
|
||||
}
|
||||
}
|
||||
for (i = 0; i < LENGTH(cbuttons); i++) {
|
||||
if (sp.ignoreconfmouse) break;
|
||||
if (cbuttons[i].click == ClickSelItem && cbuttons[i].button == ev->button) {
|
||||
puts(item->text);
|
||||
exit(0);
|
||||
} else if (cbuttons[i].click == ClickItem) {
|
||||
click = ClickItem;
|
||||
}
|
||||
}
|
||||
click = ClickItem;
|
||||
sp.clickitemindex = i;
|
||||
#if USEIMAGE
|
||||
} else if (ev->y >= y && ev->y <= (y + h) && ev->x >= x + (powerlineitems ? sp.plw : 0) - MAX((img.imagegaps * 2) + img.imagewidth, indentitems ? sp.promptw : 0) && ev->x <= (x - MAX((img.imagegaps * 2) + img.imagewidth, indentitems ? sp.promptw : 0) + w / columns) + (powerlineitems ? sp.plw : 0)) {
|
||||
click = ClickImage;
|
||||
#endif
|
||||
}
|
||||
|
||||
i++;
|
||||
}
|
||||
} else if (matches) { // a single line, meaning it could be arrows too, so we check that here
|
||||
x += sp.inputw;
|
||||
|
|
25
spmenu.1
25
spmenu.1
|
@ -1407,14 +1407,7 @@ Clicking on the right arrow
|
|||
\f[V]ClickItem\f[R]
|
||||
.RS 2
|
||||
.IP \[bu] 2
|
||||
Clicking on the item area
|
||||
.RE
|
||||
.IP \[bu] 2
|
||||
\f[V]ClickSelItem\f[R]
|
||||
.RS 2
|
||||
.IP \[bu] 2
|
||||
Clicking on an item, function here doesn\[cq]t matter, it will always be
|
||||
selected
|
||||
Clicking on an item
|
||||
.RE
|
||||
.IP \[bu] 2
|
||||
\f[V]ClickImage\f[R]
|
||||
|
@ -1512,11 +1505,11 @@ T}@T{
|
|||
0
|
||||
T}
|
||||
T{
|
||||
ClickSelItem
|
||||
ClickItem
|
||||
T}@T{
|
||||
Left Click
|
||||
T}@T{
|
||||
Outputs the item
|
||||
selecthover
|
||||
T}@T{
|
||||
0
|
||||
T}
|
||||
|
@ -1844,6 +1837,12 @@ Set lines to passed argument
|
|||
Set columns to passed argument
|
||||
.RE
|
||||
.IP \[bu] 2
|
||||
\f[V]setlineheight\f[R]
|
||||
.RS 2
|
||||
.IP \[bu] 2
|
||||
Set line height to passed argument
|
||||
.RE
|
||||
.IP \[bu] 2
|
||||
\f[V]setprofile\f[R]
|
||||
.RS 2
|
||||
.IP \[bu] 2
|
||||
|
@ -1856,6 +1855,12 @@ Open profile menu if available
|
|||
Switch between Normal mode and Insert mode
|
||||
.RE
|
||||
.IP \[bu] 2
|
||||
\f[V]selecthover\f[R]
|
||||
.RS 2
|
||||
.IP \[bu] 2
|
||||
Output the item clicked on
|
||||
.RE
|
||||
.IP \[bu] 2
|
||||
\f[V]screenshot\f[R]
|
||||
.RS 2
|
||||
.IP \[bu] 2
|
||||
|
|
3
spmenu.c
3
spmenu.c
|
@ -101,7 +101,6 @@ enum { // click enum
|
|||
ClickInput,
|
||||
ClickLArrow,
|
||||
ClickItem,
|
||||
ClickSelItem,
|
||||
ClickRArrow,
|
||||
ClickNumber,
|
||||
ClickCaps,
|
||||
|
@ -141,6 +140,8 @@ struct sp {
|
|||
int listcount;
|
||||
int listchanged;
|
||||
|
||||
int clickitemindex;
|
||||
|
||||
size_t cursor; // cursor width
|
||||
|
||||
int ignoreconfkeys; // can be set globally if you don't want to override keybinds with config file keys
|
||||
|
|
Loading…
Reference in a new issue