"Bo Peng" <[EMAIL PROTECTED]> writes: >> Under Linux, I'm having problems with mouse selection, using current >> 1.6svn---though not, oddly enough, in 1.5.2svn. > > Before 1.5.1 is released, I added a quick fix to trunk to fix middle > button paste. JMarc is supposed to replace that with a better fix of > his, and fix the trunk as well. See > http://marc.info/?l=lyx-devel&m=118617753604863&w=2
I do not know whether it will help Richard, but anyway here are my promised patches. Bo, can you do some testing? Note that I removed all the pasting code for tabular and directed to InsetText instead. However the two code were a bit different and I do not know why. Could you review the patch? JMarc
svndiff src/insets/InsetTabular.cpp src/mathed/InsetMathNest.cpp Index: src/insets/InsetTabular.cpp =================================================================== --- src/insets/InsetTabular.cpp (révision 19388) +++ src/insets/InsetTabular.cpp (copie de travail) @@ -3189,10 +3189,6 @@ void InsetTabular::doDispatch(Cursor & c case LFUN_MOUSE_PRESS: //lyxerr << "# InsetTabular::MousePress\n" << cur.bv().cursor() << endl; - // FIXME: the following should be replaced by a better fix - // that is already used for plain text (Text3.cpp). - cap::saveSelection(bvcur); - if (cmd.button() == mouse_button::button1 || (cmd.button() == mouse_button::button3 && (&bvcur.selBegin().inset() != this || !tablemode(bvcur)))) { @@ -3204,22 +3200,10 @@ void InsetTabular::doDispatch(Cursor & c break; } - if (cmd.button() == mouse_button::button2) { - if (cap::selection()) { - // See comment in Text::dispatch why we - // do this - // FIXME This does not use paste_tabular, - // another reason why paste_tabular should go. - cap::copySelectionToStack(); - cmd = FuncRequest(LFUN_PASTE, "0"); - } else { - cmd = FuncRequest(LFUN_PRIMARY_SELECTION_PASTE, - "paragraph"); - } - doDispatch(cur, cmd); - cur.bv().buffer()->markDirty(); - cur.bv().mouseSetCursor(cur); - } + if (cmd.button() == mouse_button::button2) + // Let InsetText do it + cell(cur.idx())->dispatch(cur, cmd); + break; case LFUN_MOUSE_MOTION: Index: src/mathed/InsetMathNest.cpp =================================================================== --- src/mathed/InsetMathNest.cpp (révision 19388) +++ src/mathed/InsetMathNest.cpp (copie de travail) @@ -1155,30 +1155,30 @@ void InsetMathNest::lfunMousePress(Curso BufferView & bv = cur.bv(); // FIXME: the following should be replaced by a better fix // that is already used for plain text (Text3.cpp). - cap::saveSelection(bv.cursor()); + bv.mouseSetCursor(cur); if (cmd.button() == mouse_button::button1) { //lyxerr << "## lfunMousePress: setting cursor to: " << cur << endl; - bv.mouseSetCursor(cur); // Update the cursor update flags as needed: // - // Update::Decoration: tells to update the decoration (visual box - // corners that define the inset)/ - // Update::FitCursor: adjust the screen to the cursor position if - // needed + // Update::Decoration: tells to update the decoration + // (visual box corners that define + // the inset)/ + // Update::FitCursor: adjust the screen to the cursor + // position if needed // cur.result().update(): don't overwrite previously set flags. - cur.updateFlags(Update::Decoration | Update::FitCursor | cur.result().update()); + cur.updateFlags(Update::Decoration | Update::FitCursor + | cur.result().update()); } else if (cmd.button() == mouse_button::button2) { - MathData ar; if (cap::selection()) { // See comment in Text::dispatch why we do this cap::copySelectionToStack(); cmd = FuncRequest(LFUN_PASTE, "0"); - doDispatch(cur, cmd); - } else + doDispatch(bv.cursor(), cmd); + } else { + MathData ar; asArray(theSelection().get(), ar); - - cur.insert(ar); - bv.mouseSetCursor(cur); + bv.cursor().insert(ar); + } } }