- //lyxerr << "InsetCollapsable::localDispatch: "
- // << cmd.action << " '" << cmd.argument << "'\n";
- BufferView * bv = cmd.view();
- switch (cmd.action) {
- case LFUN_INSET_EDIT: {
- if (!cmd.argument.empty()) {
- UpdatableInset::priv_dispatch(cmd, idx, pos);
- if (collapsed_) {
- lyxerr << "branch collapsed_" << endl;
- collapsed_ = false;
- if (bv->lockInset(this)) {
- bv->updateInset(this);
- bv->buffer()->markDirty();
- inset.dispatch(cmd);
- first_after_edit = true;
- }
- } else {
- lyxerr << "branch not collapsed_" << endl;
- if (bv->lockInset(this))
- inset.dispatch(cmd);
- }
- return DispatchResult(DISPATCHED);
- }
-
-#ifdef WITH_WARNINGS
-#warning Fix this properly in BufferView_pimpl::workAreaButtonRelease
-#endif
- if (cmd.button() == mouse_button::button3)
- return DispatchResult(DISPATCHED);
-
- UpdatableInset::priv_dispatch(cmd, idx, pos);
-
- if (collapsed_) {
- collapsed_ = false;
- // set this only here as it should be recollapsed only if
- // it was already collapsed!
- first_after_edit = true;
- if (!bv->lockInset(this))
- return DispatchResult(DISPATCHED);
- bv->updateInset(this);
- bv->buffer()->markDirty();
- inset.dispatch(cmd);
- } else {
- if (!bv->lockInset(this))
- return DispatchResult(DISPATCHED);
- if (cmd.y <= button_dim.y2) {
- FuncRequest cmd1 = cmd;
- cmd1.y = 0;
- inset.dispatch(cmd1);
- } else
- inset.dispatch(adjustCommand(cmd));
- }
- return DispatchResult(DISPATCHED);
- }
-
- case LFUN_MOUSE_PRESS:
- if (!collapsed_ && cmd.y > button_dim.y2)
- inset.dispatch(adjustCommand(cmd));
- return DispatchResult(DISPATCHED);
-
- case LFUN_MOUSE_MOTION:
- if (!collapsed_ && cmd.y > button_dim.y2)
- inset.dispatch(adjustCommand(cmd));
- return DispatchResult(DISPATCHED);
-
- case LFUN_MOUSE_RELEASE:
- lfunMouseRelease(cmd);
- return DispatchResult(DISPATCHED);
-
- default:
- DispatchResult result = inset.dispatch(cmd);
- if (result >= DispatchResult(FINISHED))
- bv->unlockInset(this);
- first_after_edit = false;
- return result;