enhanced_inputline_history_fixes167.diff
src/uisupport/inputline.cpp | ||
---|---|---|
36 | 36 | |
37 | 37 |
void InputLine::keyPressEvent(QKeyEvent * event) { |
38 | 38 |
if(event->key() == Qt::Key_Up) { |
39 |
if(!text().isEmpty() && !history.isEmpty()) { |
|
40 |
if(!history.contains(text())) { |
|
41 |
history << text(); |
|
42 |
idx = history.count(); |
|
43 |
if(idx > 1) idx--; |
|
44 |
} |
|
45 |
} |
|
39 | 46 |
if(idx > 0) { idx--; setText(history[idx]); } |
40 | 47 |
event->accept(); |
41 | 48 |
} else if(event->key() == Qt::Key_Down) { |
42 | 49 |
if(idx < history.count()) idx++; |
43 | 50 |
if(idx < history.count()) setText(history[idx]); |
44 |
else setText(""); |
|
51 |
else { |
|
52 |
if(!text().isEmpty()) { |
|
53 |
if(history.isEmpty() || history.last() != text()) { |
|
54 |
history << text(); |
|
55 |
idx = history.count(); |
|
56 |
} |
|
57 |
setText(""); |
|
58 |
} |
|
59 |
} |
|
45 | 60 |
event->accept(); |
46 | 61 |
} else if(event->key() == Qt::Key_Select) { // for Qtopia |
47 | 62 |
emit returnPressed(); |
... | ... | |
53 | 68 |
} |
54 | 69 | |
55 | 70 |
void InputLine::on_returnPressed() { |
56 |
history << text(); |
|
57 |
idx = history.count(); |
|
71 |
if(!text().isEmpty()) { |
|
72 |
if(history.isEmpty() || history.last() != text()) { |
|
73 |
history << text(); |
|
74 |
idx = history.count(); |
|
75 |
} |
|
76 |
} |
|
58 | 77 |
emit sendText(text()); |
59 | 78 |
clear(); |
60 | 79 |
} |