@@ -497,6 +497,10 @@ public void stop() {
497
497
long keysChangedProc ;
498
498
Callback keysChangedCallback ;
499
499
500
+ /* Settings "changed" callback */
501
+ long settingsChangedProc ;
502
+ Callback settingsChangedCallback ;
503
+
500
504
/* Multiple Displays. */
501
505
static Display Default ;
502
506
static Display [] Displays = new Display [1 ];
@@ -1323,7 +1327,11 @@ void createDisplay (DeviceData data) {
1323
1327
} else {
1324
1328
keymap = GDK .gdk_keymap_get_for_display (display );
1325
1329
OS .g_signal_connect (keymap , OS .keys_changed , keysChangedProc , 0 );
1326
- }
1330
+ }
1331
+
1332
+ settingsChangedCallback = new Callback (this , "settingsChangedProc" , 3 ); //$NON-NLS-1$
1333
+ settingsChangedProc = settingsChangedCallback .getAddress ();
1334
+ OS .g_signal_connect (GTK .gtk_settings_get_default (), OS .notify_gtk_theme , settingsChangedProc , 0 );
1327
1335
}
1328
1336
1329
1337
/**
@@ -1403,6 +1411,14 @@ long keysChangedProc (long keymap, long user_data) {
1403
1411
return 0 ;
1404
1412
}
1405
1413
1414
+ /**
1415
+ * GtkSettings 'changed' event handler.
1416
+ */
1417
+ long settingsChangedProc (long settings , long key , long user_data ) {
1418
+ settingsChanged = true ;
1419
+ return 0 ;
1420
+ }
1421
+
1406
1422
Image createImage (String name ) {
1407
1423
byte [] buffer = Converter .wcsToMbcs (name , true );
1408
1424
@@ -4818,6 +4834,10 @@ void releaseDisplay () {
4818
4834
keysChangedCallback .dispose (); keysChangedCallback = null ;
4819
4835
keysChangedProc = 0 ;
4820
4836
4837
+ /* Dispose the settings "changed" callback */
4838
+ settingsChangedCallback .dispose (); settingsChangedCallback = null ;
4839
+ settingsChangedProc = 0 ;
4840
+
4821
4841
/* Dispose subclass */
4822
4842
if (!GTK .GTK4 ) {
4823
4843
long pangoLayoutType = OS .PANGO_TYPE_LAYOUT ();
0 commit comments