From 5353172793d0e1b72c20fb1ccf4e655c022d0116 Mon Sep 17 00:00:00 2001 From: Juergen Spitzmueller Date: Tue, 26 May 2015 19:33:07 +0200 Subject: [PATCH] If there is an inset at cursor, connect the dialog with that, not the containing one Fixes: #8716 ("minipage within minipage" Settings bug) This is a potential candidate for branch, but only after some more testing. --- src/frontends/qt4/Dialog.cpp | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/src/frontends/qt4/Dialog.cpp b/src/frontends/qt4/Dialog.cpp index 17db593001..a9c1250b6e 100644 --- a/src/frontends/qt4/Dialog.cpp +++ b/src/frontends/qt4/Dialog.cpp @@ -219,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; }