From d647291eaa205e0f687df971d92de9e7c1d3f1f4 Mon Sep 17 00:00:00 2001 From: Hassan Ibraheem Date: Thu, 25 Feb 2010 20:06:56 +0000 Subject: [PATCH] Fix a crash when rejecting DeleteDialog within AnnotationDialog with only one image. git-svn-id: svn+ssh://svn.kde.org/home/kde/trunk/extragear/graphics/kphotoalbum@1096101 283d02a7-25f6-0310-bc7c-ecb5cbfe19da --- AnnotationDialog/Dialog.cpp | 9 --------- AnnotationDialog/ImagePreviewWidget.cpp | 16 ++++++++++++++++ ThumbnailView/ThumbnailWidget.cpp | 2 +- 3 files changed, 17 insertions(+), 10 deletions(-) diff --git a/AnnotationDialog/Dialog.cpp b/AnnotationDialog/Dialog.cpp index 46e9e538..3dfd5f70 100644 --- a/AnnotationDialog/Dialog.cpp +++ b/AnnotationDialog/Dialog.cpp @@ -55,7 +55,6 @@ #include "ImagePreviewWidget.h" #include "KDateEdit.h" #include "ListSelect.h" -#include "MainWindow/DeleteDialog.h" #include "MainWindow/DirtyIndicator.h" #include "Settings/SettingsData.h" #include "ShortCutManager.h" @@ -695,16 +694,8 @@ void AnnotationDialog::Dialog::slotDeleteImage() if( _setup == InputMultiImageConfigMode ) //TODO: probably delete here should mean remove from selection return; - MainWindow::DeleteDialog dialog( this ); DB::ImageInfoPtr info = _origList[_current]; - DB::ResultId idToDelete = DB::ImageDB::instance()->ID_FOR_FILE(info->fileName(DB::AbsolutePath)); - const DB::Result deleteList = DB::Result(idToDelete); - - int ret = dialog.exec( deleteList ); - if ( ret == Rejected ) - return; - _origList.remove( info ); _editList.removeAll( _editList.at( _current ) ); _thumbnailShouldReload = true; diff --git a/AnnotationDialog/ImagePreviewWidget.cpp b/AnnotationDialog/ImagePreviewWidget.cpp index 42a6c21e..dd085f57 100644 --- a/AnnotationDialog/ImagePreviewWidget.cpp +++ b/AnnotationDialog/ImagePreviewWidget.cpp @@ -20,6 +20,11 @@ #include #include #include +#include "DB/ImageDB.h" +#include "DB/ImageInfo.h" +#include "DB/Result.h" +#include "DB/ResultId.h" +#include "MainWindow/DeleteDialog.h" using namespace AnnotationDialog; ImagePreviewWidget::ImagePreviewWidget() : QWidget() @@ -155,6 +160,17 @@ void ImagePreviewWidget::rotate( int angle ) void ImagePreviewWidget::slotDeleteImage() { if( ! _singleEdit ) return; + + MainWindow::DeleteDialog dialog( this ); + DB::ImageInfo info = _imageList->at( _current ); + + DB::ResultId idToDelete = DB::ImageDB::instance()->ID_FOR_FILE(info.fileName(DB::AbsolutePath)); + const DB::Result deleteList = DB::Result(idToDelete); + + int ret = dialog.exec( deleteList ); + if ( ret == QDialog::Rejected ) //Delete Dialog rejected, do nothing + return; + emit imageDeleted( _imageList->at( _current ) ); if( ! _nextBut->isEnabled() ) //No next image exists, select previous diff --git a/ThumbnailView/ThumbnailWidget.cpp b/ThumbnailView/ThumbnailWidget.cpp index 231a7c2c..21cc46e1 100644 --- a/ThumbnailView/ThumbnailWidget.cpp +++ b/ThumbnailView/ThumbnailWidget.cpp @@ -209,7 +209,7 @@ int ThumbnailView::ThumbnailWidget::numRowsPerPage() const bool ThumbnailView::ThumbnailWidget::isMouseOverStackIndicator( const QPoint& point ) { Cell pos = cellAtCoordinate( point, ViewportCoordinates ); - QRect cellRect = cellGeometry(pos.row(), pos.col() ).adjusted( 0, 0, -10, -10 ); // FIXME: what area should be "hot"? + QRect cellRect = cellGeometry(pos.row(), pos.col() ).adjusted( 0, 0, -15, -15 ); // FIXME: what area should be "hot"? bool correctArea = !cellRect.contains( viewportToContentsAdjusted( point, ViewportCoordinates ) ); if (!correctArea) return false; -- 2.11.4.GIT