Attilio Fiandrotti <fiandro@tiscalinet.it> wrote:
Message-ID: <[🔎] 43962203.6080706@tiscalinet.it>
> To test if gtkrc reloading code i did the following
>
> -Added
>
> GdkEventClient event;
> event.type = GDK_CLIENT_EVENT;
> event.send_event = TRUE;
> event.window = NULL;
> event.message_type = gdk_atom_intern("_GTK_READ_RCFILES", FALSE);
> event.data_format = 8;
> gdk_event_send_clientmessage_toall((GdkEvent *)&event);
> while (gtk_events_pending ()) gtk_main_iteration ();
>
> into the body of gtk_go() function, so that theme reloading is forced at
> every question that is displayed (no performance degradation detected at
> all).
If we can put the gtkrc reloading code into gtk.so, gtk_rc_reparse_all()
will be enough. Here are [1][2][3]the screen shots. For Chinese user,
we embedded 12pt bitmap font to zh.ttf.
1. http://hp.debian.or.jp/~tyuyu/debian-installer/ja.jpg
2. http://hp.debian.or.jp/~tyuyu/debian-installer/ko.jpg
3. http://hp.debian.or.jp/~tyuyu/debian-installer/zh.jpg
Unfortunately I found that gdk_event_send_clientmessage_toall in
gdk/linux-fb/gdkevents-fb.c is empty. If we want to instruct cdebconf
to reload rc files from external process, we can't use
gdk_event_send_clientmessage_toall, so we have to find a different
solution :(
Best regards,
--
Hidetaka Iwai
tyuyu@debian.or.jp
Index: src/modules/frontend/gtk/gtk.c
===================================================================
--- src/modules/frontend/gtk/gtk.c (revision 32750)
+++ src/modules/frontend/gtk/gtk.c (working copy)
@@ -1411,6 +1411,8 @@
if (q == NULL) return DC_OK;
+ /* re-read rc files */
+ gtk_rc_reparse_all();
data->setters = NULL;
questionbox = gtk_vbox_new(FALSE, 0);
Attachment:
pgpc4fWps7TvG.pgp
Description: PGP signature