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_j, move, {.i = 2 } },
|
||||||
{ 0, 0, XK_h, move, {.i = 3 } },
|
{ 0, 0, XK_h, move, {.i = 3 } },
|
||||||
{ 0, 0, XK_l, move, {.i = 4 } },
|
{ 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_k, restoresel, {0} },
|
||||||
{ 0, CONTROL, XK_h, viewhist, {0} },
|
{ 0, CONTROL, XK_h, viewhist, {0} },
|
||||||
{ 0, CONTROL, XK_u, clear, {0} },
|
{ 0, CONTROL, XK_u, clear, {0} },
|
||||||
|
|
22
libs/arg.c
22
libs/arg.c
|
@ -396,3 +396,25 @@ defaultimg(const Arg *arg)
|
||||||
drawmenu();
|
drawmenu();
|
||||||
#endif
|
#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 flipimg(const Arg *arg);
|
||||||
static void setimgpos(const Arg *arg);
|
static void setimgpos(const Arg *arg);
|
||||||
static void setimggaps(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;
|
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 prepare_window_size(void);
|
||||||
static void set_window(void);
|
static void set_window(void);
|
||||||
static void set_prop(void);
|
static void set_prop(void);
|
||||||
|
static void resizeclient(void);
|
||||||
|
|
|
@ -235,13 +235,15 @@ drawmenu(void)
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
for (item = curr; item != next; item = item->right, i++)
|
for (item = curr; item != next; item = item->right, i++) {
|
||||||
drawitem(
|
drawitem(
|
||||||
item,
|
item,
|
||||||
x + ((i / lines) * ((mw - x) / columns)) - xpad,
|
x + ((i / lines) * ((mw - x) / columns)) - xpad,
|
||||||
y + (((i % lines) + 1) * bh),
|
y + (((i % lines) + 1) * bh),
|
||||||
(mw - x) / columns
|
(mw - x) / columns
|
||||||
);
|
);
|
||||||
|
}
|
||||||
|
|
||||||
} else if (matches) {
|
} else if (matches) {
|
||||||
/* draw horizontal list */
|
/* draw horizontal list */
|
||||||
x += inputw;
|
x += inputw;
|
||||||
|
|
|
@ -130,6 +130,7 @@ match(void)
|
||||||
appenditem(item, &lsubstr, &substrend);
|
appenditem(item, &lsubstr, &substrend);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (lhpprefix) {
|
if (lhpprefix) {
|
||||||
if (matches) {
|
if (matches) {
|
||||||
matchend->right = lhpprefix;
|
matchend->right = lhpprefix;
|
||||||
|
|
13
spmenu.c
13
spmenu.c
|
@ -199,7 +199,6 @@ static void calcoffsets(void);
|
||||||
static void readstdin(void);
|
static void readstdin(void);
|
||||||
static void recalculatenumbers(void);
|
static void recalculatenumbers(void);
|
||||||
static void usage(void);
|
static void usage(void);
|
||||||
static void match(void);
|
|
||||||
static void movewordedge(int dir);
|
static void movewordedge(int dir);
|
||||||
static void insert(const char *str, ssize_t n);
|
static void insert(const char *str, ssize_t n);
|
||||||
static void cleanup(void);
|
static void cleanup(void);
|
||||||
|
@ -225,8 +224,6 @@ static char *(*fstrstr)(const char *, const char *) = cistrstr;
|
||||||
#include "libs/img.c"
|
#include "libs/img.c"
|
||||||
#include "libs/rtl.h"
|
#include "libs/rtl.h"
|
||||||
#include "libs/rtl.c"
|
#include "libs/rtl.c"
|
||||||
#include "libs/match.h"
|
|
||||||
#include "libs/match.c"
|
|
||||||
#include "libs/event.h"
|
#include "libs/event.h"
|
||||||
#include "libs/event.c"
|
#include "libs/event.c"
|
||||||
#include "libs/key.c"
|
#include "libs/key.c"
|
||||||
|
@ -234,13 +231,15 @@ static char *(*fstrstr)(const char *, const char *) = cistrstr;
|
||||||
#include "libs/sort.c"
|
#include "libs/sort.c"
|
||||||
#include "libs/draw.c"
|
#include "libs/draw.c"
|
||||||
#include "libs/schemes.c"
|
#include "libs/schemes.c"
|
||||||
#include "libs/arg.c"
|
|
||||||
#include "libs/argv.h"
|
#include "libs/argv.h"
|
||||||
#include "libs/argv.c"
|
#include "libs/argv.c"
|
||||||
#include "libs/xrdb.c"
|
#include "libs/xrdb.c"
|
||||||
#include "libs/mode.c"
|
#include "libs/mode.c"
|
||||||
#include "libs/client.h"
|
#include "libs/client.h"
|
||||||
#include "libs/client.c"
|
#include "libs/client.c"
|
||||||
|
#include "libs/match.h"
|
||||||
|
#include "libs/match.c"
|
||||||
|
#include "libs/arg.c"
|
||||||
|
|
||||||
void
|
void
|
||||||
appenditem(struct item *item, struct item **list, struct item **last)
|
appenditem(struct item *item, struct item **list, struct item **last)
|
||||||
|
@ -683,8 +682,8 @@ setup(void)
|
||||||
reqlineheight = clineheight;
|
reqlineheight = clineheight;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* calculate menu geometry */
|
// resize client
|
||||||
bh = drw->font->h + 2 + reqlineheight;
|
bh = drw->font->h + 2 + reqlineheight;
|
||||||
lines = MAX(lines, 0);
|
lines = MAX(lines, 0);
|
||||||
reallines = lines;
|
reallines = lines;
|
||||||
|
|
||||||
|
@ -693,7 +692,7 @@ setup(void)
|
||||||
resizetoimageheight(imageheight);
|
resizetoimageheight(imageheight);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
mh = (lines + 1) * bh;
|
mh = (lines + 1) * bh;
|
||||||
promptw = (prompt && *prompt) ? TEXTWM(prompt) - lrpad / 4 : 0;
|
promptw = (prompt && *prompt) ? TEXTWM(prompt) - lrpad / 4 : 0;
|
||||||
|
|
||||||
if (accuratewidth) {
|
if (accuratewidth) {
|
||||||
|
|
Loading…
Reference in a new issue