Unverified Commit 5b4bcea9 authored by AUTOMATIC1111's avatar AUTOMATIC1111 Committed by GitHub
Browse files

Merge pull request #9757 from missionfloyd/editattention-selectcurrentword

Automatically select current word when adjusting weight with ctrl+up/down
parents 642d96dc 0e071ae5
Loading
Loading
Loading
Loading
+31 −7
Original line number Diff line number Diff line
@@ -44,9 +44,27 @@ function keyupEditAttention(event){
		return true;
    }
    
	// If the user hasn't selected anything, let's select their current parenthesis block
    if(! selectCurrentParenthesisBlock('<', '>')){
        selectCurrentParenthesisBlock('(', ')')
    function selectCurrentWord(){
        if (selectionStart !== selectionEnd) return false;
        const delimiters = opts.keyedit_delimiters + " \r\n\t";
        
        // seek backward until to find beggining
        while (!delimiters.includes(text[selectionStart - 1]) && selectionStart > 0) {
            selectionStart--;
        }
        
        // seek forward to find end
        while (!delimiters.includes(text[selectionEnd]) && selectionEnd < text.length) {
            selectionEnd++;
        }

        target.setSelectionRange(selectionStart, selectionEnd);
        return true;
    }

	// If the user hasn't selected anything, let's select their current parenthesis block or word
    if (!selectCurrentParenthesisBlock('<', '>') && !selectCurrentParenthesisBlock('(', ')')) {
        selectCurrentWord();
    }

	event.preventDefault();
@@ -81,7 +99,13 @@ function keyupEditAttention(event){
	weight = parseFloat(weight.toPrecision(12));
	if(String(weight).length == 1) weight += ".0"

    if (closeCharacter == ')' && weight == 1) {
        text = text.slice(0, selectionStart - 1) + text.slice(selectionStart, selectionEnd) + text.slice(selectionEnd + 5);
        selectionStart--;
        selectionEnd--;
    } else {
        text = text.slice(0, selectionEnd + 1) + weight + text.slice(selectionEnd + 1 + end - 1);
    }

	target.focus();
	target.value = text;
+1 −0
Original line number Diff line number Diff line
@@ -385,6 +385,7 @@ options_templates.update(options_section(('ui', "User interface"), {
    "dimensions_and_batch_together": OptionInfo(True, "Show Width/Height and Batch sliders in same row"),
    "keyedit_precision_attention": OptionInfo(0.1, "Ctrl+up/down precision when editing (attention:1.1)", gr.Slider, {"minimum": 0.01, "maximum": 0.2, "step": 0.001}),
    "keyedit_precision_extra": OptionInfo(0.05, "Ctrl+up/down precision when editing <extra networks:0.9>", gr.Slider, {"minimum": 0.01, "maximum": 0.2, "step": 0.001}),
    "keyedit_delimiters": OptionInfo(".,\/!?%^*;:{}=`~()", "Ctrl+up/down word delimiters"),
    "quicksettings": OptionInfo("sd_model_checkpoint", "Quicksettings list"),
    "hidden_tabs": OptionInfo([], "Hidden UI tabs (requires restart)", ui_components.DropdownMulti, lambda: {"choices": [x for x in tab_names]}),
    "ui_reorder": OptionInfo(", ".join(ui_reorder_categories), "txt2img/img2img UI item order"),