Changeset View
Changeset View
Standalone View
Standalone View
src/view/kateviewhelpers.cpp
Show First 20 Lines • Show All 2134 Lines • ▼ Show 20 Line(s) | |||||
2135 | { | 2135 | { | ||
2136 | const int cursorOnLine = m_viewInternal->yToKateTextLayout(e->y()).line(); | 2136 | const int cursorOnLine = m_viewInternal->yToKateTextLayout(e->y()).line(); | ||
2137 | if (cursorOnLine == m_lastClickedLine && cursorOnLine >= 0 && cursorOnLine <= m_doc->lastLine()) { | 2137 | if (cursorOnLine == m_lastClickedLine && cursorOnLine >= 0 && cursorOnLine <= m_doc->lastLine()) { | ||
2138 | BorderArea area = positionToArea(e->pos()); | 2138 | BorderArea area = positionToArea(e->pos()); | ||
2139 | if (area == IconBorder) { | 2139 | if (area == IconBorder) { | ||
2140 | if (e->button() == Qt::LeftButton) { | 2140 | if (e->button() == Qt::LeftButton) { | ||
2141 | if (!m_doc->handleMarkClick(cursorOnLine)) { | 2141 | if (!m_doc->handleMarkClick(cursorOnLine)) { | ||
2142 | KateViewConfig *config = m_view->config(); | 2142 | KateViewConfig *config = m_view->config(); | ||
2143 | if (m_doc->editableMarks() & config->defaultMarkType()) { | 2143 | const uint editBits = m_doc->editableMarks(); | ||
2144 | if (m_doc->mark(cursorOnLine) & config->defaultMarkType()) { | 2144 | // is the default or the only editable mark | ||
2145 | m_doc->removeMark(cursorOnLine, config->defaultMarkType()); | 2145 | const uint singleMark = qPopulationCount(editBits) > 1 ? | ||
dhaumann: I would prefer using qPopulationCounte (see http://doc.qt.io/qt-5/qtalgorithms. | |||||
2146 | editBits & config->defaultMarkType() : editBits; | ||||
2147 | if (singleMark) { | ||||
2148 | if (m_doc->mark(cursorOnLine) & singleMark) { | ||||
2149 | m_doc->removeMark(cursorOnLine, singleMark); | ||||
2146 | } else { | 2150 | } else { | ||
2147 | m_doc->addMark(cursorOnLine, config->defaultMarkType()); | 2151 | m_doc->addMark(cursorOnLine, singleMark); | ||
2148 | } | 2152 | } | ||
2149 | } else if (config->allowMarkMenu()) { | 2153 | } else if (config->allowMarkMenu()) { | ||
2150 | showMarkMenu(cursorOnLine, QCursor::pos()); | 2154 | showMarkMenu(cursorOnLine, QCursor::pos()); | ||
2151 | } | 2155 | } | ||
2152 | } | 2156 | } | ||
2153 | } else if (e->button() == Qt::RightButton) { | 2157 | } else if (e->button() == Qt::RightButton) { | ||
2154 | showMarkMenu(cursorOnLine, QCursor::pos()); | 2158 | showMarkMenu(cursorOnLine, QCursor::pos()); | ||
2155 | } | 2159 | } | ||
▲ Show 20 Lines • Show All 645 Lines • Show Last 20 Lines |
I would prefer using qPopulationCounte (see http://doc.qt.io/qt-5/qtalgorithms.html#qPopulationCount):