Skip to content

Commit 649b500

Browse files
committed
fix: make removing all quote item characters also properly remove style
1 parent b7fe2ac commit 649b500

1 file changed

Lines changed: 20 additions & 3 deletions

File tree

ios/styles/BlockQuoteStyle.mm

Lines changed: 20 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -118,16 +118,33 @@ - (void)removeTypingAttributes {
118118
[self removeAttributes:_input->textView.selectedRange];
119119
}
120120

121-
// removing first quote line by backspacing doesn't remove typing attributes because it doesn't run textViewDidChange
122-
// so we try guessing that a point should be deleted here
123121
- (BOOL)handleBackspaceInRange:(NSRange)range replacementText:(NSString *)text {
124-
if([self detectStyle:_input->textView.selectedRange] &&
122+
if(
123+
[self detectStyle:_input->textView.selectedRange] &&
125124
NSEqualRanges(_input->textView.selectedRange, NSMakeRange(0, 0)) &&
126125
[text isEqualToString:@""]
127126
) {
127+
// removing first quote line by backspacing doesn't remove typing attributes because it doesn't run textViewDidChange
128+
// so we try guessing that a line should be deleted here
128129
NSRange paragraphRange = [_input->textView.textStorage.string paragraphRangeForRange:_input->textView.selectedRange];
129130
[self removeAttributes:paragraphRange];
130131
return YES;
132+
} else if(
133+
[self detectStyle:_input->textView.selectedRange] &&
134+
[text isEqualToString:@""]
135+
) {
136+
// other case; make sure removing all the (non newline) text from a quto line also removes the line itself
137+
NSRange paragraphRange = [_input->textView.textStorage.string paragraphRangeForRange:range];
138+
NSValue *nonNewlineVal = [ParagraphsUtils getNonNewlineRangesIn:_input->textView range:paragraphRange].firstObject;
139+
if(nonNewlineVal == nullptr) {
140+
return NO;
141+
}
142+
NSRange nonNewlineRange = [nonNewlineVal rangeValue];
143+
if(NSEqualRanges(range, nonNewlineRange)) {
144+
[self removeAttributes:range];
145+
[TextInsertionUtils replaceText:text at:range additionalAttributes:nullptr input:_input withSelection:YES];
146+
return YES;
147+
}
131148
}
132149
return NO;
133150
}

0 commit comments

Comments
 (0)