]> git.lyx.org Git - features.git/blobdiff - src/BufferView.cpp
Some context menu work:
[features.git] / src / BufferView.cpp
index 95bb417f87cf849785c63661bbd4feb974857f29..0a0a642003321422d841a00140c7fbe2133d2da5 100644 (file)
@@ -866,6 +866,29 @@ FuncStatus BufferView::getStatus(FuncRequest const & cmd)
                flag.enabled(true);
                break;
 
+       case LFUN_NEXT_INSET_MODIFY: {
+               // this is the real function we want to invoke
+               FuncRequest tmpcmd = FuncRequest(LFUN_INSET_MODIFY, cmd.argument());
+               // if there is an inset at cursor, see whether it
+               // can be modified.
+               Inset * inset = cur.nextInset();
+               if (inset) {
+                       inset->getStatus(cur, tmpcmd, flag);
+                       return flag;
+                       break;
+               }
+               // if it did not work, try the underlying inset.
+               inset = &cur.inset();
+               if (inset) {
+                       inset->getStatus(cur, tmpcmd, flag);
+                       return flag;
+                       break;
+               }
+               // else disable
+               flag.enabled(false);
+               break;
+       }
+
        case LFUN_LABEL_GOTO: {
                flag.enabled(!cmd.argument().empty()
                    || getInsetByCode<InsetRef>(cur, REF_CODE));
@@ -1312,6 +1335,25 @@ bool BufferView::dispatch(FuncRequest const & cmd)
                break;
        }
 
+       case LFUN_NEXT_INSET_MODIFY: {
+               // this is the real function we want to invoke
+               FuncRequest tmpcmd = FuncRequest(LFUN_INSET_MODIFY, cmd.argument());
+               // if there is an inset at cursor, see whether it
+               // can be modified.
+               Inset * inset = cur.nextInset();
+               if (inset)
+                       inset->dispatch(cur, tmpcmd);
+               // if it did not work, try the underlying inset.
+               else if (&cur.inset())
+                       cur.inset().dispatch(cur, tmpcmd);
+               else
+                       // It did not work too; no action needed.
+                       break;
+               cur.clearSelection();
+               processUpdateFlags(Update::Force | Update::FitCursor);
+               break;
+       }
+
        case LFUN_SCREEN_UP:
        case LFUN_SCREEN_DOWN: {
                Point p = getPos(cur, cur.boundary());