void KACLListView::contentsMousePressEvent( TQMouseEvent * e ) { TQListViewItem *clickedItem = itemAt( contentsToViewport( e->pos() ) ); if ( !clickedItem ) return; // if the click is on an as yet unselected item, select it first if ( !clickedItem->isSelected() ) TDEListView::contentsMousePressEvent( e ); if ( !currentItem() ) return; int column = header()->sectionAt( e->x() ); acl_perm_t perm; switch ( column ) { case 2: perm = ACL_READ; break; case 3: perm = ACL_WRITE; break; case 4: perm = ACL_EXECUTE; break; default: return TDEListView::contentsMousePressEvent( e ); } KACLListViewItem* referenceItem = static_cast<KACLListViewItem*>( clickedItem ); unsigned short referenceHadItSet = referenceItem->value & perm; TQListViewItemIterator it( this ); while ( KACLListViewItem* item = static_cast<KACLListViewItem*>( it.current() ) ) { ++it; if ( !item->isSelected() ) continue; // toggle those with the same value as the clicked item, leave the others if ( referenceHadItSet == ( item->value & perm ) ) item->togglePerm( perm ); } }