mirror of
				https://github.com/subsurface/subsurface.git
				synced 2025-02-19 22:16:15 +00:00 
			
		
		
		
	Correctly handle empty dive list after delete
Things need to be cleared out and disabled. But fixing this bug leaves another issue - while the newly selected dive after a delete acts as if it was selected, it doesn't show up as selected in the dive list. Reported-by: Henrik Brautaset Aronsen <subsurface@henrik.synth.no> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
This commit is contained in:
		
							parent
							
								
									6ce5704435
								
							
						
					
					
						commit
						dba16202c4
					
				
					 3 changed files with 28 additions and 13 deletions
				
			
		| 
						 | 
				
			
			@ -7,6 +7,7 @@
 | 
			
		|||
#include "divelistview.h"
 | 
			
		||||
#include "models.h"
 | 
			
		||||
#include "modeldelegates.h"
 | 
			
		||||
#include "mainwindow.h"
 | 
			
		||||
#include "../display.h"
 | 
			
		||||
#include <QApplication>
 | 
			
		||||
#include <QHeaderView>
 | 
			
		||||
| 
						 | 
				
			
			@ -72,7 +73,7 @@ void DiveListView::selectDive(struct dive *dive, bool scrollto, bool toggle)
 | 
			
		|||
		expand(parent);
 | 
			
		||||
	flags = toggle ? QItemSelectionModel::Toggle : QItemSelectionModel::Select;
 | 
			
		||||
	flags |= QItemSelectionModel::Rows;
 | 
			
		||||
	selectionModel()->select( idx, flags);
 | 
			
		||||
	selectionModel()->select(idx, flags);
 | 
			
		||||
	if (scrollto)
 | 
			
		||||
		scrollTo(idx, PositionAtCenter);
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -330,9 +331,19 @@ void DiveListView::removeFromTrip()
 | 
			
		|||
 | 
			
		||||
void DiveListView::deleteDive()
 | 
			
		||||
{
 | 
			
		||||
	int nr;
 | 
			
		||||
	struct dive *d = (struct dive *) contextMenuIndex.data(DiveTripModel::DIVE_ROLE).value<void*>();
 | 
			
		||||
	if (d)
 | 
			
		||||
	if (d) {
 | 
			
		||||
		nr = get_divenr(d);
 | 
			
		||||
		delete_single_dive(get_index_for_dive(d));
 | 
			
		||||
		if (amount_selected == 0) {
 | 
			
		||||
			if (nr > 0)
 | 
			
		||||
				select_dive(nr - 1);
 | 
			
		||||
			else
 | 
			
		||||
				mainWindow()->cleanUpEmpty();
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
	mainWindow()->refreshDisplay();
 | 
			
		||||
	reload(currentLayout, false);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -134,6 +134,19 @@ void MainWindow::on_actionSaveAs_triggered()
 | 
			
		|||
{
 | 
			
		||||
	file_save_as();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void MainWindow::cleanUpEmpty()
 | 
			
		||||
{
 | 
			
		||||
	ui->InfoWidget->clearStats();
 | 
			
		||||
	ui->InfoWidget->clearInfo();
 | 
			
		||||
	ui->InfoWidget->clearEquipment();
 | 
			
		||||
	ui->InfoWidget->updateDiveInfo(-1);
 | 
			
		||||
	ui->ProfileWidget->clear();
 | 
			
		||||
	ui->ListWidget->reload(DiveTripModel::TREE);
 | 
			
		||||
	ui->globe->reload();
 | 
			
		||||
	setTitle(MWTF_DEFAULT);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void MainWindow::on_actionClose_triggered()
 | 
			
		||||
{
 | 
			
		||||
	if (unsaved_changes() && (askSaveChanges() == FALSE))
 | 
			
		||||
| 
						 | 
				
			
			@ -146,17 +159,7 @@ void MainWindow::on_actionClose_triggered()
 | 
			
		|||
	/* clear the selection and the statistics */
 | 
			
		||||
	selected_dive = -1;
 | 
			
		||||
 | 
			
		||||
	//WARNING: Port this to Qt.
 | 
			
		||||
	//process_selected_dives();
 | 
			
		||||
 | 
			
		||||
	ui->InfoWidget->clearStats();
 | 
			
		||||
	ui->InfoWidget->clearInfo();
 | 
			
		||||
	ui->InfoWidget->clearEquipment();
 | 
			
		||||
	ui->InfoWidget->updateDiveInfo(-1);
 | 
			
		||||
	ui->ProfileWidget->clear();
 | 
			
		||||
	ui->ListWidget->reload(DiveTripModel::TREE);
 | 
			
		||||
	ui->globe->reload();
 | 
			
		||||
	setTitle(MWTF_DEFAULT);
 | 
			
		||||
	cleanUpEmpty();
 | 
			
		||||
	mark_divelist_changed(FALSE);
 | 
			
		||||
 | 
			
		||||
	clear_events();
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -52,6 +52,7 @@ public:
 | 
			
		|||
	void enableDcShortcuts();
 | 
			
		||||
	void loadFiles(const QStringList files);
 | 
			
		||||
	void importFiles(const QStringList importFiles);
 | 
			
		||||
	void cleanUpEmpty();
 | 
			
		||||
 | 
			
		||||
private slots:
 | 
			
		||||
	/* file menu action */
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue