]> git.lyx.org Git - lyx.git/blobdiff - src/frontends/qt4/Dialog.cpp
Amend f441590c
[lyx.git] / src / frontends / qt4 / Dialog.cpp
index 5007ac0ba7846e8db65019b571caf616063a26de..a9c1250b6eb5276660816435c370d06f2b8eae11 100644 (file)
@@ -26,6 +26,7 @@
 #include "insets/Inset.h"
 
 #include "support/debug.h"
+#include "support/gettext.h"
 #include "support/lassert.h"
 
 #include <QLabel>
@@ -117,11 +118,18 @@ BufferView const * Dialog::bufferview() const
 
 Buffer const & Dialog::buffer() const
 {
-       LASSERT(lyxview_->currentBufferView(), /**/);
+       LAPPERR(lyxview_->currentBufferView());
        return lyxview_->currentBufferView()->buffer();
 }
 
 
+Buffer const & Dialog::documentBuffer() const
+{
+       LAPPERR(lyxview_->documentBufferView());
+       return lyxview_->documentBufferView()->buffer();
+}
+
+
 void Dialog::showData(string const & data)
 {
        if (isBufferDependent() && !isBufferAvailable())
@@ -211,11 +219,23 @@ bool Dialog::isVisibleView() const
 
 Inset const * Dialog::inset(InsetCode code) const
 {
+       // ins: the innermost inset of the type we look for
+       //      that contains the cursor
        Inset * ins = bufferview()->cursor().innerInsetOfType(code);
-       if (!ins)
-               ins = bufferview()->cursor().nextInset();
-       if (!ins || ins->lyxCode() != code)
-               return 0;
+       // next: a potential inset at cursor position
+       Inset * next = bufferview()->cursor().nextInset();
+       // Check if next is of the type we look for
+       if (next)
+               if (next->lyxCode() != code)
+                       next = 0;
+       if (ins) {
+               // prefer next if it is of the requested type (bug 8716)
+               if (next)
+                       ins = next;
+       } else
+               // no containing inset of requested type
+               // use next (which might also be 0)
+               ins = next;
        return ins;
 }