Fix selecting only 1 item

This commit is contained in:
Xpl0itU 2023-07-24 16:41:21 +02:00
parent 0d2507772e
commit 98c6eb923d

View file

@ -535,10 +535,17 @@ func (mw *MainWindow) isSelectionInQueue() bool {
return false return false
} }
allTitlesInQueue := true for i := uint(0); i < selectionSelected.Length(); i++ {
path, ok := selectionSelected.Nth(i).Data().(*gtk.TreePath)
if !ok {
continue
}
iter, err := treeModel.GetIter(path)
if err != nil {
continue
}
iter, _ := treeModel.GetIterFirst()
for iter != nil {
inQueueVal, err := treeModel.GetValue(iter, IN_QUEUE_COLUMN) inQueueVal, err := treeModel.GetValue(iter, IN_QUEUE_COLUMN)
if err != nil { if err != nil {
continue continue
@ -549,16 +556,11 @@ func (mw *MainWindow) isSelectionInQueue() bool {
} }
if !isInQueue.(bool) { if !isInQueue.(bool) {
allTitlesInQueue = false return false
break
}
if !storeRef.IterNext(iter) {
break
} }
} }
return allTitlesInQueue return true
} }
func (mw *MainWindow) onSelectionChanged() { func (mw *MainWindow) onSelectionChanged() {
@ -634,7 +636,7 @@ func (mw *MainWindow) onAddToQueueClicked() {
addToQueue := !mw.isSelectionInQueue() addToQueue := !mw.isSelectionInQueue()
selectionSelected := selection.GetSelectedRows(treeModel) selectionSelected := selection.GetSelectedRows(treeModel)
if selectionSelected == nil { if selectionSelected == nil || selectionSelected.Length() == 0 {
return return
} }
@ -646,55 +648,59 @@ func (mw *MainWindow) onAddToQueueClicked() {
iter, _ := treeModel.GetIterFirst() iter, _ := treeModel.GetIterFirst()
for iter != nil { for iter != nil {
inQueueVal, err := treeModel.GetValue(iter, IN_QUEUE_COLUMN) isSelected := selection.IterIsSelected(iter)
if err != nil { if isSelected {
continue inQueueVal, err := treeModel.GetValue(iter, IN_QUEUE_COLUMN)
}
isInQueue, err := inQueueVal.GoValue()
if err != nil {
continue
}
if addToQueue != isInQueue.(bool) {
inQueue, err := treeModel.GetValue(iter, IN_QUEUE_COLUMN)
if err != nil { if err != nil {
continue continue
} }
inQueue.SetBool(addToQueue) isInQueue, err := inQueueVal.GoValue()
tid, err := treeModel.GetValue(iter, TITLE_ID_COLUMN)
if err != nil {
continue
}
tidStr, err := tid.GetString()
if err != nil { if err != nil {
continue continue
} }
if addToQueue { if addToQueue != isInQueue.(bool) {
name, err := treeModel.GetValue(iter, NAME_COLUMN) inQueueVal.SetBool(addToQueue)
tid, err := treeModel.GetValue(iter, TITLE_ID_COLUMN)
if err != nil { if err != nil {
continue continue
} }
nameStr, err := name.GetString() tidStr, err := tid.GetString()
if err != nil { if err != nil {
continue continue
} }
mw.addToQueue(tidStr, nameStr)
mw.addToQueueButton.SetLabel("Remove from queue")
name.Unset()
} else {
mw.removeFromQueue(tidStr)
mw.addToQueueButton.SetLabel("Add to queue")
}
storeRef.SetValue(iter, IN_QUEUE_COLUMN, addToQueue) if addToQueue {
tid.Unset() name, err := treeModel.GetValue(iter, NAME_COLUMN)
if err != nil {
continue
}
nameStr, err := name.GetString()
if err != nil {
continue
}
mw.addToQueue(tidStr, nameStr)
name.Unset()
} else {
mw.removeFromQueue(tidStr)
}
storeRef.SetValue(iter, IN_QUEUE_COLUMN, addToQueue)
tid.Unset()
}
} }
if !storeRef.IterNext(iter) { if !storeRef.IterNext(iter) {
break break
} }
} }
if addToQueue {
mw.addToQueueButton.SetLabel("Remove from queue")
} else {
mw.addToQueueButton.SetLabel("Add to queue")
}
} }
func (mw *MainWindow) updateTitlesInQueue() { func (mw *MainWindow) updateTitlesInQueue() {