void Ctrl::SetCaret(int x, int y, int cx, int cy) { GuiLock __; LLOG("SetCaret " << Name() << " " << RectC(x, y, cx, cy)); if(this == caretCtrl) RefreshCaret(); caretx = x; carety = y; caretcx = cx; caretcy = cy; if(this == caretCtrl) { WndCaretTime = GetTickCount(); RefreshCaret(); AnimateCaret(); } }
LRESULT CALLBACK Ctrl::UtilityProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) { sClipMap(); switch(message) { case WM_TIMER: TimerProc(GetTickCount()); AnimateCaret(); break; case WM_RENDERFORMAT: RenderFormat((dword)wParam); return 0; case WM_DESTROYCLIPBOARD: DestroyClipboard(); return 0; } return ::DefWindowProc(hWnd, message, wParam, lParam); }
bool Ctrl::ProcessEvents0(bool *quit, bool fetch) { bool r = false; while(IsWaitingEvent0(fetch) && (!LoopCtrl || LoopCtrl->InLoop())) r = ProcessEvent0(quit, fetch) || r; TimerProc(GetTickCount()); AnimateCaret(); if(quit) *quit = IsEndSession(); for(int i = 0; i < wins.GetCount(); i++) if(wins[i].ctrl) wins[i].ctrl->SyncScroll(); gdk_window_process_all_updates(); FetchEvents(FALSE); // To perform any pending GDK_EXPOSE gdk_flush(); return r; }