intial commit
This commit is contained in:
@@ -0,0 +1,70 @@
|
||||
diff --git a/dmenu.c b/dmenu.c
|
||||
index 027dddb..0b92f1f 100644
|
||||
--- a/dmenu.c
|
||||
+++ b/dmenu.c
|
||||
@@ -334,6 +334,8 @@ keypress(XKeyEvent *ev)
|
||||
int len;
|
||||
KeySym ksym = NoSymbol;
|
||||
Status status;
|
||||
+ int i, offscreen = 0;
|
||||
+ struct item *tmpsel;
|
||||
|
||||
len = XmbLookupString(xic, ev, buf, sizeof buf, &ksym, &status);
|
||||
switch (status) {
|
||||
@@ -465,6 +467,27 @@ insert:
|
||||
calcoffsets();
|
||||
break;
|
||||
case XK_Left:
|
||||
+ if (columns > 1) {
|
||||
+ if (!sel)
|
||||
+ return;
|
||||
+ tmpsel = sel;
|
||||
+ for (i = 0; i < lines; i++) {
|
||||
+ if (!tmpsel->left || tmpsel->left->right != tmpsel) {
|
||||
+ if (offscreen)
|
||||
+ break;
|
||||
+ return;
|
||||
+ }
|
||||
+ if (tmpsel == curr)
|
||||
+ offscreen = 1;
|
||||
+ tmpsel = tmpsel->left;
|
||||
+ }
|
||||
+ sel = tmpsel;
|
||||
+ if (offscreen) {
|
||||
+ curr = prev;
|
||||
+ calcoffsets();
|
||||
+ }
|
||||
+ break;
|
||||
+ }
|
||||
case XK_KP_Left:
|
||||
if (cursor > 0 && (!sel || !sel->left || lines > 0)) {
|
||||
cursor = nextrune(-1);
|
||||
@@ -505,6 +528,27 @@ insert:
|
||||
sel->out = 1;
|
||||
break;
|
||||
case XK_Right:
|
||||
+ if (columns > 1) {
|
||||
+ if (!sel)
|
||||
+ return;
|
||||
+ tmpsel = sel;
|
||||
+ for (i = 0; i < lines; i++) {
|
||||
+ if (!tmpsel->right || tmpsel->right->left != tmpsel) {
|
||||
+ if (offscreen)
|
||||
+ break;
|
||||
+ return;
|
||||
+ }
|
||||
+ tmpsel = tmpsel->right;
|
||||
+ if (tmpsel == next)
|
||||
+ offscreen = 1;
|
||||
+ }
|
||||
+ sel = tmpsel;
|
||||
+ if (offscreen) {
|
||||
+ curr = next;
|
||||
+ calcoffsets();
|
||||
+ }
|
||||
+ break;
|
||||
+ }
|
||||
case XK_KP_Right:
|
||||
if (text[cursor] != '\0') {
|
||||
cursor = nextrune(+1);
|
||||
|
||||
Reference in New Issue
Block a user