- if (inset
- && std::find(codes.begin(), codes.end(), inset->lyxCode()) != codes.end()
- && (contents.empty() ||
- static_cast<InsetCommand const *>(inset)->getFirstNonOptParam() == contents)) {
- dit = tmpdit;
- return true;
+ if (inset) {
+ bool const valid_code = std::find(codes.begin(), codes.end(),
+ inset->lyxCode()) != codes.end();
+ InsetCommand const * ic = inset->asInsetCommand();
+ bool const same_or_no_contents = contents.empty()
+ || (ic && (ic->getFirstNonOptParam() == contents));
+
+ if (valid_code && same_or_no_contents) {
+ dit = tmpdit;
+ return true;
+ }