Commit 785f6328 authored by mercury233's avatar mercury233

revert

parent ee7a3285
...@@ -33,7 +33,7 @@ install: ...@@ -33,7 +33,7 @@ install:
- xcopy /E premake\* . - xcopy /E premake\* .
# patch irrlicht # patch irrlicht
- patch -p1 < irrlicht\irrlicht.patch - patch -p0 < irrlicht\irrlicht.patch
# premake # premake
- premake5 vs2015 - premake5 vs2015
......
diff --git a/irrlicht/include/IOSOperator.h b/irrlicht/include/IOSOperator.h diff -ur --strip-trailing-cr irrlicht/include/IOSOperator.h irrlicht-fixed/include/IOSOperator.h
index b5c6236..b2e864a 100644 --- irrlicht/include/IOSOperator.h 2012-11-03 10:08:34.000000000 +0000
--- a/irrlicht/include/IOSOperator.h +++ irrlicht-fixed/include/IOSOperator.h 2015-06-14 17:32:58.000000000 +0000
+++ b/irrlicht/include/IOSOperator.h @@ -26,11 +26,11 @@
@@ -26,11 +26,11 @@ public:
} }
//! Copies text to the clipboard //! Copies text to the clipboard
...@@ -16,26 +15,24 @@ index b5c6236..b2e864a 100644 ...@@ -16,26 +15,24 @@ index b5c6236..b2e864a 100644
//! Get the processor speed in megahertz //! Get the processor speed in megahertz
/** \param MHz The integer variable to store the speed in. /** \param MHz The integer variable to store the speed in.
diff --git a/irrlicht/include/IrrCompileConfig.h b/irrlicht/include/IrrCompileConfig.h diff -ur --strip-trailing-cr irrlicht/include/irrTypes.h irrlicht-fixed/include/irrTypes.h
index c2c5d12..7c44f0c 100644 --- irrlicht/include/irrTypes.h 2012-11-03 10:08:34.000000000 +0000
--- a/irrlicht/include/IrrCompileConfig.h +++ irrlicht-fixed/include/irrTypes.h 2015-06-14 17:32:58.000000000 +0000
+++ b/irrlicht/include/IrrCompileConfig.h @@ -48,7 +48,9 @@
@@ -233,7 +233,9 @@ you will not be able to use anything provided by the GUI Environment, including typedef signed short s16;
disable this feature, the engine behave as before (ansi). This is currently only supported
for Windows based systems. You also have to set #define UNICODE for this to compile.
*/
-//#define _IRR_WCHAR_FILESYSTEM
+#if defined(_IRR_WINDOWS_) && (defined(_UNICODE) || defined(UNICODE))
+#define _IRR_WCHAR_FILESYSTEM
+#endif
#ifdef NO_IRR_WCHAR_FILESYSTEM
#undef _IRR_WCHAR_FILESYSTEM
#endif #endif
diff --git a/irrlicht/include/Keycodes.h b/irrlicht/include/Keycodes.h
index e56eca1..57ab312 100644 -
--- a/irrlicht/include/Keycodes.h +//! 16 bit character variable.
+++ b/irrlicht/include/Keycodes.h +/** This is a typedef for wchar_t, it ensures portability of the engine. */
@@ -89,7 +89,7 @@ namespace irr +typedef wchar_t c16;
//! 32 bit unsigned variable.
/** This is a typedef for unsigned int, it ensures portability of the engine. */
diff -ur --strip-trailing-cr irrlicht/include/Keycodes.h irrlicht-fixed/include/Keycodes.h
--- irrlicht/include/Keycodes.h 2012-11-03 10:08:32.000000000 +0000
+++ irrlicht-fixed/include/Keycodes.h 2015-06-14 17:32:58.000000000 +0000
@@ -89,7 +89,7 @@
KEY_KEY_X = 0x58, // X key KEY_KEY_X = 0x58, // X key
KEY_KEY_Y = 0x59, // Y key KEY_KEY_Y = 0x59, // Y key
KEY_KEY_Z = 0x5A, // Z key KEY_KEY_Z = 0x5A, // Z key
...@@ -44,26 +41,49 @@ index e56eca1..57ab312 100644 ...@@ -44,26 +41,49 @@ index e56eca1..57ab312 100644
KEY_RWIN = 0x5C, // Right Windows key (Natural keyboard) KEY_RWIN = 0x5C, // Right Windows key (Natural keyboard)
KEY_APPS = 0x5D, // Applications key (Natural keyboard) KEY_APPS = 0x5D, // Applications key (Natural keyboard)
KEY_SLEEP = 0x5F, // Computer Sleep key KEY_SLEEP = 0x5F, // Computer Sleep key
diff --git a/irrlicht/include/irrTypes.h b/irrlicht/include/irrTypes.h diff -ur --strip-trailing-cr irrlicht/src/CD3D9ShaderMaterialRenderer.cpp irrlicht-fixed/src/CD3D9ShaderMaterialRenderer.cpp
index cfeaf84..a656631 100644 --- irrlicht/src/CD3D9ShaderMaterialRenderer.cpp 2012-11-03 10:08:10.000000000 +0000
--- a/irrlicht/include/irrTypes.h +++ irrlicht-fixed/src/CD3D9ShaderMaterialRenderer.cpp 2015-06-14 17:32:58.000000000 +0000
+++ b/irrlicht/include/irrTypes.h @@ -329,7 +329,7 @@
@@ -48,7 +48,9 @@ typedef __int16 s16; strDllName += (int)D3DX_SDK_VERSION;
typedef signed short s16; strDllName += ".dll";
#endif
- - HMODULE hMod = LoadLibrary(strDllName.c_str());
+//! 16 bit character variable. + HMODULE hMod = LoadLibraryA(strDllName.c_str());
+/** This is a typedef for wchar_t, it ensures portability of the engine. */ if (hMod)
+typedef wchar_t c16; pFn = (AssembleShaderFunction)GetProcAddress(hMod, "D3DXAssembleShader");
//! 32 bit unsigned variable. @@ -389,7 +389,7 @@
/** This is a typedef for unsigned int, it ensures portability of the engine. */ strDllName += (int)D3DX_SDK_VERSION;
diff --git a/irrlicht/src/CGUIEditBox.cpp b/irrlicht/src/CGUIEditBox.cpp strDllName += ".dll";
index f33b5a2..8375444 100644
--- a/irrlicht/src/CGUIEditBox.cpp - HMODULE hMod = LoadLibrary(strDllName.c_str());
+++ b/irrlicht/src/CGUIEditBox.cpp + HMODULE hMod = LoadLibraryA(strDllName.c_str());
@@ -287,7 +287,7 @@ bool CGUIEditBox::processKey(const SEvent& event) if (hMod)
pFn = (AssembleShaderFromFileFunction)GetProcAddress(hMod, "D3DXAssembleShaderFromFileA");
@@ -450,7 +450,7 @@
strDllName += (int)D3DX_SDK_VERSION;
strDllName += ".dll";
- HMODULE hMod = LoadLibrary(strDllName.c_str());
+ HMODULE hMod = LoadLibraryA(strDllName.c_str());
if (hMod)
pFn = (D3DXCompileShaderFunction)GetProcAddress(hMod, "D3DXCompileShader");
@@ -510,7 +510,7 @@
strDllName += (int)D3DX_SDK_VERSION;
strDllName += ".dll";
- HMODULE hMod = LoadLibrary(strDllName.c_str());
+ HMODULE hMod = LoadLibraryA(strDllName.c_str());
if (hMod)
pFn = (D3DXCompileShaderFromFileFunction)GetProcAddress(hMod, "D3DXCompileShaderFromFileA");
diff -ur --strip-trailing-cr irrlicht/src/CGUIEditBox.cpp irrlicht-fixed/src/CGUIEditBox.cpp
--- irrlicht/src/CGUIEditBox.cpp 2012-11-03 10:08:16.000000000 +0000
+++ irrlicht-fixed/src/CGUIEditBox.cpp 2015-06-14 17:32:58.000000000 +0000
@@ -286,7 +286,7 @@
const s32 realmbgn = MarkBegin < MarkEnd ? MarkBegin : MarkEnd; const s32 realmbgn = MarkBegin < MarkEnd ? MarkBegin : MarkEnd;
const s32 realmend = MarkBegin < MarkEnd ? MarkEnd : MarkBegin; const s32 realmend = MarkBegin < MarkEnd ? MarkEnd : MarkBegin;
...@@ -72,7 +92,7 @@ index f33b5a2..8375444 100644 ...@@ -72,7 +92,7 @@ index f33b5a2..8375444 100644
s = Text.subString(realmbgn, realmend - realmbgn).c_str(); s = Text.subString(realmbgn, realmend - realmbgn).c_str();
Operator->copyToClipboard(s.c_str()); Operator->copyToClipboard(s.c_str());
} }
@@ -300,7 +300,7 @@ bool CGUIEditBox::processKey(const SEvent& event) @@ -299,7 +299,7 @@
const s32 realmend = MarkBegin < MarkEnd ? MarkEnd : MarkBegin; const s32 realmend = MarkBegin < MarkEnd ? MarkEnd : MarkBegin;
// copy // copy
...@@ -81,7 +101,7 @@ index f33b5a2..8375444 100644 ...@@ -81,7 +101,7 @@ index f33b5a2..8375444 100644
sc = Text.subString(realmbgn, realmend - realmbgn).c_str(); sc = Text.subString(realmbgn, realmend - realmbgn).c_str();
Operator->copyToClipboard(sc.c_str()); Operator->copyToClipboard(sc.c_str());
@@ -330,16 +330,10 @@ bool CGUIEditBox::processKey(const SEvent& event) @@ -329,7 +329,7 @@
const s32 realmend = MarkBegin < MarkEnd ? MarkEnd : MarkBegin; const s32 realmend = MarkBegin < MarkEnd ? MarkEnd : MarkBegin;
// add new character // add new character
...@@ -89,22 +109,11 @@ index f33b5a2..8375444 100644 ...@@ -89,22 +109,11 @@ index f33b5a2..8375444 100644
+ const c16* p = Operator->getTextFromClipboard(); + const c16* p = Operator->getTextFromClipboard();
if (p) if (p)
{ {
- // TODO: we should have such a function in core::string
- size_t lenOld = strlen(p);
- wchar_t *ws = new wchar_t[lenOld + 1];
- size_t len = mbstowcs(ws,p,lenOld);
- ws[len] = 0;
- irr::core::stringw widep(ws);
- delete[] ws;
+ irr::core::stringw widep(p);
if (MarkBegin == MarkEnd) if (MarkBegin == MarkEnd)
{ diff -ur --strip-trailing-cr irrlicht/src/CIrrDeviceWin32.cpp irrlicht-fixed/src/CIrrDeviceWin32.cpp
diff --git a/irrlicht/src/CIrrDeviceWin32.cpp b/irrlicht/src/CIrrDeviceWin32.cpp --- irrlicht/src/CIrrDeviceWin32.cpp 2012-11-05 07:14:12.000000000 +0000
index f96c178..a766a40 100644 +++ irrlicht-fixed/src/CIrrDeviceWin32.cpp 2015-06-14 17:32:58.000000000 +0000
--- a/irrlicht/src/CIrrDeviceWin32.cpp @@ -16,14 +16,16 @@
+++ b/irrlicht/src/CIrrDeviceWin32.cpp
@@ -20,6 +20,8 @@
#include "COSOperator.h" #include "COSOperator.h"
#include "dimension2d.h" #include "dimension2d.h"
#include "IGUISpriteBank.h" #include "IGUISpriteBank.h"
...@@ -113,34 +122,16 @@ index f96c178..a766a40 100644 ...@@ -113,34 +122,16 @@ index f96c178..a766a40 100644
#include <winuser.h> #include <winuser.h>
#if defined(_IRR_COMPILE_WITH_JOYSTICK_EVENTS_) #if defined(_IRR_COMPILE_WITH_JOYSTICK_EVENTS_)
#ifdef _IRR_COMPILE_WITH_DIRECTINPUT_JOYSTICK_ #ifdef _IRR_COMPILE_WITH_DIRECTINPUT_JOYSTICK_
@@ -749,6 +751,26 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) #define DIRECTINPUT_VERSION 0x0800
return 0; +#define INITGUID
} #include <dinput.h>
#ifdef _MSC_VER
+ { #pragma comment(lib, "dinput8.lib")
+ dev = getDeviceFromHWnd(hWnd); -#pragma comment(lib, "dxguid.lib")
+ if (dev) #endif
+ { #else
+ irr::gui::IGUIElement* ele = dev->getGUIEnvironment()->getFocus(); #ifdef _MSC_VER
+ if (!ele || (ele->getType() != irr::gui::EGUIET_EDIT_BOX) || !ele->isEnabled()) @@ -900,8 +902,36 @@
+ {
+ HIMC hIMC = ::ImmGetContext(hWnd);
+ if (hIMC)
+ {
+ ::ImmNotifyIME(hIMC, NI_COMPOSITIONSTR, CPS_COMPLETE, 0);
+ ::ImmReleaseContext(hWnd, hIMC);
+ }
+ ::ImmAssociateContextEx(hWnd, NULL, 0);
+ }
+ else
+ ::ImmAssociateContextEx(hWnd, NULL, IACE_DEFAULT);
+ }
+ }
+
switch (message)
{
case WM_PAINT:
@@ -904,6 +926,35 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
KEYBOARD_INPUT_HKL = GetKeyboardLayout(0); KEYBOARD_INPUT_HKL = GetKeyboardLayout(0);
KEYBOARD_INPUT_CODEPAGE = LocaleIdToCodepage( LOWORD(KEYBOARD_INPUT_HKL) ); KEYBOARD_INPUT_CODEPAGE = LocaleIdToCodepage( LOWORD(KEYBOARD_INPUT_HKL) );
return 0; return 0;
...@@ -149,19 +140,18 @@ index f96c178..a766a40 100644 ...@@ -149,19 +140,18 @@ index f96c178..a766a40 100644
+ { + {
+ dev = getDeviceFromHWnd(hWnd); + dev = getDeviceFromHWnd(hWnd);
+ irr::gui::IGUIElement* ele = dev->getGUIEnvironment()->getFocus(); + irr::gui::IGUIElement* ele = dev->getGUIEnvironment()->getFocus();
+ if (!ele) + if(!ele)
+ break; + break;
+ irr::core::position2di pos = ele->getAbsolutePosition().UpperLeftCorner; + irr::core::position2di pos = ele->getAbsolutePosition().UpperLeftCorner;
+ HIMC hIMC = ::ImmGetContext(hWnd); + HIMC hIMC = ::ImmGetContext(hWnd);
+ COMPOSITIONFORM CompForm; + COMPOSITIONFORM CompForm;
+ CompForm.dwStyle = CFS_POINT; + CompForm.dwStyle = CFS_CANDIDATEPOS;
+ CompForm.ptCurrentPos.x = pos.X; + CompForm.ptCurrentPos.x = pos.X;
+ CompForm.ptCurrentPos.y = pos.Y + ele->getAbsolutePosition().getHeight(); + CompForm.ptCurrentPos.y = pos.Y + ele->getAbsolutePosition().getHeight();
+ ::ImmSetCompositionWindow(hIMC, &CompForm); + ::ImmSetCompositionWindow(hIMC, &CompForm);
+ ::ImmReleaseContext(hWnd, hIMC); + ::ImmReleaseContext(hWnd, hIMC);
+ } + }
+ break; + break;
+
+ case WM_IME_CHAR: + case WM_IME_CHAR:
+ event.EventType = irr::EET_KEY_INPUT_EVENT; + event.EventType = irr::EET_KEY_INPUT_EVENT;
+ event.KeyInput.PressedDown = true; + event.KeyInput.PressedDown = true;
...@@ -174,13 +164,318 @@ index f96c178..a766a40 100644 ...@@ -174,13 +164,318 @@ index f96c178..a766a40 100644
+ dev->postEventFromUser(event); + dev->postEventFromUser(event);
+ return 0; + return 0;
} }
return DefWindowProc(hWnd, message, wParam, lParam); - return DefWindowProc(hWnd, message, wParam, lParam);
+ return DefWindowProcW(hWnd, message, wParam, lParam);
} }
diff --git a/irrlicht/src/COSOperator.cpp b/irrlicht/src/COSOperator.cpp
index 90e644d..1856c04 100644
--- a/irrlicht/src/COSOperator.cpp @@ -931,15 +961,15 @@
+++ b/irrlicht/src/COSOperator.cpp memset(&DesktopMode, 0, sizeof(DesktopMode));
@@ -52,9 +52,9 @@ const core::stringc& COSOperator::getOperatingSystemVersion() const DesktopMode.dmSize = sizeof(DesktopMode);
- EnumDisplaySettings(NULL, ENUM_CURRENT_SETTINGS, &DesktopMode);
+ EnumDisplaySettingsW(NULL, ENUM_CURRENT_SETTINGS, &DesktopMode);
// create the window if we need to and we do not use the null device
if (!CreationParams.WindowId && CreationParams.DriverType != video::EDT_NULL)
{
- const fschar_t* ClassName = __TEXT("CIrrDeviceWin32");
+ const wchar_t* ClassName = L"CIrrDeviceWin32";
// Register Class
- WNDCLASSEX wcex;
+ WNDCLASSEXW wcex;
wcex.cbSize = sizeof(WNDCLASSEX);
wcex.style = CS_HREDRAW | CS_VREDRAW;
wcex.lpfnWndProc = WndProc;
@@ -954,9 +984,9 @@
wcex.hIconSm = 0;
// if there is an icon, load it
- wcex.hIcon = (HICON)LoadImage(hInstance, __TEXT("irrlicht.ico"), IMAGE_ICON, 0,0, LR_LOADFROMFILE);
+ wcex.hIcon = (HICON)LoadImageW(hInstance, L"irrlicht.ico", IMAGE_ICON, 0,0, LR_LOADFROMFILE);
- RegisterClassEx(&wcex);
+ RegisterClassExW(&wcex);
// calculate client size
@@ -992,7 +1022,7 @@
// create window
- HWnd = CreateWindow( ClassName, __TEXT(""), style, windowLeft, windowTop,
+ HWnd = CreateWindowW( ClassName, L"", style, windowLeft, windowTop,
realWidth, realHeight, NULL, NULL, hInstance, NULL);
CreationParams.WindowId = HWnd;
// CreationParams.WindowSize.Width = realWidth;
@@ -1297,15 +1327,15 @@
void CIrrDeviceWin32::closeDevice()
{
MSG msg;
- PeekMessage(&msg, NULL, WM_QUIT, WM_QUIT, PM_REMOVE);
+ PeekMessageW(&msg, NULL, WM_QUIT, WM_QUIT, PM_REMOVE);
PostQuitMessage(0);
- PeekMessage(&msg, NULL, WM_QUIT, WM_QUIT, PM_REMOVE);
+ PeekMessageW(&msg, NULL, WM_QUIT, WM_QUIT, PM_REMOVE);
if (!ExternalWindow)
{
DestroyWindow(HWnd);
- const fschar_t* ClassName = __TEXT("CIrrDeviceWin32");
+ const wchar_t* ClassName = L"CIrrDeviceWin32";
HINSTANCE hInstance = GetModuleHandle(0);
- UnregisterClass(ClassName, hInstance);
+ UnregisterClassW(ClassName, hInstance);
}
Close=true;
}
@@ -1351,7 +1381,7 @@
{
if (ChangedToFullScreen)
{
- return (ChangeDisplaySettings(&DesktopMode,0)==DISP_CHANGE_SUCCESSFUL);
+ return (ChangeDisplaySettingsW(&DesktopMode,0)==DISP_CHANGE_SUCCESSFUL);
}
else
return true;
@@ -1478,18 +1508,18 @@
void CIrrDeviceWin32::getWindowsVersion(core::stringc& out)
{
- OSVERSIONINFOEX osvi;
+ OSVERSIONINFOEXW osvi;
PGPI pGPI;
BOOL bOsVersionInfoEx;
- ZeroMemory(&osvi, sizeof(OSVERSIONINFOEX));
- osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFOEX);
+ ZeroMemory(&osvi, sizeof(OSVERSIONINFOEXW));
+ osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFOEXW);
- bOsVersionInfoEx = GetVersionEx((OSVERSIONINFO*) &osvi);
+ bOsVersionInfoEx = GetVersionExW((OSVERSIONINFOW*) &osvi);
if (!bOsVersionInfoEx)
{
- osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
- if (! GetVersionEx((OSVERSIONINFO *) &osvi))
+ osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFOW);
+ if (! GetVersionExW((OSVERSIONINFOW *) &osvi))
return;
}
@@ -1528,7 +1558,7 @@
if (osvi.dwMajorVersion == 6)
{
DWORD dwType;
- pGPI = (PGPI)GetProcAddress(GetModuleHandle(TEXT("kernel32.dll")), "GetProductInfo");
+ pGPI = (PGPI)GetProcAddress(GetModuleHandleW(L"kernel32.dll"), "GetProductInfo");
pGPI(osvi.dwMajorVersion, osvi.dwMinorVersion, 0, 0, &dwType);
switch (dwType)
@@ -1594,21 +1624,21 @@
else
{
HKEY hKey;
- char szProductType[80];
+ wchar_t szProductType[80];
DWORD dwBufLen;
- RegOpenKeyEx( HKEY_LOCAL_MACHINE,
- __TEXT("SYSTEM\\CurrentControlSet\\Control\\ProductOptions"),
+ RegOpenKeyExW( HKEY_LOCAL_MACHINE,
+ L"SYSTEM\\CurrentControlSet\\Control\\ProductOptions",
0, KEY_QUERY_VALUE, &hKey );
- RegQueryValueEx( hKey, __TEXT("ProductType"), NULL, NULL,
+ RegQueryValueExW( hKey, L"ProductType", NULL, NULL,
(LPBYTE) szProductType, &dwBufLen);
RegCloseKey( hKey );
- if (_strcmpi( "WINNT", szProductType) == 0 )
+ if (lstrcmpiW( L"WINNT", szProductType) == 0 )
out.append("Professional ");
- if (_strcmpi( "LANMANNT", szProductType) == 0)
+ if (lstrcmpiW( L"LANMANNT", szProductType) == 0)
out.append("Server ");
- if (_strcmpi( "SERVERNT", szProductType) == 0)
+ if (lstrcmpiW( L"SERVERNT", szProductType) == 0)
out.append("Advanced Server ");
}
@@ -1679,7 +1709,7 @@
else
style = WS_THICKFRAME | WS_SYSMENU | WS_CAPTION | WS_CLIPCHILDREN | WS_CLIPSIBLINGS | WS_MINIMIZEBOX | WS_MAXIMIZEBOX;
- if (!SetWindowLongPtr(HWnd, GWL_STYLE, style))
+ if (!SetWindowLongPtrW(HWnd, GWL_STYLE, style))
os::Printer::log("Could not change window style.");
RECT clientSize;
@@ -1791,15 +1821,15 @@
{
MSG msg;
- while (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE))
+ while (PeekMessageW(&msg, NULL, 0, 0, PM_REMOVE))
{
// No message translation because we don't use WM_CHAR and it would conflict with our
// deadkey handling.
-
+ TranslateMessage(&msg);
if (ExternalWindow && msg.hwnd == HWnd)
WndProc(HWnd, msg.message, msg.wParam, msg.lParam);
else
- DispatchMessage(&msg);
+ DispatchMessageW(&msg);
if (msg.message == WM_QUIT)
Close = true;
@@ -1811,9 +1841,9 @@
void CIrrDeviceWin32::clearSystemMessages()
{
MSG msg;
- while (PeekMessage(&msg, NULL, WM_KEYFIRST, WM_KEYLAST, PM_REMOVE))
+ while (PeekMessageW(&msg, NULL, WM_KEYFIRST, WM_KEYLAST, PM_REMOVE))
{}
- while (PeekMessage(&msg, NULL, WM_MOUSEFIRST, WM_MOUSELAST, PM_REMOVE))
+ while (PeekMessageW(&msg, NULL, WM_MOUSEFIRST, WM_MOUSELAST, PM_REMOVE))
{}
}
@@ -1821,12 +1851,12 @@
void CIrrDeviceWin32::ReportLastWinApiError()
{
// (based on code from ovidiucucu from http://www.codeguru.com/forum/showthread.php?t=318721)
- LPCTSTR pszCaption = __TEXT("Windows SDK Error Report");
+ LPCWSTR pszCaption = L"Windows SDK Error Report";
DWORD dwError = GetLastError();
if(NOERROR == dwError)
{
- MessageBox(NULL, __TEXT("No error"), pszCaption, MB_OK);
+ MessageBoxW(NULL, L"No error", pszCaption, MB_OK);
}
else
{
@@ -1835,21 +1865,21 @@
FORMAT_MESSAGE_FROM_SYSTEM;
LPVOID pTextBuffer = NULL;
- DWORD dwCount = FormatMessage(dwFormatControl,
+ DWORD dwCount = FormatMessageW(dwFormatControl,
NULL,
dwError,
0,
- (LPTSTR) &pTextBuffer,
+ (LPWSTR)&pTextBuffer,
0,
NULL);
if(0 != dwCount)
{
- MessageBox(NULL, (LPCTSTR)pTextBuffer, pszCaption, MB_OK|MB_ICONERROR);
+ MessageBoxW(NULL, (LPCWSTR)pTextBuffer, pszCaption, MB_OK|MB_ICONERROR);
LocalFree(pTextBuffer);
}
else
{
- MessageBox(NULL, __TEXT("Unknown error"), pszCaption, MB_OK|MB_ICONERROR);
+ MessageBoxW(NULL, L"Unknown error", pszCaption, MB_OK|MB_ICONERROR);
}
}
}
diff -ur --strip-trailing-cr irrlicht/src/CIrrDeviceWin32.h irrlicht-fixed/src/CIrrDeviceWin32.h
--- irrlicht/src/CIrrDeviceWin32.h 2012-11-05 07:14:12.000000000 +0000
+++ irrlicht-fixed/src/CIrrDeviceWin32.h 2015-06-14 17:32:58.000000000 +0000
@@ -395,7 +395,7 @@
bool Resized;
bool ExternalWindow;
CCursorControl* Win32CursorControl;
- DEVMODE DesktopMode;
+ DEVMODEW DesktopMode;
SJoystickWin32Control* JoyControl;
};
diff -ur --strip-trailing-cr irrlicht/src/COpenGLDriver.cpp irrlicht-fixed/src/COpenGLDriver.cpp
--- irrlicht/src/COpenGLDriver.cpp 2012-11-03 10:08:08.000000000 +0000
+++ irrlicht-fixed/src/COpenGLDriver.cpp 2015-06-14 17:32:58.000000000 +0000
@@ -85,11 +85,11 @@
bool COpenGLDriver::initDriver(CIrrDeviceWin32* device)
{
// Create a window to test antialiasing support
- const fschar_t* ClassName = __TEXT("GLCIrrDeviceWin32");
+ const wchar_t* ClassName = L"GLCIrrDeviceWin32";
HINSTANCE lhInstance = GetModuleHandle(0);
// Register Class
- WNDCLASSEX wcex;
+ WNDCLASSEXW wcex;
wcex.cbSize = sizeof(WNDCLASSEX);
wcex.style = CS_HREDRAW | CS_VREDRAW;
wcex.lpfnWndProc = (WNDPROC)DefWindowProc;
@@ -103,7 +103,7 @@
wcex.lpszClassName = ClassName;
wcex.hIconSm = 0;
wcex.hIcon = 0;
- RegisterClassEx(&wcex);
+ RegisterClassExW(&wcex);
RECT clientSize;
clientSize.top = 0;
@@ -123,13 +123,13 @@
const s32 windowLeft = (GetSystemMetrics(SM_CXSCREEN) - realWidth) / 2;
const s32 windowTop = (GetSystemMetrics(SM_CYSCREEN) - realHeight) / 2;
- HWND temporary_wnd=CreateWindow(ClassName, __TEXT(""), style, windowLeft,
+ HWND temporary_wnd=CreateWindowW(ClassName, L"", style, windowLeft,
windowTop, realWidth, realHeight, NULL, NULL, lhInstance, NULL);
if (!temporary_wnd)
{
os::Printer::log("Cannot create a temporary window.", ELL_ERROR);
- UnregisterClass(ClassName, lhInstance);
+ UnregisterClassW(ClassName, lhInstance);
return false;
}
@@ -201,7 +201,7 @@
os::Printer::log("Cannot create a GL device context", "No suitable format for temporary window.", ELL_ERROR);
ReleaseDC(temporary_wnd, HDc);
DestroyWindow(temporary_wnd);
- UnregisterClass(ClassName, lhInstance);
+ UnregisterClassW(ClassName, lhInstance);
return false;
}
@@ -218,7 +218,7 @@
os::Printer::log("Cannot create a temporary GL rendering context.", ELL_ERROR);
ReleaseDC(temporary_wnd, HDc);
DestroyWindow(temporary_wnd);
- UnregisterClass(ClassName, lhInstance);
+ UnregisterClassW(ClassName, lhInstance);
return false;
}
@@ -234,7 +234,7 @@
wglDeleteContext(hrc);
ReleaseDC(temporary_wnd, HDc);
DestroyWindow(temporary_wnd);
- UnregisterClass(ClassName, lhInstance);
+ UnregisterClassW(ClassName, lhInstance);
return false;
}
@@ -340,7 +340,7 @@
wglDeleteContext(hrc);
ReleaseDC(temporary_wnd, HDc);
DestroyWindow(temporary_wnd);
- UnregisterClass(ClassName, lhInstance);
+ UnregisterClassW(ClassName, lhInstance);
// get hdc
HDc=GetDC(Window);
diff -ur --strip-trailing-cr irrlicht/src/COSOperator.cpp irrlicht-fixed/src/COSOperator.cpp
--- irrlicht/src/COSOperator.cpp 2012-11-03 10:07:52.000000000 +0000
+++ irrlicht-fixed/src/COSOperator.cpp 2015-06-14 17:32:58.000000000 +0000
@@ -52,11 +52,8 @@
//! copies text to the clipboard //! copies text to the clipboard
...@@ -188,32 +483,41 @@ index 90e644d..1856c04 100644 ...@@ -188,32 +483,41 @@ index 90e644d..1856c04 100644
+void COSOperator::copyToClipboard(const c16* text) const +void COSOperator::copyToClipboard(const c16* text) const
{ {
- if (strlen(text)==0) - if (strlen(text)==0)
+ if (wcslen(text)==0) - return;
return; -
// Windows version // Windows version
@@ -66,15 +66,15 @@ void COSOperator::copyToClipboard(const c8* text) const #if defined(_IRR_XBOX_PLATFORM_)
#elif defined(_IRR_WINDOWS_API_)
@@ -66,6 +63,19 @@
EmptyClipboard(); EmptyClipboard();
HGLOBAL clipbuffer; HGLOBAL clipbuffer;
- char * buffer; +
+#if defined(_UNICODE)
+ wchar_t * utext = (wchar_t *)text;
+ wchar_t * buffer; + wchar_t * buffer;
+
- clipbuffer = GlobalAlloc(GMEM_DDESHARE, strlen(text)+1); + clipbuffer = GlobalAlloc(GMEM_DDESHARE, sizeof(wchar_t) * (wcslen(utext)+1));
- buffer = (char*)GlobalLock(clipbuffer);
+ clipbuffer = GlobalAlloc(GMEM_DDESHARE, sizeof(wchar_t) * (wcslen(text) + 1));
+ buffer = (wchar_t*)GlobalLock(clipbuffer); + buffer = (wchar_t*)GlobalLock(clipbuffer);
+
+ wcscpy(buffer, utext);
+
+ GlobalUnlock(clipbuffer);
+ SetClipboardData(CF_UNICODETEXT, clipbuffer);
+#else
char * buffer;
- strcpy(buffer, text); clipbuffer = GlobalAlloc(GMEM_DDESHARE, strlen(text)+1);
+ wcscpy(buffer, text); @@ -75,6 +85,8 @@
GlobalUnlock(clipbuffer); GlobalUnlock(clipbuffer);
- SetClipboardData(CF_TEXT, clipbuffer); SetClipboardData(CF_TEXT, clipbuffer);
+ SetClipboardData(CF_UNICODETEXT, clipbuffer); +#endif
+
CloseClipboard(); CloseClipboard();
// MacOSX version // MacOSX version
@@ -93,7 +93,7 @@ void COSOperator::copyToClipboard(const c8* text) const @@ -93,7 +105,7 @@
//! gets text from the clipboard //! gets text from the clipboard
//! \return Returns 0 if no string is in there. //! \return Returns 0 if no string is in there.
...@@ -222,25 +526,27 @@ index 90e644d..1856c04 100644 ...@@ -222,25 +526,27 @@ index 90e644d..1856c04 100644
{ {
#if defined(_IRR_XBOX_PLATFORM_) #if defined(_IRR_XBOX_PLATFORM_)
return 0; return 0;
@@ -101,10 +101,10 @@ const c8* COSOperator::getTextFromClipboard() const @@ -101,10 +113,14 @@
if (!OpenClipboard(NULL)) if (!OpenClipboard(NULL))
return 0; return 0;
- char * buffer = 0; - char * buffer = 0;
+ wchar_t * buffer = 0; + wchar_t * buffer = 0;
- HANDLE hData = GetClipboardData( CF_TEXT ); +#ifdef _UNICODE
- buffer = (char*)GlobalLock( hData );
+ HANDLE hData = GetClipboardData( CF_UNICODETEXT ); + HANDLE hData = GetClipboardData( CF_UNICODETEXT );
+#else
HANDLE hData = GetClipboardData( CF_TEXT );
- buffer = (char*)GlobalLock( hData );
+#endif
+ buffer = (wchar_t*)GlobalLock( hData ); + buffer = (wchar_t*)GlobalLock( hData );
GlobalUnlock( hData ); GlobalUnlock( hData );
CloseClipboard(); CloseClipboard();
return buffer; return buffer;
diff --git a/irrlicht/src/COSOperator.h b/irrlicht/src/COSOperator.h diff -ur --strip-trailing-cr irrlicht/src/COSOperator.h irrlicht-fixed/src/COSOperator.h
index 3f633da..c0712df 100644 --- irrlicht/src/COSOperator.h 2012-11-03 10:08:00.000000000 +0000
--- a/irrlicht/src/COSOperator.h +++ irrlicht-fixed/src/COSOperator.h 2015-06-14 17:32:58.000000000 +0000
+++ b/irrlicht/src/COSOperator.h @@ -27,11 +27,11 @@
@@ -27,11 +27,11 @@ public:
virtual const core::stringc& getOperatingSystemVersion() const; virtual const core::stringc& getOperatingSystemVersion() const;
//! copies text to the clipboard //! copies text to the clipboard
...@@ -254,3 +560,21 @@ index 3f633da..c0712df 100644 ...@@ -254,3 +560,21 @@ index 3f633da..c0712df 100644
//! gets the processor speed in megahertz //! gets the processor speed in megahertz
//! \param Mhz: //! \param Mhz:
diff -ur --strip-trailing-cr irrlicht/src/CGUIEditBox.cpp irrlicht-fixed/src/CGUIEditBox.cpp
--- irrlicht/src/CGUIEditBox.cpp 2016-09-15 18:12:49.532839000 +0000
+++ irrlicht-fixed/src/CGUIEditBox.cpp 2016-09-15 18:13:37.101559800 +0000
@@ -333,13 +333,7 @@
const c16* p = Operator->getTextFromClipboard();
if (p)
{
- // TODO: we should have such a function in core::string
- size_t lenOld = strlen(p);
- wchar_t *ws = new wchar_t[lenOld + 1];
- size_t len = mbstowcs(ws,p,lenOld);
- ws[len] = 0;
- irr::core::stringw widep(ws);
- delete[] ws;
+ irr::core::stringw widep(p);
if (MarkBegin == MarkEnd)
{
...@@ -28,7 +28,7 @@ solution "ygo" ...@@ -28,7 +28,7 @@ solution "ygo"
targetdir "bin/release" targetdir "bin/release"
configuration "Debug" configuration "Debug"
flags "Symbols" symbols "On"
defines "_DEBUG" defines "_DEBUG"
targetdir "bin/debug" targetdir "bin/debug"
...@@ -37,7 +37,7 @@ solution "ygo" ...@@ -37,7 +37,7 @@ solution "ygo"
disablewarnings { "4244", "4267", "4838", "4577", "4819", "4018", "4996", "4477" } disablewarnings { "4244", "4267", "4838", "4577", "4819", "4018", "4996", "4477" }
configuration { "Release", "not vs*" } configuration { "Release", "not vs*" }
flags "Symbols" symbols "On"
defines "NDEBUG" defines "NDEBUG"
buildoptions "-march=native" buildoptions "-march=native"
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment