*** empty log message ***
authorClaus Gittinger <cg@exept.de>
Sat, 14 Feb 2004 21:24:04 +0100
changeset 5519 1707a39f9eaa
parent 5518 9b06c5c14437
child 5520 b6644f3ac71f
*** empty log message ***
FileBrowser.st
--- a/FileBrowser.st	Sat Feb 14 21:14:18 2004 +0100
+++ b/FileBrowser.st	Sat Feb 14 21:24:04 2004 +0100
@@ -6006,7 +6006,9 @@
     "if required, query user if he/she wants to change to another font,
      which is able to display text encoded as specified by newEncoding"
 
-    |fontsEncoding msg filter f defaultFont pref|
+    |fontsEncoding msg filter f defaultFont pref matchingFonts 
+     matchingFamilyFonts matchingFamilyFaceFonts matchingFamilyFaceStyleFonts
+     matchingFamilyFaceStyleSizeFonts|
 
     fontsEncoding := subView font encoding.
 
@@ -6015,52 +6017,41 @@
     (pref match:fontsEncoding) ifTrue:[
         ^ self
     ].
-    "/ stupid ...
-    pref = 'ascii*' ifTrue:[
-        (fontsEncoding match:'iso8859*') ifTrue:[
-            ^ self
-        ]
+    (CharacterEncoder isEncoding:pref subSetOf:fontsEncoding) ifTrue:[
+        ^ self
     ].
 
     filter := [:f | |coding|
                     (coding := f encoding) notNil 
                     and:[pref match:coding]].
 
-    defaultFont := FontDescription 
-                        family:subView font family 
-                        face:subView font face 
-                        style:subView font style 
-                        size:subView font size
-                        encoding:pref.
-
-    defaultFont := TextView defaultFont onDevice:device.
-    (pref match:(defaultFont encoding)) ifFalse:[
-        defaultFont := nil.
-    ].
-
+    device flushListOfAvailableFonts.
+    matchingFonts := device listOfAvailableFonts select:filter.
+    matchingFamilyFonts := matchingFonts select:[:f | f family = subView font family].
+    matchingFamilyFaceFonts := matchingFamilyFonts select:[:f | f face = subView font face].
+    matchingFamilyFaceStyleFonts := matchingFamilyFaceFonts select:[:f | f style = subView font style].
+    matchingFamilyFaceStyleSizeFonts := matchingFamilyFaceStyleFonts select:[:f | f size = subView font size].
+    matchingFamilyFaceStyleSizeFonts size > 0 ifTrue:[
+        defaultFont := matchingFamilyFaceStyleSizeFonts first
+    ] ifFalse:[
+        matchingFamilyFaceStyleFonts size > 0 ifTrue:[
+            defaultFont := matchingFamilyFaceStyleFonts first
+        ] ifFalse:[
+            matchingFamilyFaceFonts size > 0 ifTrue:[
+                defaultFont := matchingFamilyFaceFonts first
+            ] ifFalse:[
+                matchingFamilyFonts size > 0 ifTrue:[
+                    defaultFont := matchingFamilyFonts first
+                ] ifFalse:[
+                    matchingFonts size > 0 ifTrue:[
+                        defaultFont := matchingFonts first
+                    ].
+                ].
+            ].
+        ].
+    ].
+    
     defaultFont isNil ifTrue:[
-        (pref = 'ascii*' or:[pref = 'iso8859*']) ifTrue:[
-            defaultFont := FontDescription family:'courier' face:'medium' style:'roman' size:12
-        ]
-    ].
-
-    defaultFont isNil ifTrue:[
-        defaultFont := device 
-                            listOfAvailableFonts 
-                                detect:[:f | filter value:f]
-                                ifNone:nil.
-        defaultFont isNil ifTrue:[
-
-            "/ flush list, and refetch font list
-            "/ (in case someone just changed the font path ...)
-
-            device flushListOfAvailableFonts.
-            defaultFont := device 
-                                listOfAvailableFonts 
-                                    detect:[:f | filter value:f]
-                                    ifNone:nil.
-        ].
-
         defaultFont isNil ifTrue:[
             self warn:'Your display does not seem to provide any ' , newEncoding allBold , ' encoded font.\\Please select an appropriate font (iso10646-Unicode recommended)'.
             pref := #'iso10646-1'.
@@ -7605,5 +7596,5 @@
 !FileBrowser class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libtool/FileBrowser.st,v 1.572 2004-02-14 20:14:18 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libtool/FileBrowser.st,v 1.573 2004-02-14 20:24:04 cg Exp $'
 ! !