mirror of
https://github.com/qgis/QGIS.git
synced 2025-03-01 00:46:20 -05:00
Multiselect combobox UX tweaks:
- left clicking in the combo box opens the dropdown, just like a standard combo box - right clicking on an unexpanded combo shows the correct context menu for the widget, instead of the default line edit context menu
This commit is contained in:
parent
4f7fcb3089
commit
923072d9e9
@ -87,6 +87,9 @@ QgsCheckableComboBox::QgsCheckableComboBox( QWidget *parent )
|
||||
pal.setBrush( QPalette::Base, pal.button() );
|
||||
lineEdit->setPalette( pal );
|
||||
setLineEdit( lineEdit );
|
||||
lineEdit->installEventFilter( this );
|
||||
lineEdit->setContextMenuPolicy( Qt::CustomContextMenu );
|
||||
connect( lineEdit, &QAbstractItemView::customContextMenuRequested, this, &QgsCheckableComboBox::showContextMenu );
|
||||
|
||||
mContextMenu = new QMenu( this );
|
||||
mSelectAllAction = mContextMenu->addAction( tr( "Select All" ) );
|
||||
@ -227,8 +230,16 @@ void QgsCheckableComboBox::deselectAllOptions()
|
||||
|
||||
bool QgsCheckableComboBox::eventFilter( QObject *object, QEvent *event )
|
||||
{
|
||||
if ( ( event->type() == QEvent::MouseButtonPress || event->type() == QEvent::MouseButtonRelease )
|
||||
&& object == view()->viewport() )
|
||||
if ( object == lineEdit() )
|
||||
{
|
||||
if ( event->type() == QEvent::MouseButtonPress && static_cast<QMouseEvent *>( event )->button() == Qt::LeftButton && object == lineEdit() )
|
||||
{
|
||||
mSkipHide = true;
|
||||
showPopup();
|
||||
}
|
||||
}
|
||||
else if ( ( event->type() == QEvent::MouseButtonPress || event->type() == QEvent::MouseButtonRelease )
|
||||
&& object == view()->viewport() )
|
||||
{
|
||||
mSkipHide = true;
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user