- //lyxerr << "\nInsetCollapsable::priv_dispatch (begin): cmd: " << cmd
- // << " button y: " << button_dim.y2 << endl;
- switch (cmd.action) {
- case LFUN_MOUSE_PRESS:
- if (status_ == Inlined)
- inset.dispatch(cmd);
- else if (status_ == Open && cmd.y > button_dim.y2)
- inset.dispatch(adjustCommand(cmd));
- return DispatchResult(true, true);
-
- case LFUN_MOUSE_MOTION:
- if (status_ == Inlined)
- inset.dispatch(cmd);
- else if (status_ == Open && cmd.y > button_dim.y2)
- inset.dispatch(adjustCommand(cmd));
- return DispatchResult(true, true);
-
- case LFUN_MOUSE_RELEASE:
- return lfunMouseRelease(cmd);
-
- case LFUN_INSET_TOGGLE:
- if (inset.text_.toggleInset())
- return DispatchResult(true, true);
- if (status_ == Open)
- setStatus(Inlined);
- return DispatchResult(true, true);
- setStatus(Collapsed);
- return DispatchResult(false, FINISHED_RIGHT);
-
- default:
- return inset.dispatch(adjustCommand(cmd));
- }
- //lyxerr << "InsetCollapsable::priv_dispatch (end)" << endl;
+ //lyxerr << "InsetCollapsable: edit xy" << endl;
+ if (status() == Collapsed || (button_dim.contains(x, y) && status() != Inlined))
+ return this;
+ cur.push(*this);
+ return InsetText::editXY(cur, x, y);