From 874bca74f55f686ded8f0b3d2df08196911f26f0 Mon Sep 17 00:00:00 2001 From: Manolo Gouy Date: Mon, 3 Jan 2011 16:50:34 +0000 Subject: Mac OS X: removed all uses of Carbon (except for older OS versions) and re-organized text input around the NSTextInput protocol. git-svn-id: file:///fltk/svn/fltk/branches/branch-1.3@8173 ea41ed52-d2ee-0310-a9c1-e6b18d33e121 --- CMakeLists.txt | 2 +- FL/mac.H | 5 +- configure.in | 6 +- ide/Xcode3/FLTK.xcodeproj/project.pbxproj | 285 +----------------------------- ide/Xcode3/fltk.pch | 2 +- src/Fl_Gl_Choice.cxx | 26 ++- src/Fl_Gl_Window.cxx | 4 +- src/Fl_Preferences.cxx | 2 +- src/Fl_Quartz_Printer.mm | 12 +- src/Fl_cocoa.mm | 234 ++++++++++++------------ src/Fl_compose.cxx | 2 +- src/Fl_get_key_mac.cxx | 11 +- test/demo.cxx | 2 +- 13 files changed, 177 insertions(+), 416 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index d85ce33ab..1faeaecef 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -60,7 +60,7 @@ if(APPLE) set(HAVE_STRTOLL 1) set(HAVE_STRCASECMP 1) set(HAVE_DIRENT_H 1) - set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -framework Cocoa -framework Carbon") + set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -framework Cocoa") endif(APPLE) if(WIN32) diff --git a/FL/mac.H b/FL/mac.H index d85b63bc1..2c945a953 100644 --- a/FL/mac.H +++ b/FL/mac.H @@ -49,8 +49,8 @@ typedef void* Fl_PMPrintSession; #else // this part must be compiled when building the FLTK libraries -// Standard MacOS Carbon API includes... -#include +// Standard MacOS C/C++ includes... +#include #undef check // because of Fl::check() typedef CGContextRef Fl_CGContextRef; @@ -154,6 +154,7 @@ public: static CGContextRef nesw_cursor_image(void); static CGContextRef nwse_cursor_image(void); static CGContextRef none_cursor_image(void); + static void *get_carbon_function(const char *name); private: static void relink(Fl_Window*, Fl_Window*); }; diff --git a/configure.in b/configure.in index ead24a53f..9f93584c2 100644 --- a/configure.in +++ b/configure.in @@ -842,8 +842,8 @@ case $uname_GUI in ;; Darwin*) - # MacOS X uses Cocoa for graphics. There are still some Carbon leftovers. - LIBS="$LIBS -framework Cocoa -framework Carbon" + # MacOS X uses Cocoa for graphics. + LIBS="$LIBS -framework Cocoa" if test x$have_pthread = xyes; then AC_DEFINE(HAVE_PTHREAD) @@ -853,7 +853,7 @@ case $uname_GUI in if test x$enable_gl != xno; then AC_DEFINE(HAVE_GL) AC_DEFINE(HAVE_GL_GLU_H) - GLLIB="-framework AGL -framework OpenGL" + GLLIB="-framework AGL -framework OpenGL -framework ApplicationServices" else LINKFLTKGL="" GLLIBNAME="" diff --git a/ide/Xcode3/FLTK.xcodeproj/project.pbxproj b/ide/Xcode3/FLTK.xcodeproj/project.pbxproj index 4b14db619..18e5f4b6f 100644 --- a/ide/Xcode3/FLTK.xcodeproj/project.pbxproj +++ b/ide/Xcode3/FLTK.xcodeproj/project.pbxproj @@ -313,6 +313,7 @@ 7E8E2DC7A53A62D0F1EB860E /* fltk.framework in CopyFiles */ = {isa = PBXBuildFile; fileRef = FEB0F8FE6383384180570D94 /* fltk.framework */; }; 7EA88708B9A088FCEB7CAA27 /* file_chooser.cxx in Sources */ = {isa = PBXBuildFile; fileRef = 39CD231E22E0B53E92CABDC9 /* file_chooser.cxx */; }; 7EC3AD9A56535A54430B8DCD /* Fl_Browser_.cxx in Sources */ = {isa = PBXBuildFile; fileRef = AAD25B747F4122A2C5224708 /* Fl_Browser_.cxx */; }; + 7F4762EE12D22C470073A4F9 /* ApplicationServices.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7F4762ED12D22C470073A4F9 /* ApplicationServices.framework */; }; 7F66B1D912BB924C00C67B59 /* Fl_cocoa.mm in Sources */ = {isa = PBXBuildFile; fileRef = 7F66B1D612BB924C00C67B59 /* Fl_cocoa.mm */; }; 7F66B1DA12BB924C00C67B59 /* Fl_Native_File_Chooser_MAC.mm in Sources */ = {isa = PBXBuildFile; fileRef = 7F66B1D712BB924C00C67B59 /* Fl_Native_File_Chooser_MAC.mm */; }; 7F66B1DB12BB924C00C67B59 /* Fl_Quartz_Printer.mm in Sources */ = {isa = PBXBuildFile; fileRef = 7F66B1D812BB924C00C67B59 /* Fl_Quartz_Printer.mm */; }; @@ -496,13 +497,10 @@ C95961881274CEA1009C0594 /* README.Xcode in Headers */ = {isa = PBXBuildFile; fileRef = C95961641274CDEC009C0594 /* README.Xcode */; settings = {ATTRIBUTES = (Public, ); }; }; C95961891274CEA4009C0594 /* README.Xcode in Headers */ = {isa = PBXBuildFile; fileRef = C95961641274CDEC009C0594 /* README.Xcode */; settings = {ATTRIBUTES = (Public, ); }; }; C959618A1274CEA6009C0594 /* README.Xcode in Headers */ = {isa = PBXBuildFile; fileRef = C95961641274CDEC009C0594 /* README.Xcode */; settings = {ATTRIBUTES = (Public, ); }; }; - C96290C11274D0CD007D3CFE /* Carbon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C9628FFB1274D0B3007D3CFE /* Carbon.framework */; }; C96290C21274D0CF007D3CFE /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C9628FFD1274D0B3007D3CFE /* Cocoa.framework */; }; C96290E21274D0EF007D3CFE /* AGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C96290E11274D0EF007D3CFE /* AGL.framework */; }; C96290E61274D100007D3CFE /* OpenGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C96290E51274D100007D3CFE /* OpenGL.framework */; }; - C962910E1274D1D7007D3CFE /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C9628FFD1274D0B3007D3CFE /* Cocoa.framework */; }; C96291151274D1FD007D3CFE /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C9628FFD1274D0B3007D3CFE /* Cocoa.framework */; }; - C96291E712756D5E007D3CFE /* Carbon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C9628FFB1274D0B3007D3CFE /* Carbon.framework */; }; C984AFA812D02A1800D66DAD /* demo.menu in Resources */ = {isa = PBXBuildFile; fileRef = C984AFA712D02A1800D66DAD /* demo.menu */; }; C9A374AB3AD29E141C659819 /* fltk.framework in CopyFiles */ = {isa = PBXBuildFile; fileRef = FEB0F8FE6383384180570D94 /* fltk.framework */; }; C9C4C91FDA73557BB6B69F3D /* jchuff.c in Sources */ = {isa = PBXBuildFile; fileRef = D9DB580DCA05DE487FACA272 /* jchuff.c */; }; @@ -4295,6 +4293,7 @@ 7DF4AD3769671959EA813845 /* jcparam.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = jcparam.c; path = ../../jpeg/jcparam.c; sourceTree = SOURCE_ROOT; }; 7E05602BE68211B11E493E18 /* Fl_Menu.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Fl_Menu.cxx; path = ../../src/Fl_Menu.cxx; sourceTree = SOURCE_ROOT; }; 7E51DAB7D0F93ACFB736EE9A /* Fl_Tree_Prefs.H */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = Fl_Tree_Prefs.H; path = ../../FL/Fl_Tree_Prefs.H; sourceTree = SOURCE_ROOT; }; + 7F4762ED12D22C470073A4F9 /* ApplicationServices.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = ApplicationServices.framework; path = System/Library/Frameworks/ApplicationServices.framework; sourceTree = SDKROOT; }; 7F4B8ADD01CB2F8BFE43ACBA /* Fl_Menu_Bar.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Fl_Menu_Bar.cxx; path = ../../src/Fl_Menu_Bar.cxx; sourceTree = SOURCE_ROOT; }; 7F66B1D612BB924C00C67B59 /* Fl_cocoa.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = Fl_cocoa.mm; path = ../../src/Fl_cocoa.mm; sourceTree = SOURCE_ROOT; }; 7F66B1D712BB924C00C67B59 /* Fl_Native_File_Chooser_MAC.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = Fl_Native_File_Chooser_MAC.mm; path = ../../src/Fl_Native_File_Chooser_MAC.mm; sourceTree = SOURCE_ROOT; }; @@ -4472,7 +4471,6 @@ C9165EAF1291A304003FF4F0 /* utf8.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = utf8.app; sourceTree = BUILT_PRODUCTS_DIR; }; C9165ED31291A376003FF4F0 /* unittests.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = unittests.cxx; path = ../../test/unittests.cxx; sourceTree = SOURCE_ROOT; }; C95961641274CDEC009C0594 /* README.Xcode */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = README.Xcode; path = ../../FL/README.Xcode; sourceTree = SOURCE_ROOT; }; - C9628FFB1274D0B3007D3CFE /* Carbon.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Carbon.framework; path = System/Library/Frameworks/Carbon.framework; sourceTree = SDKROOT; }; C9628FFD1274D0B3007D3CFE /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = System/Library/Frameworks/Cocoa.framework; sourceTree = SDKROOT; }; C96290E11274D0EF007D3CFE /* AGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AGL.framework; path = System/Library/Frameworks/AGL.framework; sourceTree = SDKROOT; }; C96290E51274D100007D3CFE /* OpenGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGL.framework; path = System/Library/Frameworks/OpenGL.framework; sourceTree = SDKROOT; }; @@ -5122,11 +5120,10 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - C96291E712756D5E007D3CFE /* Carbon.framework in Frameworks */, - C962910E1274D1D7007D3CFE /* Cocoa.framework in Frameworks */, 04C166D5213DD80648BE1F4D /* fltk.framework in Frameworks */, C96290E21274D0EF007D3CFE /* AGL.framework in Frameworks */, C96290E61274D100007D3CFE /* OpenGL.framework in Frameworks */, + 7F4762EE12D22C470073A4F9 /* ApplicationServices.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -5201,7 +5198,6 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - C96290C11274D0CD007D3CFE /* Carbon.framework in Frameworks */, C96290C21274D0CF007D3CFE /* Cocoa.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; @@ -6355,7 +6351,7 @@ C9628FFA1274D0A1007D3CFE /* Resources */ = { isa = PBXGroup; children = ( - C9628FFB1274D0B3007D3CFE /* Carbon.framework */, + 7F4762ED12D22C470073A4F9 /* ApplicationServices.framework */, C9628FFD1274D0B3007D3CFE /* Cocoa.framework */, C96290E11274D0EF007D3CFE /* AGL.framework */, C96290E51274D100007D3CFE /* OpenGL.framework */, @@ -8408,7 +8404,6 @@ isa = PBXProject; buildConfigurationList = 615453DB5B8EBEE070930DA7 /* Build configuration list for PBXProject "FLTK" */; compatibilityVersion = "Xcode 3.0"; - developmentRegion = English; hasScannedForEncodings = 0; knownRegions = ( English, @@ -10977,8 +10972,6 @@ OTHER_LDFLAGS = ( "-framework", Cocoa, - "-framework", - Carbon, ); PRODUCT_NAME = line_style; WARNING_CFLAGS = ( @@ -11041,8 +11034,6 @@ OTHER_LDFLAGS = ( "-framework", Cocoa, - "-framework", - Carbon, ); PRODUCT_NAME = ask; WARNING_CFLAGS = ( @@ -11075,8 +11066,6 @@ OTHER_LDFLAGS = ( "-framework", Cocoa, - "-framework", - Carbon, ); PRODUCT_NAME = tile; WARNING_CFLAGS = ( @@ -11109,8 +11098,6 @@ OTHER_LDFLAGS = ( "-framework", Cocoa, - "-framework", - Carbon, ); PRODUCT_NAME = mandelbrot; WARNING_CFLAGS = ( @@ -11143,8 +11130,6 @@ OTHER_LDFLAGS = ( "-framework", Cocoa, - "-framework", - Carbon, ); PRODUCT_NAME = hello; WARNING_CFLAGS = ( @@ -11174,8 +11159,6 @@ OTHER_LDFLAGS = ( "-framework", Cocoa, - "-framework", - Carbon, ); PRODUCT_NAME = list_visuals; WARNING_CFLAGS = ( @@ -11205,8 +11188,6 @@ OTHER_LDFLAGS = ( "-framework", Cocoa, - "-framework", - Carbon, ); PRODUCT_NAME = image; WARNING_CFLAGS = ( @@ -11239,8 +11220,6 @@ OTHER_LDFLAGS = ( "-framework", Cocoa, - "-framework", - Carbon, ); PRODUCT_NAME = keyboard; WARNING_CFLAGS = ( @@ -11270,8 +11249,6 @@ OTHER_LDFLAGS = ( "-framework", Cocoa, - "-framework", - Carbon, ); PRODUCT_NAME = tiled_image; WARNING_CFLAGS = ( @@ -11304,8 +11281,6 @@ OTHER_LDFLAGS = ( "-framework", Cocoa, - "-framework", - Carbon, ); PRODUCT_NAME = utf8; WARNING_CFLAGS = ( @@ -11335,8 +11310,6 @@ OTHER_LDFLAGS = ( "-framework", Cocoa, - "-framework", - Carbon, ); PRODUCT_NAME = checkers; WARNING_CFLAGS = ( @@ -11369,8 +11342,6 @@ OTHER_LDFLAGS = ( "-framework", Cocoa, - "-framework", - Carbon, ); PRODUCT_NAME = doublebuffer; WARNING_CFLAGS = ( @@ -11403,8 +11374,6 @@ OTHER_LDFLAGS = ( "-framework", Cocoa, - "-framework", - Carbon, ); PRODUCT_NAME = overlay; WARNING_CFLAGS = ( @@ -11437,8 +11406,6 @@ OTHER_LDFLAGS = ( "-framework", Cocoa, - "-framework", - Carbon, ); PRODUCT_NAME = checkers; WARNING_CFLAGS = ( @@ -11468,8 +11435,6 @@ OTHER_LDFLAGS = ( "-framework", Cocoa, - "-framework", - Carbon, ); PRODUCT_NAME = radio; WARNING_CFLAGS = ( @@ -11499,8 +11464,6 @@ OTHER_LDFLAGS = ( "-framework", Cocoa, - "-framework", - Carbon, ); PRODUCT_NAME = navigation; WARNING_CFLAGS = ( @@ -11530,8 +11493,6 @@ OTHER_LDFLAGS = ( "-framework", Cocoa, - "-framework", - Carbon, ); PRODUCT_NAME = tile; WARNING_CFLAGS = ( @@ -11561,8 +11522,6 @@ OTHER_LDFLAGS = ( "-framework", Cocoa, - "-framework", - Carbon, ); PRODUCT_NAME = utf8; WARNING_CFLAGS = ( @@ -11592,8 +11551,6 @@ OTHER_LDFLAGS = ( "-framework", Cocoa, - "-framework", - Carbon, ); PRODUCT_NAME = output; WARNING_CFLAGS = ( @@ -11655,8 +11612,6 @@ OTHER_LDFLAGS = ( "-framework", Cocoa, - "-framework", - Carbon, ); PRODUCT_NAME = editor; WARNING_CFLAGS = ( @@ -11689,8 +11644,6 @@ OTHER_LDFLAGS = ( "-framework", Cocoa, - "-framework", - Carbon, ); PRODUCT_NAME = tree; WARNING_CFLAGS = ( @@ -11723,8 +11676,6 @@ OTHER_LDFLAGS = ( "-framework", Cocoa, - "-framework", - Carbon, ); PRODUCT_NAME = tabs; WARNING_CFLAGS = ( @@ -11757,8 +11708,6 @@ OTHER_LDFLAGS = ( "-framework", Cocoa, - "-framework", - Carbon, ); PRODUCT_NAME = image; WARNING_CFLAGS = ( @@ -11788,8 +11737,6 @@ OTHER_LDFLAGS = ( "-framework", Cocoa, - "-framework", - Carbon, ); PRODUCT_NAME = help; WARNING_CFLAGS = ( @@ -11822,8 +11769,6 @@ OTHER_LDFLAGS = ( "-framework", Cocoa, - "-framework", - Carbon, ); PRODUCT_NAME = bitmap; WARNING_CFLAGS = ( @@ -11856,8 +11801,6 @@ OTHER_LDFLAGS = ( "-framework", Cocoa, - "-framework", - Carbon, ); PRODUCT_NAME = list_visuals; WARNING_CFLAGS = ( @@ -11888,8 +11831,6 @@ OTHER_LDFLAGS = ( "-framework", Cocoa, - "-framework", - Carbon, ); PRODUCT_NAME = arc; WARNING_CFLAGS = ( @@ -11919,8 +11860,6 @@ OTHER_LDFLAGS = ( "-framework", Cocoa, - "-framework", - Carbon, ); PRODUCT_NAME = resizebox; WARNING_CFLAGS = ( @@ -11950,8 +11889,6 @@ OTHER_LDFLAGS = ( "-framework", Cocoa, - "-framework", - Carbon, ); PRODUCT_NAME = sudoku; WARNING_CFLAGS = ( @@ -11984,8 +11921,6 @@ OTHER_LDFLAGS = ( "-framework", Cocoa, - "-framework", - Carbon, ); PRODUCT_NAME = boxtype; WARNING_CFLAGS = ( @@ -12015,8 +11950,6 @@ OTHER_LDFLAGS = ( "-framework", Cocoa, - "-framework", - Carbon, ); PRODUCT_NAME = label; WARNING_CFLAGS = ( @@ -12046,8 +11979,6 @@ OTHER_LDFLAGS = ( "-framework", Cocoa, - "-framework", - Carbon, ); PRODUCT_NAME = gl_overlay; WARNING_CFLAGS = ( @@ -12107,8 +12038,6 @@ OTHER_LDFLAGS = ( "-framework", Cocoa, - "-framework", - Carbon, ); PRODUCT_NAME = browser; WARNING_CFLAGS = ( @@ -12141,8 +12070,6 @@ OTHER_LDFLAGS = ( "-framework", Cocoa, - "-framework", - Carbon, ); PRODUCT_NAME = cursor; WARNING_CFLAGS = ( @@ -12175,8 +12102,6 @@ OTHER_LDFLAGS = ( "-framework", Cocoa, - "-framework", - Carbon, ); PRODUCT_NAME = blocks; WARNING_CFLAGS = ( @@ -12209,8 +12134,6 @@ OTHER_LDFLAGS = ( "-framework", Cocoa, - "-framework", - Carbon, ); PRODUCT_NAME = colbrowser; WARNING_CFLAGS = ( @@ -12243,8 +12166,6 @@ OTHER_LDFLAGS = ( "-framework", Cocoa, - "-framework", - Carbon, ); PRODUCT_NAME = glpuzzle; WARNING_CFLAGS = ( @@ -12274,8 +12195,6 @@ OTHER_LDFLAGS = ( "-framework", Cocoa, - "-framework", - Carbon, ); PRODUCT_NAME = clock; WARNING_CFLAGS = ( @@ -12305,8 +12224,6 @@ OTHER_LDFLAGS = ( "-framework", Cocoa, - "-framework", - Carbon, ); PRODUCT_NAME = inactive; WARNING_CFLAGS = ( @@ -12339,8 +12256,6 @@ OTHER_LDFLAGS = ( "-framework", Cocoa, - "-framework", - Carbon, ); PRODUCT_NAME = help; WARNING_CFLAGS = ( @@ -12370,8 +12285,6 @@ OTHER_LDFLAGS = ( "-framework", Cocoa, - "-framework", - Carbon, ); PRODUCT_NAME = valuators; WARNING_CFLAGS = ( @@ -12401,8 +12314,6 @@ OTHER_LDFLAGS = ( "-framework", Cocoa, - "-framework", - Carbon, ); PRODUCT_NAME = fast_slow; WARNING_CFLAGS = ( @@ -12435,8 +12346,6 @@ OTHER_LDFLAGS = ( "-framework", Cocoa, - "-framework", - Carbon, ); PRODUCT_NAME = navigation; WARNING_CFLAGS = ( @@ -12469,8 +12378,6 @@ OTHER_LDFLAGS = ( "-framework", Cocoa, - "-framework", - Carbon, ); PRODUCT_NAME = resize; WARNING_CFLAGS = ( @@ -12503,8 +12410,6 @@ OTHER_LDFLAGS = ( "-framework", Cocoa, - "-framework", - Carbon, ); PRODUCT_NAME = pack; WARNING_CFLAGS = ( @@ -12537,8 +12442,6 @@ OTHER_LDFLAGS = ( "-framework", Cocoa, - "-framework", - Carbon, ); PRODUCT_NAME = symbols; WARNING_CFLAGS = ( @@ -12635,8 +12538,6 @@ OTHER_LDFLAGS = ( "-framework", Cocoa, - "-framework", - Carbon, ); PRODUCT_NAME = message; WARNING_CFLAGS = ( @@ -12699,8 +12600,6 @@ OTHER_LDFLAGS = ( "-framework", Cocoa, - "-framework", - Carbon, ); PRODUCT_NAME = cube; WARNING_CFLAGS = ( @@ -12730,8 +12629,6 @@ OTHER_LDFLAGS = ( "-framework", Cocoa, - "-framework", - Carbon, ); PRODUCT_NAME = fonts; WARNING_CFLAGS = ( @@ -12790,8 +12687,6 @@ OTHER_LDFLAGS = ( "-framework", Cocoa, - "-framework", - Carbon, ); PRODUCT_NAME = shape; WARNING_CFLAGS = ( @@ -12821,8 +12716,6 @@ OTHER_LDFLAGS = ( "-framework", Cocoa, - "-framework", - Carbon, ); PRODUCT_NAME = iconize; WARNING_CFLAGS = ( @@ -12855,8 +12748,6 @@ OTHER_LDFLAGS = ( "-framework", Cocoa, - "-framework", - Carbon, ); PRODUCT_NAME = "native-filechooser"; WARNING_CFLAGS = ( @@ -12889,8 +12780,6 @@ OTHER_LDFLAGS = ( "-framework", Cocoa, - "-framework", - Carbon, ); PRODUCT_NAME = menubar; WARNING_CFLAGS = ( @@ -12920,8 +12809,6 @@ OTHER_LDFLAGS = ( "-framework", Cocoa, - "-framework", - Carbon, ); PRODUCT_NAME = fractals; WARNING_CFLAGS = ( @@ -12954,8 +12841,6 @@ OTHER_LDFLAGS = ( "-framework", Cocoa, - "-framework", - Carbon, ); PRODUCT_NAME = valuators; WARNING_CFLAGS = ( @@ -12983,8 +12868,6 @@ OTHER_LDFLAGS = ( "-framework", Cocoa, - "-framework", - Carbon, ); PRODUCT_NAME = arc; WARNING_CFLAGS = ( @@ -13014,8 +12897,6 @@ OTHER_LDFLAGS = ( "-framework", Cocoa, - "-framework", - Carbon, ); PRODUCT_NAME = device; WARNING_CFLAGS = ( @@ -13081,8 +12962,6 @@ OTHER_LDFLAGS = ( "-framework", Cocoa, - "-framework", - Carbon, ); PRODUCT_NAME = minimum; WARNING_CFLAGS = ( @@ -13155,8 +13034,6 @@ OTHER_LDFLAGS = ( "-framework", Cocoa, - "-framework", - Carbon, ); PRODUCT_NAME = rotated_text; WARNING_CFLAGS = ( @@ -13189,8 +13066,6 @@ OTHER_LDFLAGS = ( "-framework", Cocoa, - "-framework", - Carbon, ); PRODUCT_NAME = iconize; WARNING_CFLAGS = ( @@ -13223,8 +13098,6 @@ OTHER_LDFLAGS = ( "-framework", Cocoa, - "-framework", - Carbon, ); PRODUCT_NAME = sudoku; WARNING_CFLAGS = ( @@ -13257,8 +13130,6 @@ OTHER_LDFLAGS = ( "-framework", Cocoa, - "-framework", - Carbon, ); PRODUCT_NAME = pixmap_browser; WARNING_CFLAGS = ( @@ -13288,8 +13159,6 @@ OTHER_LDFLAGS = ( "-framework", Cocoa, - "-framework", - Carbon, ); PRODUCT_NAME = preferences; WARNING_CFLAGS = ( @@ -13319,8 +13188,6 @@ OTHER_LDFLAGS = ( "-framework", Cocoa, - "-framework", - Carbon, ); PRODUCT_NAME = forms; WARNING_CFLAGS = ( @@ -13353,8 +13220,6 @@ OTHER_LDFLAGS = ( "-framework", Cocoa, - "-framework", - Carbon, ); PRODUCT_NAME = preferences; WARNING_CFLAGS = ( @@ -13387,8 +13252,6 @@ OTHER_LDFLAGS = ( "-framework", Cocoa, - "-framework", - Carbon, ); PRODUCT_NAME = label; WARNING_CFLAGS = ( @@ -13418,8 +13281,6 @@ OTHER_LDFLAGS = ( "-framework", Cocoa, - "-framework", - Carbon, ); PRODUCT_NAME = buttons; WARNING_CFLAGS = ( @@ -13505,8 +13366,6 @@ OTHER_LDFLAGS = ( "-framework", Cocoa, - "-framework", - Carbon, ); PRODUCT_NAME = glpuzzle; WARNING_CFLAGS = ( @@ -13539,8 +13398,6 @@ OTHER_LDFLAGS = ( "-framework", Cocoa, - "-framework", - Carbon, ); PRODUCT_NAME = button; WARNING_CFLAGS = ( @@ -13573,8 +13430,6 @@ OTHER_LDFLAGS = ( "-framework", Cocoa, - "-framework", - Carbon, ); PRODUCT_NAME = fast_slow; WARNING_CFLAGS = ( @@ -13604,8 +13459,6 @@ OTHER_LDFLAGS = ( "-framework", Cocoa, - "-framework", - Carbon, ); PRODUCT_NAME = message; WARNING_CFLAGS = ( @@ -13635,8 +13488,6 @@ OTHER_LDFLAGS = ( "-framework", Cocoa, - "-framework", - Carbon, ); PRODUCT_NAME = editor; WARNING_CFLAGS = ( @@ -13666,8 +13517,6 @@ OTHER_LDFLAGS = ( "-framework", Cocoa, - "-framework", - Carbon, ); PRODUCT_NAME = bitmap; WARNING_CFLAGS = ( @@ -13700,8 +13549,6 @@ OTHER_LDFLAGS = ( "-framework", Cocoa, - "-framework", - Carbon, ); PRODUCT_NAME = inactive; WARNING_CFLAGS = ( @@ -13734,8 +13581,6 @@ OTHER_LDFLAGS = ( "-framework", Cocoa, - "-framework", - Carbon, ); PRODUCT_NAME = clock; WARNING_CFLAGS = ( @@ -13765,8 +13610,6 @@ OTHER_LDFLAGS = ( "-framework", Cocoa, - "-framework", - Carbon, ); PRODUCT_NAME = file_chooser; WARNING_CFLAGS = ( @@ -13820,8 +13663,6 @@ OTHER_LDFLAGS = ( "-framework", Cocoa, - "-framework", - Carbon, ); PRODUCT_NAME = curve; WARNING_CFLAGS = ( @@ -13851,8 +13692,6 @@ OTHER_LDFLAGS = ( "-framework", Cocoa, - "-framework", - Carbon, ); PRODUCT_NAME = fullscreen; WARNING_CFLAGS = ( @@ -13882,8 +13721,6 @@ OTHER_LDFLAGS = ( "-framework", Cocoa, - "-framework", - Carbon, ); PRODUCT_NAME = colbrowser; WARNING_CFLAGS = ( @@ -13940,8 +13777,6 @@ OTHER_LDFLAGS = ( "-framework", Cocoa, - "-framework", - Carbon, ); PRODUCT_NAME = browser; WARNING_CFLAGS = ( @@ -13971,8 +13806,6 @@ OTHER_LDFLAGS = ( "-framework", Cocoa, - "-framework", - Carbon, ); PRODUCT_NAME = tree; WARNING_CFLAGS = ( @@ -14005,8 +13838,6 @@ OTHER_LDFLAGS = ( "-framework", Cocoa, - "-framework", - Carbon, ); PRODUCT_NAME = scroll; WARNING_CFLAGS = ( @@ -14036,8 +13867,6 @@ OTHER_LDFLAGS = ( "-framework", Cocoa, - "-framework", - Carbon, ); PRODUCT_NAME = hello; WARNING_CFLAGS = ( @@ -14100,8 +13929,6 @@ OTHER_LDFLAGS = ( "-framework", Cocoa, - "-framework", - Carbon, ); PRODUCT_NAME = pack; WARNING_CFLAGS = ( @@ -14134,8 +13961,6 @@ OTHER_LDFLAGS = ( "-framework", Cocoa, - "-framework", - Carbon, ); PRODUCT_NAME = device; WARNING_CFLAGS = ( @@ -14168,8 +13993,6 @@ OTHER_LDFLAGS = ( "-framework", Cocoa, - "-framework", - Carbon, ); PRODUCT_NAME = subwindow; WARNING_CFLAGS = ( @@ -14199,8 +14022,6 @@ OTHER_LDFLAGS = ( "-framework", Cocoa, - "-framework", - Carbon, ); PRODUCT_NAME = doublebuffer; WARNING_CFLAGS = ( @@ -14230,8 +14051,6 @@ OTHER_LDFLAGS = ( "-framework", Cocoa, - "-framework", - Carbon, ); PRODUCT_NAME = mandelbrot; WARNING_CFLAGS = ( @@ -14264,8 +14083,6 @@ OTHER_LDFLAGS = ( "-framework", Cocoa, - "-framework", - Carbon, ); PRODUCT_NAME = resizebox; WARNING_CFLAGS = ( @@ -14309,8 +14126,6 @@ OTHER_LDFLAGS = ( "-framework", Cocoa, - "-framework", - Carbon, ); PRODUCT_NAME = pixmap_browser; WARNING_CFLAGS = ( @@ -14340,8 +14155,6 @@ OTHER_LDFLAGS = ( "-framework", Cocoa, - "-framework", - Carbon, ); PRODUCT_NAME = color_chooser; WARNING_CFLAGS = ( @@ -14406,8 +14219,6 @@ OTHER_LDFLAGS = ( "-framework", Cocoa, - "-framework", - Carbon, ); PRODUCT_NAME = buttons; WARNING_CFLAGS = ( @@ -14440,8 +14251,6 @@ OTHER_LDFLAGS = ( "-framework", Cocoa, - "-framework", - Carbon, ); PRODUCT_NAME = minimum; WARNING_CFLAGS = ( @@ -14474,8 +14283,6 @@ OTHER_LDFLAGS = ( "-framework", Cocoa, - "-framework", - Carbon, ); PRODUCT_NAME = input; WARNING_CFLAGS = ( @@ -14508,8 +14315,6 @@ OTHER_LDFLAGS = ( "-framework", Cocoa, - "-framework", - Carbon, ); PRODUCT_NAME = file_chooser; WARNING_CFLAGS = ( @@ -14542,8 +14347,6 @@ OTHER_LDFLAGS = ( "-framework", Cocoa, - "-framework", - Carbon, ); PRODUCT_NAME = fonts; WARNING_CFLAGS = ( @@ -14573,8 +14376,6 @@ OTHER_LDFLAGS = ( "-framework", Cocoa, - "-framework", - Carbon, ); PRODUCT_NAME = tabs; WARNING_CFLAGS = ( @@ -14636,8 +14437,6 @@ OTHER_LDFLAGS = ( "-framework", Cocoa, - "-framework", - Carbon, ); PRODUCT_NAME = input_choice; WARNING_CFLAGS = ( @@ -14667,8 +14466,6 @@ OTHER_LDFLAGS = ( "-framework", Cocoa, - "-framework", - Carbon, ); PRODUCT_NAME = keyboard; WARNING_CFLAGS = ( @@ -14698,8 +14495,6 @@ OTHER_LDFLAGS = ( "-framework", Cocoa, - "-framework", - Carbon, ); PRODUCT_NAME = scroll; WARNING_CFLAGS = ( @@ -14732,8 +14527,6 @@ OTHER_LDFLAGS = ( "-framework", Cocoa, - "-framework", - Carbon, ); PRODUCT_NAME = curve; WARNING_CFLAGS = ( @@ -14829,8 +14622,6 @@ OTHER_LDFLAGS = ( "-framework", Cocoa, - "-framework", - Carbon, ); PRODUCT_NAME = menubar; WARNING_CFLAGS = ( @@ -14860,8 +14651,6 @@ OTHER_LDFLAGS = ( "-framework", Cocoa, - "-framework", - Carbon, ); PRODUCT_NAME = table; WARNING_CFLAGS = ( @@ -14894,8 +14683,6 @@ OTHER_LDFLAGS = ( "-framework", Cocoa, - "-framework", - Carbon, ); PRODUCT_NAME = rotated_text; WARNING_CFLAGS = ( @@ -14928,8 +14715,6 @@ OTHER_LDFLAGS = ( "-framework", Cocoa, - "-framework", - Carbon, ); PRODUCT_NAME = input_choice; WARNING_CFLAGS = ( @@ -14962,8 +14747,6 @@ OTHER_LDFLAGS = ( "-framework", Cocoa, - "-framework", - Carbon, ); PRODUCT_NAME = output; WARNING_CFLAGS = ( @@ -14993,8 +14776,6 @@ OTHER_LDFLAGS = ( "-framework", Cocoa, - "-framework", - Carbon, ); PRODUCT_NAME = boxtype; WARNING_CFLAGS = ( @@ -15027,8 +14808,6 @@ OTHER_LDFLAGS = ( "-framework", Cocoa, - "-framework", - Carbon, ); PRODUCT_NAME = table; WARNING_CFLAGS = ( @@ -15061,8 +14840,6 @@ OTHER_LDFLAGS = ( "-framework", Cocoa, - "-framework", - Carbon, ); PRODUCT_NAME = threads; WARNING_CFLAGS = ( @@ -15090,13 +14867,11 @@ ../../png, ../../jpeg, ); - INFOPLIST_FILE = "plists/utf8-Info copy.plist"; + INFOPLIST_FILE = "plists/utf8-Info.plist"; INSTALL_PATH = "$(HOME)/Applications"; OTHER_LDFLAGS = ( "-framework", Cocoa, - "-framework", - Carbon, ); PRODUCT_NAME = utf8; WARNING_CFLAGS = ( @@ -15121,13 +14896,11 @@ ../../png, ../../jpeg, ); - INFOPLIST_FILE = "plists/utf8-Info copy.plist"; + INFOPLIST_FILE = "plists/utf8-Info.plist"; INSTALL_PATH = "$(HOME)/Applications"; OTHER_LDFLAGS = ( "-framework", Cocoa, - "-framework", - Carbon, ); PRODUCT_NAME = utf8; WARNING_CFLAGS = ( @@ -15157,8 +14930,6 @@ OTHER_LDFLAGS = ( "-framework", Cocoa, - "-framework", - Carbon, ); PRODUCT_NAME = button; WARNING_CFLAGS = ( @@ -15191,8 +14962,6 @@ OTHER_LDFLAGS = ( "-framework", Cocoa, - "-framework", - Carbon, ); PRODUCT_NAME = gl_overlay; WARNING_CFLAGS = ( @@ -15225,8 +14994,6 @@ OTHER_LDFLAGS = ( "-framework", Cocoa, - "-framework", - Carbon, ); PRODUCT_NAME = tiled_image; WARNING_CFLAGS = ( @@ -15259,8 +15026,6 @@ OTHER_LDFLAGS = ( "-framework", Cocoa, - "-framework", - Carbon, ); PRODUCT_NAME = pixmap; WARNING_CFLAGS = ( @@ -15293,8 +15058,6 @@ OTHER_LDFLAGS = ( "-framework", Cocoa, - "-framework", - Carbon, ); PRODUCT_NAME = radio; WARNING_CFLAGS = ( @@ -15324,8 +15087,6 @@ OTHER_LDFLAGS = ( "-framework", Cocoa, - "-framework", - Carbon, ); PRODUCT_NAME = pixmap; WARNING_CFLAGS = ( @@ -15355,8 +15116,6 @@ OTHER_LDFLAGS = ( "-framework", Cocoa, - "-framework", - Carbon, ); PRODUCT_NAME = line_style; WARNING_CFLAGS = ( @@ -15386,8 +15145,6 @@ OTHER_LDFLAGS = ( "-framework", Cocoa, - "-framework", - Carbon, ); PRODUCT_NAME = shape; WARNING_CFLAGS = ( @@ -15417,8 +15174,6 @@ OTHER_LDFLAGS = ( "-framework", Cocoa, - "-framework", - Carbon, ); PRODUCT_NAME = subwindow; WARNING_CFLAGS = ( @@ -15448,8 +15203,6 @@ OTHER_LDFLAGS = ( "-framework", Cocoa, - "-framework", - Carbon, ); PRODUCT_NAME = overlay; WARNING_CFLAGS = ( @@ -15482,8 +15235,6 @@ OTHER_LDFLAGS = ( "-framework", Cocoa, - "-framework", - Carbon, ); PRODUCT_NAME = ask; WARNING_CFLAGS = ( @@ -15513,8 +15264,6 @@ OTHER_LDFLAGS = ( "-framework", Cocoa, - "-framework", - Carbon, ); PRODUCT_NAME = input; WARNING_CFLAGS = ( @@ -15547,8 +15296,6 @@ OTHER_LDFLAGS = ( "-framework", Cocoa, - "-framework", - Carbon, ); PRODUCT_NAME = forms; WARNING_CFLAGS = ( @@ -15578,8 +15325,6 @@ OTHER_LDFLAGS = ( "-framework", Cocoa, - "-framework", - Carbon, ); PRODUCT_NAME = cube; WARNING_CFLAGS = ( @@ -15609,8 +15354,6 @@ OTHER_LDFLAGS = ( "-framework", Cocoa, - "-framework", - Carbon, ); PRODUCT_NAME = blocks; WARNING_CFLAGS = ( @@ -15664,8 +15407,6 @@ OTHER_LDFLAGS = ( "-framework", Cocoa, - "-framework", - Carbon, ); PRODUCT_NAME = cursor; WARNING_CFLAGS = ( @@ -15695,8 +15436,6 @@ OTHER_LDFLAGS = ( "-framework", Cocoa, - "-framework", - Carbon, ); PRODUCT_NAME = "native-filechooser"; WARNING_CFLAGS = ( @@ -15729,8 +15468,6 @@ OTHER_LDFLAGS = ( "-framework", Cocoa, - "-framework", - Carbon, ); PRODUCT_NAME = color_chooser; WARNING_CFLAGS = ( @@ -15794,8 +15531,6 @@ OTHER_LDFLAGS = ( "-framework", Cocoa, - "-framework", - Carbon, ); PRODUCT_NAME = symbols; WARNING_CFLAGS = ( @@ -15825,8 +15560,6 @@ OTHER_LDFLAGS = ( "-framework", Cocoa, - "-framework", - Carbon, ); PRODUCT_NAME = resize; WARNING_CFLAGS = ( @@ -15888,8 +15621,6 @@ OTHER_LDFLAGS = ( "-framework", Cocoa, - "-framework", - Carbon, ); PRODUCT_NAME = fractals; WARNING_CFLAGS = ( @@ -15952,8 +15683,6 @@ OTHER_LDFLAGS = ( "-framework", Cocoa, - "-framework", - Carbon, ); PRODUCT_NAME = fullscreen; WARNING_CFLAGS = ( @@ -15983,8 +15712,6 @@ OTHER_LDFLAGS = ( "-framework", Cocoa, - "-framework", - Carbon, ); PRODUCT_NAME = threads; WARNING_CFLAGS = ( diff --git a/ide/Xcode3/fltk.pch b/ide/Xcode3/fltk.pch index 83be8d454..05a9d2508 100644 --- a/ide/Xcode3/fltk.pch +++ b/ide/Xcode3/fltk.pch @@ -7,5 +7,5 @@ #endif #ifdef FL_LIBRARY -#include +#include #endif diff --git a/src/Fl_Gl_Choice.cxx b/src/Fl_Gl_Choice.cxx index fa99d2705..df6267650 100644 --- a/src/Fl_Gl_Choice.cxx +++ b/src/Fl_Gl_Choice.cxx @@ -37,8 +37,8 @@ # include # ifdef __APPLE__ +# include # include -# include # endif # ifdef WIN32 @@ -296,6 +296,14 @@ GLContext fl_create_gl_context(Fl_Window* window, const Fl_Gl_Choice* g, int lay } # elif defined(__APPLE_QUARTZ__) +static CGrafPtr fl_GetWindowPort(WindowRef window) +{ + typedef CGrafPtr (*wf)(WindowRef); + static wf f = NULL; + if ( ! f) f = (wf)Fl_X::get_carbon_function("GetWindowPort"); + return (*f)(window); +} + // warning: the Quartz version should probably use Core GL (CGL) instead of AGL GLContext fl_create_gl_context(Fl_Window* window, const Fl_Gl_Choice* g, int layer) { GLContext context, shared_ctx = 0; @@ -312,17 +320,17 @@ GLContext fl_create_gl_context(Fl_Window* window, const Fl_Gl_Choice* g, int lay #if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_5 #if __LP64__ // 64 bit version - aglSetWindowRef(context, Fl_X::i(window)->window_ref()/*fl_mac_windowref(window)*/ ); + aglSetWindowRef(context, Fl_X::i(window)->window_ref() ); #else // 32 bit version >= 10.5 if (aglSetWindowRef != NULL) - aglSetWindowRef(context, Fl_X::i(window)->window_ref()/*fl_mac_windowref(window)*/ ); + aglSetWindowRef(context, Fl_X::i(window)->window_ref() ); else - aglSetDrawable( context, GetWindowPort( Fl_X::i(window)->window_ref()/*fl_mac_windowref(window)*/ ) ); + aglSetDrawable( context, fl_GetWindowPort( Fl_X::i(window)->window_ref() ) ); #endif #else // 32 bit version < 10.5 - aglSetDrawable( context, GetWindowPort( Fl_X::i(window)->window_ref()/*fl_mac_windowref(window)*/ ) ); + aglSetDrawable( context, fl_GetWindowPort( Fl_X::i(window)->window_ref() ) ); #endif return (context); } @@ -352,17 +360,17 @@ void fl_set_gl_context(Fl_Window* w, GLContext context) { #if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_5 #if __LP64__ // 64 bit version - aglSetWindowRef(context, Fl_X::i(w)->window_ref()/*fl_mac_windowref(w)*/ ); + aglSetWindowRef(context, Fl_X::i(w)->window_ref() ); #else // 32 bit version >= 10.5 if (aglSetWindowRef != NULL) - aglSetWindowRef(context, Fl_X::i(w)->window_ref()/*fl_mac_windowref(w)*/ ); + aglSetWindowRef(context, Fl_X::i(w)->window_ref() ); else - aglSetDrawable( context, GetWindowPort( Fl_X::i(w)->window_ref()/*fl_mac_windowref(w)*/ ) ); + aglSetDrawable( context, fl_GetWindowPort( Fl_X::i(w)->window_ref() ) ); #endif #else // 32 bit version < 10.5 - aglSetDrawable( context, GetWindowPort( Fl_X::i(w)->window_ref()/*fl_mac_windowref(w)*/ ) ); + aglSetDrawable( context, fl_GetWindowPort( Fl_X::i(w)->window_ref() ) ); #endif aglSetCurrentContext(context); # else diff --git a/src/Fl_Gl_Window.cxx b/src/Fl_Gl_Window.cxx index 0f46b23bb..52bf72bad 100644 --- a/src/Fl_Gl_Window.cxx +++ b/src/Fl_Gl_Window.cxx @@ -277,12 +277,12 @@ void Fl_Gl_Window::flush() { // warning: the Quartz version should probably use Core GL (CGL) instead of AGL //: clear previous clipping in this shared port #if ! __LP64__ - GrafPtr port = GetWindowPort( Fl_X::i(this)->window_ref() ); +/*GrafPtr port = GetWindowPort( Fl_X::i(this)->window_ref() ); Rect rect; SetRect( &rect, 0, 0, 0x7fff, 0x7fff ); GrafPtr old; GetPort( &old ); SetPort( port ); ClipRect( &rect ); - SetPort( old ); + SetPort( old );*/ #endif #endif diff --git a/src/Fl_Preferences.cxx b/src/Fl_Preferences.cxx index eb393cf3f..7e70e7316 100644 --- a/src/Fl_Preferences.cxx +++ b/src/Fl_Preferences.cxx @@ -47,7 +47,7 @@ # define access _access # define mkdir _mkdir #elif defined (__APPLE__) -# include +# include # include # include #else diff --git a/src/Fl_Quartz_Printer.mm b/src/Fl_Quartz_Printer.mm index 825826457..e531fa706 100644 --- a/src/Fl_Quartz_Printer.mm +++ b/src/Fl_Quartz_Printer.mm @@ -92,7 +92,11 @@ int Fl_Printer::start_job (int pagecount, int *frompage, int *topage) status = PMCreatePageFormat(&pageFormat); status = PMSessionDefaultPageFormat(printSession, pageFormat); if (status != noErr) return 1; - status = PMSessionPageSetupDialog(printSession, pageFormat, &accepted); + // get pointer to the PMSessionPageSetupDialog Carbon fucntion + typedef OSStatus (*dialog_f)(PMPrintSession, PMPageFormat, Boolean *); + static dialog_f f = NULL; + if (!f) f = (dialog_f)Fl_X::get_carbon_function("PMSessionPageSetupDialog"); + status = (*f)(printSession, pageFormat, &accepted); if (status != noErr || !accepted) { Fl::first_window()->show(); return 1; @@ -102,7 +106,11 @@ int Fl_Printer::start_job (int pagecount, int *frompage, int *topage) status = PMSessionDefaultPrintSettings (printSession, printSettings); if (status != noErr) return 1; PMSetPageRange(printSettings, 1, (UInt32)kPMPrintAllPages); - status = PMSessionPrintDialog(printSession, printSettings, pageFormat, &accepted); + // get pointer to the PMSessionPrintDialog Carbon fucntion + typedef OSStatus (*dialog_f2)(PMPrintSession, PMPrintSettings, PMPageFormat, Boolean *); + static dialog_f2 f2 = NULL; + if (!f2) f2 = (dialog_f2)Fl_X::get_carbon_function("PMSessionPrintDialog"); + status = (*f2)(printSession, printSettings, pageFormat, &accepted); if (!accepted) status = kPMCancel; if (status != noErr) { Fl::first_window()->show(); diff --git a/src/Fl_cocoa.mm b/src/Fl_cocoa.mm index 2ad315037..20a7250f8 100644 --- a/src/Fl_cocoa.mm +++ b/src/Fl_cocoa.mm @@ -38,23 +38,6 @@ // One Compile to copy them all and in the bundle bind them, // in the Land of MacOS X where the Drop-Shadows lie." -/* - TODO: The following messages point to the last Carbon remainders. We should - really remove these as well, so we can stop linking to Carbon alltogether. - - "_GetKeys", referenced from: - Fl::get_key(int) in Fl_get_key.o (kept only for pre-10.4 runs) - - "_GetEventParameter", referenced from: - carbonTextHandler(OpaqueEventHandlerCallRef*, OpaqueEventRef*, void*) in Fl.o - - "_InstallEventHandler", referenced from: - fl_open_display() in Fl.o - - "_GetEventDispatcherTarget", referenced from: - fl_open_display() in Fl.o -*/ - #ifdef __APPLE__ #define CONSOLIDATE_MOTION 0 @@ -84,7 +67,7 @@ extern "C" { typedef long NSInteger; typedef unsigned long NSUInteger; #else -typedef int NSInteger; +typedef long NSInteger; typedef unsigned int NSUInteger; #endif #endif @@ -878,77 +861,14 @@ static void calc_e_text(CFStringRef s, char *buffer, size_t len, unsigned sym) } } +static int cocoaKeyboardHandler(NSEvent *theEvent); -// this gets called by CJK character palette input -static OSStatus carbonTextHandler( EventHandlerCallRef nextHandler, EventRef event, void *unused ) +@interface FLTextView : NSTextView +// this subclass is needed under OS X 10.3 and 10.4 but not under 10.6 where the base class is enough { - // make sure the key window is an FLTK window - NSWindow *keywindow = [NSApp keyWindow]; - if (keywindow == nil || ![keywindow isMemberOfClass:[FLWindow class]]) return eventNotHandledErr; - // under 10.5 this gets called only after character palette inputs - // but under 10.6 this gets also called by interpretKeyEvents - // during keyboard input when we don't want to run it - if ([[NSApp currentEvent] type] != NSSystemDefined) return eventNotHandledErr; - Fl_Window *window = [(FLWindow*)keywindow getFl_Window]; - fl_lock_function(); - UniChar ucs[20]; - ByteCount actual_size; - unsigned int i; - GetEventParameter( event, kEventParamTextInputSendText, typeUnicodeText, - NULL, 20, &actual_size, ucs ); - char utf8buf[50], *p; - p = utf8buf; - for(i=0; i < actual_size/2; i++) { - p += fl_utf8encode(ucs[i], p); - } - int len = p - utf8buf; - utf8buf[len]=0; - - Fl::e_length = len; - Fl::e_text = utf8buf; - while (window->parent()) window = window->window(); - Fl::handle(FL_KEYBOARD, window); - fl_unlock_function(); - fl_lock_function(); - Fl::handle(FL_KEYUP, window); - fl_unlock_function(); - // for some reason, the window does not redraw until the next mouse move or button push - // sending a 'redraw()' or 'awake()' does not solve the issue! - Fl::flush(); - return noErr; -} - -static OSStatus cocoaKeyboardHandler(NSEvent *theEvent); - -@interface FLTextView : NSTextView -{ - BOOL compose_key; // YES iff entering a character composition - BOOL needKBhandler_val; } -- (BOOL)needKBhandler; -- (void)needKBhandler:(BOOL)value; -- (BOOL)compose; -- (void)compose:(BOOL)value; -- (void)insertText:(id)aString; -- (void)doCommandBySelector:(SEL)aSelector; @end @implementation FLTextView -- (BOOL)needKBhandler -{ - return needKBhandler_val; -} -- (void)needKBhandler:(BOOL)value -{ - needKBhandler_val = value; -} -- (BOOL)compose -{ - return compose_key; -} -- (void)compose:(BOOL)value -{ - compose_key = value; -} - (void)insertText:(id)aString { cocoaKeyboardHandler([NSApp currentEvent]); @@ -960,7 +880,7 @@ static OSStatus cocoaKeyboardHandler(NSEvent *theEvent); @end /* - * handle cocoa keyboard events +Handle cocoa keyboard events Events during a character composition sequence: - keydown with deadkey -> [[theEvent characters] length] is 0 - keyup -> [theEvent characters] contains the deadkey: display it temporarily @@ -968,7 +888,7 @@ Events during a character composition sequence: replace the temporary character by this one - keyup -> [theEvent characters] contains the standard character */ -static OSStatus cocoaKeyboardHandler(NSEvent *theEvent) +static int cocoaKeyboardHandler(NSEvent *theEvent) { static char buffer[32]; int sendEvent = 0, retval = 0; @@ -984,8 +904,6 @@ static OSStatus cocoaKeyboardHandler(NSEvent *theEvent) unsigned short sym = 0; keyCode = [theEvent keyCode]; NSString *s = [theEvent characters]; - FLTextView *edit = (FLTextView*)[[theEvent window] fieldEditor:YES forObject:nil]; - [edit needKBhandler:NO]; if ( (mods & NSShiftKeyMask) && (mods & NSCommandKeyMask) ) { s = [s uppercaseString]; // US keyboards return lowercase letter in s if cmd-shift-key is hit } @@ -999,7 +917,6 @@ static OSStatus cocoaKeyboardHandler(NSEvent *theEvent) sendEvent = FL_KEYBOARD; // fall through case NSKeyUp: - if([edit compose]) sendEvent = FL_KEYBOARD; // when composing, the temporary character appears at KeyUp if ( !sendEvent ) { sendEvent = FL_KEYUP; Fl::e_state &= 0xbfffffff; // clear the deadkey flag @@ -1026,13 +943,9 @@ static OSStatus cocoaKeyboardHandler(NSEvent *theEvent) } if (sendEvent) { retval = Fl::handle(sendEvent,window); - if([edit compose]) { - Fl::compose_state = 1; - [edit compose:NO]; - } } fl_unlock_function(); - return retval ? (int)noErr : (int)eventNotHandledErr; // return noErr if FLTK handled the event + return retval; } @@ -1310,8 +1223,7 @@ extern "C" { static FLTextView *view = nil; if (!view) { view = [[FLTextView alloc] initWithFrame:rect]; - [view compose:NO]; - } + } return view; } @end @@ -1422,12 +1334,6 @@ void fl_open_display() { } } createAppleMenu(); - // Install Carbon Event handler for character palette input - static EventTypeSpec textEvents[] = { - { kEventClassTextInput, kEventTextInputUnicodeForKeyEvent } - }; - EventHandlerUPP textHandler = NewEventHandlerUPP( carbonTextHandler ); - InstallEventHandler(GetEventDispatcherTarget(), textHandler, 1, textEvents, NULL, 0L); [[NSNotificationCenter defaultCenter] addObserver:mydelegate selector:@selector(anywindowwillclosenotif:) @@ -1653,7 +1559,7 @@ static void q_set_window_title(NSWindow *nsw, const char * name ) { } -@interface FLView : NSView { +@interface FLView : NSView { } - (void)drawRect:(NSRect)rect; - (BOOL)acceptsFirstResponder; @@ -1694,8 +1600,8 @@ static void q_set_window_title(NSWindow *nsw, const char * name ) { } - (BOOL)performKeyEquivalent:(NSEvent*)theEvent { - OSStatus err = cocoaKeyboardHandler(theEvent); - return (err ? NO : YES); + int err = cocoaKeyboardHandler(theEvent); + return (err ? YES : NO); } - (BOOL)acceptsFirstMouse:(NSEvent*)theEvent { @@ -1738,12 +1644,7 @@ static void q_set_window_title(NSWindow *nsw, const char * name ) { } - (void)keyDown:(NSEvent *)theEvent { FLTextView *edit = (FLTextView*)[[theEvent window] fieldEditor:YES forObject:nil]; - if ([[theEvent characters] length] == 0) [edit compose:YES]; - if (Fl::compose_state) [edit needKBhandler:YES]; - else [edit needKBhandler:NO]; [edit interpretKeyEvents:[NSArray arrayWithObject:theEvent]]; - // in some cases (e.g., some Greek letters with tonos) interpretKeyEvents does not call insertText - if ([edit needKBhandler]) cocoaKeyboardHandler(theEvent); } - (void)keyUp:(NSEvent *)theEvent { cocoaKeyboardHandler(theEvent); @@ -1843,6 +1744,99 @@ static void q_set_window_title(NSWindow *nsw, const char * name ) { { return NSDragOperationGeneric; } + +// These functions implement text input. +// Only two-stroke character composition works at this point. +// Needs much elaboration to fully support CJK text input, +// but this is the way to go. +- (void)doCommandBySelector:(SEL)aSelector { +} + +- (void)insertText:(id)aString { + NSEvent *event = [NSApp currentEvent]; + NSEventType type = [event type]; + NSString *str = @""; + NSString *received; + if ([aString isKindOfClass:[NSAttributedString class]]) { + received = [(NSAttributedString*)aString string]; + } else { + received = (NSString*)aString; + } +//NSLog(@"insertText: received=%@ event type=%d",received, type); + if (type == NSKeyDown ) { + str = [event characters]; + } + if ([received isEqualToString:@"\b"] || [str isEqualToString:received]) { + if (type == NSKeyDown ) cocoaKeyboardHandler(event); + } else { + fl_lock_function(); + Fl_Window *window = [(FLWindow*)[NSApp keyWindow] getFl_Window]; + Fl::e_text = (char*)[received UTF8String]; + Fl::e_length = strlen(Fl::e_text); + Fl::handle(FL_KEYBOARD, window); + Fl::handle(FL_KEYUP, window); + fl_unlock_function(); + // for some reason, the window does not redraw until the next mouse move or button push + // sending a 'redraw()' or 'awake()' does not solve the issue! + Fl::flush(); + } +} + +- (void)setMarkedText:(id)aString selectedRange:(NSRange)newSelection { + // NSLog(@"setMarkedText: %@ %d %d Fl::compose_state=%d", + // aString,newSelection.location,newSelection.length,newSelection.location); + [self insertText:aString]; + Fl::compose_state = newSelection.location; +} + +- (void)unmarkText { + Fl::compose_state = 0; + //NSLog(@"unmarkText"); +} + +- (NSRange)selectedRange { + return NSMakeRange(NSNotFound, 0); +} + +- (NSRange)markedRange { + //NSLog(@"markedRange ?"); + return NSMakeRange(NSNotFound, Fl::compose_state); +} + +- (BOOL)hasMarkedText { + //NSLog(@"hasMarkedText %s", Fl::compose_state > 0?"YES":"NO"); + return (Fl::compose_state > 0); +} + +- (NSAttributedString *)attributedSubstringFromRange:(NSRange)aRange { + //NSLog(@"attributedSubstringFromRange: %d %d",aRange.location,aRange.length); + return nil; +} + +- (NSArray *)validAttributesForMarkedText { + return nil; +} + +- (NSRect)firstRectForCharacterRange:(NSRange)aRange { + NSRect glyphRect, frame; + + frame = [self frame]; + glyphRect.origin.x = frame.size.width; + glyphRect.origin.y = 0; + glyphRect.size.width = glyphRect.size.height = 0; + // Convert the rect to screen coordinates + glyphRect.origin = [[self window] convertBaseToScreen:glyphRect.origin]; + return glyphRect; +} + +- (NSUInteger)characterIndexForPoint:(NSPoint)aPoint { + return 0; +} + +- (NSInteger)conversationIdentifier { + return (NSInteger)self; +} + @end @@ -3271,6 +3265,26 @@ Window fl_xid(const Fl_Window* w) return Fl_X::i(w)->xid; } +#include + +/* Returns the address of a Carbon function after dynamically loading the Carbon library if needed. + Supports old Mac OS X versions that may use a couple of Carbon calls: + GetKeys used by OS X 10.3 or before (in Fl::get_key()) + PMSessionPageSetupDialog and PMSessionPrintDialog used by 10.4 or before (in Fl_Printer::start_job()) + GetWindowPort used by 10.4 or before (in Fl_Gl_Choice.cxx) + */ +void *Fl_X::get_carbon_function(const char *function_name) { + static void *carbon = NULL; + void *f = NULL; + if (!carbon) { + carbon = dlopen("/System/Library/Frameworks/Carbon.framework/Carbon", RTLD_LAZY); + } + if (carbon) { + f = dlsym(carbon, function_name); + } + return f; +} + #endif // __APPLE__ // diff --git a/src/Fl_compose.cxx b/src/Fl_compose.cxx index c773c6bef..7069c1f27 100644 --- a/src/Fl_compose.cxx +++ b/src/Fl_compose.cxx @@ -65,7 +65,7 @@ int Fl::compose(int& del) { if ((e_state & (FL_ALT | FL_META)) && !(ascii & 128)) return 0; #endif if(Fl::compose_state) { - del = 1; + del = Fl::compose_state; Fl::compose_state = 0; } else { #ifndef __APPLE__ diff --git a/src/Fl_get_key_mac.cxx b/src/Fl_get_key_mac.cxx index 7f3c7a227..126b17806 100644 --- a/src/Fl_get_key_mac.cxx +++ b/src/Fl_get_key_mac.cxx @@ -83,8 +83,6 @@ int Fl::event_key(int k) { return get_key(k); } -#include - //: returns true, if that key is pressed right now int Fl::get_key(int k) { #if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_4 @@ -94,8 +92,13 @@ int Fl::get_key(int k) { else #endif { - KeyMap foo; - GetKeys(foo); + typedef UInt32 fl_KeyMap[4]; + fl_KeyMap foo; + // use the GetKeys Carbon function + typedef void (*keymap_f)(fl_KeyMap); + static keymap_f f = NULL; + if (!f) f = ( keymap_f )Fl_X::get_carbon_function("GetKeys"); + (*f)(foo); #ifdef MAC_TEST_FOR_KEYCODES static int cnt = 0; if (cnt++>1024) { diff --git a/test/demo.cxx b/test/demo.cxx index 66e34ba0c..b1f30eb17 100644 --- a/test/demo.cxx +++ b/test/demo.cxx @@ -37,7 +37,7 @@ # define putenv _putenv # endif // !__WATCOMC__ #elif defined USING_XCODE -#include +#include #else # include #endif -- cgit v1.2.3