GeezerVison is showing github.com — Fix crash when sorting one table in the Browse Tab and changing to an… · feng2010java/sqlitebrowser@88a4cae
File tree
Expand file treeCollapse file tree
Open diff view settings
Expand file treeCollapse file tree
Open diff view settings
Collapse file
Copy file name to clipboardExpand all lines: src/sqlitetablemodel.cpp +12-9Lines changed: 12 additions & 9 deletions | Original file line number | Diff line number | Diff line change |
|---|
@@ -10,11 +10,18 @@ SqliteTableModel::SqliteTableModel(QObject* parent, DBBrowserDB* db, size_t chun |
10 | 10 | : QAbstractTableModel(parent) |
11 | 11 | , m_db(db) |
12 | 12 | , m_rowCount(0) |
13 | | - , m_iSortColumn(0) |
14 | | - , m_sSortOrder("ASC") |
15 | 13 | , m_chunkSize(chunkSize) |
16 | 14 | , m_valid(false) |
17 | 15 | { |
| 16 | + reset(); |
| 17 | +} |
| 18 | + |
| 19 | +void SqliteTableModel::reset() |
| 20 | +{ |
| 21 | + m_iSortColumn = 0; |
| 22 | + m_sSortOrder = "ASC"; |
| 23 | + m_headers.clear(); |
| 24 | + m_mWhere.clear(); |
18 | 25 | } |
19 | 26 |
|
20 | 27 | void SqliteTableModel::setChunkSize(size_t chunksize) |
@@ -24,17 +31,16 @@ void SqliteTableModel::setChunkSize(size_t chunksize) |
24 | 31 |
|
25 | 32 | void SqliteTableModel::setTable(const QString& table) |
26 | 33 | { |
| 34 | + reset(); |
| 35 | + |
27 | 36 | m_sTable = table; |
28 | 37 |
|
29 | | - m_headers.clear(); |
30 | 38 | QString rowid = "rowid"; |
31 | 39 | if(m_db->getObjectByName(table).gettype() == "table") |
32 | 40 | rowid = sqlb::Table::parseSQL(m_db->getObjectByName(table).getsql()).rowidColumn(); |
33 | 41 | m_headers.push_back(rowid); |
34 | 42 | m_headers.append(m_db->getTableFields(table)); |
35 | 43 |
|
36 | | - m_mWhere.clear(); |
37 | | - |
38 | 44 | buildQuery(); |
39 | 45 | } |
40 | 46 |
|
@@ -84,10 +90,7 @@ void SqliteTableModel::setQuery(const QString& sQuery, bool dontClearHeaders) |
84 | 90 | { |
85 | 91 | // clear |
86 | 92 | if(!dontClearHeaders) |
87 | | - { |
88 | | - m_mWhere.clear(); |
89 | | - m_headers.clear(); |
90 | | - } |
| 93 | + reset(); |
91 | 94 |
|
92 | 95 | if(!m_db->isOpen()) |
93 | 96 | return; |
|
Collapse file
Copy file name to clipboardExpand all lines: src/sqlitetablemodel.h +1Lines changed: 1 addition & 0 deletions | Original file line number | Diff line number | Diff line change |
|---|
@@ -11,6 +11,7 @@ class SqliteTableModel : public QAbstractTableModel |
11 | 11 | Q_OBJECT |
12 | 12 | public: |
13 | 13 | explicit SqliteTableModel(QObject *parent = 0, DBBrowserDB* db = 0, size_t chunkSize = 50000); |
| 14 | + void reset(); |
14 | 15 |
|
15 | 16 | int rowCount(const QModelIndex &parent = QModelIndex()) const; |
16 | 17 | int totalRowCount() const; |
|