[CONTACT]

[ABOUT]

[POLICY]

git clone dmenu dmenu Log gph

Found at: gopher.r-36.net:70/scm/dmenu/commit/86468aafe52a94ce6ba1a3601a587c65724a61aa.gph

tinstant ^E - dmenu - Dmenu fork with xft fonts.

git clone git://r-36.net/dmenu

Log

Files

Refs

README

LICENSE

---

commit 86468aafe52a94ce6ba1a3601a587c65724a61aa

parent be9afce03548e8110744064d1c9c67795c13cdb6

Author: Connor Lane Smith

Date:   Sat, 14 May 2011 18:39:27 +0100
instant ^E
Diffstat:
  dmenu.c                             |      36 +++++++++++++++++--------------
1 file changed, 20 insertions(+), 16 deletions(-)
---

diff --git a/dmenu.c b/dmenu.c

t@@ -55,8 +55,8 @@ static Atom utf8;
 static Bool topbar = True;
 static DC *dc;
 static Item *items = NULL;
-static Item *matches, *sel;
-static Item *prev, *curr, *next;
+static Item *matches, *matchend;
+static Item *prev, *curr, *next, *sel;
 static Window root, win;
 static int (*fstrncmp)(const char *, const char *, size_t) = strncmp;
t@@ -308,12 +308,15 @@ keypress(XKeyEvent *ev) {
                         cursor = len;
                         break;
                 }
-                while(next) {
-                        sel = curr = next;
+                if(next) {
+                        curr = matchend;
                         calcoffsets();
+                        curr = prev;
+                        calcoffsets();
+                        while(next && (curr = curr->right))
+                                calcoffsets();
                 }
-                while(sel && sel->right)
-                        sel = sel->right;
+                sel = matchend;
                 break;
         case XK_Escape:
                 exit(EXIT_FAILURE);
t@@ -381,10 +384,10 @@ keypress(XKeyEvent *ev) {
 void
 match(void) {
         size_t len;
-        Item *item, *itemend, *lexact, *lprefix, *lsubstr, *exactend, *prefixend, *substrend;
+        Item *item, *lexact, *lprefix, *lsubstr, *exactend, *prefixend, *substrend;
         len = strlen(text);
-        matches = lexact = lprefix = lsubstr = itemend = exactend = prefixend = substrend = NULL;
+        matches = lexact = lprefix = lsubstr = matchend = exactend = prefixend = substrend = NULL;
         for(item = items; item && item->text; item++)
                 if(!fstrncmp(text, item->text, len + 1))
                         appenditem(item, &lexact, &exactend);
t@@ -395,24 +398,25 @@ match(void) {
         if(lexact) {
                 matches = lexact;
-                itemend = exactend;
+                matchend = exactend;
         }
         if(lprefix) {
-                if(itemend) {
-                        itemend->right = lprefix;
-                        lprefix->left = itemend;
+                if(matchend) {
+                        matchend->right = lprefix;
+                        lprefix->left = matchend;
                 }
                 else
                         matches = lprefix;
-                itemend = prefixend;
+                matchend = prefixend;
         }
         if(lsubstr) {
-                if(itemend) {
-                        itemend->right = lsubstr;
-                        lsubstr->left = itemend;
+                if(matchend) {
+                        matchend->right = lsubstr;
+                        lsubstr->left = matchend;
                 }
                 else
                         matches = lsubstr;
+                matchend = substrend;
         }
         curr = sel = matches;
         calcoffsets();
.


AD: