// -*- C++ -*- /** * \file Selection.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 BASE_SELECTION_H #define BASE_SELECTION_H #include "support/docstring.h" namespace lyx { namespace frontend { /** * A Selection class manages the selection. */ class Selection { public: virtual ~Selection() {} /// Tell the window system whether we have a selection. virtual void haveSelection(bool) = 0; /** * Get the X selection contents. * This is a noop on systems that don't have a selection. * The format is plain text. * This should be called when the user presses the middle mouse * button. */ virtual docstring const get() const = 0; /** * Fill the X selection. * The format is plain text. * Does nothing on systems that don't have a selection. * Since the X selection protocol is asyncronous this should never be * called from the kernel. * If another application requests the current selection a * SelectionRequest XEvent will be triggered. The response of the * frontend to this event should be to retrieve the current selection * from the kernel and push it to X with this method. */ virtual void put(docstring const &) = 0; }; } // namespace frontend /// Implementation is in Application.C extern frontend::Selection & theSelection(); } // namespace lyx #endif // BASE_SELECTION_H