[vlc-commits] Qt: BookMarks dialog: correctly handle deleting selection
Francois Cartegnie
git at videolan.org
Sat Aug 18 21:56:13 CEST 2012
vlc | branch: master | Francois Cartegnie <fcvlcdev at free.fr> | Sat Aug 18 21:52:08 2012 +0200| [5e674f08d6604c7c160f06c78efb705277668d13] | committer: Francois Cartegnie
Qt: BookMarks dialog: correctly handle deleting selection
> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=5e674f08d6604c7c160f06c78efb705277668d13
---
modules/gui/qt4/dialogs/bookmarks.cpp | 22 ++++++++++++++++++----
modules/gui/qt4/dialogs/bookmarks.hpp | 1 +
2 files changed, 19 insertions(+), 4 deletions(-)
diff --git a/modules/gui/qt4/dialogs/bookmarks.cpp b/modules/gui/qt4/dialogs/bookmarks.cpp
index 718a995..4867c88 100644
--- a/modules/gui/qt4/dialogs/bookmarks.cpp
+++ b/modules/gui/qt4/dialogs/bookmarks.cpp
@@ -31,9 +31,11 @@
#include <QSpacerItem>
#include <QPushButton>
#include <QDialogButtonBox>
+#include <QModelIndexList>
BookmarksDialog::BookmarksDialog( intf_thread_t *_p_intf ):QVLCFrame( _p_intf )
{
+ b_ignore_updates = false;
setWindowFlags( Qt::Tool );
setWindowOpacity( var_InheritFloat( p_intf, "qt-opacity" ) );
setWindowTitle( qtr( "Edit Bookmarks" ) );
@@ -118,6 +120,7 @@ void BookmarksDialog::updateButtons()
void BookmarksDialog::update()
{
+ if ( b_ignore_updates ) return;
input_thread_t *p_input = THEMIM->getInput();
if( !p_input ) return;
@@ -176,11 +179,22 @@ void BookmarksDialog::del()
input_thread_t *p_input = THEMIM->getInput();
if( !p_input ) return;
- int i_focused = bookmarksList->currentIndex().row();
-
- if( i_focused >= 0 )
+ QModelIndexList selected = bookmarksList->selectionModel()->selectedIndexes();
+ if ( !selected.empty() )
{
- input_Control( p_input, INPUT_DEL_BOOKMARK, i_focused );
+ b_ignore_updates = true;
+ QModelIndexList::Iterator it = selected.end();
+ for( --it; it != selected.begin(); it-- )
+ {
+ /* FIXME: Find out why selectedIndexes() doesn't follow the
+ SelectRows selectionBehavior() and returns all columns */
+ if ( (*it).column() == 0 )
+ input_Control( p_input, INPUT_DEL_BOOKMARK, (*it).row() );
+ }
+ if ( (*it).column() == 0 )
+ input_Control( p_input, INPUT_DEL_BOOKMARK, (*it).row() );
+ b_ignore_updates = false;
+ update();
}
}
diff --git a/modules/gui/qt4/dialogs/bookmarks.hpp b/modules/gui/qt4/dialogs/bookmarks.hpp
index db46e00..ad81bc2 100644
--- a/modules/gui/qt4/dialogs/bookmarks.hpp
+++ b/modules/gui/qt4/dialogs/bookmarks.hpp
@@ -42,6 +42,7 @@ private:
QTreeWidget *bookmarksList;
QPushButton *clearButton;
QPushButton *delButton;
+ bool b_ignore_updates;
private slots:
void update();
More information about the vlc-commits
mailing list