Lars Gullik Bjønnes wrote:
Abdelrazak Younes <[EMAIL PROTECTED]> writes:
| As the title says.
|
| This patch supports all frontends and is straight forward. I intent to
| put this general code in some code common to all frontends in the
| future.
|
| Abdel.
It looks as if you forgot to remove something here?
Yes, sorry... Attached a patch that should work. Not tested yet.
Abdel.
Index: BufferView.C
===================================================================
--- BufferView.C (revision 15018)
+++ BufferView.C (working copy)
@@ -1014,18 +1014,16 @@
}
-void BufferView::selectionRequested()
+docstring const BufferView::getStringSelection()
{
- static docstring sel;
-
if (!buffer_)
- return;
+ return docstring();
LCursor & cur = cursor_;
if (!cur.selection()) {
xsel_cache_.set = false;
- return;
+ return docstring();
}
if (!xsel_cache_.set ||
@@ -1035,10 +1033,9 @@
xsel_cache_.cursor = cur.top();
xsel_cache_.anchor = cur.anchor_.top();
xsel_cache_.set = cur.selection();
- sel = cur.selectionAsString(false);
- if (!sel.empty())
- owner_->gui().selection().put(sel);
+ return cur.selectionAsString(false);
}
+ return docstring();
}
Index: BufferView.h
===================================================================
--- BufferView.h (revision 15018)
+++ BufferView.h (working copy)
@@ -174,7 +174,7 @@
bool dispatch(FuncRequest const & argument);
///
- void selectionRequested();
+ lyx::docstring const getStringSelection();
///
void selectionLost();
Index: frontends/gtk/GWorkArea.C
===================================================================
--- frontends/gtk/GWorkArea.C (revision 15012)
+++ frontends/gtk/GWorkArea.C (working copy)
@@ -495,7 +495,9 @@
void GWorkArea::onClipboardGet(Gtk::SelectionData & /*selection_data*/,
guint /*info*/)
{
- view_.view()->selectionRequested();
+ lyx::docstring const sel = view_.view()->getStringSelection();
+ if (!sel.empty())
+ view_.gui().selection().put(sel);
}
Index: frontends/qt3/QWorkArea.C
===================================================================
--- frontends/qt3/QWorkArea.C (revision 15012)
+++ frontends/qt3/QWorkArea.C (working copy)
@@ -110,8 +110,11 @@
switch (xev->type) {
case SelectionRequest:
lyxerr[Debug::GUI] << "X requested selection." << endl;
- if (wa_ptr)
- wa_ptr->view().view()->selectionRequested();
+ if (wa_ptr) {
+ lyx::docstring const sel =
wa_ptr->view().getStringSelection();
+ if (!sel.empty())
+ wa_ptr->view().gui().selection().put(sel);
+ }
break;
case SelectionClear:
lyxerr[Debug::GUI] << "Lost selection." << endl;
Index: frontends/qt4/Application.C
===================================================================
--- frontends/qt4/Application.C (revision 15012)
+++ frontends/qt4/Application.C (working copy)
@@ -79,8 +79,11 @@
switch (xev->type) {
case SelectionRequest:
lyxerr[Debug::GUI] << "X requested selection." << endl;
- if (buffer_view_)
- buffer_view_->selectionRequested();
+ if (buffer_view_) {
+ lyx::docstring const sel =
buffer_view_->getStringSelection();
+ if (!sel.empty())
+ gui_.selection().put(sel);
+ }
break;
case SelectionClear:
lyxerr[Debug::GUI] << "Lost selection." << endl;