diff --git a/src/plugins/texteditor/basetexteditor.cpp b/src/plugins/texteditor/basetexteditor.cpp
index 8c23d975df5d876a7a04d7b85ad8c6d76b2df5ff..80a1f0268ccaa438b1eebe296eea80572eb79803 100644
--- a/src/plugins/texteditor/basetexteditor.cpp
+++ b/src/plugins/texteditor/basetexteditor.cpp
@@ -2833,7 +2833,7 @@ void BaseTextEditor::extraAreaMouseEvent(QMouseEvent *e)
                             document()->findBlockByNumber(d->m_highlightBlocksInfo.open.last()).position()
                             );
                     QTextBlock c = cursor.block();
-                    if (!TextBlockUserData::canCollapse(c))
+                    if (TextBlockUserData::hasCollapseAfter(c.previous()))
                         c = c.previous();
                     toggleBlockVisible(c);
                     d->moveCursorVisible(false);
diff --git a/src/plugins/texteditor/basetexteditor.h b/src/plugins/texteditor/basetexteditor.h
index 906e73a14fe2c8cb2c221956511f267690148f41..345540829257bcc2fb7634c461f52db08ac67e32 100644
--- a/src/plugins/texteditor/basetexteditor.h
+++ b/src/plugins/texteditor/basetexteditor.h
@@ -145,13 +145,10 @@ public:
 
     inline static bool hasCollapseAfter(const QTextBlock & block)
     {
-        if (!block.isValid())
-            return false;
-        TextBlockUserData *data = static_cast<TextBlockUserData*>(block.userData());
-        if (data && data->collapseMode() != NoCollapse) {
+        if (!block.isValid()) {
             return false;
         } else if (block.next().isValid()) {
-            data = static_cast<TextBlockUserData*>(block.next().userData());
+            TextBlockUserData *data = static_cast<TextBlockUserData*>(block.next().userData());
             if (data && data->collapseMode() == TextBlockUserData::CollapseThis &&  !data->m_ifdefedOut)
                 return true;
         }