diff --git a/libaegisub/common/character_count.cpp b/libaegisub/common/character_count.cpp index 9a776e551..285ae1433 100644 --- a/libaegisub/common/character_count.cpp +++ b/libaegisub/common/character_count.cpp @@ -86,6 +86,9 @@ int ignore_mask_to_icu_mask(int mask) { namespace agi { size_t CharacterCount(std::string::const_iterator begin, std::string::const_iterator end, int mask) { mask = ignore_mask_to_icu_mask(mask); + if ((mask & agi::IGNORE_BLOCKS) == 0) + return count_in_range(begin, end, mask); + size_t characters = 0; auto pos = begin; do { diff --git a/libaegisub/include/libaegisub/character_count.h b/libaegisub/include/libaegisub/character_count.h index c45ab81a3..511f52d91 100644 --- a/libaegisub/include/libaegisub/character_count.h +++ b/libaegisub/include/libaegisub/character_count.h @@ -20,7 +20,8 @@ namespace agi { enum { IGNORE_NONE = 0, IGNORE_WHITESPACE = 1, - IGNORE_PUNCTUATION = 2 + IGNORE_PUNCTUATION = 2, + IGNORE_BLOCKS = 4 }; /// Get the length in characters of the longest line in the given text diff --git a/src/grid_column.cpp b/src/grid_column.cpp index 67c1866bc..f12f42048 100644 --- a/src/grid_column.cpp +++ b/src/grid_column.cpp @@ -271,7 +271,7 @@ public: if (duration <= 100 || text.size() > static_cast(duration)) return -1; - int ignore = agi::IGNORE_NONE; + int ignore = agi::IGNORE_BLOCKS; if (ignore_whitespace->GetBool()) ignore |= agi::IGNORE_WHITESPACE; if (ignore_punctuation->GetBool()) diff --git a/src/subs_edit_box.cpp b/src/subs_edit_box.cpp index 6bde5d8de..3e06730e9 100644 --- a/src/subs_edit_box.cpp +++ b/src/subs_edit_box.cpp @@ -609,7 +609,7 @@ void SubsEditBox::CallCommand(const char *cmd_name) { } void SubsEditBox::UpdateCharacterCount(std::string const& text) { - int ignore = agi::IGNORE_NONE; + int ignore = agi::IGNORE_BLOCKS; if (OPT_GET("Subtitle/Character Counter/Ignore Whitespace")->GetBool()) ignore |= agi::IGNORE_WHITESPACE; if (OPT_GET("Subtitle/Character Counter/Ignore Punctuation")->GetBool())