Correctly filling some mouse events (SDL_PushEvent() takes an SDL_Event, but we were sending it an SDL_MouseButtonEvent).
Added a missing prototype. Removed, or wrapped in #ifdef DEBUG, some otherwise unused variables. Only warping mouse on keyboard handling IF KEYPRESS MOVED THE MOUSE! (Avoids mouse flying around when using keyboard shortcuts, etc.)
This commit is contained in:
parent
8836f4303e
commit
2eaeb19acd
1 changed files with 42 additions and 34 deletions
|
|
@ -22,7 +22,7 @@
|
||||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
(See COPYING.txt)
|
(See COPYING.txt)
|
||||||
|
|
||||||
June 14, 2002 - April 27, 2011
|
June 14, 2002 - May 25, 2011
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -1624,6 +1624,7 @@ static void blit_brush(int x, int y, int direction);
|
||||||
static void stamp_draw(int x, int y);
|
static void stamp_draw(int x, int y);
|
||||||
static void rec_undo_buffer(void);
|
static void rec_undo_buffer(void);
|
||||||
|
|
||||||
|
void show_version(int details);
|
||||||
void show_usage(int exitcode);
|
void show_usage(int exitcode);
|
||||||
static char *progname;
|
static char *progname;
|
||||||
|
|
||||||
|
|
@ -2029,7 +2030,7 @@ int cur_thing, shift_flag, caps_flag, enter_flag;
|
||||||
static void mainloop(void)
|
static void mainloop(void)
|
||||||
{
|
{
|
||||||
int done, tool_flag, canvas_flag,text_flag, val_x, val_y, new_x, new_y,
|
int done, tool_flag, canvas_flag,text_flag, val_x, val_y, new_x, new_y,
|
||||||
line_end_x, line_end_y, shape_tool_mode,
|
shape_tool_mode,
|
||||||
shape_ctr_x, shape_ctr_y, shape_outer_x, shape_outer_y, color_flag,
|
shape_ctr_x, shape_ctr_y, shape_outer_x, shape_outer_y, color_flag,
|
||||||
old_stamp_group, which;
|
old_stamp_group, which;
|
||||||
int num_things;
|
int num_things;
|
||||||
|
|
@ -2056,7 +2057,7 @@ static void mainloop(void)
|
||||||
Uint16 key_unicode;
|
Uint16 key_unicode;
|
||||||
SDLKey key_down;
|
SDLKey key_down;
|
||||||
#endif
|
#endif
|
||||||
SDL_MouseButtonEvent ev;
|
SDL_Event ev;
|
||||||
num_things = num_brushes;
|
num_things = num_brushes;
|
||||||
thing_scroll = &brush_scroll;
|
thing_scroll = &brush_scroll;
|
||||||
cur_thing = 0;
|
cur_thing = 0;
|
||||||
|
|
@ -2112,7 +2113,7 @@ static void mainloop(void)
|
||||||
/* Reset Shapes tool and clean the canvas if we lose focus*/
|
/* Reset Shapes tool and clean the canvas if we lose focus*/
|
||||||
if (mouseaccessibility && emulate_button_pressed &&
|
if (mouseaccessibility && emulate_button_pressed &&
|
||||||
((cur_tool == TOOL_SHAPES && shape_tool_mode != SHAPE_TOOL_MODE_DONE) || cur_tool == TOOL_LINES) &&
|
((cur_tool == TOOL_SHAPES && shape_tool_mode != SHAPE_TOOL_MODE_DONE) || cur_tool == TOOL_LINES) &&
|
||||||
event.active.state & SDL_APPINPUTFOCUS|SDL_APPACTIVE &&
|
event.active.state & (SDL_APPINPUTFOCUS|SDL_APPACTIVE) &&
|
||||||
event.active.gain == 0)
|
event.active.gain == 0)
|
||||||
{
|
{
|
||||||
do_undo();
|
do_undo();
|
||||||
|
|
@ -2132,11 +2133,11 @@ static void mainloop(void)
|
||||||
|
|
||||||
if (key == SDLK_BACKSLASH)
|
if (key == SDLK_BACKSLASH)
|
||||||
{
|
{
|
||||||
ev.which = 0;
|
|
||||||
ev.type = SDL_MOUSEBUTTONUP;
|
ev.type = SDL_MOUSEBUTTONUP;
|
||||||
ev.state = SDL_RELEASED;
|
ev.button.which = 0;
|
||||||
ev.button = SDL_BUTTON_LEFT;
|
ev.button.state = SDL_RELEASED;
|
||||||
SDL_PushEvent(&ev);
|
ev.button.button = SDL_BUTTON_LEFT;
|
||||||
|
SDL_PushEvent(&ev);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -2485,12 +2486,12 @@ static void mainloop(void)
|
||||||
|
|
||||||
if (key == SDLK_RETURN && color_flag == 1)
|
if (key == SDLK_RETURN && color_flag == 1)
|
||||||
{
|
{
|
||||||
ev.which = 0;
|
|
||||||
ev.type = SDL_MOUSEBUTTONDOWN;
|
ev.type = SDL_MOUSEBUTTONDOWN;
|
||||||
ev.state = SDL_PRESSED;
|
ev.button.which = 0;
|
||||||
ev.x = button_w * 2 + whichc * color_button_w + 12;
|
ev.button.state = SDL_PRESSED;
|
||||||
ev.y = r_canvas.h + (r_colors.h / 2);
|
ev.button.x = button_w * 2 + whichc * color_button_w + 12;
|
||||||
ev.button = SDL_BUTTON_LEFT;
|
ev.button.y = r_canvas.h + (r_colors.h / 2);
|
||||||
|
ev.button.button = SDL_BUTTON_LEFT;
|
||||||
SDL_PushEvent(&ev);
|
SDL_PushEvent(&ev);
|
||||||
playsound(screen, 1, SND_CLICK, 0, SNDPOS_LEFT, SNDDIST_NEAR);
|
playsound(screen, 1, SND_CLICK, 0, SNDPOS_LEFT, SNDDIST_NEAR);
|
||||||
update_screen(0,0,WINDOW_WIDTH,WINDOW_HEIGHT);
|
update_screen(0,0,WINDOW_WIDTH,WINDOW_HEIGHT);
|
||||||
|
|
@ -2498,20 +2499,20 @@ static void mainloop(void)
|
||||||
|
|
||||||
if (key == SDLK_RETURN && (tool_flag == 1))
|
if (key == SDLK_RETURN && (tool_flag == 1))
|
||||||
{
|
{
|
||||||
ev.which = 0;
|
|
||||||
ev.type = SDL_MOUSEBUTTONDOWN;
|
ev.type = SDL_MOUSEBUTTONDOWN;
|
||||||
ev.state = SDL_PRESSED;
|
ev.button.which = 0;
|
||||||
|
ev.button.state = SDL_PRESSED;
|
||||||
if (whicht%2 == 0)
|
if (whicht%2 == 0)
|
||||||
{
|
{
|
||||||
ev.x = button_w / 2;
|
ev.button.x = button_w / 2;
|
||||||
ev.y = button_h + (whicht * (button_h / 2));
|
ev.button.y = button_h + (whicht * (button_h / 2));
|
||||||
}
|
}
|
||||||
else if (whicht%2 != 0)
|
else if (whicht%2 != 0)
|
||||||
{
|
{
|
||||||
ev.x = (button_w * 3) / 2;
|
ev.button.x = (button_w * 3) / 2;
|
||||||
ev.y = button_h / 2 + (whicht * (button_h / 2));
|
ev.button.y = button_h / 2 + (whicht * (button_h / 2));
|
||||||
}
|
}
|
||||||
ev.button = SDL_BUTTON_LEFT;
|
ev.button.button = SDL_BUTTON_LEFT;
|
||||||
SDL_PushEvent(&ev);
|
SDL_PushEvent(&ev);
|
||||||
playsound(screen, 1, SND_CLICK, 0, SNDPOS_LEFT, SNDDIST_NEAR);
|
playsound(screen, 1, SND_CLICK, 0, SNDPOS_LEFT, SNDDIST_NEAR);
|
||||||
update_screen(0,0,WINDOW_WIDTH,WINDOW_HEIGHT);
|
update_screen(0,0,WINDOW_WIDTH,WINDOW_HEIGHT);
|
||||||
|
|
@ -2519,12 +2520,12 @@ static void mainloop(void)
|
||||||
|
|
||||||
if ((key == SDLK_BACKSLASH || key == SDLK_5) && (canvas_flag == 1))
|
if ((key == SDLK_BACKSLASH || key == SDLK_5) && (canvas_flag == 1))
|
||||||
{
|
{
|
||||||
ev.which = 0;
|
|
||||||
ev.type = SDL_MOUSEBUTTONDOWN;
|
ev.type = SDL_MOUSEBUTTONDOWN;
|
||||||
ev.state = SDL_PRESSED;
|
ev.button.which = 0;
|
||||||
ev.x = old_x + button_w * 2;
|
ev.button.state = SDL_PRESSED;
|
||||||
ev.y = old_y;
|
ev.button.x = old_x + button_w * 2;
|
||||||
ev.button = SDL_BUTTON_LEFT;
|
ev.button.y = old_y;
|
||||||
|
ev.button.button = SDL_BUTTON_LEFT;
|
||||||
SDL_PushEvent(&ev);
|
SDL_PushEvent(&ev);
|
||||||
playsound(screen, 1, SND_CLICK, 0, SNDPOS_LEFT, SNDDIST_NEAR);
|
playsound(screen, 1, SND_CLICK, 0, SNDPOS_LEFT, SNDDIST_NEAR);
|
||||||
update_screen(0,0,WINDOW_WIDTH,WINDOW_HEIGHT);
|
update_screen(0,0,WINDOW_WIDTH,WINDOW_HEIGHT);
|
||||||
|
|
@ -3187,12 +3188,12 @@ static void mainloop(void)
|
||||||
if (event.jbutton.button == 0)
|
if (event.jbutton.button == 0)
|
||||||
{
|
{
|
||||||
// printf("\n button pressed \n");
|
// printf("\n button pressed \n");
|
||||||
ev.which = 0;
|
|
||||||
ev.type = SDL_MOUSEBUTTONDOWN;
|
ev.type = SDL_MOUSEBUTTONDOWN;
|
||||||
ev.state = SDL_PRESSED;
|
ev.button.which = 0;
|
||||||
ev.x = old_x + button_w * 2;
|
ev.button.state = SDL_PRESSED;
|
||||||
ev.y = old_y;
|
ev.button.x = old_x + button_w * 2;
|
||||||
ev.button = SDL_BUTTON_LEFT;
|
ev.button.y = old_y;
|
||||||
|
ev.button.button = SDL_BUTTON_LEFT;
|
||||||
SDL_PushEvent(&ev);
|
SDL_PushEvent(&ev);
|
||||||
playsound(screen, 1, SND_CLICK, 0, SNDPOS_LEFT, SNDDIST_NEAR);
|
playsound(screen, 1, SND_CLICK, 0, SNDPOS_LEFT, SNDDIST_NEAR);
|
||||||
update_screen(0,0,WINDOW_WIDTH,WINDOW_HEIGHT);
|
update_screen(0,0,WINDOW_WIDTH,WINDOW_HEIGHT);
|
||||||
|
|
@ -3206,10 +3207,10 @@ static void mainloop(void)
|
||||||
if (event.jbutton.button == 0)
|
if (event.jbutton.button == 0)
|
||||||
{
|
{
|
||||||
// printf("\n button released \n");
|
// printf("\n button released \n");
|
||||||
ev.which = 0;
|
|
||||||
ev.type = SDL_MOUSEBUTTONUP;
|
ev.type = SDL_MOUSEBUTTONUP;
|
||||||
ev.state = SDL_RELEASED;
|
ev.button.which = 0;
|
||||||
ev.button = SDL_BUTTON_LEFT;
|
ev.button.state = SDL_RELEASED;
|
||||||
|
ev.button.button = SDL_BUTTON_LEFT;
|
||||||
SDL_PushEvent(&ev);
|
SDL_PushEvent(&ev);
|
||||||
update_screen(0,0,WINDOW_WIDTH,WINDOW_HEIGHT);
|
update_screen(0,0,WINDOW_WIDTH,WINDOW_HEIGHT);
|
||||||
}
|
}
|
||||||
|
|
@ -3758,7 +3759,9 @@ static void mainloop(void)
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
int old_size;
|
int old_size;
|
||||||
|
#ifdef DEBUG
|
||||||
float choice;
|
float choice;
|
||||||
|
#endif
|
||||||
|
|
||||||
old_size = stamp_data[stamp_group][cur_stamp[stamp_group]]->size;
|
old_size = stamp_data[stamp_group][cur_stamp[stamp_group]]->size;
|
||||||
|
|
||||||
|
|
@ -16519,9 +16522,13 @@ static void draw_image_title(int t, SDL_Rect dest)
|
||||||
static void handle_keymouse(SDLKey key, Uint8 updown)
|
static void handle_keymouse(SDLKey key, Uint8 updown)
|
||||||
{
|
{
|
||||||
SDL_Event event;
|
SDL_Event event;
|
||||||
|
int old_mouse_x, old_mouse_y;
|
||||||
|
|
||||||
if (keymouse)
|
if (keymouse)
|
||||||
{
|
{
|
||||||
|
old_mouse_x = mouse_x;
|
||||||
|
old_mouse_y = mouse_y;
|
||||||
|
|
||||||
if (key == SDLK_LEFT)
|
if (key == SDLK_LEFT)
|
||||||
mousekey_left = updown;
|
mousekey_left = updown;
|
||||||
else if (key == SDLK_RIGHT)
|
else if (key == SDLK_RIGHT)
|
||||||
|
|
@ -16554,7 +16561,8 @@ static void handle_keymouse(SDLKey key, Uint8 updown)
|
||||||
if (mousekey_right == SDL_KEYDOWN && mouse_x < WINDOW_WIDTH - 1)
|
if (mousekey_right == SDL_KEYDOWN && mouse_x < WINDOW_WIDTH - 1)
|
||||||
mouse_x = mouse_x + 8;
|
mouse_x = mouse_x + 8;
|
||||||
|
|
||||||
SDL_WarpMouse(mouse_x, mouse_y);
|
if (mouse_x != old_mouse_x || mouse_y != old_mouse_y) /* Only move mouse if the keypress did something (else, mouse repositions all the time: annoying!) -bjk 2011.05.25 */
|
||||||
|
SDL_WarpMouse(mouse_x, mouse_y);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue