void GuiView::disconnectBuffer()
{
if (d.current_work_area_)
- d.current_work_area_->bufferView().setGuiDelegate(0);
+ d.current_work_area_->bufferView().buffer().setGuiDelegate(0);
}
enable = buf;
break;
- case LFUN_BUFFER_CLOSE_ALL: {
- enable = false;
- BufferList::iterator it = theBufferList().begin();
- BufferList::iterator end = theBufferList().end();
- int visible_buffers = 0;
- for (; it != end; ++it) {
- if (workArea(**it))
- ++visible_buffers;
- if (visible_buffers > 1) {
- enable = true;
- break;
- }
- }
+ case LFUN_BUFFER_CLOSE_ALL:
+ enable = theBufferList().last() != theBufferList().first();
break;
- }
case LFUN_SPLIT_VIEW:
if (cmd.getArg(0) == "vertical")
bool GuiView::closeBufferAll()
{
- // First close all workareas. This will make
- // sure that dirty buffers are saved.
+ // Close the workareas in all other views
+ QList<int> const ids = guiApp->viewIds();
+ for (int i = 0; i != ids.size(); ++i) {
+ if (id_ != ids[i] && !guiApp->view(ids[i]).closeWorkAreaAll())
+ return false;
+ }
+
+ // Close our own workareas
if (!closeWorkAreaAll())
return false;