forked from speedie/spmenu
add keybinds for setting line/columns
This commit is contained in:
parent
5bba5d9bc9
commit
71090e7aa3
|
@ -66,6 +66,10 @@ static Key keys[] = {
|
|||
{ 0, 0, XK_j, move, {.i = 2 } },
|
||||
{ 0, 0, XK_h, move, {.i = 3 } },
|
||||
{ 0, 0, XK_l, move, {.i = 4 } },
|
||||
{ 0, CONTROL, XK_k, setlines, {.i = +1 } },
|
||||
{ 0, CONTROL, XK_j, setlines, {.i = -1 } },
|
||||
{ 0, CONTROL, XK_h, setcolumns, {.i = +1 } },
|
||||
{ 0, CONTROL, XK_l, setcolumns, {.i = -1 } },
|
||||
{ 0, CONTROL, XK_k, restoresel, {0} },
|
||||
{ 0, CONTROL, XK_h, viewhist, {0} },
|
||||
{ 0, CONTROL, XK_u, clear, {0} },
|
||||
|
|
22
libs/arg.c
22
libs/arg.c
|
@ -396,3 +396,25 @@ defaultimg(const Arg *arg)
|
|||
drawmenu();
|
||||
#endif
|
||||
}
|
||||
|
||||
void
|
||||
setlines(const Arg *arg)
|
||||
{
|
||||
lines += arg->i;
|
||||
if (lines < 0) lines = 0;
|
||||
|
||||
match();
|
||||
resizeclient();
|
||||
drawmenu();
|
||||
}
|
||||
|
||||
void
|
||||
setcolumns(const Arg *arg)
|
||||
{
|
||||
columns += arg->i;
|
||||
if (columns < 0) columns = 0;
|
||||
|
||||
match();
|
||||
resizeclient();
|
||||
drawmenu();
|
||||
}
|
||||
|
|
|
@ -29,3 +29,5 @@ static void rotateimg(const Arg *arg);
|
|||
static void flipimg(const Arg *arg);
|
||||
static void setimgpos(const Arg *arg);
|
||||
static void setimggaps(const Arg *arg);
|
||||
static void setlines(const Arg *arg);
|
||||
static void setcolumns(const Arg *arg);
|
||||
|
|
|
@ -42,3 +42,24 @@ set_prop(void)
|
|||
|
||||
return;
|
||||
}
|
||||
|
||||
void
|
||||
resizeclient(void)
|
||||
{
|
||||
int omh = mh;
|
||||
|
||||
bh = drw->font->h + 2 + reqlineheight;
|
||||
lines = MAX(lines, 0);
|
||||
|
||||
#if USEIMAGE
|
||||
if (image)
|
||||
resizetoimageheight(imageheight);
|
||||
#endif
|
||||
|
||||
mh = (lines + 1) * bh;
|
||||
|
||||
if (!win || omh == mh) return;
|
||||
|
||||
XResizeWindow(dpy, win, mw, mh);
|
||||
drw_resize(drw, mw, mh);
|
||||
}
|
||||
|
|
|
@ -2,3 +2,4 @@ static void create_window(int x, int y, int w, int h);
|
|||
static void prepare_window_size(void);
|
||||
static void set_window(void);
|
||||
static void set_prop(void);
|
||||
static void resizeclient(void);
|
||||
|
|
|
@ -235,13 +235,15 @@ drawmenu(void)
|
|||
}
|
||||
#endif
|
||||
|
||||
for (item = curr; item != next; item = item->right, i++)
|
||||
for (item = curr; item != next; item = item->right, i++) {
|
||||
drawitem(
|
||||
item,
|
||||
x + ((i / lines) * ((mw - x) / columns)) - xpad,
|
||||
y + (((i % lines) + 1) * bh),
|
||||
(mw - x) / columns
|
||||
);
|
||||
}
|
||||
|
||||
} else if (matches) {
|
||||
/* draw horizontal list */
|
||||
x += inputw;
|
||||
|
|
|
@ -130,6 +130,7 @@ match(void)
|
|||
appenditem(item, &lsubstr, &substrend);
|
||||
}
|
||||
}
|
||||
|
||||
if (lhpprefix) {
|
||||
if (matches) {
|
||||
matchend->right = lhpprefix;
|
||||
|
|
9
spmenu.c
9
spmenu.c
|
@ -199,7 +199,6 @@ static void calcoffsets(void);
|
|||
static void readstdin(void);
|
||||
static void recalculatenumbers(void);
|
||||
static void usage(void);
|
||||
static void match(void);
|
||||
static void movewordedge(int dir);
|
||||
static void insert(const char *str, ssize_t n);
|
||||
static void cleanup(void);
|
||||
|
@ -225,8 +224,6 @@ static char *(*fstrstr)(const char *, const char *) = cistrstr;
|
|||
#include "libs/img.c"
|
||||
#include "libs/rtl.h"
|
||||
#include "libs/rtl.c"
|
||||
#include "libs/match.h"
|
||||
#include "libs/match.c"
|
||||
#include "libs/event.h"
|
||||
#include "libs/event.c"
|
||||
#include "libs/key.c"
|
||||
|
@ -234,13 +231,15 @@ static char *(*fstrstr)(const char *, const char *) = cistrstr;
|
|||
#include "libs/sort.c"
|
||||
#include "libs/draw.c"
|
||||
#include "libs/schemes.c"
|
||||
#include "libs/arg.c"
|
||||
#include "libs/argv.h"
|
||||
#include "libs/argv.c"
|
||||
#include "libs/xrdb.c"
|
||||
#include "libs/mode.c"
|
||||
#include "libs/client.h"
|
||||
#include "libs/client.c"
|
||||
#include "libs/match.h"
|
||||
#include "libs/match.c"
|
||||
#include "libs/arg.c"
|
||||
|
||||
void
|
||||
appenditem(struct item *item, struct item **list, struct item **last)
|
||||
|
@ -683,7 +682,7 @@ setup(void)
|
|||
reqlineheight = clineheight;
|
||||
}
|
||||
|
||||
/* calculate menu geometry */
|
||||
// resize client
|
||||
bh = drw->font->h + 2 + reqlineheight;
|
||||
lines = MAX(lines, 0);
|
||||
reallines = lines;
|
||||
|
|
Loading…
Reference in a new issue