void cGUIEdit::ClipboardPaste() { if(!IsClipboardFormatAvailable(CF_UNICODETEXT)) return; if(!OpenClipboard(NULL)) return; if(HGLOBAL handler = GetClipboardData(CF_UNICODETEXT)) if(void* data = GlobalLock(handler)) { SelectionCut(); SelectionPaste((LPWSTR)data); GlobalUnlock(handler); } CloseClipboard(); }
bool Console::HandleEvent( hgeInputEvent &e ) { if( !is_active ) { if( e.type == INPUT_KEYDOWN && e.key == HGEK_F1 ) { Activate(); } else { return true; } } else if( e.type == INPUT_KEYDOWN && e.key == HGEK_F1 ) { Deactivate(); return true; } if( e.type == INPUT_KEYDOWN ) { if( e.key == HGEK_ENTER && input_line.size() > 0 ) { InputLineExecute(); } else if( e.key == HGEK_SPACE ) { SelectionDelete(); InputLineAddChar( ' ', input_line_pos ); InputLineMoveRight(); } else if( e.key == HGEK_BACKSPACE ) { if( SelectionIsActive() ) { SelectionDelete(); } else { InputLineDeleteChar( input_line_pos - 1 ); InputLineMoveLeft(); } } else if( e.key == HGEK_A && hge->Input_GetKeyState( HGEK_CTRL ) ) { SelectionAll(); } else if( e.key == HGEK_C && hge->Input_GetKeyState( HGEK_CTRL ) ) { SelectionCopy(); } else if( e.key == HGEK_V && hge->Input_GetKeyState( HGEK_CTRL ) ) { SelectionPaste( input_line_pos ); } else if( e.key == HGEK_DELETE ) { if( SelectionIsActive() ) { SelectionDelete(); } else { InputLineDeleteChar( input_line_pos ); } } else if( e.key == HGEK_UP ) { SelectionClear(); if( IsSuggestionLocked() ) { MoveUpInSuggestion(); } else { MoveBackInHistory(); } } else if( e.key == HGEK_DOWN ) { SelectionClear(); if( IsHistoryLocked() ) { MoveForwardInHistory(); } else { MoveDownInSuggestion(); } } else if( e.key == HGEK_TAB ) { if( IsSuggestionLocked() ) { AutoCompleteSuggestion(); } } else if( e.key == HGEK_LEFT ) { if( hge->Input_GetKeyState( HGEK_SHIFT ) ) { SelectionMoveLeft(); } else { SelectionClear(); } InputLineMoveLeft(); } else if( e.key == HGEK_RIGHT ) { if( hge->Input_GetKeyState( HGEK_SHIFT ) ) { SelectionMoveRight(); } else { SelectionClear(); } InputLineMoveRight(); } else if( e.chr > 32 ) { SelectionDelete(); InputLineAddChar( e.chr, input_line_pos ); InputLineMoveRight(); } else { return true; } blink_timer.Restart(); } return false; }