Recovering the onscreen keyboard when returning from things like open, new, print...
This commit is contained in:
parent
f471b824db
commit
a35208c8d0
1 changed files with 116 additions and 15 deletions
131
src/tuxpaint.c
131
src/tuxpaint.c
|
|
@ -2166,7 +2166,18 @@ static void mainloop(void)
|
||||||
magic_switchout(canvas);
|
magic_switchout(canvas);
|
||||||
done = do_quit(cur_tool);
|
done = do_quit(cur_tool);
|
||||||
if (!done)
|
if (!done)
|
||||||
|
{
|
||||||
magic_switchin(canvas);
|
magic_switchin(canvas);
|
||||||
|
|
||||||
|
if (cur_tool == TOOL_TEXT || cur_tool == TOOL_LABEL)
|
||||||
|
{
|
||||||
|
if (onscreen_keyboard && kbd)
|
||||||
|
{
|
||||||
|
SDL_BlitSurface(kbd->surface, &kbd->rect, screen, &kbd_rect);
|
||||||
|
update_screen_rect(&kbd_rect);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else if (event.type == SDL_ACTIVEEVENT)
|
else if (event.type == SDL_ACTIVEEVENT)
|
||||||
{
|
{
|
||||||
|
|
@ -2231,7 +2242,18 @@ static void mainloop(void)
|
||||||
magic_switchout(canvas);
|
magic_switchout(canvas);
|
||||||
done = do_quit(cur_tool);
|
done = do_quit(cur_tool);
|
||||||
if (!done)
|
if (!done)
|
||||||
|
{
|
||||||
magic_switchin(canvas);
|
magic_switchin(canvas);
|
||||||
|
|
||||||
|
if (cur_tool == TOOL_TEXT || cur_tool == TOOL_LABEL)
|
||||||
|
{
|
||||||
|
if (onscreen_keyboard && kbd)
|
||||||
|
{
|
||||||
|
SDL_BlitSurface(kbd->surface, &kbd->rect, screen, &kbd_rect);
|
||||||
|
update_screen_rect(&kbd_rect);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else if (key == SDLK_s && (mod & KMOD_ALT))
|
else if (key == SDLK_s && (mod & KMOD_ALT))
|
||||||
{
|
{
|
||||||
|
|
@ -2360,7 +2382,14 @@ static void mainloop(void)
|
||||||
else if (cur_tool == TOOL_STAMP)
|
else if (cur_tool == TOOL_STAMP)
|
||||||
draw_stamps();
|
draw_stamps();
|
||||||
else if (cur_tool == TOOL_TEXT ||cur_tool == TOOL_LABEL)
|
else if (cur_tool == TOOL_TEXT ||cur_tool == TOOL_LABEL)
|
||||||
|
{
|
||||||
draw_fonts();
|
draw_fonts();
|
||||||
|
if (onscreen_keyboard && kbd)
|
||||||
|
{
|
||||||
|
SDL_BlitSurface(kbd->surface, &kbd->rect, screen, &kbd_rect);
|
||||||
|
update_screen_rect(&kbd_rect);
|
||||||
|
}
|
||||||
|
}
|
||||||
else if (cur_tool == TOOL_SHAPES)
|
else if (cur_tool == TOOL_SHAPES)
|
||||||
draw_shapes();
|
draw_shapes();
|
||||||
else if (cur_tool == TOOL_ERASER)
|
else if (cur_tool == TOOL_ERASER)
|
||||||
|
|
@ -2408,7 +2437,14 @@ static void mainloop(void)
|
||||||
else if (cur_tool == TOOL_STAMP)
|
else if (cur_tool == TOOL_STAMP)
|
||||||
draw_stamps();
|
draw_stamps();
|
||||||
else if (cur_tool == TOOL_TEXT || cur_tool == TOOL_LABEL)
|
else if (cur_tool == TOOL_TEXT || cur_tool == TOOL_LABEL)
|
||||||
|
{
|
||||||
draw_fonts();
|
draw_fonts();
|
||||||
|
if (onscreen_keyboard && kbd)
|
||||||
|
{
|
||||||
|
SDL_BlitSurface(kbd->surface, &kbd->rect, screen, &kbd_rect);
|
||||||
|
update_screen_rect(&kbd_rect);
|
||||||
|
}
|
||||||
|
}
|
||||||
else if (cur_tool == TOOL_SHAPES)
|
else if (cur_tool == TOOL_SHAPES)
|
||||||
draw_shapes();
|
draw_shapes();
|
||||||
else if (cur_tool == TOOL_ERASER)
|
else if (cur_tool == TOOL_ERASER)
|
||||||
|
|
@ -2433,7 +2469,15 @@ static void mainloop(void)
|
||||||
|
|
||||||
draw_toolbar();
|
draw_toolbar();
|
||||||
update_screen_rect(&r_tools);
|
update_screen_rect(&r_tools);
|
||||||
|
if (cur_tool == TOOL_TEXT || cur_tool == TOOL_LABEL)
|
||||||
|
{
|
||||||
|
if (onscreen_keyboard && kbd)
|
||||||
|
{
|
||||||
|
SDL_BlitSurface(kbd->surface, &kbd->rect, screen, &kbd_rect);
|
||||||
|
update_screen_rect(&kbd_rect);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
magic_switchin(canvas);
|
magic_switchin(canvas);
|
||||||
}
|
}
|
||||||
#ifdef __APPLE__
|
#ifdef __APPLE__
|
||||||
|
|
@ -2459,6 +2503,15 @@ static void mainloop(void)
|
||||||
undo_tmp_applied_text();
|
undo_tmp_applied_text();
|
||||||
magic_switchin(canvas);
|
magic_switchin(canvas);
|
||||||
|
|
||||||
|
if (cur_tool == TOOL_TEXT || cur_tool == TOOL_LABEL)
|
||||||
|
{
|
||||||
|
if (onscreen_keyboard && kbd)
|
||||||
|
{
|
||||||
|
SDL_BlitSurface(kbd->surface, &kbd->rect, screen, &kbd_rect);
|
||||||
|
update_screen_rect(&kbd_rect);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
draw_toolbar();
|
draw_toolbar();
|
||||||
draw_tux_text(TUX_BORED, "", 0);
|
draw_tux_text(TUX_BORED, "", 0);
|
||||||
update_screen_rect(&r_tools);
|
update_screen_rect(&r_tools);
|
||||||
|
|
@ -2992,10 +3045,8 @@ static void mainloop(void)
|
||||||
cur_thing = cur_font;
|
cur_thing = cur_font;
|
||||||
num_things = num_font_families;
|
num_things = num_font_families;
|
||||||
thing_scroll = &font_scroll;
|
thing_scroll = &font_scroll;
|
||||||
if (cur_tool == TOOL_LABEL)
|
cur_label = LABEL_LABEL;
|
||||||
{
|
|
||||||
cur_label = LABEL_LABEL;
|
|
||||||
}
|
|
||||||
draw_fonts();
|
draw_fonts();
|
||||||
draw_colors(COLORSEL_ENABLE);
|
draw_colors(COLORSEL_ENABLE);
|
||||||
}
|
}
|
||||||
|
|
@ -3097,7 +3148,14 @@ static void mainloop(void)
|
||||||
else if (cur_tool == TOOL_STAMP)
|
else if (cur_tool == TOOL_STAMP)
|
||||||
draw_stamps();
|
draw_stamps();
|
||||||
else if (cur_tool == TOOL_TEXT || cur_tool == TOOL_LABEL)
|
else if (cur_tool == TOOL_TEXT || cur_tool == TOOL_LABEL)
|
||||||
|
{
|
||||||
draw_fonts();
|
draw_fonts();
|
||||||
|
if (onscreen_keyboard && kbd)
|
||||||
|
{
|
||||||
|
SDL_BlitSurface(kbd->surface, &kbd->rect, screen, &kbd_rect);
|
||||||
|
update_screen_rect(&kbd_rect);
|
||||||
|
}
|
||||||
|
}
|
||||||
else if (cur_tool == TOOL_SHAPES)
|
else if (cur_tool == TOOL_SHAPES)
|
||||||
draw_shapes();
|
draw_shapes();
|
||||||
else if (cur_tool == TOOL_ERASER)
|
else if (cur_tool == TOOL_ERASER)
|
||||||
|
|
@ -3111,6 +3169,15 @@ static void mainloop(void)
|
||||||
tool_avail[TOOL_SAVE] = 0;
|
tool_avail[TOOL_SAVE] = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (old_tool == TOOL_TEXT || old_tool == TOOL_LABEL)
|
||||||
|
{
|
||||||
|
if (onscreen_keyboard && kbd)
|
||||||
|
{
|
||||||
|
SDL_BlitSurface(kbd->surface, &kbd->rect, screen, &kbd_rect);
|
||||||
|
update_screen_rect(&kbd_rect);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
cur_tool = old_tool;
|
cur_tool = old_tool;
|
||||||
draw_toolbar();
|
draw_toolbar();
|
||||||
update_screen_rect(&r_tools);
|
update_screen_rect(&r_tools);
|
||||||
|
|
@ -3149,7 +3216,14 @@ static void mainloop(void)
|
||||||
else if (cur_tool == TOOL_STAMP)
|
else if (cur_tool == TOOL_STAMP)
|
||||||
draw_stamps();
|
draw_stamps();
|
||||||
else if (cur_tool == TOOL_TEXT || cur_tool == TOOL_LABEL)
|
else if (cur_tool == TOOL_TEXT || cur_tool == TOOL_LABEL)
|
||||||
|
{
|
||||||
draw_fonts();
|
draw_fonts();
|
||||||
|
if (onscreen_keyboard && kbd)
|
||||||
|
{
|
||||||
|
SDL_BlitSurface(kbd->surface, &kbd->rect, screen, &kbd_rect);
|
||||||
|
update_screen_rect(&kbd_rect);
|
||||||
|
}
|
||||||
|
}
|
||||||
else if (cur_tool == TOOL_SHAPES)
|
else if (cur_tool == TOOL_SHAPES)
|
||||||
draw_shapes();
|
draw_shapes();
|
||||||
else if (cur_tool == TOOL_ERASER)
|
else if (cur_tool == TOOL_ERASER)
|
||||||
|
|
@ -3158,19 +3232,38 @@ static void mainloop(void)
|
||||||
else if (cur_tool == TOOL_PRINT)
|
else if (cur_tool == TOOL_PRINT)
|
||||||
{
|
{
|
||||||
/* If they haven't hit [Enter], but clicked 'Print', add their text now -bjk 2007.10.25 */
|
/* If they haven't hit [Enter], but clicked 'Print', add their text now -bjk 2007.10.25 */
|
||||||
tmp_apply_uncommited_text();
|
tmp_apply_uncommited_text();
|
||||||
/* original print code was here */
|
/* original print code was here */
|
||||||
print_image();
|
print_image();
|
||||||
undo_tmp_applied_text();
|
undo_tmp_applied_text();
|
||||||
|
|
||||||
cur_tool = old_tool;
|
if (old_tool == TOOL_TEXT || old_tool == TOOL_LABEL)
|
||||||
draw_toolbar();
|
{
|
||||||
draw_tux_text(TUX_BORED, "", 0);
|
if (onscreen_keyboard && kbd)
|
||||||
update_screen_rect(&r_tools);
|
{
|
||||||
|
SDL_BlitSurface(kbd->surface, &kbd->rect, screen, &kbd_rect);
|
||||||
|
update_screen_rect(&kbd_rect);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
cur_tool = old_tool;
|
||||||
|
draw_toolbar();
|
||||||
|
draw_tux_text(TUX_BORED, "", 0);
|
||||||
|
update_screen_rect(&r_tools);
|
||||||
}
|
}
|
||||||
else if (cur_tool == TOOL_QUIT)
|
else if (cur_tool == TOOL_QUIT)
|
||||||
{
|
{
|
||||||
done = do_quit(old_tool);
|
done = do_quit(old_tool);
|
||||||
|
|
||||||
|
if (old_tool == TOOL_TEXT || old_tool == TOOL_LABEL)
|
||||||
|
{
|
||||||
|
if (onscreen_keyboard && kbd)
|
||||||
|
{
|
||||||
|
SDL_BlitSurface(kbd->surface, &kbd->rect, screen, &kbd_rect);
|
||||||
|
update_screen_rect(&kbd_rect);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
cur_tool = old_tool;
|
cur_tool = old_tool;
|
||||||
draw_toolbar();
|
draw_toolbar();
|
||||||
update_screen_rect(&r_tools);
|
update_screen_rect(&r_tools);
|
||||||
|
|
@ -3941,6 +4034,14 @@ static void mainloop(void)
|
||||||
|
|
||||||
do_color_picker();
|
do_color_picker();
|
||||||
|
|
||||||
|
if (cur_tool == TOOL_TEXT || cur_tool == TOOL_LABEL)
|
||||||
|
{
|
||||||
|
if (onscreen_keyboard && kbd)
|
||||||
|
{
|
||||||
|
SDL_BlitSurface(kbd->surface, &kbd->rect, screen, &kbd_rect);
|
||||||
|
update_screen_rect(&kbd_rect);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
enable_avail_tools();
|
enable_avail_tools();
|
||||||
draw_toolbar();
|
draw_toolbar();
|
||||||
|
|
@ -4253,7 +4354,7 @@ static void mainloop(void)
|
||||||
}
|
}
|
||||||
*/
|
*/
|
||||||
}
|
}
|
||||||
if (onscreen_keyboard && HIT(kbd_rect))
|
if (onscreen_keyboard && HIT(kbd_rect) && !(cur_tool == TOOL_LABEL && cur_label == LABEL_SELECT))
|
||||||
{
|
{
|
||||||
new_kbd = osk_clicked(kbd, old_x - kbd_rect.x + r_canvas.x, old_y - kbd_rect.y + r_canvas.y);
|
new_kbd = osk_clicked(kbd, old_x - kbd_rect.x + r_canvas.x, old_y - kbd_rect.y + r_canvas.y);
|
||||||
/* keyboard has changed, erase the old, note that the old kbd has yet been freed. */
|
/* keyboard has changed, erase the old, note that the old kbd has yet been freed. */
|
||||||
|
|
@ -4277,7 +4378,7 @@ static void mainloop(void)
|
||||||
cursor_y = old_y;
|
cursor_y = old_y;
|
||||||
cursor_left = old_x;
|
cursor_left = old_x;
|
||||||
|
|
||||||
if (onscreen_keyboard)
|
if (onscreen_keyboard && !(cur_tool == TOOL_LABEL && cur_label == LABEL_SELECT))
|
||||||
{
|
{
|
||||||
if (old_y < r_canvas.h/2)
|
if (old_y < r_canvas.h/2)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue