[Bf-blender-cvs] [f086c5a] input_method_editor: CMake: add WITH_INPUT_IME option + various fixes/cleanup

Severin noreply at git.blender.org
Tue Nov 18 01:50:55 CET 2014


Commit: f086c5a1ea400cd4808955eb817e3bb9b513c548
Author: Severin
Date:   Tue Nov 18 01:44:12 2014 +0100
Branches: input_method_editor
https://developer.blender.org/rBf086c5a1ea400cd4808955eb817e3bb9b513c548

CMake: add WITH_INPUT_IME option + various fixes/cleanup

*note:* implementation of WITH_INPUT_IME is only halfway finished, you'll
get build errors if you disable it

===================================================================

M	CMakeLists.txt
M	intern/ghost/CMakeLists.txt
M	intern/ghost/GHOST_C-api.h
D	intern/ghost/GHOST_ImeWin32.h
M	intern/ghost/intern/GHOST_C-api.cpp
M	intern/ghost/intern/GHOST_ImeWin32.cpp
A	intern/ghost/intern/GHOST_ImeWin32.h
M	intern/ghost/intern/GHOST_SystemWin32.cpp
M	intern/ghost/intern/GHOST_Window.h
M	intern/ghost/intern/GHOST_WindowWin32.cpp
M	intern/ghost/intern/GHOST_WindowWin32.h
M	source/blender/windowmanager/intern/wm_window.c

===================================================================

diff --git a/CMakeLists.txt b/CMakeLists.txt
index 37dadbe..45b0556 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -313,6 +313,9 @@ mark_as_advanced(WITH_LIBMV_SCHUR_SPECIALIZATIONS)
 option(WITH_FREESTYLE     "Enable Freestyle (advanced edges rendering)" ON)
 
 # Misc
+if (WIN32)
+	option(WITH_INPUT_IME "Enable Input Method Editor (IME)" ON)
+endif()
 option(WITH_INPUT_NDOF "Enable NDOF input devices (SpaceNavigator and friends)" ${_init_INPUT_NDOF})
 option(WITH_RAYOPTIMIZATION	"Enable use of SIMD (SSE) optimizations for the raytracer" ON)
 option(WITH_OPENNL        "Enable use of Open Numerical Library" ON)
diff --git a/intern/ghost/CMakeLists.txt b/intern/ghost/CMakeLists.txt
index 9d0b70f..555d66d 100644
--- a/intern/ghost/CMakeLists.txt
+++ b/intern/ghost/CMakeLists.txt
@@ -264,14 +264,12 @@ elseif(WIN32)
 		intern/GHOST_SystemWin32.cpp
 		intern/GHOST_WindowWin32.cpp
 		intern/GHOST_DropTargetWin32.cpp
-		intern/GHOST_ImeWin32.cpp
 
 		intern/GHOST_DisplayManagerWin32.h
 		intern/GHOST_DropTargetWin32.h
 		intern/GHOST_SystemWin32.h
 		intern/GHOST_WindowWin32.h
 		intern/GHOST_TaskbarWin32.h
-		intern/GHOST_ImeWin32.h
 	)
 
 	if(NOT WITH_GL_EGL)
@@ -282,6 +280,14 @@ elseif(WIN32)
 		)
 	endif()
 
+	if(WITH_INPUT_IME)
+		add_definitions(-DWITH_INPUT_IME)
+		list(APPEND SRC
+			intern/GHOST_ImeWin32.cpp
+			intern/GHOST_ImeWin32.h
+		)
+	endif()
+	
 	if(WITH_INPUT_NDOF)
 		list(APPEND SRC
 			intern/GHOST_NDOFManagerWin32.cpp
diff --git a/intern/ghost/GHOST_C-api.h b/intern/ghost/GHOST_C-api.h
index 702963c..56d30cb 100644
--- a/intern/ghost/GHOST_C-api.h
+++ b/intern/ghost/GHOST_C-api.h
@@ -909,7 +909,7 @@ extern float GHOST_GetNativePixelSize(GHOST_WindowHandle windowhandle);
  *     true:  Start a new composition
  *     false: Move the IME windows to the given position without finishing it.
  */
-extern void GHOST_EnableIME(GHOST_WindowHandle windowhandle,
+extern void GHOST_BeginIME(GHOST_WindowHandle windowhandle,
                             GHOST_TInt32 x,
                             GHOST_TInt32 y,
                             GHOST_TInt32 w,
@@ -920,7 +920,7 @@ extern void GHOST_EnableIME(GHOST_WindowHandle windowhandle,
  * events from being dispatched to the IME.
  * \param windowhandle The window handle of the caller
  */
-extern void GHOST_DisableIME(GHOST_WindowHandle windowhandle);
+extern void GHOST_EndIME(GHOST_WindowHandle windowhandle);
 
 #ifdef __cplusplus
 }
diff --git a/intern/ghost/intern/GHOST_C-api.cpp b/intern/ghost/intern/GHOST_C-api.cpp
index 19bde38..0158329 100644
--- a/intern/ghost/intern/GHOST_C-api.cpp
+++ b/intern/ghost/intern/GHOST_C-api.cpp
@@ -915,7 +915,9 @@ float GHOST_GetNativePixelSize(GHOST_WindowHandle windowhandle)
 	return 1.0f;
 }
 
-void GHOST_EnableIME(GHOST_WindowHandle windowhandle,
+#ifdef WITH_INPUT_IME
+
+void GHOST_BeginIME(GHOST_WindowHandle windowhandle,
                      GHOST_TInt32 x,
                      GHOST_TInt32 y,
                      GHOST_TInt32 w,
@@ -926,8 +928,10 @@ void GHOST_EnableIME(GHOST_WindowHandle windowhandle,
 	window->enableIME(x, y, w, h, complete);
 }
 
-void GHOST_DisableIME(GHOST_WindowHandle windowhandle)
+void GHOST_EndIME(GHOST_WindowHandle windowhandle)
 {
 	GHOST_IWindow *window = (GHOST_IWindow *) windowhandle;
 	window->disableIME();
 }
+
+#endif /* WITH_INPUT_IME */
diff --git a/intern/ghost/intern/GHOST_ImeWin32.cpp b/intern/ghost/intern/GHOST_ImeWin32.cpp
index f8945da..96dd36c 100644
--- a/intern/ghost/intern/GHOST_ImeWin32.cpp
+++ b/intern/ghost/intern/GHOST_ImeWin32.cpp
@@ -90,7 +90,10 @@ void GHOST_ImeWin32::CreateImeWindow(HWND window_handle)
                 system_caret_ = true;
             }
         }
-    }
+	}
+#ifdef WITH_INPUT_IME
+	printf("ime works\n");
+#endif
     /* Restore the positions of the IME windows. */
     UpdateImeWindow(window_handle);
 }
diff --git a/intern/ghost/GHOST_ImeWin32.h b/intern/ghost/intern/GHOST_ImeWin32.h
similarity index 100%
rename from intern/ghost/GHOST_ImeWin32.h
rename to intern/ghost/intern/GHOST_ImeWin32.h
diff --git a/intern/ghost/intern/GHOST_SystemWin32.cpp b/intern/ghost/intern/GHOST_SystemWin32.cpp
index 9fd2151..7359f87 100644
--- a/intern/ghost/intern/GHOST_SystemWin32.cpp
+++ b/intern/ghost/intern/GHOST_SystemWin32.cpp
@@ -787,12 +787,13 @@ GHOST_Event *GHOST_SystemWin32::processWindowEvent(GHOST_TEventType type, GHOST_
 	return new GHOST_Event(system->getMilliSeconds(), type, window);
 }
 
-
+#ifdef WITH_INPUT_IME
 GHOST_Event *GHOST_SystemWin32::processImeEvent(GHOST_TEventType type, GHOST_IWindow *window, GHOST_TEventImeData *data)
 {
 	GHOST_System *system = (GHOST_System *)getSystem();
 	return new GHOST_EventIME(system->getMilliSeconds(), type, window, data);
 }
+#endif
 
 
 GHOST_TSuccess GHOST_SystemWin32::pushDragDropEvent(
@@ -918,7 +919,9 @@ LRESULT WINAPI GHOST_SystemWin32::s_wndProc(HWND hwnd, UINT msg, WPARAM wParam,
 				case WM_INPUTLANGCHANGE:
 				{
 					system->handleKeyboardChange();
+#ifdef WITH_INPUT_IME
 					window->getImeInput()->SetInputLanguage();
+#endif
 					break;
 				}
 				////////////////////////////////////////////////////////////////////////
@@ -956,6 +959,7 @@ LRESULT WINAPI GHOST_SystemWin32::s_wndProc(HWND hwnd, UINT msg, WPARAM wParam,
 					}
 					break;
 				}
+#ifdef WITH_INPUT_IME
 				////////////////////////////////////////////////////////////////////////
 				// IME events, processed, read more in GHOST_IME.h
 				////////////////////////////////////////////////////////////////////////
@@ -995,6 +999,7 @@ LRESULT WINAPI GHOST_SystemWin32::s_wndProc(HWND hwnd, UINT msg, WPARAM wParam,
 					event = processImeEvent(GHOST_kEventImeCompositionEnd, window, &window->getImeInput()->eventImeData);
 					break;
 				}
+#endif /* WITH_INPUT_IME */
 				////////////////////////////////////////////////////////////////////////
 				// Keyboard events, ignored
 				////////////////////////////////////////////////////////////////////////
diff --git a/intern/ghost/intern/GHOST_Window.h b/intern/ghost/intern/GHOST_Window.h
index 5dfe0b9..1a79285 100644
--- a/intern/ghost/intern/GHOST_Window.h
+++ b/intern/ghost/intern/GHOST_Window.h
@@ -295,6 +295,7 @@ public:
 		return 1.0f;
 	}
 
+#ifdef WITH_INPUT_IME
 	virtual void enableIME(GHOST_TInt32 x,
 	                       GHOST_TInt32 y,
 	                       GHOST_TInt32 w,
@@ -308,6 +309,7 @@ public:
 	{
 		/* do nothing temporarily if not in windows */
 	}
+#endif /* WITH_INPUT_IME */
 
 protected:
 	/**
diff --git a/intern/ghost/intern/GHOST_WindowWin32.cpp b/intern/ghost/intern/GHOST_WindowWin32.cpp
index ce9eb84..f8c49af 100644
--- a/intern/ghost/intern/GHOST_WindowWin32.cpp
+++ b/intern/ghost/intern/GHOST_WindowWin32.cpp
@@ -1051,6 +1051,7 @@ GHOST_TSuccess GHOST_WindowWin32::endProgressBar()
 }
 
 
+#ifdef WITH_INPUT_IME
 void GHOST_WindowWin32::enableIME(GHOST_TInt32 x, GHOST_TInt32 y, GHOST_TInt32 w, GHOST_TInt32 h, int completed)
 {
 	h = 20; /* text height */
@@ -1062,3 +1063,4 @@ void GHOST_WindowWin32::disableIME()
 {
 	this->getImeInput()->DisableIME(this->getHWND());
 }
+#endif /* WITH_INPUT_IME */
diff --git a/intern/ghost/intern/GHOST_WindowWin32.h b/intern/ghost/intern/GHOST_WindowWin32.h
index 1cbb880..e05752b 100644
--- a/intern/ghost/intern/GHOST_WindowWin32.h
+++ b/intern/ghost/intern/GHOST_WindowWin32.h
@@ -39,7 +39,9 @@
 
 #include "GHOST_Window.h"
 #include "GHOST_TaskbarWin32.h"
+#ifdef WITH_INPUT_IME
 #include "GHOST_ImeWin32.h"
+#endif
 
 #include <wintab.h>
 #define PACKETDATA  (PK_BUTTONS | PK_NORMAL_PRESSURE | PK_ORIENTATION | PK_CURSOR)
@@ -254,6 +256,7 @@ public:
 	/** if the window currently resizing */
 	bool m_inLiveResize;
 
+#ifdef WITH_INPUT_IME
 	GHOST_ImeWin32 *getImeInput() {return &m_imeImput;}
 
 	virtual void enableIME(GHOST_TInt32 x,
@@ -263,6 +266,7 @@ public:
 	                       int completed);
 
 	virtual void disableIME();
+#endif /* WITH_INPUT_IME */
 
 private:
 
@@ -351,8 +355,10 @@ private:
 	/** Hwnd to parent window */
 	GHOST_TEmbedderWindowID m_parentWindowHwnd;
 
+#ifdef WITH_INPUT_IME
 	/** Handle input method editors event */
 	GHOST_ImeWin32 m_imeImput;
+#endif
 };
 
 #endif // __GHOST_WINDOWWIN32_H__
diff --git a/source/blender/windowmanager/intern/wm_window.c b/source/blender/windowmanager/intern/wm_window.c
index 6b923df..8a72e39 100644
--- a/source/blender/windowmanager/intern/wm_window.c
+++ b/source/blender/windowmanager/intern/wm_window.c
@@ -1527,10 +1527,10 @@ bool WM_window_is_fullscreen(wmWindow *win)
 
 void wm_window_IME_enable(wmWindow *win, int x, int y, int w, int h, bool complete)
 {
-	GHOST_EnableIME(win->ghostwin, x, win->sizey - y, w, h, complete);
+	GHOST_BeginIME(win->ghostwin, x, win->sizey - y, w, h, complete);
 }
 
 void wm_window_IME_disable(wmWindow *win)
 {
-	GHOST_DisableIME(win->ghostwin);
+	GHOST_EndIME(win->ghostwin);
 }




More information about the Bf-blender-cvs mailing list