@@ -51,16 +51,20 @@ def __init__(self, window: tk.Tk, theme: Optional[str] = None, theme_dir_prefix:
5151 # Create loaders.cache on win32 platforms to find pixbuf loaders properly
5252 if "win" in sys .platform :
5353 target = os .path .join (temp_dir , "loaders.cache" )
54- with open (os .path .join (folder , "loaders.cache" )) as fi , open (target , "w" ) as fo :
54+ source = os .path .join (folder , "lib" , "gdk-pixbuf-2.0" , "2.10.0" , "loaders.cache" )
55+ with open (os .path .join (source )) as fi , open (target , "w" ) as fo :
5556 cache = fi .read ()
56- abspath = ( os . path . join ( folder , "lib" , "gdk-pixbuf-2.0" , "2.10.0" , "loaders" ) + " \\ " )\
57- .replace ("\\ " , "\\ \\ " ) # loaders.cache uses double \ everywhere
58- cache_w_abspaths = cache .replace ("\\ \\ lib " , abspath )
57+ # loaders.cache uses double \ everywhere
58+ abspath = ( os . path . join ( folder , "lib" , ) + " \\ " ) .replace ("\\ " , "\\ \\ " )
59+ cache_w_abspaths = cache .replace ("lib \\ \\ " , abspath )
5960 fo .write (cache_w_abspaths )
6061 # Set GDK_PIXBUF_MODULE_FILE to the path of the new cache file
6162 # GDK_PIXBUF_MODULEDIR does not do anything for plain GDK!
6263 os .environ ["GDK_PIXBUF_MODULE_FILE" ] = target
6364
65+ # Set GTK_EXE_PREFIX on win32 to ensure theme engine loading
66+ os .environ ["GTK_EXE_PREFIX" ] = folder
67+
6468 with chdir (folder ):
6569 # Evaluate pkgIndex.tcl, Tcl does not handle \ as a pathsep, so with /
6670 self .tk .eval ("set dir {0}; source {0}/pkgIndex.tcl" .format (folder .replace ("\\ " , "/" )))
0 commit comments