]> git.lyx.org Git - lyx.git/blobdiff - src/BufferView_pimpl.C
fix linking problem with boost
[lyx.git] / src / BufferView_pimpl.C
index 949281956fcebe9708c1513ec24bda3db8b24471..a191d219d9d23c57737d4c10d78f9c0a24ab7080 100644 (file)
 #include "ParagraphParameters.h"
 #include "undo_funcs.h"
 #include "funcrequest.h"
-#include "box.h"
 
 #include "insets/insetbib.h"
 #include "insets/insettext.h"
-#include "insets/inseturl.h"
 #include "insets/insetlatexaccent.h"
 #include "insets/insettoc.h"
-#include "insets/insetref.h"
-#include "insets/insetparent.h"
 #include "insets/insetindex.h"
+#include "insets/insetref.h"
 #include "insets/insetinclude.h"
 #include "insets/insetcite.h"
 #include "insets/insetgraphics.h"
 #include "insets/insetmarginal.h"
-#include "insets/insetcaption.h"
 #include "insets/insetfloatlist.h"
 
 #include "mathed/formulabase.h"
@@ -83,12 +79,7 @@ using std::min;
 
 using lyx::pos_type;
 
-/* the selection possible is needed, that only motion events are
- * used, where the bottom press event was on the drawing area too */
-bool selection_possible = false;
-
 extern BufferList bufferlist;
-extern int bibitemMaxWidth(BufferView *, LyXFont const &);
 
 
 namespace {
@@ -109,71 +100,6 @@ boost::signals::connection selectioncon;
 boost::signals::connection lostcon;
 
 
-       /**
-        * Return the on-screen dimensions of the inset at the cursor.
-        * Pre-condition: the cursor must be at an inset.
-        */
-Box insetDimensions(BufferView * bv, LyXText const & text,
-                                      LyXCursor const & cursor)
-{
-       Paragraph /*const*/ & par = *cursor.par();
-       pos_type const pos = cursor.pos();
-
-       lyx::Assert(par.getInset(pos));
-
-       Inset const & inset(*par.getInset(pos));
-
-       LyXFont const & font = text.getFont(bv->buffer(), &par, pos);
-
-       int const width = inset.width(bv, font);
-       int const inset_x = font.isVisibleRightToLeft()
-               ? (cursor.ix() - width) : cursor.ix();
-
-       return Box(
-               inset_x + inset.scroll(),
-               inset_x + width,
-               cursor.iy() - inset.ascent(bv, font),
-               cursor.iy() + inset.descent(bv, font));
-}
-
-
-/**
- * check if the given co-ordinates are inside an inset at the
- * given cursor, if one exists. If so, the inset is returned,
- * and the co-ordinates are made relative. Otherwise, 0 is returned.
- */
-Inset * checkInset(BufferView * bv, LyXText const & text,
-                                     LyXCursor const & cursor, int & x, int & y)
-{
-       pos_type const pos = cursor.pos();
-       Paragraph /*const*/ & par(*cursor.par());
-
-       if (pos >= par.size() || !par.isInset(pos)) {
-               return 0;
-       }
-
-       Inset /*const*/ * inset = par.getInset(pos);
-
-       if (!isEditableInset(inset)) 
-               return 0;
-
-       Box b = insetDimensions(bv, text, cursor);
-
-       if (!b.contained(x, y)) {
-               lyxerr[Debug::GUI] << "Missed inset at x,y " << x << "," << y
-                       << " box " << b << endl;
-               return 0;
-       }
-
-       text.setCursor(bv, &par, pos, true);
-
-       x -= b.x1;
-       // The origin of an inset is on the baseline
-       y -= text.cursor.iy();
-
-       return inset;
-}
-
 } // anon namespace
 
 
@@ -371,6 +297,8 @@ int BufferView::Pimpl::resizeCurrentBuffer()
                        //      bv_->text->owner(bv_);
                        if (lyxerr.debugging())
                                textcache.show(lyxerr, "resizeCurrentBuffer");
+                       buffer_->resizeInsets(bv_);
                } else {
                        bv_->text = new LyXText(bv_);
                        bv_->text->init(bv_);
@@ -437,13 +365,13 @@ void BufferView::Pimpl::scrollDocView(int value)
 {
        lyxerr[Debug::GUI] << "scrollDocView of " << value << endl;
 
-       if (!buffer_) return;
+       if (!buffer_)
+               return;
 
        screen().draw(bv_->text, bv_, value);
 
-       if (!lyxrc.cursor_follows_scrollbar) {
+       if (!lyxrc.cursor_follows_scrollbar)
                return;
-       }
 
        LyXText * vbt = bv_->text;
 
@@ -458,19 +386,26 @@ void BufferView::Pimpl::scrollDocView(int value)
 }
 
 
-int BufferView::Pimpl::scroll(long time)
+void BufferView::Pimpl::scroll(int lines)
 {
-       if (!buffer_)
-               return 0;
+       if (!buffer_) {
+               return;
+       }
 
        LyXText const * t = bv_->text;
+       int const line_height = t->defaultHeight();
+
+       // The new absolute coordinate
+       int new_first_y = t->first_y + lines * line_height;
 
-       double const diff = t->defaultHeight()
-               + double(time) * double(time) * 0.125;
+       // Restrict to a valid value
+       new_first_y = std::min(t->height - 4 * line_height, new_first_y);
+       new_first_y = std::max(0, new_first_y);
 
-       scrollDocView(int(diff));
+       scrollDocView(new_first_y);
+
+       // Update the scrollbar.
        workarea().setScrollbarParams(t->height, t->first_y, t->defaultHeight());
-       return 0;
 }
 
 
@@ -519,37 +454,6 @@ void BufferView::Pimpl::selectionLost()
 }
 
 
-
-Inset * BufferView::Pimpl::checkInsetHit(LyXText * text, int & x, int & y)
-{
-       int y_tmp = y + text->first_y;
-
-       LyXCursor cursor;
-       text->setCursorFromCoordinates(bv_, cursor, x, y_tmp);
-
-       Inset * inset = checkInset(bv_, *text, cursor, x, y_tmp);
-
-       if (inset) {
-               y = y_tmp;
-               return inset;
-       }
-
-       // look at previous position
-       if (cursor.pos() == 0) {
-               return 0;
-       }
-
-       // move back one
-       text->setCursor(bv_, cursor, cursor.par(), cursor.pos() - 1, true);
-
-       inset = checkInset(bv_, *text, cursor, x, y_tmp);
-       if (inset) {
-               y = y_tmp;
-       }
-       return inset;
-}
-
-
 void BufferView::Pimpl::workAreaResize()
 {
        static int work_area_width;
@@ -701,10 +605,6 @@ void BufferView::Pimpl::cursorToggle()
                return;
        }
 
-       /* FIXME */
-       extern void reapSpellchecker(void);
-       reapSpellchecker();
-
        if (!bv_->theLockingInset()) {
                screen().cursorToggle(bv_);
        } else {
@@ -740,7 +640,7 @@ void BufferView::Pimpl::savePosition(unsigned int i)
        if (i > 0) {
                ostringstream str;
                str << _("Saved bookmark") << ' ' << i;
-               owner_->message(str.str().c_str());
+               owner_->message(STRCONV(str.str()));
        }
 }
 
@@ -772,7 +672,7 @@ void BufferView::Pimpl::restorePosition(unsigned int i)
        if (i > 0) {
                ostringstream str;
                str << _("Moved to bookmark") << ' ' << i;
-               owner_->message(str.str().c_str());
+               owner_->message(STRCONV(str.str()));
        }
 }
 
@@ -981,18 +881,18 @@ void BufferView::Pimpl::MenuInsertLyXFile(string const & filen)
        ostringstream s1;
        s1 << _("Inserting document") << ' '
           << disp_fn << " ...";
-       owner_->message(s1.str().c_str());
+       owner_->message(STRCONV(s1.str()));
        bool const res = bv_->insertLyXFile(filename);
        if (res) {
                ostringstream str;
                str << _("Document") << ' ' << disp_fn
                    << ' ' << _("inserted.");
-               owner_->message(str.str().c_str());
+               owner_->message(STRCONV(str.str()));
        } else {
                ostringstream str;
                str << _("Could not insert document") << ' '
                    << disp_fn;
-               owner_->message(str.str().c_str());
+               owner_->message(STRCONV(str.str()));
        }
 }
 
@@ -1007,20 +907,14 @@ bool BufferView::Pimpl::dispatch(FuncRequest const & ev)
                << " button[" << ev.button() << "]"
                << endl;
 
+       // e.g. Qt mouse press when no buffer
+       if (!buffer_)
+               return false;
+
        LyXTextClass const & tclass = buffer_->params.getLyXTextClass();
 
        switch (ev.action) {
 
-       case LFUN_TOC_INSERT:
-       {
-               InsetCommandParams p;
-               p.setCmdName("tableofcontents");
-               Inset * inset = new InsetTOC(p);
-               if (!insertInset(inset, tclass.defaultLayoutName()))
-                       delete inset;
-               break;
-       }
-
        case LFUN_SCROLL_INSET:
                // this is not handled here as this function is only active
                // if we have a locking_inset and that one is (or contains)
@@ -1178,52 +1072,6 @@ bool BufferView::Pimpl::dispatch(FuncRequest const & ev)
        }
        break;
 
-       case LFUN_HTMLURL:
-       case LFUN_URL:
-       {
-               InsetCommandParams p;
-               if (ev.action == LFUN_HTMLURL)
-                       p.setCmdName("htmlurl");
-               else
-                       p.setCmdName("url");
-               owner_->getDialogs().createUrl(p.getAsString());
-       }
-       break;
-
-       case LFUN_INSERT_URL:
-       {
-               InsetCommandParams p;
-               p.setFromString(ev.argument);
-
-               InsetUrl * inset = new InsetUrl(p);
-               if (!insertInset(inset))
-                       delete inset;
-               else
-                       updateInset(inset, true);
-       }
-       break;
-
-       case LFUN_INSET_CAPTION:
-       {
-               // Do we have a locking inset...
-               if (bv_->theLockingInset()) {
-                       lyxerr << "Locking inset code: "
-                              << static_cast<int>(bv_->theLockingInset()->lyxCode());
-                       InsetCaption * new_inset =
-                               new InsetCaption(buffer_->params);
-                       new_inset->setOwner(bv_->theLockingInset());
-                       new_inset->setAutoBreakRows(true);
-                       new_inset->setDrawFrame(0, InsetText::LOCKED);
-                       new_inset->setFrameColor(0, LColor::captionframe);
-                       if (insertInset(new_inset))
-                               new_inset->edit(bv_);
-                       else
-                               delete new_inset;
-               }
-       }
-       break;
-
-
        // --- accented characters ---------------------------
 
        case LFUN_UMLAUT:
@@ -1276,8 +1124,11 @@ bool BufferView::Pimpl::dispatch(FuncRequest const & ev)
                InsetCitation * inset = new InsetCitation(p);
                if (!insertInset(inset))
                        delete inset;
-               else
+               else {
+                       inset->setLoadingBuffer(bv_->buffer(), false);
                        updateInset(inset, true);
+               }
+
        }
        break;
 
@@ -1317,9 +1168,8 @@ bool BufferView::Pimpl::dispatch(FuncRequest const & ev)
        {
                InsetBibtex * inset =
                        static_cast<InsetBibtex*>(getInsetByCode(Inset::BIBTEX_CODE));
-               if (inset) {
+               if (inset)
                        inset->delDatabase(ev.argument);
-               }
        }
        break;
 
@@ -1327,56 +1177,16 @@ bool BufferView::Pimpl::dispatch(FuncRequest const & ev)
        {
                InsetBibtex * inset =
                        static_cast<InsetBibtex*>(getInsetByCode(Inset::BIBTEX_CODE));
-               if (inset) {
+               if (inset)
                        inset->setOptions(ev.argument);
-               }
        }
        break;
 
-       case LFUN_INDEX_INSERT:
-       {
-               string entry = ev.argument;
-               if (entry.empty())
-                       entry = bv_->getLyXText()->getStringToIndex(bv_);
-
-               if (entry.empty()) {
-                       owner_->getDialogs().createIndex();
-                       break;
-               }
-
-               InsetIndex * inset = new InsetIndex(InsetCommandParams("index", entry));
-
-               if (!insertInset(inset)) {
-                       delete inset;
-               } else {
-                       updateInset(inset, true);
-               }
-       }
-       break;
-
-       case LFUN_INDEX_PRINT:
-       {
-               InsetCommandParams p("printindex");
-               Inset * inset = new InsetPrintIndex(p);
-               if (!insertInset(inset, tclass.defaultLayoutName()))
-                       delete inset;
-       }
-       break;
-
-       case LFUN_PARENTINSERT:
-       {
-               InsetCommandParams p("lyxparent", ev.argument);
-               Inset * inset = new InsetParent(p, *buffer_);
-               if (!insertInset(inset, tclass.defaultLayoutName()))
-                       delete inset;
-       }
-
-       break;
-
        case LFUN_CHILD_INSERT:
        {
                InsetInclude::Params p;
-               p.cparams.setFromString(ev.argument);
+               if (!ev.argument.empty())
+                       p.cparams.setFromString(ev.argument);
                p.masterFilename_ = buffer_->fileName();
 
                InsetInclude * inset = new InsetInclude(p);
@@ -1425,351 +1235,6 @@ bool BufferView::Pimpl::dispatch(FuncRequest const & ev)
                ev.errorMessage(N_("Unknown function!"));
                break;
 
-       case LFUN_MOUSE_TRIPLE:
-       {
-               if (!buffer_)
-                       return false;
-
-               LyXText * text = bv_->getLyXText();
-
-               if (text->bv_owner && bv_->theLockingInset())
-                       return false;
-
-               if (ev.button() == mouse_button::button1) {
-                       if (text->bv_owner) {
-                               screen().hideCursor();
-                               screen().toggleSelection(text, bv_);
-                       }
-                       text->cursorHome(bv_);
-                       text->selection.cursor = text->cursor;
-                       text->cursorEnd(bv_);
-                       text->setSelection(bv_);
-                       if (text->bv_owner)
-                               screen().toggleSelection(text, bv_, false);
-                       // This will fit the cursor on the screen if necessary
-                       update(text, BufferView::SELECT|BufferView::FITCUR);
-                       workarea().haveSelection(bv_->getLyXText()->selection.set());
-               }
-               break;
-       }
-
-       case LFUN_MOUSE_DOUBLE:
-       {
-               if (!buffer_)
-                       return false;
-
-               LyXText * text = bv_->getLyXText();
-
-               if (text->bv_owner && bv_->theLockingInset())
-                       return false;
-
-               if (ev.button() == mouse_button::button1) {
-                       if (text->bv_owner) {
-                               screen().hideCursor();
-                               screen().toggleSelection(text, bv_);
-                               text->selectWord(bv_, LyXText::WHOLE_WORD_STRICT);
-                               screen().toggleSelection(text, bv_, false);
-                       } else {
-                               text->selectWord(bv_, LyXText::WHOLE_WORD_STRICT);
-                       }
-                       // This will fit the cursor on the screen if necessary
-                       update(text, BufferView::SELECT|BufferView::FITCUR);
-                       workarea().haveSelection(bv_->getLyXText()->selection.set());
-               }
-               break;
-       }
-
-       case LFUN_MOUSE_MOTION:
-       {
-               // Only use motion with button 1
-               //if (ev.button() != mouse_button::button1)
-               //      return false;
-
-               if (!buffer_)
-                       return false;
-
-               // Check for inset locking
-               if (bv_->theLockingInset()) {
-                       LyXCursor cursor = bv_->text->cursor;
-                       LyXFont font = bv_->text->getFont(buffer_,
-                                                               cursor.par(), cursor.pos());
-                       int width = bv_->theLockingInset()->width(bv_, font);
-                       int inset_x = font.isVisibleRightToLeft()
-                               ? cursor.ix() - width : cursor.ix();
-                       int start_x = inset_x + bv_->theLockingInset()->scroll();
-
-                       FuncRequest cmd(bv_, LFUN_MOUSE_MOTION,
-                         ev.x - start_x, ev.y - cursor.iy() + bv_->text->first_y, ev.button());
-                       bv_->theLockingInset()->localDispatch(cmd);
-                       return false;
-               }
-
-               // The test for not selection possible is needed, that only motion
-               // events are used, where the bottom press event was on
-               //  the drawing area too
-               if (!selection_possible) {
-                       lyxerr[Debug::ACTION]
-                               << "BufferView::Pimpl::Dispatch: no selection possible\n";
-                       return false;
-               }
-
-               screen().hideCursor();
-
-               Row * cursorrow = bv_->text->cursor.row();
-               bv_->text->setCursorFromCoordinates(bv_, ev.x, ev.y + bv_->text->first_y);
-       #if 0
-               // sorry for this but I have a strange error that the y value jumps at
-               // a certain point. This seems like an error in my xforms library or
-               // in some other local environment, but I would like to leave this here
-               // for the moment until I can remove this (Jug 20020418)
-               if (y_before < bv_->text->cursor.y())
-                       lyxerr << y_before << ":" << bv_->text->cursor.y() << endl;
-       #endif
-               // This is to allow jumping over large insets
-               if (cursorrow == bv_->text->cursor.row()) {
-                       if (ev.y >= int(workarea().workHeight())) {
-                               bv_->text->cursorDown(bv_, false);
-                       } else if (ev.y < 0) {
-                               bv_->text->cursorUp(bv_, false);
-                       }
-               }
-
-               if (!bv_->text->selection.set())
-                       update(bv_->text, BufferView::UPDATE); // Maybe an empty line was deleted
-
-               bv_->text->setSelection(bv_);
-               screen().toggleToggle(bv_->text, bv_);
-               fitCursor();
-               showCursor();
-               break;
-       }
-
-       // Single-click on work area
-       case LFUN_MOUSE_PRESS:
-       {
-               if (!buffer_)
-                       return false;
-
-               // ok ok, this is a hack (for xforms)
-               if (ev.button() == mouse_button::button4) {
-                       scroll(-lyxrc.wheel_jump);
-                       // We shouldn't go further down as we really should only do the
-                       // scrolling and be done with this. Otherwise we may open some
-                       // dialogs (Jug 20020424).
-                       return false;
-               }
-               if (ev.button() == mouse_button::button5) {
-                       scroll(lyxrc.wheel_jump);
-                       // We shouldn't go further down as we really should only do the
-                       // scrolling and be done with this. Otherwise we may open some
-                       // dialogs (Jug 20020424).
-                       return false;
-               }
-
-               int x = ev.x;
-               int y = ev.y;
-               Inset * inset_hit = checkInsetHit(bv_->text, x, y);
-
-               // Middle button press pastes if we have a selection
-               // We do this here as if the selection was inside an inset
-               // it could get cleared on the unlocking of the inset so
-               // we have to check this first
-               bool paste_internally = false;
-               if (ev.button() == mouse_button::button2
-                               && bv_->getLyXText()->selection.set())
-               {
-                       owner_->dispatch(FuncRequest(LFUN_COPY));
-                       paste_internally = true;
-               }
-
-               int const screen_first = bv_->text->first_y;
-
-               if (bv_->theLockingInset()) {
-                       // We are in inset locking mode
-
-                       // Check whether the inset was hit. If not reset mode,
-                       // otherwise give the event to the inset
-                       if (inset_hit == bv_->theLockingInset()) {
-                               FuncRequest cmd(bv_, LFUN_MOUSE_PRESS, x, y, ev.button());
-                               bv_->theLockingInset()->localDispatch(cmd);
-                               return false;
-                       }
-                       bv_->unlockInset(bv_->theLockingInset());
-               }
-
-               if (!inset_hit)
-                       selection_possible = true;
-               screen().hideCursor();
-
-               // Clear the selection
-               screen().toggleSelection(bv_->text, bv_);
-               bv_->text->clearSelection();
-               bv_->text->fullRebreak(bv_);
-               update();
-               updateScrollbar();
-
-               // Single left click in math inset?
-               if (isHighlyEditableInset(inset_hit)) {
-                       // Highly editable inset, like math
-                       UpdatableInset * inset = static_cast<UpdatableInset *>(inset_hit);
-                       selection_possible = false;
-                       owner_->updateLayoutChoice();
-                       owner_->message(inset->editMessage());
-                       //inset->edit(bv_, x, y, ev.button());
-                       // We just have to lock the inset before calling a PressEvent on it!
-                       // we don't need the edit() call here! (Jug20020329)
-                       if (!bv_->lockInset(inset)) {
-                               lyxerr[Debug::INSETS] << "Cannot lock inset" << endl;
-                       }
-                       FuncRequest cmd(bv_, LFUN_MOUSE_PRESS, x, y, ev.button());
-                       inset->localDispatch(cmd);
-                       return false;
-               }
-               // I'm not sure we should continue here if we hit an inset (Jug20020403)
-
-               // Right click on a footnote flag opens float menu
-               if (ev.button() == mouse_button::button3) {
-                       selection_possible = false;
-                       return false;
-               }
-
-               if (!inset_hit) // otherwise it was already set in checkInsetHit(...)
-                       bv_->text->setCursorFromCoordinates(bv_, x, y + screen_first);
-               finishUndo();
-               bv_->text->selection.cursor = bv_->text->cursor;
-               bv_->text->cursor.x_fix(bv_->text->cursor.x());
-
-               owner_->updateLayoutChoice();
-               if (fitCursor()) {
-                       selection_possible = false;
-               }
-
-               // Insert primary selection with middle mouse
-               // if there is a local selection in the current buffer,
-               // insert this
-               if (ev.button() == mouse_button::button2) {
-                       if (paste_internally)
-                               owner_->dispatch(FuncRequest(LFUN_PASTE));
-                       else
-                               owner_->dispatch(FuncRequest(LFUN_PASTESELECTION, "paragraph"));
-                       selection_possible = false;
-                       return false;
-               }
-               break;
-       }
-
-       case LFUN_MOUSE_RELEASE:
-       {
-               // do nothing if we used the mouse wheel
-               if (!buffer_
-                               || ev.button() == mouse_button::button4
-                               || ev.button() == mouse_button::button5)
-                       return false;
-
-               // If we hit an inset, we have the inset coordinates in these
-               // and inset_hit points to the inset.  If we do not hit an
-               // inset, inset_hit is 0, and inset_x == x, inset_y == y.
-               int x = ev.x;
-               int y = ev.y;
-               Inset * inset_hit = checkInsetHit(bv_->text, x, y);
-
-               if (bv_->theLockingInset()) {
-                       // We are in inset locking mode.
-
-                       // LyX does a kind of work-area grabbing for insets.
-                       // Only a ButtonPress FuncRequest outside the inset will
-                       // force a insetUnlock.
-                       FuncRequest cmd(bv_, LFUN_MOUSE_RELEASE, x, y, ev.button());
-                       bv_->theLockingInset()->localDispatch(cmd);
-                       return false;
-               }
-
-               selection_possible = false;
-
-               if (ev.button() == mouse_button::button2)
-                       return false;
-
-               // finish selection
-               if (ev.button() == mouse_button::button1) {
-                       workarea().haveSelection(bv_->getLyXText()->selection.set());
-               }
-
-               switchKeyMap();
-               owner_->view_state_changed();
-               owner_->updateMenubar();
-               owner_->updateToolbar();
-
-               // Did we hit an editable inset?
-               if (inset_hit) {
-                       selection_possible = false;
-
-                       // if we reach this point with a selection, it
-                       // must mean we are currently selecting.
-                       // But we don't want to open the inset
-                       // because that is annoying for the user.
-                       // So just pretend we didn't hit it.
-                       // this is OK because a "kosher" ButtonRelease
-                       // will follow a ButtonPress that clears
-                       // the selection.
-                       // Note this also fixes selection drawing
-                       // problems if we end up opening an inset
-                       if (bv_->getLyXText()->selection.set())
-                               return false;
-
-                       // CHECK fix this proper in 0.13
-                       // well, maybe 13.0 !!!!!!!!!
-
-                       // Following a ref shouldn't issue
-                       // a push on the undo-stack
-                       // anylonger, now that we have
-                       // keybindings for following
-                       // references and returning from
-                       // references.  IMHO though, it
-                       // should be the inset's own business
-                       // to push or not push on the undo
-                       // stack. They don't *have* to
-                       // alter the document...
-                       // (Joacim)
-                       // ...or maybe the SetCursorParUndo()
-                       // below isn't necessary at all anylonger?
-                       if (inset_hit->lyxCode() == Inset::REF_CODE) {
-                               setCursorParUndo(bv_);
-                       }
-
-                       owner_->message(inset_hit->editMessage());
-
-                       if (isHighlyEditableInset(inset_hit)) {
-                               // Highly editable inset, like math
-                               UpdatableInset *inset = (UpdatableInset *)inset_hit;
-                               FuncRequest cmd(bv_, LFUN_MOUSE_RELEASE, x, y, ev.button());
-                               inset->localDispatch(cmd);
-                       } else {
-                               FuncRequest cmd(bv_, LFUN_MOUSE_RELEASE, x, y, ev.button());
-                               inset_hit->localDispatch(cmd);
-                               // IMO this is a grosshack! Inset's should be changed so that
-                               // they call the actions they have to do with the insetButtonRel.
-                               // function and not in the edit(). This should be changed
-                               // (Jug 20020329)
-       #ifdef WITH_WARNINGS
-       #warning Please remove donot call inset->edit() here (Jug 20020812)
-       #endif
-                               inset_hit->edit(bv_, x, y, ev.button());
-                       }
-                       return false;
-               }
-
-               // Maybe we want to edit a bibitem ale970302
-               if (bv_->text->cursor.par()->bibkey) {
-                       bool const is_rtl = bv_->text->cursor.par()->isRightToLeftPar(buffer_->params);
-                       int const width = bibitemMaxWidth(bv_, buffer_->params.getLyXTextClass().defaultfont());
-                       if ((is_rtl && x > bv_->text->workWidth(bv_)-20-width) ||
-                                       (!is_rtl && x < 20+width)) {
-                               bv_->text->cursor.par()->bibkey->edit(bv_, 0, 0, mouse_button::none);
-                       }
-               }
-               return false;
-       }
-
        default:
                return bv_->getLyXText()->dispatch(FuncRequest(ev, bv_));
        } // end of switch
@@ -1784,7 +1249,7 @@ bool BufferView::Pimpl::insertInset(Inset * inset, string const & lout)
        // inset there otherwise this is a illegal function now
        if (bv_->theLockingInset()) {
                if (bv_->theLockingInset()->insetAllowed(inset))
-                   return bv_->theLockingInset()->insertInset(bv_, inset);
+                       return bv_->theLockingInset()->insertInset(bv_, inset);
                return false;
        }