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)