Newly created buffers are now selected automatically.
authorMarcus Eggenberger <egs@quassel-irc.org>
Fri, 22 Feb 2008 16:00:45 +0000 (16:00 +0000)
committerMarcus Eggenberger <egs@quassel-irc.org>
Fri, 22 Feb 2008 16:00:45 +0000 (16:00 +0000)
Maybe make this configurable via ClientSettings in the future?

src/client/buffermodel.cpp
src/client/buffermodel.h
src/client/client.cpp
src/qtui/inputwidget.cpp
src/uisupport/bufferview.cpp
version.inc

index e0f80ed..3426632 100644 (file)
@@ -70,3 +70,8 @@ void BufferModel::mapProperty(int column, int role, QObject *target, const QByte
 QModelIndex BufferModel::currentIndex() {
   return propertyMapper()->selectionModel()->currentIndex();
 }
+
+void BufferModel::setCurrentIndex(const QModelIndex &newCurrent) {
+  standardSelectionModel()->setCurrentIndex(newCurrent, QItemSelectionModel::ClearAndSelect | QItemSelectionModel::Rows);
+  standardSelectionModel()->select(newCurrent, QItemSelectionModel::ClearAndSelect);
+}
index 2d6f4b4..db8049d 100644 (file)
@@ -50,6 +50,7 @@ public:
   void mapProperty(int column, int role, QObject *target, const QByteArray &property);
 
   QModelIndex currentIndex();
+  void setCurrentIndex(const QModelIndex &newCurrent);
 
 private:
   SelectionModelSynchronizer _selectionModelSynchronizer;
index 5872598..70f8735 100644 (file)
@@ -473,9 +473,7 @@ void Client::bufferRemoved(BufferId bufferId) {
   QModelIndex current = bufferModel()->currentIndex();
   if(current.data(NetworkModel::BufferIdRole).value<BufferId>() == bufferId) {
     // select the status buffer if the currently displayed buffer is about to be removed
-    QModelIndex newCurrent = current.sibling(0,0);
-    bufferModel()->standardSelectionModel()->setCurrentIndex(newCurrent, QItemSelectionModel::ClearAndSelect | QItemSelectionModel::Rows);
-    bufferModel()->standardSelectionModel()->select(newCurrent, QItemSelectionModel::ClearAndSelect);
+    bufferModel()->setCurrentIndex(current.sibling(0,0));
   }
     
   networkModel()->removeBuffer(bufferId);
index 0f4a7ee..c2ef731 100644 (file)
@@ -96,7 +96,7 @@ const Network *InputWidget::currentNetwork() const {
 }
 
 void InputWidget::setNetwork(const Network *network) {
-  if(_networkId == network->networkId())
+  if(!network || _networkId == network->networkId())
     return;
 
   const Network *previousNet = Client::network(_networkId);
index aa82b58..4ac92f3 100644 (file)
@@ -118,6 +118,15 @@ void BufferView::rowsInserted(const QModelIndex & parent, int start, int end) {
     update(parent); 
     expand(parent);
   }
+
+
+  // select newly inserted buffers
+  if(parent.data(NetworkModel::ItemTypeRole) != NetworkModel::NetworkItemType)
+    return;
+
+  QModelIndex newCurrent = parent.child(end, 0);
+  selectionModel()->setCurrentIndex(newCurrent, QItemSelectionModel::ClearAndSelect | QItemSelectionModel::Rows);
+  selectionModel()->select(newCurrent, QItemSelectionModel::ClearAndSelect);
 }
 
 void BufferView::toggleHeader(bool checked) {
index 9e189b1..1fe3f04 100644 (file)
@@ -5,7 +5,7 @@
 
   quasselVersion = "0.2.0-pre";
   quasselDate = "2008-02-22";
-  quasselBuild = 577;
+  quasselBuild = 578;
 
   //! Minimum client build number the core needs
   clientBuildNeeded = 563;