Was losing uncommited text when quitting.
Freeing onscreen keyboard stuff, buttons for changing the keyboard are btnoff if disable change is active.
This commit is contained in:
parent
0f448d1fe4
commit
010eb89fe8
2 changed files with 190 additions and 32 deletions
|
|
@ -111,7 +111,7 @@ static struct osk_layout *load_layout(on_screen_keyboard *keyboard, char *layout
|
||||||
filename = malloc(255);
|
filename = malloc(255);
|
||||||
if (layout_name != NULL)
|
if (layout_name != NULL)
|
||||||
{
|
{
|
||||||
keyboard->name = layout_name;
|
keyboard->name = strdup(layout_name);
|
||||||
|
|
||||||
/* Try full path */
|
/* Try full path */
|
||||||
fi = fopen(layout_name, "r");
|
fi = fopen(layout_name, "r");
|
||||||
|
|
@ -267,6 +267,8 @@ void load_hlayout(osk_layout *layout, char * hlayout_name)
|
||||||
{
|
{
|
||||||
layout->keys[0][i].width = 0;
|
layout->keys[0][i].width = 0;
|
||||||
layout->keys[0][i].plain_label = NULL;
|
layout->keys[0][i].plain_label = NULL;
|
||||||
|
layout->keys[ line_number][i].top_label=NULL;
|
||||||
|
layout->keys[ line_number][i].altgr_label=NULL;
|
||||||
}
|
}
|
||||||
layout->width = width;
|
layout->width = width;
|
||||||
layout->height = height;
|
layout->height = height;
|
||||||
|
|
@ -323,7 +325,12 @@ void load_hlayout(osk_layout *layout, char * hlayout_name)
|
||||||
key_number = 0;
|
key_number = 0;
|
||||||
layout->keys[line_number] = malloc(width * sizeof(osk_key));
|
layout->keys[line_number] = malloc(width * sizeof(osk_key));
|
||||||
for (i = 0; i< width; i++)
|
for (i = 0; i< width; i++)
|
||||||
|
{
|
||||||
layout->keys[line_number][i].width = 0;
|
layout->keys[line_number][i].width = 0;
|
||||||
|
layout->keys[ line_number][i].plain_label=NULL;
|
||||||
|
layout->keys[ line_number][i].top_label=NULL;
|
||||||
|
layout->keys[ line_number][i].altgr_label=NULL;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -360,6 +367,9 @@ void load_hlayout(osk_layout *layout, char * hlayout_name)
|
||||||
free(fontpath);
|
free(fontpath);
|
||||||
layout->fontpath = NULL;
|
layout->fontpath = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
free(line);
|
||||||
|
free(key);
|
||||||
/* int j; */
|
/* int j; */
|
||||||
/* for(i = 0; i<= line_number; i++) */
|
/* for(i = 0; i<= line_number; i++) */
|
||||||
/* { */
|
/* { */
|
||||||
|
|
@ -381,7 +391,7 @@ void load_hlayout(osk_layout *layout, char * hlayout_name)
|
||||||
/* A keymap contains the keysyms (X keysym mnemonics) associated to each keycode in the hlayout.*/
|
/* A keymap contains the keysyms (X keysym mnemonics) associated to each keycode in the hlayout.*/
|
||||||
void load_keymap(osk_layout *layout, char * keymap_name)
|
void load_keymap(osk_layout *layout, char * keymap_name)
|
||||||
{
|
{
|
||||||
int keycode, readed;
|
int i, keycode, readed;
|
||||||
char *filename;
|
char *filename;
|
||||||
char *ksname1, *ksname2, *ksname3, *ksname4;
|
char *ksname1, *ksname2, *ksname3, *ksname4;
|
||||||
char *line;
|
char *line;
|
||||||
|
|
@ -411,6 +421,15 @@ void load_keymap(osk_layout *layout, char * keymap_name)
|
||||||
line = malloc(1024);
|
line = malloc(1024);
|
||||||
layout->keymap = malloc(256 * sizeof(osk_keymap));
|
layout->keymap = malloc(256 * sizeof(osk_keymap));
|
||||||
|
|
||||||
|
for (i = 0;i < 256; i++)
|
||||||
|
{
|
||||||
|
layout->keymap[i].plain = NULL;
|
||||||
|
layout->keymap[i].caps = NULL;
|
||||||
|
layout->keymap[i].altgr = NULL;
|
||||||
|
layout->keymap[i].shiftaltgr = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
while (!feof(fi))
|
while (!feof(fi))
|
||||||
{
|
{
|
||||||
|
|
||||||
|
|
@ -429,6 +448,7 @@ void load_keymap(osk_layout *layout, char * keymap_name)
|
||||||
ksname4[0] = '\0';
|
ksname4[0] = '\0';
|
||||||
|
|
||||||
/* FIXME: Why is the us-intl keymap duplicating the two first entries of every keycode? */
|
/* FIXME: Why is the us-intl keymap duplicating the two first entries of every keycode? */
|
||||||
|
/* And why is the arabic keymap using the 5th and 6th entries as plain/shifted keys? */
|
||||||
readed = sscanf(line, "keycode %i = %s %s %*s %*s %s %s", &keycode,
|
readed = sscanf(line, "keycode %i = %s %s %*s %*s %s %s", &keycode,
|
||||||
ksname1, ksname2, ksname3, ksname4);
|
ksname1, ksname2, ksname3, ksname4);
|
||||||
|
|
||||||
|
|
@ -452,6 +472,7 @@ void load_keymap(osk_layout *layout, char * keymap_name)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
free(line);
|
||||||
/* int i; */
|
/* int i; */
|
||||||
/* for (i = 0; i < 256; i++) */
|
/* for (i = 0; i < 256; i++) */
|
||||||
/* { */
|
/* { */
|
||||||
|
|
@ -484,6 +505,7 @@ static void gettokens(wchar_t * line, wchar_t * delim, wchar_t ** pointer, osk_c
|
||||||
result = wcsdup(wcstok(line, L": \"\t", pointer));
|
result = wcsdup(wcstok(line, L": \"\t", pointer));
|
||||||
// printf("result %ls\n", result);
|
// printf("result %ls\n", result);
|
||||||
composenode->result = result;
|
composenode->result = result;
|
||||||
|
free(tok);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|
@ -513,6 +535,7 @@ static void gettokens(wchar_t * line, wchar_t * delim, wchar_t ** pointer, osk_c
|
||||||
// printf("Size %d, keysym %ls =>", composenode->size, composenode->childs[i]->keysym);
|
// printf("Size %d, keysym %ls =>", composenode->size, composenode->childs[i]->keysym);
|
||||||
|
|
||||||
gettokens(NULL, delim, pointer, composenode->childs[i], layout);
|
gettokens(NULL, delim, pointer, composenode->childs[i], layout);
|
||||||
|
free(tok);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -570,6 +593,8 @@ static void load_composemap(osk_layout *layout, char * composemap_name)
|
||||||
|
|
||||||
layout->composemap = malloc(sizeof(osk_composenode));
|
layout->composemap = malloc(sizeof(osk_composenode));
|
||||||
layout->composemap[0].keysym = NULL;
|
layout->composemap[0].keysym = NULL;
|
||||||
|
layout->composemap[0].result = NULL;
|
||||||
|
|
||||||
layout->composemap->size = 0;
|
layout->composemap->size = 0;
|
||||||
line = malloc(1024*sizeof(wchar_t));
|
line = malloc(1024*sizeof(wchar_t));
|
||||||
|
|
||||||
|
|
@ -585,7 +610,7 @@ static void load_composemap(osk_layout *layout, char * composemap_name)
|
||||||
|
|
||||||
fclose(fi);
|
fclose(fi);
|
||||||
free(line);
|
free(line);
|
||||||
|
free(pointer);
|
||||||
#ifdef DEBUG_OSK_COMPOSEMAP
|
#ifdef DEBUG_OSK_COMPOSEMAP
|
||||||
print_composemap(layout->composemap, NULL);
|
print_composemap(layout->composemap, NULL);
|
||||||
#endif
|
#endif
|
||||||
|
|
@ -766,7 +791,9 @@ static void get_composed_keysym(on_screen_keyboard * keyboard, osk_composenode *
|
||||||
/* If there is not a compose table return the keysym */
|
/* If there is not a compose table return the keysym */
|
||||||
if (! composenode)
|
if (! composenode)
|
||||||
{
|
{
|
||||||
keyboard->composed = keysym;
|
if (keyboard->composed)
|
||||||
|
free(keyboard->composed);
|
||||||
|
keyboard->composed = wcsdup(keysym);
|
||||||
keyboard->composed_type = 0;
|
keyboard->composed_type = 0;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
@ -779,7 +806,9 @@ static void get_composed_keysym(on_screen_keyboard * keyboard, osk_composenode *
|
||||||
{
|
{
|
||||||
if (composenode->childs[i]->result)
|
if (composenode->childs[i]->result)
|
||||||
{
|
{
|
||||||
keyboard->composed = composenode->childs[i]->result;
|
if(keyboard->composed)
|
||||||
|
free(keyboard->composed);
|
||||||
|
keyboard->composed = wcsdup(composenode->childs[i]->result);
|
||||||
keyboard->composing = keyboard->layout->composemap;
|
keyboard->composing = keyboard->layout->composemap;
|
||||||
/* The result in the Compose files from xorg is yet in unicode */
|
/* The result in the Compose files from xorg is yet in unicode */
|
||||||
keyboard->composed_type = 1;
|
keyboard->composed_type = 1;
|
||||||
|
|
@ -787,6 +816,8 @@ static void get_composed_keysym(on_screen_keyboard * keyboard, osk_composenode *
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
if(keyboard->composed)
|
||||||
|
free(keyboard->composed);
|
||||||
keyboard->composed = NULL;
|
keyboard->composed = NULL;
|
||||||
keyboard->composing = composenode->childs[i];
|
keyboard->composing = composenode->childs[i];
|
||||||
return;
|
return;
|
||||||
|
|
@ -799,12 +830,16 @@ static void get_composed_keysym(on_screen_keyboard * keyboard, osk_composenode *
|
||||||
|
|
||||||
if (keyboard->layout->composemap == composenode)
|
if (keyboard->layout->composemap == composenode)
|
||||||
{
|
{
|
||||||
keyboard->composed = keysym;
|
if(keyboard->composed)
|
||||||
|
free(keyboard->composed);
|
||||||
|
keyboard->composed = wcsdup(keysym);
|
||||||
keyboard->composed_type = 0;
|
keyboard->composed_type = 0;
|
||||||
}
|
}
|
||||||
else /* reset */
|
else /* reset */
|
||||||
{
|
{
|
||||||
keyboard->composing = keyboard->layout->composemap;
|
keyboard->composing = keyboard->layout->composemap;
|
||||||
|
if(keyboard->composed)
|
||||||
|
free(keyboard->composed);
|
||||||
keyboard->composed = NULL;
|
keyboard->composed = NULL;
|
||||||
keyboard->composed_type = 0;
|
keyboard->composed_type = 0;
|
||||||
}
|
}
|
||||||
|
|
@ -853,6 +888,8 @@ static int isw_blank_or_comment(wchar_t *line)
|
||||||
|
|
||||||
|
|
||||||
/* Fixme: Is it safe to supose that if a font is loaded at one size, it will be loaded at any size? */
|
/* Fixme: Is it safe to supose that if a font is loaded at one size, it will be loaded at any size? */
|
||||||
|
/* Fixme: sizes should be dynamically adapted to the button size */
|
||||||
|
/* Fixme: starting a layout with one font causes all other layouts be in that font */
|
||||||
static void keybd_prepare(on_screen_keyboard *keyboard)
|
static void keybd_prepare(on_screen_keyboard *keyboard)
|
||||||
{
|
{
|
||||||
char * fontname;
|
char * fontname;
|
||||||
|
|
@ -1054,6 +1091,9 @@ static void draw_key(osk_key key, on_screen_keyboard * keyboard, int hot)
|
||||||
{
|
{
|
||||||
if (key.keycode == 1 || key.keycode == 2)
|
if (key.keycode == 1 || key.keycode == 2)
|
||||||
{
|
{
|
||||||
|
if (keyboard->disable_change)
|
||||||
|
skey = stretch_surface(keyboard->button_off, key.width * keyboard->button_off->w);
|
||||||
|
else
|
||||||
skey = stretch_surface(keyboard->button_nav, key.width * keyboard->button_nav->w);
|
skey = stretch_surface(keyboard->button_nav, key.width * keyboard->button_nav->w);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|
@ -1114,6 +1154,7 @@ static osk_key * find_key(on_screen_keyboard * keyboard, int x, int y)
|
||||||
return key;
|
return key;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
free(key);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -1322,13 +1363,17 @@ struct osk_keyboard * osk_clicked(on_screen_keyboard *keyboard, int x, int y)
|
||||||
osk_key *key;
|
osk_key *key;
|
||||||
SDL_Event event;
|
SDL_Event event;
|
||||||
char *keysym, *mnemo;
|
char *keysym, *mnemo;
|
||||||
char *name, *aux_name, *aux_list;
|
char *name, *aux_name, *aux_list, *aux_list_ptr;
|
||||||
wchar_t *wkeysym;
|
wchar_t *wkeysym;
|
||||||
wchar_t *ks;
|
wchar_t *ks;
|
||||||
on_screen_keyboard * new_keyboard;
|
on_screen_keyboard * new_keyboard;
|
||||||
|
|
||||||
printf("list: %s\n", keyboard->keyboard_list);
|
printf("list: %s\n", keyboard->keyboard_list);
|
||||||
|
|
||||||
|
event.key.keysym.mod = KMOD_NONE;
|
||||||
|
event.key.keysym.sym = 0;
|
||||||
|
event.key.keysym.unicode = 0;
|
||||||
|
|
||||||
key = find_key(keyboard, x, y);
|
key = find_key(keyboard, x, y);
|
||||||
|
|
||||||
if (key)
|
if (key)
|
||||||
|
|
@ -1338,9 +1383,13 @@ struct osk_keyboard * osk_clicked(on_screen_keyboard *keyboard, int x, int y)
|
||||||
if (key->keycode == 1 || key->keycode == 2)
|
if (key->keycode == 1 || key->keycode == 2)
|
||||||
{
|
{
|
||||||
if (keyboard->disable_change)
|
if (keyboard->disable_change)
|
||||||
|
{
|
||||||
|
free(key);
|
||||||
return(keyboard);
|
return(keyboard);
|
||||||
|
}
|
||||||
|
|
||||||
aux_list = strdup(keyboard->keyboard_list);
|
aux_list = strdup(keyboard->keyboard_list);
|
||||||
|
aux_list_ptr = aux_list;
|
||||||
printf("auxlist: %s\n", aux_list);
|
printf("auxlist: %s\n", aux_list);
|
||||||
printf("kn %s\n", keyboard->name);
|
printf("kn %s\n", keyboard->name);
|
||||||
if (key->keycode == 1)
|
if (key->keycode == 1)
|
||||||
|
|
@ -1386,16 +1435,20 @@ struct osk_keyboard * osk_clicked(on_screen_keyboard *keyboard, int x, int y)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
new_keyboard = osk_create(strdup(name), keyboard->surface, keyboard->button_up, keyboard->button_down, keyboard->button_off, keyboard->button_nav, keyboard->disable_change);
|
new_keyboard = osk_create(name, keyboard->surface, keyboard->button_up, keyboard->button_down, keyboard->button_off, keyboard->button_nav, keyboard->disable_change);
|
||||||
printf("freeeeeeeeeeeeeeeeeeeeeee\n");
|
|
||||||
free(aux_list);
|
free(aux_list_ptr);
|
||||||
|
|
||||||
if (new_keyboard == NULL)
|
if (new_keyboard == NULL)
|
||||||
|
{
|
||||||
|
free(key);
|
||||||
return(keyboard); /* Don't break here, at least the old keyboard should work */
|
return(keyboard); /* Don't break here, at least the old keyboard should work */
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
free(new_keyboard->keyboard_list);
|
free(new_keyboard->keyboard_list);
|
||||||
new_keyboard->keyboard_list = strdup(keyboard->keyboard_list);
|
new_keyboard->keyboard_list = strdup(keyboard->keyboard_list);
|
||||||
|
free(key);
|
||||||
osk_free(keyboard);
|
osk_free(keyboard);
|
||||||
return(new_keyboard);
|
return(new_keyboard);
|
||||||
}
|
}
|
||||||
|
|
@ -1403,10 +1456,17 @@ struct osk_keyboard * osk_clicked(on_screen_keyboard *keyboard, int x, int y)
|
||||||
|
|
||||||
|
|
||||||
keysym = find_keysym(*key, keyboard);
|
keysym = find_keysym(*key, keyboard);
|
||||||
if (!keysym) return(keyboard);
|
if (!keysym)
|
||||||
|
{
|
||||||
|
free(key);
|
||||||
|
return(keyboard);
|
||||||
|
}
|
||||||
|
|
||||||
if (handle_keymods(keysym, *key, keyboard))
|
if (handle_keymods(keysym, *key, keyboard))
|
||||||
|
{
|
||||||
|
free(key);
|
||||||
return(keyboard); /* no more processing is needed */
|
return(keyboard); /* no more processing is needed */
|
||||||
|
}
|
||||||
|
|
||||||
draw_key(*key, keyboard, 1);
|
draw_key(*key, keyboard, 1);
|
||||||
|
|
||||||
|
|
@ -1416,8 +1476,7 @@ struct osk_keyboard * osk_clicked(on_screen_keyboard *keyboard, int x, int y)
|
||||||
strlen(keysym)+1,
|
strlen(keysym)+1,
|
||||||
NULL);
|
NULL);
|
||||||
|
|
||||||
printf("wkeysym %ls %i\n", wkeysym, wcslen(wkeysym));
|
printf("wkeysym %ls %i\n\n", wkeysym, wcslen(wkeysym));
|
||||||
printf("\n");
|
|
||||||
|
|
||||||
|
|
||||||
get_composed_keysym(keyboard, keyboard->composing, wkeysym);
|
get_composed_keysym(keyboard, keyboard->composing, wkeysym);
|
||||||
|
|
@ -1474,10 +1533,12 @@ struct osk_keyboard * osk_clicked(on_screen_keyboard *keyboard, int x, int y)
|
||||||
{
|
{
|
||||||
set_key(key, &keyboard->keymodifiers.compose, 0);
|
set_key(key, &keyboard->keymodifiers.compose, 0);
|
||||||
printf("still composing %d\n", (int)keyboard->composing);
|
printf("still composing %d\n", (int)keyboard->composing);
|
||||||
|
free(key);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
free(wkeysym);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
|
||||||
return(keyboard);
|
return(keyboard);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -1495,14 +1556,100 @@ void osk_released(on_screen_keyboard *keyboard)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static void free_keymap(osk_keymap *keymap)
|
||||||
void osk_free(on_screen_keyboard *osk)
|
|
||||||
{
|
{
|
||||||
/* FILLME */
|
int i;
|
||||||
printf("osk_free: FILLME.\n");
|
for (i=0; i<256; i++)
|
||||||
|
{
|
||||||
|
if (keymap[i].plain)
|
||||||
|
free(keymap[i].plain);
|
||||||
|
if (keymap[i].caps)
|
||||||
|
free(keymap[i].caps);
|
||||||
|
if (keymap[i].altgr)
|
||||||
|
free(keymap[i].altgr);
|
||||||
|
if (keymap[i].shiftaltgr)
|
||||||
|
free(keymap[i].shiftaltgr);
|
||||||
|
}
|
||||||
|
free(keymap);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void free_composemap(osk_composenode * composenode)
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
for(i = 0; i < composenode->size; i++)
|
||||||
|
{
|
||||||
|
free_composemap(composenode->childs[i]);
|
||||||
|
free(composenode->childs[i]);
|
||||||
|
}
|
||||||
|
if (composenode->result)
|
||||||
|
free(composenode->result);
|
||||||
|
else
|
||||||
|
free(composenode->childs);
|
||||||
|
|
||||||
|
if (composenode->keysym)
|
||||||
|
free(composenode->keysym);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void free_keysymdefs(keysymdefs *ksd, int size)
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
|
||||||
|
for (i = 0; i <= size; i++)
|
||||||
|
free(ksd[i].mnemo);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void free_keys(osk_layout *layout)
|
||||||
|
{
|
||||||
|
int i, j;
|
||||||
|
|
||||||
|
for (j = 0; j < layout->height; j++)
|
||||||
|
{
|
||||||
|
for (i = 0; i < layout->width; i++)
|
||||||
|
{
|
||||||
|
if (layout->keys[j][i].plain_label)
|
||||||
|
free(layout->keys[j][i].plain_label);
|
||||||
|
if (layout->keys[j][i].top_label)
|
||||||
|
free(layout->keys[j][i].top_label);
|
||||||
|
if (layout->keys[j][i].altgr_label)
|
||||||
|
free(layout->keys[j][i].altgr_label);
|
||||||
|
}
|
||||||
|
free(layout->keys[j]);
|
||||||
|
}
|
||||||
|
free(layout->keys);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void free_layout(osk_layout *layout)
|
||||||
|
{
|
||||||
|
// free(layout->name);
|
||||||
|
// free(layout->rows);
|
||||||
|
// free(layout->fontpath);
|
||||||
|
free_keys(layout);
|
||||||
|
free_keymap(layout->keymap);
|
||||||
|
free_composemap(layout->composemap);
|
||||||
|
free(layout->composemap);
|
||||||
|
|
||||||
|
free_keysymdefs(layout->keysymdefs, layout->sizeofkeysymdefs);
|
||||||
|
free(layout->keysymdefs);
|
||||||
|
free(layout);
|
||||||
|
}
|
||||||
|
|
||||||
|
void osk_free(on_screen_keyboard *keyboard)
|
||||||
|
{
|
||||||
|
free(keyboard->name);
|
||||||
|
free_layout(keyboard->layout);
|
||||||
|
if(keyboard->composed)
|
||||||
|
free(keyboard->composed);
|
||||||
|
if(keyboard->last_key_pressed)
|
||||||
|
free(keyboard->last_key_pressed);
|
||||||
|
if(keyboard->keyboard_list)
|
||||||
|
free(keyboard->keyboard_list);
|
||||||
|
SDL_FreeSurface(keyboard->surface);
|
||||||
|
set_key(NULL, &keyboard->keymodifiers.shift, 0);
|
||||||
|
set_key(NULL, &keyboard->keymodifiers.altgr, 0);
|
||||||
|
set_key(NULL, &keyboard->keymodifiers.compose, 0);
|
||||||
|
set_key(NULL, &keyboard->keymodifiers.dead, 0);
|
||||||
|
|
||||||
|
free(keyboard);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1023,6 +1023,7 @@ static int emulate_button_pressed = 0;
|
||||||
static int mouseaccessibility = 0;
|
static int mouseaccessibility = 0;
|
||||||
static int onscreen_keyboard = 0;
|
static int onscreen_keyboard = 0;
|
||||||
static char * onscreen_keyboard_layout = NULL;
|
static char * onscreen_keyboard_layout = NULL;
|
||||||
|
static on_screen_keyboard *kbd = NULL;
|
||||||
static int onscreen_keyboard_disable_change = 0;
|
static int onscreen_keyboard_disable_change = 0;
|
||||||
static int joystick_low_threshold = 3200;
|
static int joystick_low_threshold = 3200;
|
||||||
static int joystick_slowness = 15;
|
static int joystick_slowness = 15;
|
||||||
|
|
@ -2117,7 +2118,7 @@ static void mainloop(void)
|
||||||
SDLKey key_down;
|
SDLKey key_down;
|
||||||
#endif
|
#endif
|
||||||
SDL_Event ev;
|
SDL_Event ev;
|
||||||
on_screen_keyboard *kbd, *new_kbd;
|
on_screen_keyboard *new_kbd;
|
||||||
SDL_Rect kbd_rect;
|
SDL_Rect kbd_rect;
|
||||||
|
|
||||||
num_things = num_brushes;
|
num_things = num_brushes;
|
||||||
|
|
@ -3364,7 +3365,7 @@ static void mainloop(void)
|
||||||
if (onscreen_keyboard_layout)
|
if (onscreen_keyboard_layout)
|
||||||
kbd = osk_create(onscreen_keyboard_layout, screen, img_btnsm_up, img_btnsm_down, img_btnsm_off, img_btnsm_nav, onscreen_keyboard_disable_change);
|
kbd = osk_create(onscreen_keyboard_layout, screen, img_btnsm_up, img_btnsm_down, img_btnsm_off, img_btnsm_nav, onscreen_keyboard_disable_change);
|
||||||
else
|
else
|
||||||
kbd = osk_create("default", screen, img_btnsm_up, img_btnsm_down, img_btnsm_off, img_btnsm_nav, onscreen_keyboard_disable_change);
|
kbd = osk_create("default.layout", screen, img_btnsm_up, img_btnsm_down, img_btnsm_off, img_btnsm_nav, onscreen_keyboard_disable_change);
|
||||||
}
|
}
|
||||||
if (kbd == NULL)
|
if (kbd == NULL)
|
||||||
printf("kbd = NULL\n");
|
printf("kbd = NULL\n");
|
||||||
|
|
@ -12297,6 +12298,7 @@ static void cleanup(void)
|
||||||
free_surface(&img_btnsm_down);
|
free_surface(&img_btnsm_down);
|
||||||
|
|
||||||
free_surface(&img_btn_nav);
|
free_surface(&img_btn_nav);
|
||||||
|
free_surface(&img_btnsm_nav);
|
||||||
|
|
||||||
free_surface(&img_sfx);
|
free_surface(&img_sfx);
|
||||||
free_surface(&img_speak);
|
free_surface(&img_speak);
|
||||||
|
|
@ -12467,6 +12469,9 @@ static void cleanup(void)
|
||||||
free(lock_fname);
|
free(lock_fname);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (kbd)
|
||||||
|
osk_free(kbd);
|
||||||
|
|
||||||
#if !defined(WIN32) && !defined(__APPLE__) && !defined(__BEOS__)
|
#if !defined(WIN32) && !defined(__APPLE__) && !defined(__BEOS__)
|
||||||
// if (papersize != NULL)
|
// if (papersize != NULL)
|
||||||
// free(papersize);
|
// free(papersize);
|
||||||
|
|
@ -16420,7 +16425,8 @@ static void do_render_cur_text(int do_blit)
|
||||||
(cur_tool == TOOL_PRINT ||
|
(cur_tool == TOOL_PRINT ||
|
||||||
cur_tool == TOOL_SAVE ||
|
cur_tool == TOOL_SAVE ||
|
||||||
cur_tool == TOOL_OPEN ||
|
cur_tool == TOOL_OPEN ||
|
||||||
cur_tool == TOOL_NEW)))
|
cur_tool == TOOL_NEW ||
|
||||||
|
cur_tool == TOOL_QUIT)))
|
||||||
{
|
{
|
||||||
have_to_rec_label_node=TRUE;
|
have_to_rec_label_node=TRUE;
|
||||||
add_label_node(src.w, src.h, dest.x, dest.y, tmp_surf);
|
add_label_node(src.w, src.h, dest.x, dest.y, tmp_surf);
|
||||||
|
|
@ -16431,7 +16437,8 @@ static void do_render_cur_text(int do_blit)
|
||||||
(cur_tool == TOOL_PRINT ||
|
(cur_tool == TOOL_PRINT ||
|
||||||
cur_tool == TOOL_SAVE ||
|
cur_tool == TOOL_SAVE ||
|
||||||
cur_tool == TOOL_OPEN ||
|
cur_tool == TOOL_OPEN ||
|
||||||
cur_tool == TOOL_NEW)))
|
cur_tool == TOOL_NEW ||
|
||||||
|
cur_tool == TOOL_QUIT)))
|
||||||
{
|
{
|
||||||
myblit(tmp_surf, &src, label, &dest);
|
myblit(tmp_surf, &src, label, &dest);
|
||||||
|
|
||||||
|
|
@ -20549,7 +20556,8 @@ static void tmp_apply_uncommited_text()
|
||||||
(cur_tool == TOOL_PRINT ||
|
(cur_tool == TOOL_PRINT ||
|
||||||
cur_tool == TOOL_SAVE ||
|
cur_tool == TOOL_SAVE ||
|
||||||
cur_tool == TOOL_OPEN ||
|
cur_tool == TOOL_OPEN ||
|
||||||
cur_tool == TOOL_NEW))) {
|
cur_tool == TOOL_NEW ||
|
||||||
|
cur_tool == TOOL_QUIT))) {
|
||||||
canvas_back = SDL_CreateRGBSurface(canvas->flags,
|
canvas_back = SDL_CreateRGBSurface(canvas->flags,
|
||||||
canvas->w,
|
canvas->w,
|
||||||
canvas->h,
|
canvas->h,
|
||||||
|
|
@ -20566,7 +20574,8 @@ static void tmp_apply_uncommited_text()
|
||||||
(cur_tool == TOOL_PRINT ||
|
(cur_tool == TOOL_PRINT ||
|
||||||
cur_tool == TOOL_SAVE ||
|
cur_tool == TOOL_SAVE ||
|
||||||
cur_tool == TOOL_OPEN ||
|
cur_tool == TOOL_OPEN ||
|
||||||
cur_tool == TOOL_NEW)))
|
cur_tool == TOOL_NEW ||
|
||||||
|
cur_tool == TOOL_QUIT)))
|
||||||
{
|
{
|
||||||
do_render_cur_text(1);
|
do_render_cur_text(1);
|
||||||
current_label_node->save_undoid = 253;
|
current_label_node->save_undoid = 253;
|
||||||
|
|
@ -20577,7 +20586,8 @@ static void tmp_apply_uncommited_text()
|
||||||
(cur_tool == TOOL_PRINT ||
|
(cur_tool == TOOL_PRINT ||
|
||||||
cur_tool == TOOL_SAVE ||
|
cur_tool == TOOL_SAVE ||
|
||||||
cur_tool == TOOL_OPEN ||
|
cur_tool == TOOL_OPEN ||
|
||||||
cur_tool == TOOL_NEW)))
|
cur_tool == TOOL_NEW ||
|
||||||
|
cur_tool == TOOL_QUIT)))
|
||||||
{
|
{
|
||||||
add_label_node(0, 0, 0, 0, NULL);
|
add_label_node(0, 0, 0, 0, NULL);
|
||||||
current_label_node->is_enabled = FALSE;
|
current_label_node->is_enabled = FALSE;
|
||||||
|
|
@ -20597,7 +20607,8 @@ static void undo_tmp_applied_text()
|
||||||
(cur_tool == TOOL_PRINT && old_tool == TOOL_TEXT) ||
|
(cur_tool == TOOL_PRINT && old_tool == TOOL_TEXT) ||
|
||||||
(cur_tool == TOOL_SAVE && old_tool == TOOL_TEXT) ||
|
(cur_tool == TOOL_SAVE && old_tool == TOOL_TEXT) ||
|
||||||
(cur_tool == TOOL_OPEN && old_tool == TOOL_TEXT) ||
|
(cur_tool == TOOL_OPEN && old_tool == TOOL_TEXT) ||
|
||||||
(cur_tool == TOOL_NEW && old_tool == TOOL_TEXT))
|
(cur_tool == TOOL_NEW && old_tool == TOOL_TEXT) ||
|
||||||
|
(cur_tool == TOOL_QUIT && old_tool == TOOL_TEXT))
|
||||||
{
|
{
|
||||||
SDL_BlitSurface(canvas_back, NULL, canvas, NULL);
|
SDL_BlitSurface(canvas_back, NULL, canvas, NULL);
|
||||||
SDL_FreeSurface(canvas_back);
|
SDL_FreeSurface(canvas_back);
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue