void DisplayDirector::Redo() { StartRefreshCycle(); Action* nextAction = lastAction->NextAction(); if (nextAction) { nextAction->Do(this); lastAction = nextAction; } FinishRefreshCycle(); ClearDeletedSelections(); ScrollToSelection(); }
LRESULT GlassApplication::WindowProc(UINT msg, WPARAM wParam, LPARAM lParam) { switch (msg) { case WM_DO_ACTION: case WM_DO_ACTION_LATER: { Action * action = (Action *)wParam; action->Do(); if (msg == WM_DO_ACTION_LATER) { delete action; } } return 0; case WM_CREATE: pInstance = this; STRACE(_T("GlassApplication: created.")); break; case WM_DESTROY: //Alarm clipboard dispose if any. //Please, use RegisterClipboardViewer(NULL) instead of UnregisterClipboardViewer. RegisterClipboardViewer(NULL); return 0; case WM_NCDESTROY: // pInstance is deleted in BaseWnd::StaticWindowProc pInstance = NULL; STRACE(_T("GlassApplication: destroyed.")); return 0; case WM_CHANGECBCHAIN: if ((HWND)wParam == m_hNextClipboardView) { m_hNextClipboardView = (HWND)lParam; } else if (NULL != m_hNextClipboardView) { ::SendMessage(m_hNextClipboardView, WM_CHANGECBCHAIN, wParam, lParam); } break; case WM_DRAWCLIPBOARD: if (NULL != m_clipboard) { GetEnv()->CallVoidMethod(m_clipboard, midContentChanged); CheckAndClearException(GetEnv()); } if (NULL != m_hNextClipboardView) { ::SendMessage(m_hNextClipboardView, WM_DRAWCLIPBOARD, wParam, lParam); } break; case WM_SETTINGCHANGE: if ((UINT)wParam != SPI_SETWORKAREA) { break; } // Fall through case WM_DISPLAYCHANGE: GlassScreen::HandleDisplayChange(); break; case WM_THEMECHANGED: { JNIEnv* env = GetEnv(); jstring themeName = GlassApplication::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); }