// cut selection to clipboard
void LLURLLineEditor::cut()
{
	if( canCut() )
	{
		// Prepare for possible rollback
		LLURLLineEditorRollback rollback( this );

		copyEscapedURLToClipboard();

		deleteSelection();

		// Validate new string and rollback the if needed.
		BOOL need_to_rollback = ( mPrevalidateFunc && !mPrevalidateFunc( mText.getWString() ) );
		if( need_to_rollback )
		{
			rollback.doRollback( this );
			LLUI::reportBadKeystroke();
		}
		else
		if( mKeystrokeCallback )
		{
			mKeystrokeCallback( this );
		}
	}
}
Example #2
0
void DOHexEditor::cut()
{
	if(!canCut()) return;

	copy();

	U32 start = getProperSelectionStart();
	del(start, getProperSelectionEnd() - 1, TRUE);
    
	moveCursor(start, FALSE);
}
// reduce extra space: O(n)
// ???
    int minCut_2(string s) {
        int n = s.size();
        vector<int> cuts(n + 1);
        vector<bool> canCut(n, true);
        cuts[n] = -1;
        for (int i = n - 1; i >= 0; --i) {
            cuts[i] = cuts[i + 1] + 1;
            for (int j = n - 1; j >= i; --j) {
                canCut[j] = (s[i] == s[j]) && (j - i < 2 || canCut[j - 1]);
                if (canCut[j]) {
                    cuts[i] = min(cuts[i], cuts[j + 1] + 1);
                }
            }
        }
        return cuts[0];
    } 
// time : O(n^2)
// space : O(n^2)
int minCut(string s) {
    int n = s.size();
    vector<int> cuts(n + 1, 0);
    cuts[0] = -1;
    vector<vector<bool> > canCut(n, vector<bool>(n, false));
    for (int i = 1; i <= n; ++i) {
        cuts[i] = i - 1;
        for (int j = i; j >= 1; --j) {
            // j...i
            canCut[j - 1][i - 1] = (s[i - 1] == s[j - 1]) && (i - j < 2 || canCut[j][i - 2]);
            if (canCut[j - 1][i - 1]) {
                cuts[i] = min(cuts[i], cuts[j - 1] + 1);
            }
        }
    }
    return cuts[n];
}