From 574e4444a875d8ccb9ecf3abb8b7fd37f8f6cff6 Mon Sep 17 00:00:00 2001 From: Abdelrazak Younes Date: Sun, 17 Sep 2006 08:35:12 +0000 Subject: [PATCH] Move X11 specific selection code from BufferView to the frontends. * BufferView: - selectionRequested(): renamed to requestSelection() and cleaned up. - selectionLost(): renamed to clearSelection() git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@15024 a592a061-630c-0410-9148-cb99ea01b6c8 --- src/BufferView.C | 15 ++++++--------- src/BufferView.h | 4 ++-- src/frontends/gtk/GWorkArea.C | 6 ++++-- src/frontends/qt3/QWorkArea.C | 9 ++++++--- src/frontends/qt4/Application.C | 9 ++++++--- 5 files changed, 24 insertions(+), 19 deletions(-) diff --git a/src/BufferView.C b/src/BufferView.C index 709da3c6f6..73977928b4 100644 --- a/src/BufferView.C +++ b/src/BufferView.C @@ -1014,18 +1014,16 @@ bool BufferView::dispatch(FuncRequest const & cmd) } -void BufferView::selectionRequested() +docstring const BufferView::requestSelection() { - 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,14 +1033,13 @@ void BufferView::selectionRequested() 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(); } -void BufferView::selectionLost() +void BufferView::clearSelection() { if (buffer_) { cursor_.clearSelection(); diff --git a/src/BufferView.h b/src/BufferView.h index 2f580a3263..c03a887387 100644 --- a/src/BufferView.h +++ b/src/BufferView.h @@ -174,9 +174,9 @@ public: bool dispatch(FuncRequest const & argument); /// - void selectionRequested(); + lyx::docstring const requestSelection(); /// - void selectionLost(); + void clearSelection(); /// void workAreaResize(int width, int height); diff --git a/src/frontends/gtk/GWorkArea.C b/src/frontends/gtk/GWorkArea.C index f85330beea..19d973e8ca 100644 --- a/src/frontends/gtk/GWorkArea.C +++ b/src/frontends/gtk/GWorkArea.C @@ -495,13 +495,15 @@ bool GWorkArea::onKeyPress(GdkEventKey * event) void GWorkArea::onClipboardGet(Gtk::SelectionData & /*selection_data*/, guint /*info*/) { - view_.view()->selectionRequested(); + lyx::docstring const sel = view_.view()->requestSelection(); + if (!sel.empty()) + view_.gui().selection().put(sel); } void GWorkArea::onClipboardClear() { -// selectionLost(); +// clearSelection(); } diff --git a/src/frontends/qt3/QWorkArea.C b/src/frontends/qt3/QWorkArea.C index 24d8a110b1..e24be3c7d5 100644 --- a/src/frontends/qt3/QWorkArea.C +++ b/src/frontends/qt3/QWorkArea.C @@ -110,13 +110,16 @@ bool lyxX11EventFilter(XEvent * xev) 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().requestSelection(); + if (!sel.empty()) + wa_ptr->view().gui().selection().put(sel); + } break; case SelectionClear: lyxerr[Debug::GUI] << "Lost selection." << endl; if (wa_ptr) - wa_ptr->view().view()->selectionLost(); + wa_ptr->view().view()->clearSelection(); break; } return false; diff --git a/src/frontends/qt4/Application.C b/src/frontends/qt4/Application.C index d12aecbac1..24d97a72da 100644 --- a/src/frontends/qt4/Application.C +++ b/src/frontends/qt4/Application.C @@ -79,13 +79,16 @@ bool Application::x11EventFilter(XEvent * xev) 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_->requestSelection(); + if (!sel.empty()) + gui_.selection().put(sel); + } break; case SelectionClear: lyxerr[Debug::GUI] << "Lost selection." << endl; if (buffer_view_) - buffer_view_->selectionLost(); + buffer_view_->clearSelection(); break; } return false;