modules/graphics/src/main/native-glass/win/GlassApplication.cpp
Print this page
*** 121,130 ****
--- 121,142 ----
LPCTSTR GlassApplication::GetWindowClassNameSuffix()
{
return szGlassToolkitWindow;
}
+ jstring GetThemeName(JNIEnv* env)
+ {
+ HIGHCONTRAST contrastInfo;
+ contrastInfo.cbSize = sizeof(HIGHCONTRAST);
+ SystemParametersInfo(SPI_GETHIGHCONTRAST, sizeof(HIGHCONTRAST), &contrastInfo, 0);
+ if (contrastInfo.dwFlags & HCF_HIGHCONTRASTON) {
+ size_t length = wcslen(contrastInfo.lpszDefaultScheme);
+ return env->NewString((jchar*)contrastInfo.lpszDefaultScheme, length);
+ }
+ return NULL;
+ }
+
LRESULT GlassApplication::WindowProc(UINT msg, WPARAM wParam, LPARAM lParam)
{
switch (msg) {
case WM_DO_ACTION:
case WM_DO_ACTION_LATER:
*** 172,181 ****
--- 184,200 ----
}
// Fall through
case WM_DISPLAYCHANGE:
GlassScreen::HandleDisplayChange();
break;
+ case WM_THEMECHANGED: {
+ JNIEnv* env = GetEnv();
+ jstring themeName = GetThemeName(env);
+ jboolean result = env->CallBooleanMethod(m_grefThis, javaIDs.Application.notifyThemeChangedMID, themeName);
+ if (CheckAndClearException(env)) return 1;
+ return !!result;
+ }
}
return ::DefWindowProc(GetHWND(), msg, wParam, lParam);
}
LRESULT CALLBACK GlassApplication::MouseLLHook(int nCode, WPARAM wParam, LPARAM lParam)
*** 331,340 ****
--- 350,364 ----
javaIDs.Application.reportExceptionMID =
env->GetStaticMethodID(cls, "reportException", "(Ljava/lang/Throwable;)V");
ASSERT(javaIDs.Application.reportExceptionMID);
if (CheckAndClearException(env)) return;
+ javaIDs.Application.notifyThemeChangedMID =
+ env->GetMethodID(cls, "notifyThemeChanged", "(Ljava/lang/String;)Z");
+ ASSERT(javaIDs.Application.notifyThemeChangedMID);
+ if (CheckAndClearException(env)) return;
+
//NOTE: substitute the cls
cls = (jclass)env->FindClass("java/lang/Runnable");
if (CheckAndClearException(env)) return;
javaIDs.Runnable.run = env->GetMethodID(cls, "run", "()V");
*** 425,434 ****
--- 449,469 ----
return GlassApplication::EnterNestedEventLoop(env);
}
/*
* Class: com_sun_glass_ui_win_WinApplication
+ * Method: _getHighContrastTheme
+ * Signature: ()Ljava/lang/String;
+ */
+ JNIEXPORT jstring JNICALL Java_com_sun_glass_ui_win_WinApplication__1getHighContrastTheme
+ (JNIEnv * env, jobject self)
+ {
+ return GetThemeName(env);
+ }
+
+ /*
+ * Class: com_sun_glass_ui_win_WinApplication
* Method: _leaveNestedEventLoopImpl
* Signature: (Ljava/lang/Object;)V
*/
JNIEXPORT void JNICALL Java_com_sun_glass_ui_win_WinApplication__1leaveNestedEventLoopImpl
(JNIEnv * env, jobject self, jobject retValue)