File tree Expand file tree Collapse file tree 3 files changed +53
-0
lines changed Expand file tree Collapse file tree 3 files changed +53
-0
lines changed Original file line number Diff line number Diff 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
Original file line number Diff line number Diff 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+
160189bool QgsColorSchemeList::importColorsFromGpl ( QFile &file )
161190{
162191 QgsNamedColorList importedColors;
Original file line number Diff line number Diff 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
You can’t perform that action at this time.
0 commit comments