From 03ac2eb53cee9ac26fae51d7cbc327008b4516e2 Mon Sep 17 00:00:00 2001 From: csoler Date: Fri, 28 Aug 2020 14:07:32 +0200 Subject: [PATCH] fixed update of sizes in channel list view --- .../gui/gxschannels/GxsChannelPostsModel.cpp | 7 +++--- .../GxsChannelPostsWidgetWithModel.cpp | 22 +++++++++---------- .../GxsChannelPostsWidgetWithModel.h | 2 +- 3 files changed, 15 insertions(+), 16 deletions(-) diff --git a/retroshare-gui/src/gui/gxschannels/GxsChannelPostsModel.cpp b/retroshare-gui/src/gui/gxschannels/GxsChannelPostsModel.cpp index f45efd720..be603891d 100644 --- a/retroshare-gui/src/gui/gxschannels/GxsChannelPostsModel.cpp +++ b/retroshare-gui/src/gui/gxschannels/GxsChannelPostsModel.cpp @@ -69,8 +69,9 @@ void RsGxsChannelPostsModel::setMode(TreeMode mode) if(mode == TREE_MODE_LIST) setNumColumns(2); - // needs some update here + emit dataChanged(createIndex(0,0,(void*)NULL), createIndex(rowCount()-1,mColumns-1,(void*)NULL)); } + void RsGxsChannelPostsModel::handleEvent_main_thread(std::shared_ptr event) { const RsGxsChannelEvent *e = dynamic_cast(event.get()); @@ -115,7 +116,7 @@ void RsGxsChannelPostsModel::handleEvent_main_thread(std::shared_ptr& files) diff --git a/retroshare-gui/src/gui/gxschannels/GxsChannelPostsWidgetWithModel.cpp b/retroshare-gui/src/gui/gxschannels/GxsChannelPostsWidgetWithModel.cpp index 442aaee3c..106a20140 100644 --- a/retroshare-gui/src/gui/gxschannels/GxsChannelPostsWidgetWithModel.cpp +++ b/retroshare-gui/src/gui/gxschannels/GxsChannelPostsWidgetWithModel.cpp @@ -89,7 +89,7 @@ int ChannelPostDelegate::cellSize(int col,const QFont& font,uint32_t parent_widt if(mUseGrid || col==0) return mZoom*COLUMN_SIZE_FONT_FACTOR_W*QFontMetricsF(font).height(); else - return parent_width - mZoom*COLUMN_SIZE_FONT_FACTOR_W*QFontMetricsF(font).height(); + return 0.8*parent_width - mZoom*COLUMN_SIZE_FONT_FACTOR_W*QFontMetricsF(font).height(); } void ChannelPostDelegate::zoom(bool zoom_or_unzoom) @@ -432,23 +432,21 @@ void GxsChannelPostsWidgetWithModel::switchView() { mChannelPostsDelegate->setWidgetGrid(false); mChannelPostsModel->setMode(RsGxsChannelPostsModel::TREE_MODE_LIST); - - ui->postsTree->setColumnWidth(0,ui->postsTree->width()); - //ui->postsTree->setUniformRowHeights(true); } else { mChannelPostsDelegate->setWidgetGrid(true); mChannelPostsModel->setMode(RsGxsChannelPostsModel::TREE_MODE_GRID); - for(int i=0;icolumnCount();++i) - ui->postsTree->setColumnWidth(i,mChannelPostsDelegate->cellSize(i,font(),ui->postsTree->width())); - - //ui->postsTree->setUniformRowHeights(false); - - handlePostsTreeSizeChange(ui->postsTree->size()); + handlePostsTreeSizeChange(ui->postsTree->size(),true); } + + for(int i=0;icolumnCount();++i) + ui->postsTree->setColumnWidth(i,mChannelPostsDelegate->cellSize(i,font(),ui->postsTree->width())); + + ui->postsTree->dataChanged(QModelIndex(),QModelIndex()); // forces update of the whole tree } + void GxsChannelPostsWidgetWithModel::copyMessageLink() { try @@ -490,10 +488,10 @@ void GxsChannelPostsWidgetWithModel::editPost() msgDialog->show(); } -void GxsChannelPostsWidgetWithModel::handlePostsTreeSizeChange(QSize s) +void GxsChannelPostsWidgetWithModel::handlePostsTreeSizeChange(QSize s,bool force) { int n_columns = std::max(1,(int)floor(s.width() / (mChannelPostsDelegate->cellSize(0,font(),ui->postsTree->width())))); - std::cerr << "nb columns: " << n_columns << std::endl; + std::cerr << "nb columns: " << n_columns << " current count=" << mChannelPostsModel->columnCount() << std::endl; if(n_columns != mChannelPostsModel->columnCount()) mChannelPostsModel->setNumColumns(n_columns); diff --git a/retroshare-gui/src/gui/gxschannels/GxsChannelPostsWidgetWithModel.h b/retroshare-gui/src/gui/gxschannels/GxsChannelPostsWidgetWithModel.h index 2bf11ebaa..5105e7cb5 100644 --- a/retroshare-gui/src/gui/gxschannels/GxsChannelPostsWidgetWithModel.h +++ b/retroshare-gui/src/gui/gxschannels/GxsChannelPostsWidgetWithModel.h @@ -144,7 +144,7 @@ private slots: void filterChanged(QString); void setViewMode(int viewMode); void settingsChanged(); - void handlePostsTreeSizeChange(QSize s); + void handlePostsTreeSizeChange(QSize s, bool force=false); void postChannelPostLoad(); void editPost(); void postContextMenu(const QPoint&);