@@ -497,6 +497,10 @@ public void stop() {
497497 long keysChangedProc ;
498498 Callback keysChangedCallback ;
499499
500+ /* Settings "changed" callback */
501+ long settingsChangedProc ;
502+ Callback settingsChangedCallback ;
503+
500504 /* Multiple Displays. */
501505 static Display Default ;
502506 static Display [] Displays = new Display [1 ];
@@ -1323,7 +1327,11 @@ void createDisplay (DeviceData data) {
13231327 } else {
13241328 keymap = GDK .gdk_keymap_get_for_display (display );
13251329 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 );
13271335}
13281336
13291337/**
@@ -1403,6 +1411,14 @@ long keysChangedProc (long keymap, long user_data) {
14031411 return 0 ;
14041412}
14051413
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+
14061422Image createImage (String name ) {
14071423 byte [] buffer = Converter .wcsToMbcs (name , true );
14081424
@@ -4818,6 +4834,10 @@ void releaseDisplay () {
48184834 keysChangedCallback .dispose (); keysChangedCallback = null ;
48194835 keysChangedProc = 0 ;
48204836
4837+ /* Dispose the settings "changed" callback */
4838+ settingsChangedCallback .dispose (); settingsChangedCallback = null ;
4839+ settingsChangedProc = 0 ;
4840+
48214841 /* Dispose subclass */
48224842 if (!GTK .GTK4 ) {
48234843 long pangoLayoutType = OS .PANGO_TYPE_LAYOUT ();
0 commit comments