]> git.lyx.org Git - lyx.git/blob - src/frontends/qt4/GuiSelection.h
* fix spelling in comments to please John.
[lyx.git] / src / frontends / qt4 / GuiSelection.h
1 // -*- C++ -*-
2 /**
3  * \file qt4/GuiSelection.h
4  * This file is part of LyX, the document processor.
5  * Licence details can be found in the file COPYING.
6  *
7  * \author unknown
8  * \author John Levon
9  * \author Abdelrazak Younes
10  *
11  * Full author contact details are available in file CREDITS.
12  */
13
14 #ifndef GUISELECTION_H
15 #define GUISELECTION_H
16
17 #include "frontends/Selection.h"
18
19 #include <QObject>
20
21 namespace lyx {
22 namespace frontend {
23
24 /**
25  * The Qt4 version of the Selection.
26  */
27 class GuiSelection : public QObject, public Selection
28 {
29         Q_OBJECT
30 public:
31         GuiSelection();
32         virtual ~GuiSelection() {}
33
34         /** Selection overloaded methods
35          */
36         //@{
37         void haveSelection(bool own);
38         docstring const get() const;
39         void put(docstring const & str);
40         bool empty() const;
41         //@}
42
43 private Q_SLOTS:
44         void on_dataChanged();
45
46 private:
47         // Direct call clipboard()->text(QClipboard::Selection) inside onDataChanged causes
48         // selection to be obtained. Now imagine the some LyX instance A, when making selection -
49         // each change triggers onDataChange in all others instances for each mouse
50         // or keyboard move. This in turn causes many calls of requestSelection in A
51         // which interferes with the selecting itself. As a result middle button pasting
52         // for more instances don't work and debugging is a hell. So we just schedule
53         // obtaining of selection on the time empty() is actually called.
54         mutable bool schedule_check_;
55         bool const selection_supported_;
56 };
57
58 } // namespace frontend
59 } // namespace lyx
60
61 #endif // GUISELECTION_H