@@ -1051,35 +1051,34 @@ static void drawMapReg(Map* map)
10511051 tic_mem * tic = map -> tic ;
10521052 tic_rect rect = {MAP_X , MAP_Y , MAP_WIDTH , MAP_HEIGHT };
10531053
1054- if (!sheetVisible (map ) && checkMousePos (& rect ))
1055- {
1056- if (tic_api_key (tic , tic_key_space ))
1057- {
1058- processScrolling (map , checkMouseDown (& rect , tic_mouse_left ) || checkMouseDown (& rect , tic_mouse_right ));
1059- }
1060- else
1061- {
1062- static void (* const Handlers [])(Map * ) = {processMouseDrawMode , processMouseDragMode , processMouseSelectMode , processMouseFillMode };
1054+ bool handle = !sheetVisible (map ) && checkMousePos (& rect );
1055+ bool space = tic_api_key (tic , tic_key_space );
10631056
1064- Handlers [map -> mode ](map );
1057+ if (handle )
1058+ processScrolling (map ,
1059+ ((space || map -> mode == MAP_DRAG_MODE ) && checkMouseDown (& rect , tic_mouse_left )) ||
1060+ checkMouseDown (& rect , tic_mouse_right ));
10651061
1066- if (map -> mode != MAP_DRAG_MODE )
1067- processScrolling (map , checkMouseDown (& rect , tic_mouse_right ));
1068- }
1069- }
1062+ {
1063+ s32 scrollX = map -> scroll .x % TIC_SPRITESIZE ;
1064+ s32 scrollY = map -> scroll .y % TIC_SPRITESIZE ;
10701065
1071- s32 scrollX = map -> scroll .x % TIC_SPRITESIZE ;
1072- s32 scrollY = map -> scroll .y % TIC_SPRITESIZE ;
1066+ map2ram (& tic -> ram , map -> src );
10731067
1074- map2ram (& tic -> ram , map -> src );
1068+ initBlitMode (map );
1069+ tic_api_map (tic , map -> scroll .x / TIC_SPRITESIZE , map -> scroll .y / TIC_SPRITESIZE ,
1070+ TIC_MAP_SCREEN_WIDTH + 1 , TIC_MAP_SCREEN_HEIGHT + 1 , - scrollX , - scrollY , 0 , 0 , 1 , NULL , NULL );
1071+ resetBlitMode (map -> tic );
10751072
1076- initBlitMode (map );
1077- tic_api_map (tic , map -> scroll .x / TIC_SPRITESIZE , map -> scroll .y / TIC_SPRITESIZE ,
1078- TIC_MAP_SCREEN_WIDTH + 1 , TIC_MAP_SCREEN_HEIGHT + 1 , - scrollX , - scrollY , 0 , 0 , 1 , NULL , NULL );
1079- resetBlitMode (map -> tic );
1073+ if (map -> canvas .grid || map -> scroll .active )
1074+ drawGrid (map );
1075+ }
10801076
1081- if (map -> canvas .grid || map -> scroll .active )
1082- drawGrid (map );
1077+ if (handle && !space )
1078+ {
1079+ static void (* const Handlers [])(Map * ) = {processMouseDrawMode , processMouseDragMode , processMouseSelectMode , processMouseFillMode };
1080+ Handlers [map -> mode ](map );
1081+ }
10831082}
10841083
10851084static void undo (Map * map )
@@ -1283,8 +1282,8 @@ static void overline(tic_mem* tic, void* data)
12831282
12841283 {
12851284 tic_rect rect = {MAP_X , MAP_Y , MAP_WIDTH , MAP_HEIGHT };
1286- if (!sheetVisible (map ) && checkMousePos (& rect ))
1287- {
1285+ if (!sheetVisible (map ) && checkMousePos (& rect ) && ! tic_api_key ( tic , tic_key_space ) )
1286+ {
12881287 switch (map -> mode )
12891288 {
12901289 case MAP_DRAW_MODE :
0 commit comments