namespace lyx {
namespace frontend {
-class RtlItemDelegate : public QItemDelegate
+class CompleterItemDelegate : public QItemDelegate
{
public:
- explicit RtlItemDelegate(QObject * parent)
+ explicit CompleterItemDelegate(QObject * parent)
: QItemDelegate(parent), enabled_(false)
{}
+ ~CompleterItemDelegate()
+ {}
+
void setEnabled(bool enabled = true)
{
enabled_ = enabled;
reverse(stltext.begin(), stltext.end());
QItemDelegate::drawDisplay(painter, option, rect, toqstr(stltext));
}
-
-private:
- bool enabled_;
-};
-
-
-class PixmapItemDelegate : public QItemDelegate
-{
-public:
- explicit PixmapItemDelegate(QObject * parent)
- : QItemDelegate(parent)
- {}
-protected:
void paint(QPainter *painter, const QStyleOptionViewItem &option,
const QModelIndex &index) const
{
+ if (index.column() == 0) {
+ QItemDelegate::paint(painter, option, index);
+ return;
+ }
QStyleOptionViewItem opt = setOptions(index, option);
QVariant value = index.data(Qt::DisplayRole);
QPixmap pixmap = qvariant_cast<QPixmap>(value);
drawFocus(painter, opt, option.rect);
painter->restore();
}
-};
+private:
+ bool enabled_;
+};
class GuiCompletionModel : public QAbstractListModel
{
///
~GuiCompletionModel() { delete list_; }
///
+ void setList(CompletionList const * l) {
+ delete list_;
+ list_ = l;
+ reset();
+ }
+ ///
bool sorted() const
{
if (list_)
modelActive_(false)
{
// Setup the completion popup
- setModel(new GuiCompletionModel(this, 0));
+ model_ = new GuiCompletionModel(this, 0);
+ setModel(model_);
setCompletionMode(QCompleter::PopupCompletion);
setWidget(gui_);
listView->setUniformRowHeights(true);
setPopup(listView);
- rtlItemDelegate_ = new RtlItemDelegate(this);
- popup()->setItemDelegateForColumn(0, rtlItemDelegate_);
- popup()->setItemDelegateForColumn(1, new PixmapItemDelegate(this));
+ itemDelegate_ = new CompleterItemDelegate(this);
+ popup()->setItemDelegate(itemDelegate_);
// create timeout timers
popup_timer_.setSingleShot(true);
// turn the direction of the strings in the popup.
// Qt does not do that itself.
- rtlItemDelegate_->setEnabled(rtl);
+ itemDelegate_->setEnabled(rtl);
// set new model
CompletionList const * list = cur.inset().createCompletionList(cur);
- setModel(new GuiCompletionModel(this, list));
+ model_->setList(list);
modelActive_ = true;
if (list->sorted())
setModelSorting(QCompleter::CaseSensitivelySortedModel);
{
popup()->hide();
if (!inlineVisible())
- setModel(new GuiCompletionModel(this, 0));
+ model_->setList(0);
}
void GuiCompleter::asyncHideInline()
{
if (!popupVisible())
- setModel(new GuiCompletionModel(this, 0));
+ model_->setList(0);
}