lyx_mirror/src/frontends/qt/GuiSelection.h
Jean-Marc Lasgouttes 2311f42f41 Make primary-selection unknown when not supported
This lfun will not appear in menus anymore in macOS and Windows.

Part of bug #12436.
2021-11-22 10:30:43 +01:00

63 lines
1.6 KiB
C++

// -*- C++ -*-
/**
* \file qt/GuiSelection.h
* This file is part of LyX, the document processor.
* Licence details can be found in the file COPYING.
*
* \author unknown
* \author John Levon
* \author Abdelrazak Younes
*
* Full author contact details are available in file CREDITS.
*/
#ifndef GUISELECTION_H
#define GUISELECTION_H
#include "frontends/Selection.h"
#include <QObject>
namespace lyx {
namespace frontend {
/**
* The Qt version of the Selection.
*/
class GuiSelection : public QObject, public Selection
{
Q_OBJECT
public:
GuiSelection();
virtual ~GuiSelection() {}
/** Selection overloaded methods
*/
//@{
bool supported() const override { return selection_supported_; }
void haveSelection(bool own) override;
docstring const get() const override;
void put(docstring const & str) override;
bool empty() const override;
//@}
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 // GUISELECTION_H