| src/Completer.cc | |
| 281 | @@ -281,11 +281,13 @@ |
| 281 | { |
| 282 | // Do not perform completion if there is nothing to complete |
| 283 | if (! completions.size()) { |
| 284 | pos = str.size(); |
| 285 | return str; |
| 286 | } |
| 287 | // Wrap completions, return original string |
| 288 | if (it == completions.end()) { |
| 289 | it = completions.begin(); |
| 290 | pos = str.size(); |
| 291 | return str; |
| 292 | } |
| 293 | |
| ... | |
| src/InputDialog.cc | |
| 162 | @@ -162,15 +162,18 @@ |
| 162 | switch (it->getAction()) { |
| 163 | case INPUT_INSERT: |
| 164 | bufAdd(ev); |
| 165 | completeReset(); |
| 166 | break; |
| 167 | case INPUT_REMOVE: |
| 168 | bufRemove(); |
| 169 | break; |
| 170 | case INPUT_CLEAR: |
| 171 | bufClear(); |
| 172 | completeReset(); |
| 173 | break; |
| 174 | case INPUT_CLEARFROMCURSOR: |
| 175 | bufKill(); |
| 176 | completeReset(); |
| 177 | break; |
| 178 | case INPUT_EXEC: |
| 179 | ae = exec(); |
| ... | |
| 189 | @@ -186,21 +189,27 @@ |
| 189 | break; |
| 190 | case INPUT_CURS_NEXT: |
| 191 | bufChangePos(1); |
| 192 | completeReset(); |
| 193 | break; |
| 194 | case INPUT_CURS_PREV: |
| 195 | bufChangePos(-1); |
| 196 | completeReset(); |
| 197 | break; |
| 198 | case INPUT_CURS_BEGIN: |
| 199 | _pos = 0; |
| 200 | completeReset(); |
| 201 | break; |
| 202 | case INPUT_CURS_END: |
| 203 | _pos = _buf.size(); |
| 204 | completeReset(); |
| 205 | break; |
| 206 | case INPUT_HIST_NEXT: |
| 207 | histNext(); |
| 208 | completeReset(); |
| 209 | break; |
| 210 | case INPUT_HIST_PREV: |
| 211 | histPrev(); |
| 212 | completeReset(); |
| 213 | break; |
| 214 | case INPUT_NO_ACTION: |
| 215 | default: |
| ... | |
| 410 | @@ -401,7 +410,18 @@ |
| 410 | _buf = _buf_on_complete; |
| 411 | _pos = _pos_on_complete; |
| 412 | } |
| 404 | _buf_on_complete = _buf_on_complete_result = L""; // old gcc doesn't know about .clear() |
| 414 | |
| 415 | completeReset(); |
| 416 | } |
| 417 | |
| 418 | /** |
| 419 | * Clear the completion buffer. |
| 420 | */ |
| 421 | void |
| 422 | InputDialog::completeReset(void) |
| 423 | { |
| 424 | // Old gcc doesn't know about .clear() |
| 425 | _buf_on_complete = _buf_on_complete_result = L""; |
| 426 | _pos_on_complete = 0; |
| 427 | } |
| 428 | |
| ... | |
| src/InputDialog.hh | |
| 57 | @@ -57,6 +57,7 @@ |
| 57 | virtual ActionEvent *exec(void) { return 0; } |
| 58 | virtual void complete(void); |
| 59 | virtual void completeAbort(void); |
| 60 | virtual void completeReset(void); |
| 61 | |
| 62 | virtual void bufAdd(XKeyEvent *ev); |
| 63 | virtual void bufRemove(void); |
| ... | |