isprint() aneb GTK cesky - delsi vyklad

Zdenek Kabelac kabi na fi.muni.cz
Úterý Září 8 17:32:47 CEST 1998


Michal Hucik wrote:
> 
 > 
> Zkousel jsem ten sam problem vyprodukovat na vlastnich zkusebnich zdrojacich
> (s gtk i bez), ale nepodarilo se mi to ... Coz znamena ze chyba je nekde
> uvnitr zdrojaku glade, ale nejak nemuzu prijit na to v cem ...
 

Takze koho to jeste zajima - me badani nad tim proc a jak funguje GTK
spravne cesky je toto.

Predevsim ke spravnemu chodu je zrejme potreba zkompilovat jej s parametrem
X_LOCALE
(pod podminkou ze jiz takto mate zkompilovanu distribuci X-su)

Pokud ji s X_LOCALE nemate, pak mate zrejme smulu, jelikoz se ponekud lisi
unicod, ktery
si vymysleli v glibc a strandartni, ktery je v distribuci X-su - jedna se
napriklad
o funkce mblen apod.

Takze pro kompilace je dobre zkontrolovat, zda-li se vse kompiluje s
priznaky -DUSE_XIM
a -DX_LOCALE

Dale je potreba vtipne vyhodit nesmyslnou funkci _g_mbtowc na originalni
_Xmbtowc - to
se provede prenastaveni v gdki18n.h 

kdyz se vse zkompiluje tak je treba na zacatku kazdeho gtk programu zavolat
funkci gtk_set_locale() a to jeste pred gtk_init - a zrejme to byl zamer
autoru - takze
to tak i zustane a bez tohoto volani se locales nezapnou.

No a pak je tam jeste jedna zrada o ktere si myslim, ze tam maji chybu -
jde priblizne o toto -
aby widget (x-window) mohl spravne prevadet a cist mrtve klavesy apod. musi
mit otevreny
spravny kontext - ten se gtk otvira pro kazde okno zvlast a zda se, ze tam
maji
chybne  provedenou detekci focus_in a proste pro nektere widgety se zapne
az po najeti
do okna - k vysvetleni priklad - otevre se mi okno - v nem je aktivni
nejaky widget do ktereho
muzu psat - bohuzel pro toto window zatim nebyl generovan event FocusIn -
tudiz se
nezavolala funkce gdk_im_begin a neni zapnut x input context.

Resenim je kliknout na nejake jine okenko a pak zpet - pak uz to funguje
vse OK - jen ten
zacatek je spatne. Pro ty co maji FocusFollow Mouse to znamena vyjet a
nejet zpet do
okna. Predpokladam ze to bude nejaka mensi chybicka pri inicializaci
takze vyhledove to snad nebude potreba vubec.


Nicmene zvlaste po uprave (presneji vyhozeni) _g_mbtowc zmizi pada pokud se
do 
gtk okna vepise cesky znak. 

Pro toho, komu se to da slozite pripravim zkompilovane knihovny 
- bohuzel ty co pouzivaji x-sy bez Xsetlocale (tedy nejsou zkompilovany s
-DX_LOCALE
zklamu) ti budoou muset najit svoji cestu k tomu, aby to fungovalo (tedy
jedna se
prevazne o uzivatele RedHat).

-- 
		Odstranite-li ve Windows95 vsechny chyby
			budete mit prazdny disk
   Zdenek Kabelac    http://www.fi.muni.cz/~kabi/   kabi na fi.muni.cz


Další informace o konferenci Linux