void MultiLineEdit::updateScrollBars() { QFontMetrics fm(font()); int _maxPixelHeight = fm.lineSpacing() * _maxHeight; if (_scrollBarsEnabled && document()->size().height() > _maxPixelHeight) setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOn); else setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff); if (!_scrollBarsEnabled || isSingleLine()) setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); else setHorizontalScrollBarPolicy(Qt::ScrollBarAsNeeded); }
void MGuiEditText::editText(MWinEvent * windowEvent) { unsigned int sStart; unsigned int sEnd; bool selection = getSelectionIds(&sStart, &sEnd); if(selection) setCharId(sStart); // events if(windowEvent->type == MWIN_EVENT_KEY_DOWN) { switch(windowEvent->data[0]) { case MKEY_UP: if(! isSingleLine()) upCharId(-1); setSelection(0, 0); return; case MKEY_DOWN: if(! isSingleLine()) upCharId(1); setSelection(0, 0); return; case MKEY_RIGHT: addCharId(); setSelection(0, 0); return; case MKEY_LEFT: subCharId(); setSelection(0, 0); return; case MKEY_SPACE: if(selection) { m_text.erase(m_text.begin() + sStart, m_text.begin() + sEnd); setSelection(0, 0); } if(! canAddCharacter()) return; m_text.insert(getCharId(), " ", 1); addCharId(); autoScaleFromText(); onChange(); return; case MKEY_TAB: if(! isSingleLine()) { if(selection) { m_text.erase(m_text.begin() + sStart, m_text.begin() + sEnd); setSelection(0, 0); } if(! canAddCharacter()) return; m_text.insert(getCharId(), " ", 1); addCharId(); autoScaleFromText(); onChange(); } return; case MKEY_BACKSPACE: if(selection) { m_text.erase(m_text.begin() + sStart, m_text.begin() + sEnd); setSelection(0, 0); autoScaleFromText(); onChange(); } else if(getCharId() > 0) { m_text.erase(m_text.begin() + getCharId() - 1); subCharId(); autoScaleFromText(); onChange(); } return; case MKEY_DELETE: if(getCharId() < m_text.size()) { if(selection) { m_text.erase(m_text.begin() + sStart, m_text.begin() + sEnd); setSelection(0, 0); } else { m_text.erase(m_text.begin() + getCharId()); } autoScaleFromText(); onChange(); } return; case MKEY_RETURN: if(! isSingleLine()) { if(selection) { m_text.erase(m_text.begin() + sStart, m_text.begin() + sEnd); setSelection(0, 0); } if(! canAddCharacter()) return; m_text.insert(getCharId(), "\n", 1); addCharId(); autoScaleFromText(); onChange(); } else { setHighLight(false); autoScaleFromText(); setSelection(0, 0); sendVariable(); } return; } } if(windowEvent->type == MWIN_EVENT_CHAR) { char character = windowEvent->data[0]; if(character >= 0 && character < 33) return; // add character if(character) { if(selection) { m_text.erase(m_text.begin() + sStart, m_text.begin() + sEnd); setSelection(0, 0); } if(! canAddCharacter()) return; m_text.insert(getCharId(), &character, 1); addCharId(); autoScaleFromText(); onChange(); } } }