nsxiv1892ed9
Simplify cg_mark_range
+11 −22
1 file changed
- M commands.c +11 −22
| @@ -216,30 +216,19 @@ bool cg_reverse_marks(arg_t _) | |||
| 216 | 216 | ||
| 217 | 217 | bool cg_mark_range(arg_t _) | |
| 218 | 218 | { | |
| 219 | − | int i, from, to; | |
| 220 | − | ||
| 221 | − | from = markidx; | |
| 222 | − | to = fileidx; | |
| 223 | − | if (fileidx < markidx) { | |
| 224 | − | from = fileidx; | |
| 225 | − | to = markidx; | |
| 226 | − | } | |
| 227 | − | for (i = from; i <= to; i++) { | |
| 228 | − | if (files[markidx].flags & FF_MARK) { | |
| 229 | − | if (!(files[i].flags & FF_MARK)) { | |
| 230 | − | files[i].flags |= FF_MARK; | |
| 231 | − | markcnt += 1; | |
| 232 | − | } | |
| 233 | − | } else { | |
| 234 | − | if (files[i].flags & FF_MARK) { | |
| 235 | − | files[i].flags &= ~FF_MARK; | |
| 236 | − | markcnt -= 1; | |
| 237 | − | } | |
| 219 | + | int i, d = fileidx < markidx ? 1 : -1; | |
| 220 | + | int flag = files[markidx].flags & FF_MARK; | |
| 221 | + | int oldmarkcnt = markcnt; | |
| 222 | + | ||
| 223 | + | for (i = fileidx; i != markidx; i += d) { | |
| 224 | + | if ((files[i].flags & FF_MARK) ^ flag) { | |
| 225 | + | files[i].flags = (files[i].flags & ~FF_MARK) | flag; | |
| 226 | + | markcnt += flag ? 1 : -1; | |
| 227 | + | if (mode == MODE_THUMB) | |
| 228 | + | tns_mark(&tns, i, !!flag); | |
| 238 | 229 | } | |
| 239 | − | if (mode == MODE_THUMB) | |
| 240 | − | tns_mark(&tns, i, !!(files[i].flags & FF_MARK)); | |
| 241 | 230 | } | |
| 242 | − | return true; | |
| 231 | + | return markcnt != oldmarkcnt; | |
| 243 | 232 | } | |
| 244 | 233 | ||
| 245 | 234 | bool cg_unmark_all(arg_t _) | |