Skip to content

Commit

Permalink
TableView: Don't reset sorting when replacing model
Browse files Browse the repository at this point in the history
  • Loading branch information
lxn committed Jul 30, 2015
1 parent 23919a9 commit 3a996cc
Show file tree
Hide file tree
Showing 2 changed files with 20 additions and 15 deletions.
4 changes: 0 additions & 4 deletions reflectmodels.go
Original file line number Diff line number Diff line change
Expand Up @@ -167,10 +167,6 @@ func (m *reflectTableModel) setDataMembers(dataMembers []string) {
for col, dm := range dataMembers {
m.columnPaths[col] = strings.Split(dm, ".")
}

if m.sorterBase != nil {
m.sort(0, SortAscending)
}
}

func (m *reflectTableModel) RowCount() int {
Expand Down
31 changes: 20 additions & 11 deletions tableview.go
Original file line number Diff line number Diff line change
Expand Up @@ -63,6 +63,8 @@ type TableView struct {
alternatingRowBGColor Color
hasDarkAltBGColor bool
delayedCurrentIndexChangedCanceled bool
sortedColumnIndex int
sortOrder SortOrder
}

// NewTableView creates and returns a *TableView as child of the specified
Expand Down Expand Up @@ -373,9 +375,7 @@ func (tv *TableView) SetModel(mdl interface{}) error {
}

if sorter, ok := tv.model.(Sorter); ok {
col := sorter.SortedColumn()
tv.setSelectedColumnIndex(col)
tv.setSortIcon(col, sorter.SortOrder())
sorter.Sort(tv.sortedColumnIndex, tv.sortOrder)
}
}

Expand Down Expand Up @@ -753,10 +753,8 @@ type tableViewColumnState struct {
func (tv *TableView) SaveState() error {
var tvs tableViewState

if sorter, ok := tv.model.(Sorter); ok {
tvs.SortColumnName = tv.columns.items[sorter.SortedColumn()].name
tvs.SortOrder = sorter.SortOrder()
}
tvs.SortColumnName = tv.columns.items[tv.sortedColumnIndex].name
tvs.SortOrder = tv.sortOrder

tvs.Columns = make([]tableViewColumnState, tv.columns.Len())

Expand Down Expand Up @@ -878,15 +876,24 @@ func (tv *TableView) RestoreState() error {
return newError("LVM_SETCOLUMNORDERARRAY")
}

for i, c := range tvs.Columns {
if c.Name == tvs.SortColumnName {
tv.sortedColumnIndex = i
tv.sortOrder = tvs.SortOrder
break
}
}

if sorter, ok := tv.model.(Sorter); ok {
for i, c := range tvs.Columns {
if c.Name == tvs.SortColumnName {
if !sorter.ColumnSortable(tv.sortedColumnIndex) {
for i := range tvs.Columns {
if sorter.ColumnSortable(i) {
sorter.Sort(i, tvs.SortOrder)
tv.sortedColumnIndex = i
}
break
}
}

sorter.Sort(tv.sortedColumnIndex, tvs.SortOrder)
}

//if sorter, ok := tv.model.(Sorter); ok {
Expand Down Expand Up @@ -1289,6 +1296,8 @@ func (tv *TableView) WndProc(hwnd win.HWND, msg uint32, wParam, lParam uintptr)
} else {
order = SortDescending
}
tv.sortedColumnIndex = col
tv.sortOrder = order
sorter.Sort(col, order)
}

Expand Down

0 comments on commit 3a996cc

Please sign in to comment.