Reset keyboard selection when using mouse rubberband to select items

This relates to Bug 1961
pull/2/head
Timothy Pearson 10 years ago
parent f4dab230c4
commit 4e5a99f6d2

@ -406,66 +406,60 @@ void KonqBaseListViewWidget::initConfig()
updateListContents(); updateListContents();
} }
void KonqBaseListViewWidget::contentsMousePressEvent( TQMouseEvent *e ) void KonqBaseListViewWidget::contentsMousePressEvent( TQMouseEvent *e ) {
{ if ( m_rubber ) {
if ( m_rubber ) TQRect r( m_rubber->normalize() );
{ delete m_rubber;
m_rubber = 0;
TQRect r( m_rubber->normalize() ); repaintContents( r, FALSE );
delete m_rubber; }
m_rubber = 0;
repaintContents( r, FALSE ); delete m_selected;
} m_selected = new TQPtrList<KonqBaseListViewItem>;
delete m_selected; TQPoint vp = contentsToViewport( e->pos() );
m_selected = new TQPtrList<KonqBaseListViewItem>; KonqBaseListViewItem* item = isExecuteArea( vp ) ?
static_cast<KonqBaseListViewItem*>( itemAt( vp ) ) : 0L;
TQPoint vp = contentsToViewport( e->pos() );
KonqBaseListViewItem* item = isExecuteArea( vp ) ? if ( item ) {
static_cast<KonqBaseListViewItem*>( itemAt( vp ) ) : 0L; TDEListView::contentsMousePressEvent( e );
}
if ( item ) { else {
TDEListView::contentsMousePressEvent( e ); if ( e->button() == Qt::LeftButton ) {
} m_rubber = new TQRect( e->x(), e->y(), 0, 0 );
else { clearSelection();
if ( e->button() == Qt::LeftButton ) emit selectionChanged();
{ m_fileTip->setItem( 0 );
m_rubber = new TQRect( e->x(), e->y(), 0, 0 ); }
clearSelection(); if ( e->button() != Qt::RightButton ) {
emit selectionChanged(); TQListView::contentsMousePressEvent( e );
m_fileTip->setItem( 0 ); }
} }
if ( e->button() != Qt::RightButton )
TQListView::contentsMousePressEvent( e ); // Store list of selected items at mouse-press time.
} // This is used when autoscrolling (why?)
// Store list of selected items at mouse-press time. // and during dnd (the target item is temporarily selected)
// This is used when autoscrolling (why?) selectedItems( m_selected );
// and during dnd (the target item is temporarily selected)
selectedItems( m_selected );
} }
void KonqBaseListViewWidget::contentsMouseReleaseEvent( TQMouseEvent *e ) void KonqBaseListViewWidget::contentsMouseReleaseEvent( TQMouseEvent *e ) {
{ if ( m_rubber ) {
if ( m_rubber ) resetKeyboardSelectionOperation();
{ TQRect r( m_rubber->normalize() );
delete m_rubber;
TQRect r( m_rubber->normalize() ); m_rubber = 0;
delete m_rubber; repaintContents( r, FALSE );
m_rubber = 0; }
repaintContents( r, FALSE );
} if ( m_scrollTimer ) {
disconnect( m_scrollTimer, TQT_SIGNAL( timeout() ), this, TQT_SLOT( slotAutoScroll() ) );
if ( m_scrollTimer ) m_scrollTimer->stop();
{ delete m_scrollTimer;
disconnect( m_scrollTimer, TQT_SIGNAL( timeout() ), m_scrollTimer = 0;
this, TQT_SLOT( slotAutoScroll() ) ); }
m_scrollTimer->stop();
delete m_scrollTimer; delete m_selected; m_selected = 0;
m_scrollTimer = 0; TDEListView::contentsMouseReleaseEvent( e );
}
delete m_selected; m_selected = 0;
TDEListView::contentsMouseReleaseEvent( e );
} }
void KonqBaseListViewWidget::contentsMouseMoveEvent( TQMouseEvent *e ) void KonqBaseListViewWidget::contentsMouseMoveEvent( TQMouseEvent *e )
@ -558,7 +552,6 @@ void KonqBaseListViewWidget::drawRubber( TQPainter *p )
style().tqdrawPrimitive( TQStyle::PE_RubberBand, p, style().tqdrawPrimitive( TQStyle::PE_RubberBand, p,
TQRect( pt.x(), pt.y(), m_rubber->width(), m_rubber->height() ), TQRect( pt.x(), pt.y(), m_rubber->width(), m_rubber->height() ),
colorGroup(), TQStyle::Style_Default, colorGroup().base() ); colorGroup(), TQStyle::Style_Default, colorGroup().base() );
} }
void KonqBaseListViewWidget::slotAutoScroll() void KonqBaseListViewWidget::slotAutoScroll()
@ -570,16 +563,17 @@ void KonqBaseListViewWidget::slotAutoScroll()
const TQPoint pos = viewport()->mapFromGlobal( TQCursor::pos() ); const TQPoint pos = viewport()->mapFromGlobal( TQCursor::pos() );
const TQPoint vc = viewportToContents( pos ); const TQPoint vc = viewportToContents( pos );
TQListViewItem *at = itemAt( vc );
if ( vc == m_rubber->bottomRight() ) if ( vc == m_rubber->bottomRight() )
return; return;
TQRect oldRubber = *m_rubber; TQRect oldRubber = *m_rubber;
const int oldTop = m_rubber->normalize().top(); const int oldTop = m_rubber->normalize().top();
const int oldBottom = m_rubber->normalize().bottom(); const int oldBottom = m_rubber->normalize().bottom();
m_rubber->setBottomRight( vc ); m_rubber->setBottomRight( vc );
TQListViewItem *cur = itemAt( TQPoint(0,0) ); TQListViewItem *cur = itemAt( TQPoint(0,0) );
@ -590,7 +584,7 @@ void KonqBaseListViewWidget::slotAutoScroll()
TQRect rr; TQRect rr;
TQRect nr = m_rubber->normalize(); TQRect nr = m_rubber->normalize();
bool changed = FALSE; bool changed = FALSE;
if ( cur ) if ( cur )
{ {
TQRect rect; TQRect rect;
@ -600,7 +594,7 @@ void KonqBaseListViewWidget::slotAutoScroll()
rect = itemRect( cur ); rect = itemRect( cur );
rect.setWidth( executeArea( cur ) ); rect.setWidth( executeArea( cur ) );
} }
rect = TQRect( viewportToContents( rect.topLeft() ), rect = TQRect( viewportToContents( rect.topLeft() ),
viewportToContents( rect.bottomRight() ) ); viewportToContents( rect.bottomRight() ) );
@ -626,24 +620,26 @@ void KonqBaseListViewWidget::slotAutoScroll()
if ( !cur->isSelected() && cur->isSelectable() ) if ( !cur->isSelected() && cur->isSelectable() )
{ {
setSelected( cur, true ); setSelected( cur, true );
setActiveMultiSelectItem( at );
changed = TRUE; changed = TRUE;
rr = rr.unite( itemRect( cur ) ); rr = rr.unite( itemRect( cur ) );
} }
} }
else else
{ {
if ( cur->isSelected() ) if ( cur->isSelected() )
{ {
changed = TRUE; changed = TRUE;
rr = rr.unite( itemRect( cur ) ); rr = rr.unite( itemRect( cur ) );
} }
if ( !m_selected || !m_selected->contains( (KonqBaseListViewItem*)cur ) ) if ( !m_selected || !m_selected->contains( (KonqBaseListViewItem*)cur ) )
{ {
setSelected( cur, false ); setSelected( cur, false );
setActiveMultiSelectItem( at );
} }
} }
cur = cur->itemBelow(); cur = cur->itemBelow();
if (cur && !allColumnsShowFocus()) if (cur && !allColumnsShowFocus())
@ -662,6 +658,7 @@ void KonqBaseListViewWidget::slotAutoScroll()
if ( !cur->isSelected() && cur->isSelectable() ) if ( !cur->isSelected() && cur->isSelectable() )
{ {
setSelected( cur, true ); setSelected( cur, true );
setActiveMultiSelectItem( at );
changed = TRUE; changed = TRUE;
rr = rr.unite( itemRect( cur ) ); rr = rr.unite( itemRect( cur ) );
} }
@ -677,6 +674,7 @@ void KonqBaseListViewWidget::slotAutoScroll()
if ( !m_selected || !m_selected->contains( (KonqBaseListViewItem*)cur ) ) if ( !m_selected || !m_selected->contains( (KonqBaseListViewItem*)cur ) )
{ {
setSelected( cur, false ); setSelected( cur, false );
setActiveMultiSelectItem( at );
} }
} }
@ -705,7 +703,7 @@ void KonqBaseListViewWidget::slotAutoScroll()
TQPixmap backrubber( viewport()->rect().size() ); TQPixmap backrubber( viewport()->rect().size() );
backrubber.fill( viewport(), viewport()->rect().topLeft() ); backrubber.fill( viewport(), viewport()->rect().topLeft() );
TQPainter p( &backrubber ); TQPainter p( &backrubber );
p.save(); p.save();
drawContentsOffset( &p, drawContentsOffset( &p,
contentsX(), contentsX(),
@ -745,9 +743,9 @@ void KonqBaseListViewWidget::slotAutoScroll()
void KonqBaseListViewWidget::viewportPaintEvent( TQPaintEvent *e ) void KonqBaseListViewWidget::viewportPaintEvent( TQPaintEvent *e )
{ {
TDEListView::viewportPaintEvent( e ); TDEListView::viewportPaintEvent( e );
TQPainter p( viewport() ); TQPainter p( viewport() );
drawRubber( &p ); drawRubber( &p );
p.end(); p.end();

Loading…
Cancel
Save