X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fuisupport%2Fbufferview.cpp;h=8387f025942d3b259c8517146ebf64d2af1dd322;hp=7986118b70ea75e0a8c40f9f03eb47454d5f6c62;hb=092e6b212637ffbf68800584b7c1f32d1931b602;hpb=deaa4151758de4f22d1f7c113c50af0ffc6ae587 diff --git a/src/uisupport/bufferview.cpp b/src/uisupport/bufferview.cpp index 7986118b..8387f025 100644 --- a/src/uisupport/bufferview.cpp +++ b/src/uisupport/bufferview.cpp @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2005-2016 by the Quassel Project * + * Copyright (C) 2005-2018 by the Quassel Project * * devel@quassel-irc.org * * * * This program is free software; you can redistribute it and/or modify * @@ -73,6 +73,8 @@ void BufferView::init() header()->hide(); // nobody seems to use this anyway + setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); + // breaks with Qt 4.8 if (QString("4.8.0") > qVersion()) // FIXME breaks with Qt versions >= 4.10! setAnimated(true); @@ -499,6 +501,8 @@ void BufferView::changeBuffer(Direction direction) QModelIndex currentIndex = selectionModel()->currentIndex(); QModelIndex resultingIndex; + QModelIndex lastNetIndex = model()->index(model()->rowCount() - 1, 0, QModelIndex()); + if (currentIndex.parent().isValid()) { //If we are a child node just switch among siblings unless it's the first/last child resultingIndex = currentIndex.sibling(currentIndex.row() + direction, 0); @@ -515,6 +519,8 @@ void BufferView::changeBuffer(Direction direction) //If we have a toplevel node, try and get an adjacent child if (direction == Backward) { QModelIndex newParent = currentIndex.sibling(currentIndex.row() - 1, 0); + if (currentIndex.row() == 0) + newParent = lastNetIndex; if (model()->hasChildren(newParent)) resultingIndex = newParent.child(model()->rowCount(newParent) - 1, 0); else @@ -528,8 +534,12 @@ void BufferView::changeBuffer(Direction direction) } } - if (!resultingIndex.isValid()) - return; + if (!resultingIndex.isValid()) { + if (direction == Forward) + resultingIndex = model()->index(0, 0, QModelIndex()); + else + resultingIndex = lastNetIndex.child(model()->rowCount(lastNetIndex) - 1, 0); + } selectionModel()->setCurrentIndex(resultingIndex, QItemSelectionModel::ClearAndSelect | QItemSelectionModel::Rows); selectionModel()->select(resultingIndex, QItemSelectionModel::ClearAndSelect); @@ -709,6 +719,14 @@ BufferViewDock::BufferViewDock(BufferViewConfig *config, QWidget *parent) QDockWidget::setWidget(_widget); } +void BufferViewDock::setLocked(bool locked) { + if (locked) { + setFeatures(0); + } + else { + setFeatures(QDockWidget::DockWidgetClosable | QDockWidget::DockWidgetMovable | QDockWidget::DockWidgetFloatable); + } +} void BufferViewDock::updateTitle() {