Overview
Comment: | In the class/image selection menu, ensure that the selected item will be scrolled into view when changing the selection. |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA1: |
c2f30f99494f1975f33aff9dcb633d27 |
User & Date: | user on 2021-08-30 05:16:03 |
Other Links: | manifest | tags |
Context
2021-08-30
| ||
06:28 | Some improvements to README file check-in: 185096251c user: user tags: trunk | |
05:16 | In the class/image selection menu, ensure that the selected item will be scrolled into view when changing the selection. check-in: c2f30f9949 user: user tags: trunk | |
2021-08-05
| ||
18:34 | Avoid segfault in level strings list, when trying to edit or select non-existing strings. check-in: 3b07da3314 user: user tags: trunk | |
Changes
Modified edit.c from [3dcea60d30] to [3b166365cb].
︙ | ︙ | |||
378 379 380 381 382 383 384 385 386 387 388 389 390 391 | SDL_Rect r; int clscroll=0; int imgscroll=0; int clcount=0; int imgcount=0; int cl=0; int img=0; Uint16 cllist[0x4000]; Uint8 imglist[256]; char name[256]; int namei=0; char buf[4]; int i,j; sqlite3_stmt*st; | > | 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 | SDL_Rect r; int clscroll=0; int imgscroll=0; int clcount=0; int imgcount=0; int cl=0; int img=0; char re=0; Uint16 cllist[0x4000]; Uint8 imglist[256]; char name[256]; int namei=0; char buf[4]; int i,j; sqlite3_stmt*st; |
︙ | ︙ | |||
404 405 406 407 408 409 410 | scrollbar(&clscroll,screen->h/8,clcount,0,&r); r.x+=15; r.h=8; SDL_LockSurface(screen); for(i=0;i<screen->h/8;i++) { if(i+clscroll>=clcount) break; j=cllist[i+clscroll]; | | > > > > > > > > | 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 | scrollbar(&clscroll,screen->h/8,clcount,0,&r); r.x+=15; r.h=8; SDL_LockSurface(screen); for(i=0;i<screen->h/8;i++) { if(i+clscroll>=clcount) break; j=cllist[i+clscroll]; if(j==cl) SDL_FillRect(screen,&r,0xF3),re=0; draw_text(r.x,r.y,classes[j]->name,j==cl?0xF3:0xF1,classes[j]->cflags&CF_PLAYER?0xFE:0xFF); if(j==cl && namei) { memcpy(name,classes[j]->name,namei); name[namei]=0; draw_text(r.x,r.y,name,0xF4,classes[j]->cflags&CF_PLAYER?0xFE:0xFF); } r.y+=8; } SDL_UnlockSurface(screen); if(re && cl) { for(i=0;i<clcount;i++) if(cllist[i]==cl) { clscroll=i+(clscroll>i?0:1-screen->h/8); break; } re=0; goto redraw; } scrollbar(&imgscroll,screen->h/picture_size,imgcount,0,0); r.x=14; r.y=0; r.w=r.h=picture_size; for(i=0;i<screen->h/picture_size;i++) { if(i+imgscroll>=imgcount) break; j=imglist[i+imgscroll]; |
︙ | ︙ | |||
458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 | if(i<0 || i>=clcount) break; namei=0; cl=cllist[i]; setclass: imgscroll=imgcount=0; for(i=0;i<classes[cl]->nimages;i++) if(classes[cl]->images[i]&0x8000) imglist[imgcount++]=i; img=*imglist; } else { i=imgscroll+ev.button.y/picture_size; if(i<0 || i>=imgcount) break; img=imglist[i]; } if(ev.button.button==3 || ev.button.button==2) add_mru(cl,img); if(ev.button.button==2) return; goto redraw; case SDL_KEYDOWN: switch(ev.key.keysym.sym) { case SDLK_HOME: case SDLK_KP7: clscroll=0; goto redraw; case SDLK_END: case SDLK_KP1: clscroll=clcount-screen->h/8; goto redraw; case SDLK_PAGEDOWN: case SDLK_KP3: clscroll+=screen->h/8; goto redraw; case SDLK_PAGEUP: case SDLK_KP9: clscroll-=screen->h/8; goto redraw; case SDLK_ESCAPE: return; case SDLK_CLEAR: case SDLK_DELETE: case SDLK_KP_PERIOD: namei=0; goto redraw; case SDLK_BACKSPACE: if(namei) --namei; goto redraw; case SDLK_TAB: if(!cl) break; strncpy(name,classes[cl]->name,254); for(j=0;j<clcount;j++) if(cl==cllist[j]) break; | > > > | 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 | if(i<0 || i>=clcount) break; namei=0; cl=cllist[i]; setclass: imgscroll=imgcount=0; for(i=0;i<classes[cl]->nimages;i++) if(classes[cl]->images[i]&0x8000) imglist[imgcount++]=i; img=*imglist; re=1; } else { i=imgscroll+ev.button.y/picture_size; if(i<0 || i>=imgcount) break; img=imglist[i]; } if(ev.button.button==3 || ev.button.button==2) add_mru(cl,img); if(ev.button.button==2) return; goto redraw; case SDL_KEYDOWN: switch(ev.key.keysym.sym) { case SDLK_HOME: case SDLK_KP7: clscroll=0; goto redraw; case SDLK_END: case SDLK_KP1: clscroll=clcount-screen->h/8; goto redraw; case SDLK_PAGEDOWN: case SDLK_KP3: clscroll+=screen->h/8; goto redraw; case SDLK_PAGEUP: case SDLK_KP9: clscroll-=screen->h/8; goto redraw; case SDLK_KP_PLUS: clscroll++; goto redraw; case SDLK_KP_MINUS: clscroll--; goto redraw; case SDLK_ESCAPE: return; case SDLK_CLEAR: case SDLK_DELETE: case SDLK_KP_PERIOD: namei=0; goto redraw; case SDLK_BACKSPACE: if(namei) --namei; goto redraw; case SDLK_TAB: if(!cl) break; strncpy(name,classes[cl]->name,254); for(j=0;j<clcount;j++) if(cl==cllist[j]) break; |
︙ | ︙ | |||
501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 | } ++namei; } goto redraw; case SDLK_LEFT: case SDLK_KP4: for(i=0;i<imgcount-1;i++) if(img==imglist[i+1]) { img=imglist[i]; goto redraw; } break; case SDLK_RIGHT: case SDLK_KP6: for(i=0;i<imgcount-1;i++) if(img==imglist[i]) { img=imglist[i+1]; goto redraw; } break; case SDLK_UP: case SDLK_KP8: namei=0; for(i=1;i<clcount;i++) if(cl==cllist[i]) { cl=cllist[i-1]; | > > | 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 | } ++namei; } goto redraw; case SDLK_LEFT: case SDLK_KP4: for(i=0;i<imgcount-1;i++) if(img==imglist[i+1]) { img=imglist[i]; if(imgscroll>i) imgscroll=i; goto redraw; } break; case SDLK_RIGHT: case SDLK_KP6: for(i=0;i<imgcount-1;i++) if(img==imglist[i]) { img=imglist[i+1]; if(imgscroll<i+2-screen->h/picture_size) imgscroll=i+2-screen->h/picture_size; goto redraw; } break; case SDLK_UP: case SDLK_KP8: namei=0; for(i=1;i<clcount;i++) if(cl==cllist[i]) { cl=cllist[i-1]; |
︙ | ︙ |