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 "divelistview.h"
 | 
				
			||||||
#include "models.h"
 | 
					#include "models.h"
 | 
				
			||||||
#include "modeldelegates.h"
 | 
					#include "modeldelegates.h"
 | 
				
			||||||
 | 
					#include "mainwindow.h"
 | 
				
			||||||
#include "../display.h"
 | 
					#include "../display.h"
 | 
				
			||||||
#include <QApplication>
 | 
					#include <QApplication>
 | 
				
			||||||
#include <QHeaderView>
 | 
					#include <QHeaderView>
 | 
				
			||||||
| 
						 | 
					@ -72,7 +73,7 @@ void DiveListView::selectDive(struct dive *dive, bool scrollto, bool toggle)
 | 
				
			||||||
		expand(parent);
 | 
							expand(parent);
 | 
				
			||||||
	flags = toggle ? QItemSelectionModel::Toggle : QItemSelectionModel::Select;
 | 
						flags = toggle ? QItemSelectionModel::Toggle : QItemSelectionModel::Select;
 | 
				
			||||||
	flags |= QItemSelectionModel::Rows;
 | 
						flags |= QItemSelectionModel::Rows;
 | 
				
			||||||
	selectionModel()->select( idx, flags);
 | 
						selectionModel()->select(idx, flags);
 | 
				
			||||||
	if (scrollto)
 | 
						if (scrollto)
 | 
				
			||||||
		scrollTo(idx, PositionAtCenter);
 | 
							scrollTo(idx, PositionAtCenter);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -330,9 +331,19 @@ void DiveListView::removeFromTrip()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void DiveListView::deleteDive()
 | 
					void DiveListView::deleteDive()
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
 | 
						int nr;
 | 
				
			||||||
	struct dive *d = (struct dive *) contextMenuIndex.data(DiveTripModel::DIVE_ROLE).value<void*>();
 | 
						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));
 | 
							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);
 | 
						reload(currentLayout, false);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -134,6 +134,19 @@ void MainWindow::on_actionSaveAs_triggered()
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	file_save_as();
 | 
						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()
 | 
					void MainWindow::on_actionClose_triggered()
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	if (unsaved_changes() && (askSaveChanges() == FALSE))
 | 
						if (unsaved_changes() && (askSaveChanges() == FALSE))
 | 
				
			||||||
| 
						 | 
					@ -146,17 +159,7 @@ void MainWindow::on_actionClose_triggered()
 | 
				
			||||||
	/* clear the selection and the statistics */
 | 
						/* clear the selection and the statistics */
 | 
				
			||||||
	selected_dive = -1;
 | 
						selected_dive = -1;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	//WARNING: Port this to Qt.
 | 
						cleanUpEmpty();
 | 
				
			||||||
	//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);
 | 
					 | 
				
			||||||
	mark_divelist_changed(FALSE);
 | 
						mark_divelist_changed(FALSE);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	clear_events();
 | 
						clear_events();
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -52,6 +52,7 @@ public:
 | 
				
			||||||
	void enableDcShortcuts();
 | 
						void enableDcShortcuts();
 | 
				
			||||||
	void loadFiles(const QStringList files);
 | 
						void loadFiles(const QStringList files);
 | 
				
			||||||
	void importFiles(const QStringList importFiles);
 | 
						void importFiles(const QStringList importFiles);
 | 
				
			||||||
 | 
						void cleanUpEmpty();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
private slots:
 | 
					private slots:
 | 
				
			||||||
	/* file menu action */
 | 
						/* file menu action */
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue