X-Git-Url: https://git.quassel-irc.org/?a=blobdiff_plain;f=src%2Fuisupport%2Fmultilineedit.cpp;h=5ace7d6df26888fbe393398d24b1696778230438;hb=97e06500c62eccc20c50d10e6ed09bc3fcebcde4;hp=0651abf13cd6745f5ff29380fb0fa4efec866abc;hpb=402c30b7a4db362f14e0920988a0967970ccd2da;p=quassel.git diff --git a/src/uisupport/multilineedit.cpp b/src/uisupport/multilineedit.cpp index 0651abf1..5ace7d6d 100644 --- a/src/uisupport/multilineedit.cpp +++ b/src/uisupport/multilineedit.cpp @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2005-2015 by the Quassel Project * + * Copyright (C) 2005-2016 by the Quassel Project * * devel@quassel-irc.org * * * * This program is free software; you can redistribute it and/or modify * @@ -19,10 +19,13 @@ ***************************************************************************/ #include -#include #include #include +#ifdef HAVE_SONNET +# include +#endif + #include "actioncollection.h" #include "bufferview.h" #include "graphicalui.h" @@ -41,6 +44,7 @@ MultiLineEdit::MultiLineEdit(QWidget *parent) _scrollBarsEnabled(true), _pasteProtectionEnabled(true), _emacsMode(false), + _completionSpace(0), _lastDocumentHeight(-1) { document()->setDocumentMargin(0); @@ -50,6 +54,10 @@ MultiLineEdit::MultiLineEdit(QWidget *parent) enableFindReplace(false); #endif +#ifdef HAVE_SONNET + new Sonnet::SpellCheckDecorator(this); +#endif + setMode(SingleLine); setLineWrapEnabled(false); reset(); @@ -82,6 +90,14 @@ MultiLineEdit::~MultiLineEdit() { } +#if defined HAVE_KF5 || defined HAVE_KDE4 +void MultiLineEdit::createHighlighter() +{ + KTextEdit::createHighlighter(); + if (highlighter()) + highlighter()->setAutomatic(false); +} +#endif void MultiLineEdit::setCustomFont(const QFont &font) { @@ -175,7 +191,11 @@ void MultiLineEdit::updateSizeHint() opt.lineWidth = lineWidth(); opt.midLineWidth = midLineWidth(); opt.state |= QStyle::State_Sunken; - QSize s = style()->sizeFromContents(QStyle::CT_LineEdit, &opt, QSize(100, h).expandedTo(QApplication::globalStrut()), this); + QWidget *widget = this; +#ifdef Q_OS_MAC + widget = 0; +#endif + QSize s = style()->sizeFromContents(QStyle::CT_LineEdit, &opt, QSize(100, h).expandedTo(QApplication::globalStrut()), widget); if (s != _sizeHint) { _sizeHint = s; updateGeometry(); @@ -670,8 +690,12 @@ void MultiLineEdit::on_returnPressed() } -void MultiLineEdit::on_returnPressed(const QString &text) +void MultiLineEdit::on_returnPressed(QString text) { + if (_completionSpace && text.endsWith(" ")) { + text.chop(1); + } + if (!text.isEmpty()) { foreach(const QString &line, text.split('\n', QString::SkipEmptyParts)) { if (line.isEmpty()) @@ -690,6 +714,8 @@ void MultiLineEdit::on_returnPressed(const QString &text) void MultiLineEdit::on_textChanged() { + _completionSpace = qMax(_completionSpace - 1, 0); + QString newText = text(); newText.replace("\r\n", "\n"); newText.replace('\r', '\n'); @@ -772,3 +798,12 @@ void MultiLineEdit::showHistoryEntry() setTextCursor(cursor); updateScrollBars(); } + + +void MultiLineEdit::addCompletionSpace() +{ + // Inserting the space emits textChanged, which should not disable removal + _completionSpace = 2; + insertPlainText(" "); +} +