* Full author contact details are available in file CREDITS.
*/
-#ifndef BASE_SELECTION_H
-#define BASE_SELECTION_H
+#ifndef SELECTION_H
+#define SELECTION_H
-#include "support/docstring.h"
+#include "support/strfwd.h"
namespace lyx {
namespace frontend {
public:
virtual ~Selection() {}
- /// Tell the window system whether we have a selection.
+ /**
+ * Tell the window system whether we set or cleared our selection.
+ * This is a noop on systems that don't have a selection.
+ * This should be called by the kernel whenever a selection is
+ * created, changed or cleared.
+ * \param own
+ * If true: Tell that we got a valid selection.
+ * If false: Tell that we cleared our selection.
+ */
virtual void haveSelection(bool) = 0;
/**
* Get the X selection contents.
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.
- * This should be called whenever some text is highlighted.
+ * 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;
-
- /// state of clipboard.
- /// \retval true if the system clipboard has been set within LyX.
- virtual bool isInternal() const = 0;
+ /**
+ * Is the X selection empty?
+ * This does always return true on systems that don't have a real
+ * selection.
+ */
+ virtual bool empty() const = 0;
};
} // namespace frontend
-/// Implementation is in Application.C
+/// Implementation is in Application.cpp
extern frontend::Selection & theSelection();
} // namespace lyx
-#endif // BASE_SELECTION_H
+#endif // SELECTION_H