FLTK logo

[branch-1.3] 9f2929e - macOS platform: fix for issue #325 Disabling IM disables Greek and Cyrillic layouts

FLTK matrix user chat room
(using Element browser app)   FLTK gitter user chat room   GitHub FLTK Project   FLTK News RSS Feed  
  FLTK Apps      FLTK Library      Forums      Links     Login 
 All Forums  |  Back to fltk.commit  ]
 
Previous Message ]Next Message ]

[branch-1.3] 9f2929e - macOS platform: fix for issue #325 Disabling IM disables Greek and Cyrillic layouts "ManoloFLTK" Dec 25, 2021  
 
commit 9f2929ee457cfa4db66e14aacff5417689ef543a
Author:     ManoloFLTK <41016272+ManoloFLTK@users.noreply.github.com>
AuthorDate: Sat Dec 25 10:06:42 2021 +0100
Commit:     ManoloFLTK <41016272+ManoloFLTK@users.noreply.github.com>
CommitDate: Sat Dec 25 10:06:42 2021 +0100

     macOS platform: fix for issue #325 Disabling IM disables Greek and Cyrillic layouts
    
    Thanks to Pierre Ossman who gave the fix.

 src/Fl_cocoa.mm | 19 ++++++++++++++-----
 1 file changed, 14 insertions(+), 5 deletions(-)

diff --git src/Fl_cocoa.mm src/Fl_cocoa.mm
index a77665b..e53f496 100644
--- src/Fl_cocoa.mm
+++ src/Fl_cocoa.mm
@@ -141,8 +141,10 @@ typedef OSStatus (*TSMSetDocumentProperty_type)(TSMDocumentID, OSType, UInt32, v
 static TSMSetDocumentProperty_type TSMSetDocumentProperty;
 typedef OSStatus (*TSMRemoveDocumentProperty_type)(TSMDocumentID, OSType);
 static TSMRemoveDocumentProperty_type TSMRemoveDocumentProperty;
-typedef CFArrayRef (*TISCreateASCIICapableInputSourceList_type)(void);
-static TISCreateASCIICapableInputSourceList_type TISCreateASCIICapableInputSourceList;
+typedef CFArrayRef (*TISCreateInputSourceList_type)(CFDictionaryRef, Boolean);
+static TISCreateInputSourceList_type TISCreateInputSourceList;
+static CFStringRef kTISTypeKeyboardLayout;
+static CFStringRef kTISPropertyInputSourceType;
 
 typedef void (*KeyScript_type)(short);
 static KeyScript_type KeyScript;
@@ -1673,7 +1675,12 @@ static FLWindowDelegate *flwindowdelegate_instance = nil;
       else {
         CFArrayRef inputSources;
         
-        inputSources = TISCreateASCIICapableInputSourceList();
+        CFDictionaryRef filter;
+        filter = CFDictionaryCreate(NULL, (const void **)kTISPropertyInputSourceType,
+                                          (const void **)kTISTypeKeyboardLayout,
+                                          1, NULL, NULL);
+        inputSources = TISCreateInputSourceList(filter, false);
+        CFRelease(filter);
         TSMSetDocumentProperty(doc, kTSMDocumentEnabledInputSourcesPropertyTag,
                                sizeof(CFArrayRef), &inputSources);
         CFRelease(inputSources);
@@ -1954,8 +1961,10 @@ static int input_method_startup()
       TSMGetActiveDocument = (TSMGetActiveDocument_type)Fl_X::get_carbon_function("TSMGetActiveDocument");
       TSMSetDocumentProperty = (TSMSetDocumentProperty_type)Fl_X::get_carbon_function("TSMSetDocumentProperty");
       TSMRemoveDocumentProperty = (TSMRemoveDocumentProperty_type)Fl_X::get_carbon_function("TSMRemoveDocumentProperty");
-      TISCreateASCIICapableInputSourceList = (TISCreateASCIICapableInputSourceList_type)Fl_X::get_carbon_function("TISCreateASCIICapableInputSourceList");
-      retval = (TSMGetActiveDocument && TSMSetDocumentProperty && TSMRemoveDocumentProperty && TISCreateASCIICapableInputSourceList ? 1 : 0);
+      TISCreateInputSourceList = (TISCreateInputSourceList_type)Fl_X::get_carbon_function("TISCreateInputSourceList");
+      kTISTypeKeyboardLayout = (CFStringRef)Fl_X::get_carbon_function("kTISTypeKeyboardLayout");
+      kTISPropertyInputSourceType = (CFStringRef)Fl_X::get_carbon_function("kTISPropertyInputSourceType");
+      retval = (TSMGetActiveDocument && TSMSetDocumentProperty && TSMRemoveDocumentProperty && TISCreateInputSourceList && kTISTypeKeyboardLayout && kTISPropertyInputSourceType ? 1 : 0);
     } else {
       KeyScript = (KeyScript_type)Fl_X::get_carbon_function("KeyScript");
       retval = (KeyScript? 1 : 0);
Direct Link to Message ]
 
     
Previous Message ]Next Message ]
 
 

Comments are owned by the poster. All other content is copyright 1998-2024 by Bill Spitzak and others. This project is hosted by The FLTK Team. Please report site problems to 'erco@seriss.com'.