X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Ffrontends%2Fqt4%2FGuiSelection.h;h=1567b3e697f5f4734e6bcae98fa30542270686d2;hb=425d092204118ea6c24c28e85fdf03fcf2bb51a4;hp=fffb803b90f4bd5de8932dc1d46c2a8fbc1e4c6e;hpb=6fcb3fe6a2cab344b2cb15ac5c81cee831c7b886;p=lyx.git diff --git a/src/frontends/qt4/GuiSelection.h b/src/frontends/qt4/GuiSelection.h index fffb803b90..1567b3e697 100644 --- a/src/frontends/qt4/GuiSelection.h +++ b/src/frontends/qt4/GuiSelection.h @@ -11,20 +11,24 @@ * Full author contact details are available in file CREDITS. */ -#ifndef SELECTION_H -#define SELECTION_H +#ifndef GUISELECTION_H +#define GUISELECTION_H #include "frontends/Selection.h" +#include + namespace lyx { namespace frontend { /** * The Qt4 version of the Selection. */ -class GuiSelection: public Selection +class GuiSelection : public QObject, public Selection { + Q_OBJECT public: + GuiSelection(); virtual ~GuiSelection() {} /** Selection overloaded methods @@ -33,11 +37,25 @@ public: void haveSelection(bool own); docstring const get() const; void put(docstring const & str); - bool isInternal() const; + bool empty() const; //@} + +private Q_SLOTS: + void on_dataChanged(); + +private: + // Direct call clipboard()->text(QClipboard::Selection) inside onDataChanged causes + // selection to be obtained. Now imagine the some LyX instance A, when making selection - + // each change triggers onDataChange in all others instances for each mouse + // or keyboard move. This in turn causes many calls of requestSelection in A + // which interferes with the selecting itself. As a result middle button pasting + // for more instances don't work and debugging is a hell. So we just schedule + // obtaining of selection on the time empty() is actually called. + mutable bool schedule_check_; + bool const selection_supported_; }; } // namespace frontend } // namespace lyx -#endif // SELECTION_H +#endif // GUISELECTION_H