Browse code

Simple Up/down/left/right scrolling for the printouts

Dario Rodriguez authored on 21/01/2021 20:46:25
Showing 1 changed files
... ...
@@ -266,6 +266,7 @@ fprintf(stderr,"RENDER\n");
266 266
                           || (event.type==SDL_TEXTEDITING && (windowID=event.edit.windowID)!=SDL_GetWindowID(re->ui->win))
267 267
                           || (event.type==SDL_TEXTINPUT && (windowID=event.text.windowID)!=SDL_GetWindowID(re->ui->win))
268 268
                           ) {
269
+                                printout_t *printout;
269 270
                                 for(i=0;i<re->sizeprints;i++) {
270 271
                                         if(re->prints[i].ui!=NULL
271 272
                                           && windowID==SDL_GetWindowID(re->prints[i].ui->win)) {
... ...
@@ -274,16 +275,17 @@ fprintf(stderr,"RENDER\n");
274 275
                                 }
275 276
                                 if(i>=re->sizeprints)
276 277
                                         continue; /* unknown window */
278
+                                printout=re->prints+i;
277 279
                                 switch(event.type) {
278 280
                                         case SDL_WINDOWEVENT:
279 281
                                                 if(event.window.event==SDL_WINDOWEVENT_SHOWN
280 282
                                                   || event.window.event==SDL_WINDOWEVENT_EXPOSED) {
281
-                                                        re->prints[i].dirty=1;
283
+                                                        printout->dirty=1;
282 284
                                                 } else if((event.window.event==SDL_WINDOWEVENT_RESIZED
283 285
                                                   || event.window.event==SDL_WINDOWEVENT_SIZE_CHANGED)
284
-                                                  && (event.window.data1!=re->prints[i].ui->w || event.window.data2!=re->prints[i].ui->h)) {
285
-                                                        reui_resize(re->prints[i].ui,event.window.data1,event.window.data2);
286
-                                                        re->prints[i].dirty=1;
286
+                                                  && (event.window.data1!=printout->ui->w || event.window.data2!=printout->ui->h)) {
287
+                                                        reui_resize(printout->ui,event.window.data1,event.window.data2);
288
+                                                        printout->dirty=1;
287 289
                                                 } else if(event.window.event==SDL_WINDOWEVENT_CLOSE) {
288 290
                                                         re_delprint(re,i);
289 291
                                                 }
... ...
@@ -291,6 +293,17 @@ fprintf(stderr,"RENDER\n");
291 293
                                         case SDL_KEYDOWN:
292 294
                                                 if(event.key.keysym.sym==SDLK_ESCAPE) {
293 295
                                                         re_delprint(re,i);
296
+                                                } else if(event.key.keysym.sym==SDLK_DOWN || event.key.keysym.sym==SDLK_UP) {
297
+                                                        if(event.key.keysym.sym==SDLK_UP && printout->originline==0)
298
+                                                                break; /* nothing to do, at top */
299
+                                                        printout->originline+=((event.key.keysym.sym==SDLK_UP)?-1:1);
300
+                                                        printout->dirty=1;
301
+                                                } else if(event.key.keysym.sym==SDLK_LEFT || event.key.keysym.sym==SDLK_RIGHT) {
302
+                                                        if(event.key.keysym.sym==SDLK_LEFT && printout->origincol==0)
303
+                                                                break; /* nothing to do, at top */
304
+                                                        printout->origincol+=((event.key.keysym.sym==SDLK_LEFT)?-1:1)*8;
305
+                                                        printout->origincol=(printout->origincol<0)?0:printout->origincol;
306
+                                                        printout->dirty=1;
294 307
                                                 }
295 308
                                                 break;
296 309
                                 }
... ...
@@ -1861,7 +1874,7 @@ re_drawcontents(re_t *re, printout_t *printout)
1861 1874
         if(printout==NULL) {
1862 1875
                 reui_fill(ui,x0,y0+(curline-originline)*ui->fontheight,w,ui->fontheight+1,"\xef\xef\xef\xff");
1863 1876
         } else {
1864
-                for(y=y0;y<(y0+h);y+=ui->fontheight*2)
1877
+                for(y=y0+(printout->originline%2)*ui->fontheight;y<(y0+h);y+=ui->fontheight*2)
1865 1878
                         reui_fill(ui,x0,y,w,ui->fontheight+1,"\xef\xef\xef\xff");
1866 1879
         }
1867 1880
         /* highlight the selection */