]> git.lyx.org Git - lyx.git/blobdiff - src/frontends/gtk/GuiSelection.C
make it compile again
[lyx.git] / src / frontends / gtk / GuiSelection.C
index 350c08ccdd736bf96b99ce006613c472a6cd1b09..c1193f1ece1736a53ae9326178a5ecdce82c2b9b 100644 (file)
 #endif
 
 #include "GuiSelection.h"
+
+#include "BufferView.h"
 #include "debug.h"
 
+#include "frontends/Application.h"
+#include "frontends/Gui.h"
+#include "frontends/LyXView.h"
+
 #include <gtkmm.h>
 
 using std::endl;
@@ -50,5 +56,38 @@ void GuiSelection::put(docstring const & str)
        clipboard->set_text(utf8);
 }
 
+
+void GuiSelection::onClipboardGet(Gtk::SelectionData & /*selection_data*/,
+               guint /*info*/)
+{
+       // FIXME: This assumes only one LyXView
+       lyx::docstring const sel = theApp->gui().view(0).view()->requestSelection();
+       if (!sel.empty())
+               put(sel);
+}
+
+
+void GuiSelection::onClipboardClear()
+{
+       // FIXME: This assumes only one LyXView
+       theApp->gui().view(0).view()->clearSelection();
+}
+
+
+void GuiSelection::haveSelection(bool toHave)
+{
+       if (toHave) {
+               Glib::RefPtr<Gtk::Clipboard> clipboard =
+                       Gtk::Clipboard::get(GDK_SELECTION_PRIMARY);
+               std::vector<Gtk::TargetEntry> listTargets;
+               listTargets.push_back(Gtk::TargetEntry("UTF8_STRING"));
+               clipboard->set(listTargets,
+                               sigc::mem_fun(const_cast<GuiSelection&>(*this),
+                                       &GuiSelection::onClipboardGet),
+                               sigc::mem_fun(const_cast<GuiSelection&>(*this),
+                                       &GuiSelection::onClipboardClear));
+       }
+}
+
 } // namespace frontend
 } // namespace lyx