Skip to content

Commit c96c393

Browse files
committed
Use table name as tab text in Browse Data tabs
This uses the name of the selected table for the tab titles in the Browse Data tabs. When setting a custom tab title that title is preserved. See issue #2283.
1 parent 73b2a1c commit c96c393

File tree

4 files changed

+22
-13
lines changed

4 files changed

+22
-13
lines changed

src/MainWindow.cpp

Lines changed: 15 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -693,7 +693,7 @@ bool MainWindow::fileClose()
693693
// Reset the table browser of the Browse Data tab
694694
while(ui->tabBrowsers->count())
695695
closeTableBrowserTab(0, true);
696-
newTableBrowserTab(true);
696+
newTableBrowserTab();
697697
TableBrowser* w = qobject_cast<TableBrowser*>(ui->tabBrowsers->currentWidget());
698698
if(w)
699699
w->setEnabled(false);
@@ -2630,7 +2630,7 @@ bool MainWindow::loadProject(QString filename, bool readOnly)
26302630
}
26312631

26322632
if (!currentTable.isEmpty())
2633-
newTableBrowserTab(true, currentTable);
2633+
newTableBrowserTab(currentTable);
26342634

26352635
xml.skipCurrentElement();
26362636
} else if(xml.name() == "table") {
@@ -2639,7 +2639,7 @@ bool MainWindow::loadProject(QString filename, bool readOnly)
26392639
sqlb::ObjectIdentifier table;
26402640
table.fromSerialised(xml.attributes().value("table").toString().toStdString());
26412641

2642-
int tab_index = newTableBrowserTab(true, table);
2642+
int tab_index = newTableBrowserTab(table);
26432643
ui->tabBrowsers->setTabText(tab_index, title);
26442644

26452645
xml.skipCurrentElement();
@@ -3118,7 +3118,7 @@ void MainWindow::switchToBrowseDataTab(sqlb::ObjectIdentifier tableToBrowse)
31183118
tableToBrowse.setName(ui->dbTreeWidget->model()->data(ui->dbTreeWidget->currentIndex().sibling(ui->dbTreeWidget->currentIndex().row(), DbStructureModel::ColumnName), Qt::EditRole).toString().toStdString());
31193119
}
31203120

3121-
newTableBrowserTab(false, tableToBrowse);
3121+
newTableBrowserTab(tableToBrowse);
31223122

31233123
if (ui->mainTab->indexOf(ui->browser) == -1)
31243124
ui->mainTab->addTab(ui->browser, ui->browser->accessibleName());
@@ -3561,18 +3561,18 @@ void MainWindow::closeTableBrowserTab(int index, bool force)
35613561

35623562
// Don't let an empty tab widget
35633563
if(ui->tabBrowsers->count() == 0 && !force)
3564-
newTableBrowserTab(true);
3564+
newTableBrowserTab();
35653565
}
35663566

3567-
int MainWindow::newTableBrowserTab(bool resetCounter, const sqlb::ObjectIdentifier& tableToBrowse)
3567+
int MainWindow::newTableBrowserTab(const sqlb::ObjectIdentifier& tableToBrowse)
35683568
{
3569-
static int tabNumber = 0;
3570-
3571-
if(resetCounter)
3572-
tabNumber = 0;
3573-
35743569
// Create and initialise widget
35753570
TableBrowser* w = new TableBrowser(&db, this);
3571+
connect(w, &TableBrowser::currentTableChanged, [this, w](const sqlb::ObjectIdentifier& table) {
3572+
// Only update tab name when no custom name was set
3573+
if(!ui->tabBrowsers->tabBar()->tabData(ui->tabBrowsers->indexOf(w)).toBool())
3574+
ui->tabBrowsers->setTabText(ui->tabBrowsers->indexOf(w), QString::fromStdString(table.toDisplayString()));
3575+
});
35763576
w->setStructure(dbStructureModel, tableToBrowse);
35773577
w->setEnabled(ui->fileCloseAction->isEnabled());
35783578

@@ -3600,7 +3600,7 @@ int MainWindow::newTableBrowserTab(bool resetCounter, const sqlb::ObjectIdentifi
36003600
m_currentTabTableModel = w->model();
36013601

36023602
// Create new tab, add it to the tab widget and select it
3603-
int index = ui->tabBrowsers->addTab(w, QIcon(":icons/table"), QString("Browse %1").arg(++tabNumber));
3603+
int index = ui->tabBrowsers->addTab(w, QIcon(":icons/table"), QString());
36043604
ui->tabBrowsers->setCurrentIndex(index);
36053605

36063606
return index;
@@ -3625,7 +3625,10 @@ void MainWindow::renameTableBrowserTab(int index)
36253625
ui->tabBrowsers->tabText(index));
36263626

36273627
if(!new_name.isNull()) // Don't do anything if the Cancel button was clicked
3628+
{
36283629
ui->tabBrowsers->setTabText(index, new_name);
3630+
ui->tabBrowsers->tabBar()->setTabData(index, true); // Custom name
3631+
}
36293632
}
36303633

36313634
void MainWindow::showContextMenuTableBrowserTabBar(const QPoint& pos)

src/MainWindow.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -208,7 +208,7 @@ private slots:
208208
void renameSqlTab(int index);
209209
void showContextMenuSqlTabBar(const QPoint& pos);
210210

211-
int newTableBrowserTab(bool resetCounter = false, const sqlb::ObjectIdentifier& tableToBrowse = {});
211+
int newTableBrowserTab(const sqlb::ObjectIdentifier& tableToBrowse = {});
212212
void closeTableBrowserTab(int index, bool force = false);
213213
void changeTableBrowserTab(int index);
214214
void renameTableBrowserTab(int index);

src/TableBrowser.cpp

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -396,6 +396,8 @@ void TableBrowser::setStructure(QAbstractItemModel* model, const sqlb::ObjectIde
396396
clear();
397397
else // Under normal circumstances just select the old table again
398398
ui->comboBrowseTable->setCurrentIndex(old_table_index);
399+
400+
emit currentTableChanged(currentlyBrowsedTableName());
399401
}
400402

401403
QModelIndex TableBrowser::currentIndex() const
@@ -480,6 +482,9 @@ void TableBrowser::updateTable()
480482
if(storedData.columnWidths.empty())
481483
m_columnsResized = false;
482484

485+
// Current table changed
486+
emit currentTableChanged(tablename);
487+
483488
// Build query and apply settings
484489
applyModelSettings(storedData, buildQuery(storedData, tablename));
485490
applyViewportSettings(storedData, tablename);

src/TableBrowser.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,7 @@ public slots:
9191
void updatePlot(ExtendedTableWidget* tableWidget, SqliteTableModel* model, BrowseDataTableSettings* settings, bool keepOrResetSelection);
9292
void createView(std::string sql);
9393
void requestFileOpen(QString file);
94+
void currentTableChanged(sqlb::ObjectIdentifier table);
9495

9596
private slots:
9697
void clear();

0 commit comments

Comments
 (0)