Skip to content

Commit 33b120f

Browse files
committed
Add a colorSelected signal to QgsColorSchemeList
1 parent 05e1629 commit 33b120f

File tree

3 files changed

+53
-0
lines changed

3 files changed

+53
-0
lines changed

python/gui/qgscolorschemelist.sip

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -169,10 +169,21 @@ class QgsColorSchemeList: QTreeView
169169
* @see pasteColors
170170
*/
171171
void copyColors();
172+
173+
signals:
174+
175+
/**Emitted when a color is selected from the list
176+
* @param color color selected
177+
*/
178+
void colorSelected( const QColor color );
172179

173180
protected:
174181

175182
void keyPressEvent( QKeyEvent* event );
176183

184+
void mousePressEvent( QMouseEvent* event );
185+
186+
void mouseReleaseEvent( QMouseEvent* event );
187+
177188
};
178189

src/gui/qgscolorschemelist.cpp

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -157,6 +157,35 @@ void QgsColorSchemeList::keyPressEvent( QKeyEvent *event )
157157
QTreeView::keyPressEvent( event );
158158
}
159159

160+
void QgsColorSchemeList::mousePressEvent( QMouseEvent *event )
161+
{
162+
if ( event->button() == Qt::LeftButton )
163+
{
164+
//record press start position
165+
mDragStartPosition = event->pos();
166+
}
167+
QTreeView::mousePressEvent( event );
168+
}
169+
170+
void QgsColorSchemeList::mouseReleaseEvent( QMouseEvent *event )
171+
{
172+
if (( event->button() == Qt::LeftButton ) &&
173+
( event->pos() - mDragStartPosition ).manhattanLength() <= QApplication::startDragDistance() )
174+
{
175+
//just a click, not a drag
176+
177+
//if only one item is selected, emit color changed signal
178+
//(if multiple are selected, user probably was interacting with color list rather than trying to pick a color)
179+
if ( selectedIndexes().length() == mModel->columnCount() )
180+
{
181+
QModelIndex selectedColor = selectedIndexes().at( 0 );
182+
emit colorSelected( mModel->colors().at( selectedColor.row() ).first );
183+
}
184+
}
185+
186+
QTreeView::mouseReleaseEvent( event );
187+
}
188+
160189
bool QgsColorSchemeList::importColorsFromGpl( QFile &file )
161190
{
162191
QgsNamedColorList importedColors;

src/gui/qgscolorschemelist.h

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -211,15 +211,28 @@ class GUI_EXPORT QgsColorSchemeList: public QTreeView
211211
*/
212212
void copyColors();
213213

214+
signals:
215+
216+
/**Emitted when a color is selected from the list
217+
* @param color color selected
218+
*/
219+
void colorSelected( const QColor color );
220+
214221
protected:
215222

216223
void keyPressEvent( QKeyEvent* event );
217224

225+
void mousePressEvent( QMouseEvent* event );
226+
227+
void mouseReleaseEvent( QMouseEvent* event );
228+
218229
private:
219230
QgsColorScheme* mScheme;
220231
QgsColorSchemeModel* mModel;
221232
QgsColorSwatchDelegate* mSwatchDelegate;
222233

234+
QPoint mDragStartPosition;
235+
223236
};
224237

225238
#endif

0 commit comments

Comments
 (0)