From e381dff4b37d2b3116720a38cb451ca55e637354 Mon Sep 17 00:00:00 2001 From: Julian Storer Date: Sun, 3 Jul 2011 14:56:14 +0100 Subject: [PATCH] Even more structural reorganisation. --- Builds/Linux/Makefile | 6 - Builds/MacOSX/Juce.xcodeproj/project.pbxproj | 8 - Builds/VisualStudio2005/Juce.vcproj | 2 - Builds/VisualStudio2008/Juce.vcproj | 2 - Builds/VisualStudio2008_DLL/Juce.vcproj | 2 - Builds/VisualStudio2010/Juce.vcxproj | 1 - Builds/VisualStudio2010/Juce.vcxproj.filters | 6 - Builds/iOS/Juce.xcodeproj/project.pbxproj | 8 - Juce.jucer | 4 - juce_amalgamated.cpp | 177 +++++------ src/native/android/juce_android_JNIHelpers.h | 306 +++++++++++++++++++ src/native/mac/juce_mac_Debugging.mm | 58 ---- src/native/mac/juce_mac_NativeCode.mm | 1 - src/native/mac/juce_mac_SystemStats.mm | 6 + src/native/mac/juce_mac_Threads.mm | 22 ++ src/native/windows/juce_win32_Misc.cpp | 62 ---- src/native/windows/juce_win32_NativeCode.cpp | 1 - src/native/windows/juce_win32_Threads.cpp | 28 +- src/native/windows/juce_win32_Windowing.cpp | 49 ++- 19 files changed, 459 insertions(+), 290 deletions(-) create mode 100644 src/native/android/juce_android_JNIHelpers.h delete mode 100644 src/native/mac/juce_mac_Debugging.mm delete mode 100644 src/native/windows/juce_win32_Misc.cpp diff --git a/Builds/Linux/Makefile b/Builds/Linux/Makefile index bd6c36ee44..ef231624b4 100644 --- a/Builds/Linux/Makefile +++ b/Builds/Linux/Makefile @@ -324,7 +324,6 @@ OBJECTS := \ $(OBJDIR)/juce_win32_Fonts_e695d7fc.o \ $(OBJDIR)/juce_win32_Messaging_926ab77c.o \ $(OBJDIR)/juce_win32_Midi_fac3cfb3.o \ - $(OBJDIR)/juce_win32_Misc_1407f3fe.o \ $(OBJDIR)/juce_win32_NativeCode_c247c7f6.o \ $(OBJDIR)/juce_win32_Network_6c84a66.o \ $(OBJDIR)/juce_win32_OpenGLComponent_d0d99a46.o \ @@ -1812,11 +1811,6 @@ $(OBJDIR)/juce_win32_Midi_fac3cfb3.o: ../../src/native/windows/juce_win32_Midi.c @echo "Compiling juce_win32_Midi.cpp" @$(CXX) $(CXXFLAGS) -o "$@" -c "$<" -$(OBJDIR)/juce_win32_Misc_1407f3fe.o: ../../src/native/windows/juce_win32_Misc.cpp - -@mkdir -p $(OBJDIR) - @echo "Compiling juce_win32_Misc.cpp" - @$(CXX) $(CXXFLAGS) -o "$@" -c "$<" - $(OBJDIR)/juce_win32_NativeCode_c247c7f6.o: ../../src/native/windows/juce_win32_NativeCode.cpp -@mkdir -p $(OBJDIR) @echo "Compiling juce_win32_NativeCode.cpp" diff --git a/Builds/MacOSX/Juce.xcodeproj/project.pbxproj b/Builds/MacOSX/Juce.xcodeproj/project.pbxproj index 151e200ddc..f857355f43 100644 --- a/Builds/MacOSX/Juce.xcodeproj/project.pbxproj +++ b/Builds/MacOSX/Juce.xcodeproj/project.pbxproj @@ -289,7 +289,6 @@ 51F5844EAE455D51BDB17228 = { isa = PBXBuildFile; fileRef = 72524FE185FF48DC1F954341; }; C99F35ABEC13F58C27C1D303 = { isa = PBXBuildFile; fileRef = BF5307F364AC9250D8625168; }; 3D9B5EDBECAA680B0A067F5C = { isa = PBXBuildFile; fileRef = AA4823F2F2A78C43D7A039D0; }; - FB21AC2812F11A4B8E4676E0 = { isa = PBXBuildFile; fileRef = 94580B04D0BC48A3E6CBB04C; }; 724B03672FC7862B671969BC = { isa = PBXBuildFile; fileRef = 87A5A064CC3CD55BA5D7617D; }; 8B31099030792C554BD51211 = { isa = PBXBuildFile; fileRef = 641638A0466CEC1BDEAFB476; }; D04EEEC7EAE7C806E95ED41C = { isa = PBXBuildFile; fileRef = 7DB37383434F45D8A7B674C3; }; @@ -319,7 +318,6 @@ D4A05D7CA67B6F0527C9BD81 = { isa = PBXBuildFile; fileRef = 1DBF9DAAD0690CB2CA4E9960; }; 0D7547577A31512EDCEDC42C = { isa = PBXBuildFile; fileRef = BA561E64C6400CFB1DE013F6; }; E2FDC7D3E3DC4C1423FA0C5B = { isa = PBXBuildFile; fileRef = 061B492EABD6B1C995D581A8; }; - E9943D2BC3C60AF1AB241B48 = { isa = PBXBuildFile; fileRef = 519B519B76E2EEEAB49C62DF; }; A46B0025A68136ED993E0D85 = { isa = PBXBuildFile; fileRef = 50159A5B7A552A6C1EB557F3; }; B99678E919BF547A3A3F5D6E = { isa = PBXBuildFile; fileRef = CDA5FCC51F6C1E84D7DC3274; }; 5B714CDD0082419BFED7D2D4 = { isa = PBXBuildFile; fileRef = B14735381ADB00741166E330; }; @@ -990,7 +988,6 @@ 72524FE185FF48DC1F954341 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_mac_CoreAudio.cpp"; path = "../../src/native/mac/juce_mac_CoreAudio.cpp"; sourceTree = "SOURCE_ROOT"; }; BF5307F364AC9250D8625168 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_mac_CoreGraphicsContext.mm"; path = "../../src/native/mac/juce_mac_CoreGraphicsContext.mm"; sourceTree = "SOURCE_ROOT"; }; AA4823F2F2A78C43D7A039D0 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_mac_CoreMidi.cpp"; path = "../../src/native/mac/juce_mac_CoreMidi.cpp"; sourceTree = "SOURCE_ROOT"; }; - 94580B04D0BC48A3E6CBB04C = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_mac_Debugging.mm"; path = "../../src/native/mac/juce_mac_Debugging.mm"; sourceTree = "SOURCE_ROOT"; }; 87A5A064CC3CD55BA5D7617D = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_mac_FileChooser.mm"; path = "../../src/native/mac/juce_mac_FileChooser.mm"; sourceTree = "SOURCE_ROOT"; }; 641638A0466CEC1BDEAFB476 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_mac_Files.mm"; path = "../../src/native/mac/juce_mac_Files.mm"; sourceTree = "SOURCE_ROOT"; }; 7DB37383434F45D8A7B674C3 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_mac_Fonts.mm"; path = "../../src/native/mac/juce_mac_Fonts.mm"; sourceTree = "SOURCE_ROOT"; }; @@ -1027,7 +1024,6 @@ E9B203E963EB1AB566061AC1 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_win32_HiddenMessageWindow.h"; path = "../../src/native/windows/juce_win32_HiddenMessageWindow.h"; sourceTree = "SOURCE_ROOT"; }; BA561E64C6400CFB1DE013F6 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_Messaging.cpp"; path = "../../src/native/windows/juce_win32_Messaging.cpp"; sourceTree = "SOURCE_ROOT"; }; 061B492EABD6B1C995D581A8 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_Midi.cpp"; path = "../../src/native/windows/juce_win32_Midi.cpp"; sourceTree = "SOURCE_ROOT"; }; - 519B519B76E2EEEAB49C62DF = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_Misc.cpp"; path = "../../src/native/windows/juce_win32_Misc.cpp"; sourceTree = "SOURCE_ROOT"; }; 50159A5B7A552A6C1EB557F3 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_NativeCode.cpp"; path = "../../src/native/windows/juce_win32_NativeCode.cpp"; sourceTree = "SOURCE_ROOT"; }; E7625D7A06CBC11F40A56A70 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_win32_NativeIncludes.h"; path = "../../src/native/windows/juce_win32_NativeIncludes.h"; sourceTree = "SOURCE_ROOT"; }; CDA5FCC51F6C1E84D7DC3274 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_Network.cpp"; path = "../../src/native/windows/juce_win32_Network.cpp"; sourceTree = "SOURCE_ROOT"; }; @@ -1833,7 +1829,6 @@ 72524FE185FF48DC1F954341, BF5307F364AC9250D8625168, AA4823F2F2A78C43D7A039D0, - 94580B04D0BC48A3E6CBB04C, 87A5A064CC3CD55BA5D7617D, 641638A0466CEC1BDEAFB476, 7DB37383434F45D8A7B674C3, @@ -1871,7 +1866,6 @@ E9B203E963EB1AB566061AC1, BA561E64C6400CFB1DE013F6, 061B492EABD6B1C995D581A8, - 519B519B76E2EEEAB49C62DF, 50159A5B7A552A6C1EB557F3, E7625D7A06CBC11F40A56A70, CDA5FCC51F6C1E84D7DC3274, @@ -2353,7 +2347,6 @@ 51F5844EAE455D51BDB17228, C99F35ABEC13F58C27C1D303, 3D9B5EDBECAA680B0A067F5C, - FB21AC2812F11A4B8E4676E0, 724B03672FC7862B671969BC, 8B31099030792C554BD51211, D04EEEC7EAE7C806E95ED41C, @@ -2383,7 +2376,6 @@ D4A05D7CA67B6F0527C9BD81, 0D7547577A31512EDCEDC42C, E2FDC7D3E3DC4C1423FA0C5B, - E9943D2BC3C60AF1AB241B48, A46B0025A68136ED993E0D85, B99678E919BF547A3A3F5D6E, 5B714CDD0082419BFED7D2D4, diff --git a/Builds/VisualStudio2005/Juce.vcproj b/Builds/VisualStudio2005/Juce.vcproj index 315e85a692..ef4d86b81f 100644 --- a/Builds/VisualStudio2005/Juce.vcproj +++ b/Builds/VisualStudio2005/Juce.vcproj @@ -892,7 +892,6 @@ - @@ -931,7 +930,6 @@ - diff --git a/Builds/VisualStudio2008/Juce.vcproj b/Builds/VisualStudio2008/Juce.vcproj index 4bf4265ce0..ab9c68ec36 100644 --- a/Builds/VisualStudio2008/Juce.vcproj +++ b/Builds/VisualStudio2008/Juce.vcproj @@ -892,7 +892,6 @@ - @@ -931,7 +930,6 @@ - diff --git a/Builds/VisualStudio2008_DLL/Juce.vcproj b/Builds/VisualStudio2008_DLL/Juce.vcproj index 16212248ae..771b7f60a6 100644 --- a/Builds/VisualStudio2008_DLL/Juce.vcproj +++ b/Builds/VisualStudio2008_DLL/Juce.vcproj @@ -894,7 +894,6 @@ - @@ -933,7 +932,6 @@ - diff --git a/Builds/VisualStudio2010/Juce.vcxproj b/Builds/VisualStudio2010/Juce.vcxproj index a2de3370d0..199dabcbd6 100644 --- a/Builds/VisualStudio2010/Juce.vcxproj +++ b/Builds/VisualStudio2010/Juce.vcxproj @@ -407,7 +407,6 @@ - diff --git a/Builds/VisualStudio2010/Juce.vcxproj.filters b/Builds/VisualStudio2010/Juce.vcxproj.filters index cc426e1c8f..6650399d7e 100644 --- a/Builds/VisualStudio2010/Juce.vcxproj.filters +++ b/Builds/VisualStudio2010/Juce.vcxproj.filters @@ -1066,9 +1066,6 @@ Juce\Source\native\mac - - Juce\Source\native\mac - Juce\Source\native\mac @@ -1156,9 +1153,6 @@ Juce\Source\native\windows - - Juce\Source\native\windows - Juce\Source\native\windows diff --git a/Builds/iOS/Juce.xcodeproj/project.pbxproj b/Builds/iOS/Juce.xcodeproj/project.pbxproj index e692a5f28f..69fce832dc 100644 --- a/Builds/iOS/Juce.xcodeproj/project.pbxproj +++ b/Builds/iOS/Juce.xcodeproj/project.pbxproj @@ -289,7 +289,6 @@ 51F5844EAE455D51BDB17228 = { isa = PBXBuildFile; fileRef = 72524FE185FF48DC1F954341; }; C99F35ABEC13F58C27C1D303 = { isa = PBXBuildFile; fileRef = BF5307F364AC9250D8625168; }; 3D9B5EDBECAA680B0A067F5C = { isa = PBXBuildFile; fileRef = AA4823F2F2A78C43D7A039D0; }; - FB21AC2812F11A4B8E4676E0 = { isa = PBXBuildFile; fileRef = 94580B04D0BC48A3E6CBB04C; }; 724B03672FC7862B671969BC = { isa = PBXBuildFile; fileRef = 87A5A064CC3CD55BA5D7617D; }; 8B31099030792C554BD51211 = { isa = PBXBuildFile; fileRef = 641638A0466CEC1BDEAFB476; }; D04EEEC7EAE7C806E95ED41C = { isa = PBXBuildFile; fileRef = 7DB37383434F45D8A7B674C3; }; @@ -319,7 +318,6 @@ D4A05D7CA67B6F0527C9BD81 = { isa = PBXBuildFile; fileRef = 1DBF9DAAD0690CB2CA4E9960; }; 0D7547577A31512EDCEDC42C = { isa = PBXBuildFile; fileRef = BA561E64C6400CFB1DE013F6; }; E2FDC7D3E3DC4C1423FA0C5B = { isa = PBXBuildFile; fileRef = 061B492EABD6B1C995D581A8; }; - E9943D2BC3C60AF1AB241B48 = { isa = PBXBuildFile; fileRef = 519B519B76E2EEEAB49C62DF; }; A46B0025A68136ED993E0D85 = { isa = PBXBuildFile; fileRef = 50159A5B7A552A6C1EB557F3; }; B99678E919BF547A3A3F5D6E = { isa = PBXBuildFile; fileRef = CDA5FCC51F6C1E84D7DC3274; }; 5B714CDD0082419BFED7D2D4 = { isa = PBXBuildFile; fileRef = B14735381ADB00741166E330; }; @@ -990,7 +988,6 @@ 72524FE185FF48DC1F954341 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_mac_CoreAudio.cpp"; path = "../../src/native/mac/juce_mac_CoreAudio.cpp"; sourceTree = "SOURCE_ROOT"; }; BF5307F364AC9250D8625168 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_mac_CoreGraphicsContext.mm"; path = "../../src/native/mac/juce_mac_CoreGraphicsContext.mm"; sourceTree = "SOURCE_ROOT"; }; AA4823F2F2A78C43D7A039D0 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_mac_CoreMidi.cpp"; path = "../../src/native/mac/juce_mac_CoreMidi.cpp"; sourceTree = "SOURCE_ROOT"; }; - 94580B04D0BC48A3E6CBB04C = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_mac_Debugging.mm"; path = "../../src/native/mac/juce_mac_Debugging.mm"; sourceTree = "SOURCE_ROOT"; }; 87A5A064CC3CD55BA5D7617D = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_mac_FileChooser.mm"; path = "../../src/native/mac/juce_mac_FileChooser.mm"; sourceTree = "SOURCE_ROOT"; }; 641638A0466CEC1BDEAFB476 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_mac_Files.mm"; path = "../../src/native/mac/juce_mac_Files.mm"; sourceTree = "SOURCE_ROOT"; }; 7DB37383434F45D8A7B674C3 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_mac_Fonts.mm"; path = "../../src/native/mac/juce_mac_Fonts.mm"; sourceTree = "SOURCE_ROOT"; }; @@ -1027,7 +1024,6 @@ E9B203E963EB1AB566061AC1 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_win32_HiddenMessageWindow.h"; path = "../../src/native/windows/juce_win32_HiddenMessageWindow.h"; sourceTree = "SOURCE_ROOT"; }; BA561E64C6400CFB1DE013F6 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_Messaging.cpp"; path = "../../src/native/windows/juce_win32_Messaging.cpp"; sourceTree = "SOURCE_ROOT"; }; 061B492EABD6B1C995D581A8 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_Midi.cpp"; path = "../../src/native/windows/juce_win32_Midi.cpp"; sourceTree = "SOURCE_ROOT"; }; - 519B519B76E2EEEAB49C62DF = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_Misc.cpp"; path = "../../src/native/windows/juce_win32_Misc.cpp"; sourceTree = "SOURCE_ROOT"; }; 50159A5B7A552A6C1EB557F3 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_NativeCode.cpp"; path = "../../src/native/windows/juce_win32_NativeCode.cpp"; sourceTree = "SOURCE_ROOT"; }; E7625D7A06CBC11F40A56A70 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_win32_NativeIncludes.h"; path = "../../src/native/windows/juce_win32_NativeIncludes.h"; sourceTree = "SOURCE_ROOT"; }; CDA5FCC51F6C1E84D7DC3274 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_Network.cpp"; path = "../../src/native/windows/juce_win32_Network.cpp"; sourceTree = "SOURCE_ROOT"; }; @@ -1833,7 +1829,6 @@ 72524FE185FF48DC1F954341, BF5307F364AC9250D8625168, AA4823F2F2A78C43D7A039D0, - 94580B04D0BC48A3E6CBB04C, 87A5A064CC3CD55BA5D7617D, 641638A0466CEC1BDEAFB476, 7DB37383434F45D8A7B674C3, @@ -1871,7 +1866,6 @@ E9B203E963EB1AB566061AC1, BA561E64C6400CFB1DE013F6, 061B492EABD6B1C995D581A8, - 519B519B76E2EEEAB49C62DF, 50159A5B7A552A6C1EB557F3, E7625D7A06CBC11F40A56A70, CDA5FCC51F6C1E84D7DC3274, @@ -2357,7 +2351,6 @@ 51F5844EAE455D51BDB17228, C99F35ABEC13F58C27C1D303, 3D9B5EDBECAA680B0A067F5C, - FB21AC2812F11A4B8E4676E0, 724B03672FC7862B671969BC, 8B31099030792C554BD51211, D04EEEC7EAE7C806E95ED41C, @@ -2387,7 +2380,6 @@ D4A05D7CA67B6F0527C9BD81, 0D7547577A31512EDCEDC42C, E2FDC7D3E3DC4C1423FA0C5B, - E9943D2BC3C60AF1AB241B48, A46B0025A68136ED993E0D85, B99678E919BF547A3A3F5D6E, 5B714CDD0082419BFED7D2D4, diff --git a/Juce.jucer b/Juce.jucer index 0c7db697d7..dea524483b 100644 --- a/Juce.jucer +++ b/Juce.jucer @@ -1364,8 +1364,6 @@ resource="0" file="src/native/mac/juce_mac_CoreGraphicsContext.mm"/> - - checkBounds (pos, windowBorder.addedTo (component->getBounds()), Desktop::getInstance().getAllMonitorDisplayAreas().getBounds(), - wParam == WMSZ_TOP || wParam == WMSZ_TOPLEFT || wParam == WMSZ_TOPRIGHT, - wParam == WMSZ_LEFT || wParam == WMSZ_TOPLEFT || wParam == WMSZ_BOTTOMLEFT, + wParam == WMSZ_TOP || wParam == WMSZ_TOPLEFT || wParam == WMSZ_TOPRIGHT, + wParam == WMSZ_LEFT || wParam == WMSZ_TOPLEFT || wParam == WMSZ_BOTTOMLEFT, wParam == WMSZ_BOTTOM || wParam == WMSZ_BOTTOMLEFT || wParam == WMSZ_BOTTOMRIGHT, - wParam == WMSZ_RIGHT || wParam == WMSZ_TOPRIGHT || wParam == WMSZ_BOTTOMRIGHT); + wParam == WMSZ_RIGHT || wParam == WMSZ_TOPRIGHT || wParam == WMSZ_BOTTOMRIGHT); r->left = pos.getX(); r->top = pos.getY(); r->right = pos.getRight(); @@ -252086,44 +252109,6 @@ void FileChooser::showPlatformDialog (Array& results, const String& title_ /*** End of inlined file: juce_win32_FileChooser.cpp ***/ -/*** Start of inlined file: juce_win32_Misc.cpp ***/ -// (This file gets included by juce_win32_NativeCode.cpp, rather than being -// compiled on its own). -#if JUCE_INCLUDED_FILE - -bool juce_IsRunningInWine() -{ - HMODULE ntdll = GetModuleHandle (_T("ntdll.dll")); - return ntdll != 0 && GetProcAddress (ntdll, "wine_get_version") != 0; -} - -String JUCE_CALLTYPE Process::getCurrentCommandLineParams() -{ - return CharacterFunctions::findEndOfToken (CharPointer_UTF16 (GetCommandLineW()), - CharPointer_UTF16 (L" "), - CharPointer_UTF16 (L"\"")).findEndOfWhitespace(); -} - -static void* currentModuleHandle = nullptr; - -void* Process::getCurrentModuleInstanceHandle() noexcept -{ - if (currentModuleHandle == nullptr) - currentModuleHandle = GetModuleHandle (0); - - return currentModuleHandle; -} - -void Process::setCurrentModuleInstanceHandle (void* const newHandle) noexcept -{ - currentModuleHandle = newHandle; -} - -#endif - -/*** End of inlined file: juce_win32_Misc.cpp ***/ - - /*** Start of inlined file: juce_win32_ActiveXComponent.cpp ***/ // (This file gets included by juce_win32_NativeCode.cpp, rather than being // compiled on its own). @@ -270967,6 +270952,11 @@ ScopedAutoReleasePool::~ScopedAutoReleasePool() [((NSAutoreleasePool*) pool) release]; } +void Logger::outputDebugString (const String& text) +{ + std::cerr << text << std::endl; +} + namespace SystemStatsHelpers { #if JUCE_INTEL @@ -271859,6 +271849,27 @@ void Process::setPriority (ProcessPriority) // xxx } +JUCE_API bool JUCE_CALLTYPE juce_isRunningUnderDebugger() +{ + static char testResult = 0; + + if (testResult == 0) + { + struct kinfo_proc info; + int m[] = { CTL_KERN, KERN_PROC, KERN_PROC_PID, getpid() }; + size_t sz = sizeof (info); + sysctl (m, 4, &info, &sz, 0, 0); + testResult = ((info.kp_proc.p_flag & P_TRACED) != 0) ? 1 : -1; + } + + return testResult > 0; +} + +JUCE_API bool JUCE_CALLTYPE Process::isRunningUnderDebugger() +{ + return juce_isRunningUnderDebugger(); +} + #endif /*** End of inlined file: juce_mac_Threads.mm ***/ @@ -273193,42 +273204,6 @@ void File::addToDock() const /*** End of inlined file: juce_mac_Files.mm ***/ - -/*** Start of inlined file: juce_mac_Debugging.mm ***/ -// (This file gets included by juce_mac_NativeCode.mm, rather than being -// compiled on its own). -#if JUCE_INCLUDED_FILE - -void Logger::outputDebugString (const String& text) -{ - std::cerr << text << std::endl; -} - -JUCE_API bool JUCE_CALLTYPE juce_isRunningUnderDebugger() -{ - static char testResult = 0; - - if (testResult == 0) - { - struct kinfo_proc info; - int m[] = { CTL_KERN, KERN_PROC, KERN_PROC_PID, getpid() }; - size_t sz = sizeof (info); - sysctl (m, 4, &info, &sz, 0, 0); - testResult = ((info.kp_proc.p_flag & P_TRACED) != 0) ? 1 : -1; - } - - return testResult > 0; -} - -JUCE_API bool JUCE_CALLTYPE Process::isRunningUnderDebugger() -{ - return juce_isRunningUnderDebugger(); -} - -#endif - -/*** End of inlined file: juce_mac_Debugging.mm ***/ - #if ! JUCE_ONLY_BUILD_CORE_LIBRARY /*** Start of inlined file: juce_osx_MessageQueue.h ***/ diff --git a/src/native/android/juce_android_JNIHelpers.h b/src/native/android/juce_android_JNIHelpers.h new file mode 100644 index 0000000000..31be48dfc6 --- /dev/null +++ b/src/native/android/juce_android_JNIHelpers.h @@ -0,0 +1,306 @@ +/* + ============================================================================== + + This file is part of the JUCE library - "Jules' Utility Class Extensions" + Copyright 2004-11 by Raw Material Software Ltd. + + ------------------------------------------------------------------------------ + + JUCE can be redistributed and/or modified under the terms of the GNU General + Public License (Version 2), as published by the Free Software Foundation. + A copy of the license is included in the JUCE distribution, or can be found + online at www.gnu.org/licenses. + + JUCE is distributed in the hope that it will be useful, but WITHOUT ANY + WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR + A PARTICULAR PURPOSE. See the GNU General Public License for more details. + + ------------------------------------------------------------------------------ + + To release a closed-source product which uses JUCE, commercial licenses are + available: visit www.rawmaterialsoftware.com/juce for more information. + + ============================================================================== +*/ + +#ifndef __JUCE_ANDROID_JNIHELPERS_JUCEHEADER__ +#define __JUCE_ANDROID_JNIHELPERS_JUCEHEADER__ + +#ifndef USE_ANDROID_CANVAS + #define USE_ANDROID_CANVAS 0 +#endif + +//============================================================================== +extern JNIEnv* getEnv() noexcept; + +//============================================================================== +class GlobalRef +{ +public: + inline GlobalRef() noexcept : obj (0) {} + inline explicit GlobalRef (jobject obj_) : obj (retain (obj_)) {} + inline GlobalRef (const GlobalRef& other) : obj (retain (other.obj)) {} + ~GlobalRef() { clear(); } + + inline void clear() + { + if (obj != 0) + { + getEnv()->DeleteGlobalRef (obj); + obj = 0; + } + } + + inline GlobalRef& operator= (const GlobalRef& other) + { + jobject newObj = retain (other.obj); + clear(); + obj = newObj; + return *this; + } + + //============================================================================== + inline operator jobject() const noexcept { return obj; } + inline jobject get() const noexcept { return obj; } + + //============================================================================== + #define DECLARE_CALL_TYPE_METHOD(returnType, typeName) \ + returnType call##typeName##Method (jmethodID methodID, ... ) const \ + { \ + va_list args; \ + va_start (args, methodID); \ + returnType result = getEnv()->Call##typeName##MethodV (obj, methodID, args); \ + va_end (args); \ + return result; \ + } + + DECLARE_CALL_TYPE_METHOD (jobject, Object) + DECLARE_CALL_TYPE_METHOD (jboolean, Boolean) + DECLARE_CALL_TYPE_METHOD (jbyte, Byte) + DECLARE_CALL_TYPE_METHOD (jchar, Char) + DECLARE_CALL_TYPE_METHOD (jshort, Short) + DECLARE_CALL_TYPE_METHOD (jint, Int) + DECLARE_CALL_TYPE_METHOD (jlong, Long) + DECLARE_CALL_TYPE_METHOD (jfloat, Float) + DECLARE_CALL_TYPE_METHOD (jdouble, Double) + #undef DECLARE_CALL_TYPE_METHOD + + void callVoidMethod (jmethodID methodID, ... ) const + { + va_list args; + va_start (args, methodID); + getEnv()->CallVoidMethodV (obj, methodID, args); + va_end (args); + } + +private: + //============================================================================== + jobject obj; + + static inline jobject retain (jobject obj_) + { + return obj_ == 0 ? 0 : getEnv()->NewGlobalRef (obj_); + } +}; + +//============================================================================== +template +class LocalRef +{ +public: + explicit inline LocalRef (JavaType obj_) noexcept : obj (obj_){} + inline LocalRef (const LocalRef& other) noexcept : obj (retain (other.obj)) {} + ~LocalRef() { clear(); } + + void clear() + { + if (obj != 0) + getEnv()->DeleteLocalRef (obj); + } + + LocalRef& operator= (const LocalRef& other) + { + jobject newObj = retain (other.obj); + clear(); + obj = newObj; + return *this; + } + + inline operator JavaType() const noexcept { return obj; } + inline JavaType get() const noexcept { return obj; } + +private: + JavaType obj; + + static JavaType retain (JavaType obj_) + { + return obj_ == 0 ? 0 : (JavaType) getEnv()->NewLocalRef (obj_); + } +}; + +//============================================================================== +namespace +{ + String juceString (JNIEnv* env, jstring s) + { + jboolean isCopy; + const char* const utf8 = env->GetStringUTFChars (s, &isCopy); + CharPointer_UTF8 utf8CP (utf8); + const String result (utf8CP); + env->ReleaseStringUTFChars (s, utf8); + return result; + } + + String juceString (jstring s) + { + return juceString (getEnv(), s); + } + + LocalRef javaString (const String& s) + { + return LocalRef (getEnv()->NewStringUTF (s.toUTF8())); + } + + LocalRef javaStringFromChar (const juce_wchar c) + { + char utf8[8] = { 0 }; + CharPointer_UTF8 (utf8).write (c); + return LocalRef (getEnv()->NewStringUTF (utf8)); + } +} + +//============================================================================== +class JNIClassBase +{ +public: + explicit JNIClassBase (const char* classPath_); + virtual ~JNIClassBase(); + + inline operator jclass() const noexcept { return classRef; } + + static void initialiseAllClasses (JNIEnv*); + static void releaseAllClasses (JNIEnv*); + +protected: + virtual void initialiseFields (JNIEnv*) = 0; + + jmethodID resolveMethod (JNIEnv*, const char* methodName, const char* params); + jmethodID resolveStaticMethod (JNIEnv*, const char* methodName, const char* params); + jfieldID resolveField (JNIEnv*, const char* fieldName, const char* signature); + jfieldID resolveStaticField (JNIEnv*, const char* fieldName, const char* signature); + +private: + const char* const classPath; + jclass classRef; + + static Array& getClasses(); + void initialise (JNIEnv*); + void release (JNIEnv*); + + JUCE_DECLARE_NON_COPYABLE (JNIClassBase); +}; + +//============================================================================== +#define CREATE_JNI_METHOD(methodID, stringName, params) methodID = resolveMethod (env, stringName, params); +#define CREATE_JNI_STATICMETHOD(methodID, stringName, params) methodID = resolveStaticMethod (env, stringName, params); +#define CREATE_JNI_FIELD(fieldID, stringName, signature) fieldID = resolveField (env, stringName, signature); +#define CREATE_JNI_STATICFIELD(fieldID, stringName, signature) fieldID = resolveStaticField (env, stringName, signature); +#define DECLARE_JNI_METHOD(methodID, stringName, params) jmethodID methodID; +#define DECLARE_JNI_FIELD(fieldID, stringName, signature) jfieldID fieldID; + +#define DECLARE_JNI_CLASS(CppClassName, javaPath) \ + class CppClassName ## _Class : public JNIClassBase \ + { \ + public: \ + CppClassName ## _Class() : JNIClassBase (javaPath) {} \ + \ + void initialiseFields (JNIEnv* env) \ + { \ + JNI_CLASS_MEMBERS (CREATE_JNI_METHOD, CREATE_JNI_STATICMETHOD, CREATE_JNI_FIELD, CREATE_JNI_STATICFIELD); \ + } \ + \ + JNI_CLASS_MEMBERS (DECLARE_JNI_METHOD, DECLARE_JNI_METHOD, DECLARE_JNI_FIELD, DECLARE_JNI_FIELD); \ + }; \ + static CppClassName ## _Class CppClassName; + + +//============================================================================== +#define JUCE_JNI_CALLBACK(className, methodName, returnType, params) \ + extern "C" __attribute__ ((visibility("default"))) returnType Java_com_juce_ ## className ## _ ## methodName params + +//============================================================================== +class AndroidSystem +{ +public: + AndroidSystem(); + + void initialise (JNIEnv*, jobject activity, jstring appFile, jstring appDataDir); + void shutdown (JNIEnv*); + + //============================================================================== + GlobalRef activity; + String appFile, appDataDir; + int screenWidth, screenHeight; + + jobject createPaint (Graphics::ResamplingQuality quality); + const jobject createMatrix (JNIEnv*, const AffineTransform& t); +}; + +extern AndroidSystem android; + +//============================================================================== +#define JNI_CLASS_MEMBERS(METHOD, STATICMETHOD, FIELD, STATICFIELD) \ + STATICMETHOD (printToConsole, "printToConsole", "(Ljava/lang/String;)V") \ + METHOD (createNewView, "createNewView", "(Z)Lcom/juce/ComponentPeerView;") \ + METHOD (deleteView, "deleteView", "(Lcom/juce/ComponentPeerView;)V") \ + METHOD (postMessage, "postMessage", "(J)V") \ + METHOD (finish, "finish", "()V") \ + METHOD (getClipboardContent, "getClipboardContent", "()Ljava/lang/String;") \ + METHOD (setClipboardContent, "setClipboardContent", "(Ljava/lang/String;)V") \ + METHOD (excludeClipRegion, "excludeClipRegion", "(Landroid/graphics/Canvas;FFFF)V") \ + METHOD (renderGlyph, "renderGlyph", "(CLandroid/graphics/Paint;Landroid/graphics/Matrix;Landroid/graphics/Rect;)[I") \ + STATICMETHOD (createHTTPStream, "createHTTPStream", "(Ljava/lang/String;Z[BLjava/lang/String;ILjava/lang/StringBuffer;)Lcom/juce/JuceAppActivity$HTTPStream;") \ + METHOD (showMessageBox, "showMessageBox", "(Ljava/lang/String;Ljava/lang/String;J)V") \ + METHOD (showOkCancelBox, "showOkCancelBox", "(Ljava/lang/String;Ljava/lang/String;J)V") \ + METHOD (showYesNoCancelBox, "showYesNoCancelBox", "(Ljava/lang/String;Ljava/lang/String;J)V") \ + +DECLARE_JNI_CLASS (JuceAppActivity, "com/juce/JuceAppActivity"); +#undef JNI_CLASS_MEMBERS + +//============================================================================== +#define JNI_CLASS_MEMBERS(METHOD, STATICMETHOD, FIELD, STATICFIELD) \ + METHOD (constructor, "", "(I)V") \ + METHOD (setColor, "setColor", "(I)V") \ + METHOD (setAlpha, "setAlpha", "(I)V") \ + METHOD (setTypeface, "setTypeface", "(Landroid/graphics/Typeface;)Landroid/graphics/Typeface;") \ + METHOD (ascent, "ascent", "()F") \ + METHOD (descent, "descent", "()F") \ + METHOD (setTextSize, "setTextSize", "(F)V") \ + METHOD (getTextWidths, "getTextWidths", "(Ljava/lang/String;[F)I") \ + METHOD (setTextScaleX, "setTextScaleX", "(F)V") \ + METHOD (getTextPath, "getTextPath", "(Ljava/lang/String;IIFFLandroid/graphics/Path;)V") \ + METHOD (setShader, "setShader", "(Landroid/graphics/Shader;)Landroid/graphics/Shader;") \ + +DECLARE_JNI_CLASS (Paint, "android/graphics/Paint"); +#undef JNI_CLASS_MEMBERS + +//============================================================================== +#define JNI_CLASS_MEMBERS(METHOD, STATICMETHOD, FIELD, STATICFIELD) \ + METHOD (constructor, "", "()V") \ + METHOD (setValues, "setValues", "([F)V") \ + +DECLARE_JNI_CLASS (Matrix, "android/graphics/Matrix"); +#undef JNI_CLASS_MEMBERS + +//============================================================================== +#define JNI_CLASS_MEMBERS(METHOD, STATICMETHOD, FIELD, STATICFIELD) \ + METHOD (constructor, "", "(IIII)V") \ + FIELD (left, "left", "I") \ + FIELD (right, "right", "I") \ + FIELD (top, "top", "I") \ + FIELD (bottom, "bottom", "I") \ + +DECLARE_JNI_CLASS (RectClass, "android/graphics/Rect"); +#undef JNI_CLASS_MEMBERS + +#endif // __JUCE_ANDROID_JNIHELPERS_JUCEHEADER__ diff --git a/src/native/mac/juce_mac_Debugging.mm b/src/native/mac/juce_mac_Debugging.mm deleted file mode 100644 index 3b8af8e562..0000000000 --- a/src/native/mac/juce_mac_Debugging.mm +++ /dev/null @@ -1,58 +0,0 @@ -/* - ============================================================================== - - This file is part of the JUCE library - "Jules' Utility Class Extensions" - Copyright 2004-11 by Raw Material Software Ltd. - - ------------------------------------------------------------------------------ - - JUCE can be redistributed and/or modified under the terms of the GNU General - Public License (Version 2), as published by the Free Software Foundation. - A copy of the license is included in the JUCE distribution, or can be found - online at www.gnu.org/licenses. - - JUCE is distributed in the hope that it will be useful, but WITHOUT ANY - WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR - A PARTICULAR PURPOSE. See the GNU General Public License for more details. - - ------------------------------------------------------------------------------ - - To release a closed-source product which uses JUCE, commercial licenses are - available: visit www.rawmaterialsoftware.com/juce for more information. - - ============================================================================== -*/ - -// (This file gets included by juce_mac_NativeCode.mm, rather than being -// compiled on its own). -#if JUCE_INCLUDED_FILE - -//============================================================================== -void Logger::outputDebugString (const String& text) -{ - std::cerr << text << std::endl; -} - -JUCE_API bool JUCE_CALLTYPE juce_isRunningUnderDebugger() -{ - static char testResult = 0; - - if (testResult == 0) - { - struct kinfo_proc info; - int m[] = { CTL_KERN, KERN_PROC, KERN_PROC_PID, getpid() }; - size_t sz = sizeof (info); - sysctl (m, 4, &info, &sz, 0, 0); - testResult = ((info.kp_proc.p_flag & P_TRACED) != 0) ? 1 : -1; - } - - return testResult > 0; -} - -JUCE_API bool JUCE_CALLTYPE Process::isRunningUnderDebugger() -{ - return juce_isRunningUnderDebugger(); -} - - -#endif diff --git a/src/native/mac/juce_mac_NativeCode.mm b/src/native/mac/juce_mac_NativeCode.mm index 11f985e8aa..242727b263 100644 --- a/src/native/mac/juce_mac_NativeCode.mm +++ b/src/native/mac/juce_mac_NativeCode.mm @@ -113,7 +113,6 @@ BEGIN_JUCE_NAMESPACE #include "juce_mac_Threads.mm" #include "../common/juce_posix_SharedCode.h" #include "juce_mac_Files.mm" -#include "juce_mac_Debugging.mm" #if ! JUCE_ONLY_BUILD_CORE_LIBRARY #include "juce_osx_MessageQueue.h" diff --git a/src/native/mac/juce_mac_SystemStats.mm b/src/native/mac/juce_mac_SystemStats.mm index d5ca80c54b..e48e802a0f 100644 --- a/src/native/mac/juce_mac_SystemStats.mm +++ b/src/native/mac/juce_mac_SystemStats.mm @@ -38,6 +38,12 @@ ScopedAutoReleasePool::~ScopedAutoReleasePool() [((NSAutoreleasePool*) pool) release]; } +//============================================================================== +void Logger::outputDebugString (const String& text) +{ + std::cerr << text << std::endl; +} + //============================================================================== namespace SystemStatsHelpers { diff --git a/src/native/mac/juce_mac_Threads.mm b/src/native/mac/juce_mac_Threads.mm index 5c27c266c5..959b492d4b 100644 --- a/src/native/mac/juce_mac_Threads.mm +++ b/src/native/mac/juce_mac_Threads.mm @@ -63,4 +63,26 @@ void Process::setPriority (ProcessPriority) // xxx } +//============================================================================== +JUCE_API bool JUCE_CALLTYPE juce_isRunningUnderDebugger() +{ + static char testResult = 0; + + if (testResult == 0) + { + struct kinfo_proc info; + int m[] = { CTL_KERN, KERN_PROC, KERN_PROC_PID, getpid() }; + size_t sz = sizeof (info); + sysctl (m, 4, &info, &sz, 0, 0); + testResult = ((info.kp_proc.p_flag & P_TRACED) != 0) ? 1 : -1; + } + + return testResult > 0; +} + +JUCE_API bool JUCE_CALLTYPE Process::isRunningUnderDebugger() +{ + return juce_isRunningUnderDebugger(); +} + #endif diff --git a/src/native/windows/juce_win32_Misc.cpp b/src/native/windows/juce_win32_Misc.cpp deleted file mode 100644 index 5b0e6b5f05..0000000000 --- a/src/native/windows/juce_win32_Misc.cpp +++ /dev/null @@ -1,62 +0,0 @@ -/* - ============================================================================== - - This file is part of the JUCE library - "Jules' Utility Class Extensions" - Copyright 2004-11 by Raw Material Software Ltd. - - ------------------------------------------------------------------------------ - - JUCE can be redistributed and/or modified under the terms of the GNU General - Public License (Version 2), as published by the Free Software Foundation. - A copy of the license is included in the JUCE distribution, or can be found - online at www.gnu.org/licenses. - - JUCE is distributed in the hope that it will be useful, but WITHOUT ANY - WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR - A PARTICULAR PURPOSE. See the GNU General Public License for more details. - - ------------------------------------------------------------------------------ - - To release a closed-source product which uses JUCE, commercial licenses are - available: visit www.rawmaterialsoftware.com/juce for more information. - - ============================================================================== -*/ - -// (This file gets included by juce_win32_NativeCode.cpp, rather than being -// compiled on its own). -#if JUCE_INCLUDED_FILE - - -//============================================================================== -bool juce_IsRunningInWine() -{ - HMODULE ntdll = GetModuleHandle (_T("ntdll.dll")); - return ntdll != 0 && GetProcAddress (ntdll, "wine_get_version") != 0; -} - -//============================================================================== -String JUCE_CALLTYPE Process::getCurrentCommandLineParams() -{ - return CharacterFunctions::findEndOfToken (CharPointer_UTF16 (GetCommandLineW()), - CharPointer_UTF16 (L" "), - CharPointer_UTF16 (L"\"")).findEndOfWhitespace(); -} - -//============================================================================== -static void* currentModuleHandle = nullptr; - -void* Process::getCurrentModuleInstanceHandle() noexcept -{ - if (currentModuleHandle == nullptr) - currentModuleHandle = GetModuleHandle (0); - - return currentModuleHandle; -} - -void Process::setCurrentModuleInstanceHandle (void* const newHandle) noexcept -{ - currentModuleHandle = newHandle; -} - -#endif diff --git a/src/native/windows/juce_win32_NativeCode.cpp b/src/native/windows/juce_win32_NativeCode.cpp index 9cc5b0651d..bacd69c443 100644 --- a/src/native/windows/juce_win32_NativeCode.cpp +++ b/src/native/windows/juce_win32_NativeCode.cpp @@ -112,7 +112,6 @@ BEGIN_JUCE_NAMESPACE #include "juce_win32_Direct2DGraphicsContext.cpp" #include "juce_win32_Windowing.cpp" #include "juce_win32_FileChooser.cpp" - #include "juce_win32_Misc.cpp" #include "juce_win32_ActiveXComponent.cpp" #include "juce_win32_QuickTimeMovieComponent.cpp" #include "juce_win32_DirectShowComponent.cpp" diff --git a/src/native/windows/juce_win32_Threads.cpp b/src/native/windows/juce_win32_Threads.cpp index 7ddd2138f5..e82626ae47 100644 --- a/src/native/windows/juce_win32_Threads.cpp +++ b/src/native/windows/juce_win32_Threads.cpp @@ -286,8 +286,28 @@ bool JUCE_CALLTYPE Process::isRunningUnderDebugger() return juce_isRunningUnderDebugger(); } +String JUCE_CALLTYPE Process::getCurrentCommandLineParams() +{ + return CharacterFunctions::findEndOfToken (CharPointer_UTF16 (GetCommandLineW()), + CharPointer_UTF16 (L" "), + CharPointer_UTF16 (L"\"")).findEndOfWhitespace(); +} + +static void* currentModuleHandle = nullptr; + +void* Process::getCurrentModuleInstanceHandle() noexcept +{ + if (currentModuleHandle == nullptr) + currentModuleHandle = GetModuleHandle (0); + + return currentModuleHandle; +} + +void Process::setCurrentModuleInstanceHandle (void* const newHandle) noexcept +{ + currentModuleHandle = newHandle; +} -//============================================================================== void Process::raisePrivilege() { jassertfalse; // xxx not implemented @@ -308,6 +328,12 @@ void Process::terminate() ExitProcess (0); } +bool juce_IsRunningInWine() +{ + HMODULE ntdll = GetModuleHandle (_T("ntdll.dll")); + return ntdll != 0 && GetProcAddress (ntdll, "wine_get_version") != 0; +} + //============================================================================== bool DynamicLibrary::open (const String& name) { diff --git a/src/native/windows/juce_win32_Windowing.cpp b/src/native/windows/juce_win32_Windowing.cpp index 5312522729..099b312437 100644 --- a/src/native/windows/juce_win32_Windowing.cpp +++ b/src/native/windows/juce_win32_Windowing.cpp @@ -476,9 +476,9 @@ public: dropTarget = nullptr; } - #if JUCE_DIRECT2D + #if JUCE_DIRECT2D direct2DContext = nullptr; - #endif + #endif } //============================================================================== @@ -1112,14 +1112,9 @@ private: else exstyle |= WS_EX_APPWINDOW; - if ((styleFlags & windowHasMinimiseButton) != 0) - type |= WS_MINIMIZEBOX; - - if ((styleFlags & windowHasMaximiseButton) != 0) - type |= WS_MAXIMIZEBOX; - - if ((styleFlags & windowIgnoresMouseClicks) != 0) - exstyle |= WS_EX_TRANSPARENT; + if ((styleFlags & windowHasMinimiseButton) != 0) type |= WS_MINIMIZEBOX; + if ((styleFlags & windowHasMaximiseButton) != 0) type |= WS_MAXIMIZEBOX; + if ((styleFlags & windowIgnoresMouseClicks) != 0) exstyle |= WS_EX_TRANSPARENT; if ((styleFlags & windowIsSemiTransparent) != 0 && Desktop::canUseSemiTransparentWindows()) exstyle |= WS_EX_LAYERED; @@ -1668,20 +1663,20 @@ private: { switch (virtualScanCode) // check for a numeric keypad scan-code { - case 0x52: - case 0x4f: - case 0x50: - case 0x51: - case 0x4b: - case 0x4c: - case 0x4d: - case 0x47: - case 0x48: - case 0x49: - key = (key - '0') + KeyPress::numberPad0; - break; - default: - break; + case 0x52: + case 0x4f: + case 0x50: + case 0x51: + case 0x4b: + case 0x4c: + case 0x4d: + case 0x47: + case 0x48: + case 0x49: + key = (key - '0') + KeyPress::numberPad0; + break; + default: + break; } } else @@ -1751,10 +1746,10 @@ private: constrainer->checkBounds (pos, windowBorder.addedTo (component->getBounds()), Desktop::getInstance().getAllMonitorDisplayAreas().getBounds(), - wParam == WMSZ_TOP || wParam == WMSZ_TOPLEFT || wParam == WMSZ_TOPRIGHT, - wParam == WMSZ_LEFT || wParam == WMSZ_TOPLEFT || wParam == WMSZ_BOTTOMLEFT, + wParam == WMSZ_TOP || wParam == WMSZ_TOPLEFT || wParam == WMSZ_TOPRIGHT, + wParam == WMSZ_LEFT || wParam == WMSZ_TOPLEFT || wParam == WMSZ_BOTTOMLEFT, wParam == WMSZ_BOTTOM || wParam == WMSZ_BOTTOMLEFT || wParam == WMSZ_BOTTOMRIGHT, - wParam == WMSZ_RIGHT || wParam == WMSZ_TOPRIGHT || wParam == WMSZ_BOTTOMRIGHT); + wParam == WMSZ_RIGHT || wParam == WMSZ_TOPRIGHT || wParam == WMSZ_BOTTOMRIGHT); r->left = pos.getX(); r->top = pos.getY(); r->right = pos.getRight();