Skip to content

Commit b3b5f00

Browse files
authored
Merge branch 'connected-element-merge' into add-complex-find
2 parents 8fdd647 + 13f8a7f commit b3b5f00

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

53 files changed

+1572
-294
lines changed

src/Gui/Dialogs/DlgCheckableMessageBox.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -122,7 +122,7 @@ class GuiExport DlgCheckableMessageBox: public QDialog
122122
const QString& header,
123123
const QString& message,
124124
bool check = false,
125-
const QString& checkText = QStringLiteral("Don't show me again")
125+
const QString& checkText = tr("Don't show me again")
126126
);
127127

128128
/// Same as showMessage above, but it checks the specific preference path and parameter

src/Gui/ExpressionCompleter.cpp

Lines changed: 26 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1013,7 +1013,7 @@ void ExpressionLineEdit::slotTextChanged(const QString& text)
10131013
}
10141014
}
10151015

1016-
void ExpressionLineEdit::slotCompleteText(const QString& completionPrefix, bool isActivated)
1016+
void ExpressionLineEdit::slotCompleteText(const QString& completionPrefix, ActivationMode mode)
10171017
{
10181018
int start, end;
10191019
completer->getPrefixRange(start, end);
@@ -1030,7 +1030,7 @@ void ExpressionLineEdit::slotCompleteText(const QString& completionPrefix, bool
10301030

10311031
// chain completions if we select an entry from the completer drop down
10321032
// and that entry ends with '.' or '#'
1033-
if (isActivated) {
1033+
if (mode == ActivationMode::Activated) {
10341034
std::string textToComplete = completionPrefix.toUtf8().constData();
10351035
if (textToComplete.size()
10361036
&& (*textToComplete.crbegin() == '.' || *textToComplete.crbegin() == '#')) {
@@ -1042,12 +1042,12 @@ void ExpressionLineEdit::slotCompleteText(const QString& completionPrefix, bool
10421042

10431043
void ExpressionLineEdit::slotCompleteTextHighlighted(const QString& completionPrefix)
10441044
{
1045-
slotCompleteText(completionPrefix, false);
1045+
slotCompleteText(completionPrefix, ActivationMode::Highlighted);
10461046
}
10471047

10481048
void ExpressionLineEdit::slotCompleteTextSelected(const QString& completionPrefix)
10491049
{
1050-
slotCompleteText(completionPrefix, true);
1050+
slotCompleteText(completionPrefix, ActivationMode::Activated);
10511051
}
10521052

10531053

@@ -1116,13 +1116,13 @@ void ExpressionTextEdit::setDocumentObject(const App::DocumentObject* currentDoc
11161116
completer,
11171117
qOverload<const QString&>(&QCompleter::activated),
11181118
this,
1119-
&ExpressionTextEdit::slotCompleteText
1119+
&ExpressionTextEdit::slotCompleteTextSelected
11201120
);
11211121
connect(
11221122
completer,
11231123
qOverload<const QString&>(&QCompleter::highlighted),
11241124
this,
1125-
&ExpressionTextEdit::slotCompleteText
1125+
&ExpressionTextEdit::slotCompleteTextHighlighted
11261126
);
11271127
connect(this, &ExpressionTextEdit::textChanged2, completer, &ExpressionCompleter::slotUpdate);
11281128
connect(
@@ -1155,7 +1155,7 @@ void ExpressionTextEdit::slotTextChanged()
11551155
}
11561156
}
11571157

1158-
void ExpressionTextEdit::slotCompleteText(const QString& completionPrefix)
1158+
void ExpressionTextEdit::slotCompleteText(const QString& completionPrefix, ActivationMode mode)
11591159
{
11601160
QTextCursor cursor = textCursor();
11611161
int start, end;
@@ -1165,17 +1165,31 @@ void ExpressionTextEdit::slotCompleteText(const QString& completionPrefix)
11651165
cursor.movePosition(QTextCursor::NextCharacter, QTextCursor::MoveAnchor, end - pos);
11661166
}
11671167
cursor.movePosition(QTextCursor::PreviousCharacter, QTextCursor::KeepAnchor, end - start);
1168+
11681169
Base::FlagToggler<bool> flag(block, false);
11691170
cursor.insertText(completionPrefix);
11701171
completer->updatePrefixEnd(cursor.positionInBlock());
11711172

1172-
std::string textToComplete = completionPrefix.toUtf8().constData();
1173-
if (textToComplete.size()
1174-
&& (*textToComplete.crbegin() == '.' || *textToComplete.crbegin() == '#')) {
1175-
completer->slotUpdate(cursor.block().text(), cursor.positionInBlock());
1173+
// chain completions only when activated (Enter/Click), not when highlighted (arrow keys)
1174+
if (mode == ActivationMode::Activated) {
1175+
std::string textToComplete = completionPrefix.toUtf8().constData();
1176+
if (!textToComplete.empty()
1177+
&& (*textToComplete.crbegin() == '.' || *textToComplete.crbegin() == '#')) {
1178+
completer->slotUpdate(cursor.block().text(), cursor.positionInBlock());
1179+
}
11761180
}
11771181
}
11781182

1183+
void ExpressionTextEdit::slotCompleteTextHighlighted(const QString& completionPrefix)
1184+
{
1185+
slotCompleteText(completionPrefix, ActivationMode::Highlighted);
1186+
}
1187+
1188+
void ExpressionTextEdit::slotCompleteTextSelected(const QString& completionPrefix)
1189+
{
1190+
slotCompleteText(completionPrefix, ActivationMode::Activated);
1191+
}
1192+
11791193
void ExpressionTextEdit::keyPressEvent(QKeyEvent* e)
11801194
{
11811195
Base::FlagToggler<bool> flag(block, true);
@@ -1208,9 +1222,8 @@ void ExpressionTextEdit::keyPressEvent(QKeyEvent* e)
12081222
if (!completer->popup()->currentIndex().isValid()) {
12091223
completer->popup()->setCurrentIndex(completer->popup()->model()->index(0, 0));
12101224
}
1211-
// insert completion
12121225
completer->setCurrentRow(completer->popup()->currentIndex().row());
1213-
slotCompleteText(completer->currentCompletion());
1226+
slotCompleteText(completer->currentCompletion(), ActivationMode::Highlighted);
12141227

12151228
// refresh completion list
12161229
completer->setCompletionPrefix(completer->currentCompletion());

src/Gui/ExpressionCompleter.h

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,12 @@ class ObjectIdentifier;
4444
namespace Gui
4545
{
4646

47+
enum class ActivationMode
48+
{
49+
Highlighted, // browsing with arrow keys
50+
Activated // confirmed selection (Enter/Click)
51+
};
52+
4753
class GuiExport ExpressionValidator: public QValidator
4854
{
4955
Q_OBJECT
@@ -123,8 +129,7 @@ class GuiExport ExpressionLineEdit: public QLineEdit
123129
void textChanged2(QString text, int pos);
124130
public Q_SLOTS:
125131
void slotTextChanged(const QString& text);
126-
// activated == pressed enter on the completion item
127-
void slotCompleteText(const QString& completionPrefix, bool isActivated);
132+
void slotCompleteText(const QString& completionPrefix, ActivationMode mode);
128133
void slotCompleteTextHighlighted(const QString& completionPrefix);
129134
void slotCompleteTextSelected(const QString& completionPrefix);
130135

@@ -159,7 +164,9 @@ class GuiExport ExpressionTextEdit: public QPlainTextEdit
159164
void textChanged2(QString text, int pos);
160165
public Q_SLOTS:
161166
void slotTextChanged();
162-
void slotCompleteText(const QString& completionPrefix);
167+
void slotCompleteText(const QString& completionPrefix, ActivationMode mode);
168+
void slotCompleteTextHighlighted(const QString& completionPrefix);
169+
void slotCompleteTextSelected(const QString& completionPrefix);
163170
void adjustCompleterToCursor();
164171

165172
private:

src/Gui/Icons/freecadabout.png

-50.8 KB
Loading

0 commit comments

Comments
 (0)