3 * \file qt/GuiSelection.h
4 * This file is part of LyX, the document processor.
5 * Licence details can be found in the file COPYING.
9 * \author Abdelrazak Younes
11 * Full author contact details are available in file CREDITS.
14 #ifndef GUISELECTION_H
15 #define GUISELECTION_H
17 #include "frontends/Selection.h"
25 * The Qt version of the Selection.
27 class GuiSelection : public QObject, public Selection
32 virtual ~GuiSelection() {}
34 /** Selection overloaded methods
37 bool supported() const override { return selection_supported_; }
38 void haveSelection(bool own) override;
39 docstring const get() const override;
40 void put(docstring const & str) override;
41 bool empty() const override;
45 void on_dataChanged();
48 // Direct call clipboard()->text(QClipboard::Selection) inside onDataChanged causes
49 // selection to be obtained. Now imagine the some LyX instance A, when making selection -
50 // each change triggers onDataChange in all others instances for each mouse
51 // or keyboard move. This in turn causes many calls of requestSelection in A
52 // which interferes with the selecting itself. As a result middle button pasting
53 // for more instances don't work and debugging is a hell. So we just schedule
54 // obtaining of selection on the time empty() is actually called.
55 mutable bool schedule_check_;
56 bool const selection_supported_;
59 } // namespace frontend
62 #endif // GUISELECTION_H