From 46f4945c0054a65feaec3a27294ace8361b0db27 Mon Sep 17 00:00:00 2001 From: mhugent Date: Fri, 22 Aug 2003 06:51:00 +0000 Subject: [PATCH] Fixed wrong automatic selection of te first table row/ ctrl-button can now be used to select features in the map canvas git-svn-id: http://svn.osgeo.org/qgis/trunk@243 c8812cc2-4d05-0410-92ff-de0c093fc19c --- src/qgisapp.cpp | 1 - src/qgsattributetable.cpp | 9 +-------- src/qgsmapcanvas.cpp | 30 +++++++++--------------------- src/qgsmapcanvas.h | 5 ----- src/qgsshapefilelayer.cpp | 5 +---- 5 files changed, 11 insertions(+), 39 deletions(-) diff --git a/src/qgisapp.cpp b/src/qgisapp.cpp index 7364e873dbd..2d9a040f8cc 100644 --- a/src/qgisapp.cpp +++ b/src/qgisapp.cpp @@ -464,7 +464,6 @@ void QgisApp::attributeTable() void QgisApp::select() { - std::cout << "bin in select" << std::endl; mapCanvas->setMapTool(QGis::Select); } diff --git a/src/qgsattributetable.cpp b/src/qgsattributetable.cpp index 09d21b5a596..9c0e870d8e6 100644 --- a/src/qgsattributetable.cpp +++ b/src/qgsattributetable.cpp @@ -64,7 +64,6 @@ void QgsAttributeTable::keyReleaseEvent(QKeyEvent* ev) void QgsAttributeTable::handleChangedSelections() { - std::cout << "bin in QgsAttributeTable::handleChangedSelection" << std::endl; QTableSelection cselection; if(lockKeyPressed==false) { @@ -75,7 +74,6 @@ void QgsAttributeTable::handleChangedSelections() //if there is no current selection, there is nothing to do if(currentSelection()==-1) { - std::cout << "No current selection" << std::endl; emit repaintRequested(); return; } @@ -84,14 +82,9 @@ void QgsAttributeTable::handleChangedSelections() for(int index=cselection.topRow();index<=cselection.bottomRow();index++) { - std::cout << "topRow: " << cselection.topRow() << std::endl; - std::cout << "bottomRow: " << cselection.bottomRow() << std::endl; - std::cout << "index: " << index << std::endl; emit selected(text(index,0).toInt()); } - - std::cout << "emit QgsAttributeTable::repaintRequested" << std::endl; emit repaintRequested(); } @@ -99,7 +92,7 @@ void QgsAttributeTable::handleChangedSelections() void QgsAttributeTable::selectRowWithId(int id) { - //brute force approach + //brute force approach, add a solution with a hash table or a search tree later (and rebuild this structure every time the table is sorted) for(int i=0;itoMapCoordinates(zoomBox.right(), zoomBox.top()); QgsRect* search= new QgsRect(ll.x(),ll.y(),ur.x(),ur.y()); - lyr->select(search,ctrlPressed); + if(e->state()==513) + { + lyr->select(search,true); + } + else + { + lyr->select(search,false); + } delete search; } else @@ -489,7 +495,7 @@ void QgsMapCanvas::resizeEvent(QResizeEvent *e){ } void QgsMapCanvas::mouseMoveEvent(QMouseEvent * e) { - if (e->state() == Qt::LeftButton) { + if (e->state() == Qt::LeftButton || e->state()==513) { int dx, dy; QPainter paint; QPen pen(Qt::gray); @@ -629,21 +635,3 @@ void QgsMapCanvas::removeAll(){ zOrder.clear(); } -void QgsMapCanvas::keyPressEvent(QKeyEvent* ev) -{ - if(ev->key()==Qt::Key_Control) - { - std::cout << "ctrlPressed = true" << std::endl; - ctrlPressed=true; - } -} - -void QgsMapCanvas::keyReleaseEvent(QKeyEvent* ev) -{ - if(ev->key()==Qt::Key_Control) - { - std::cout << "ctrlPressed = false" << std::endl; - ctrlPressed=false; - } -} - diff --git a/src/qgsmapcanvas.h b/src/qgsmapcanvas.h index daeab452bfd..c46763b2246 100644 --- a/src/qgsmapcanvas.h +++ b/src/qgsmapcanvas.h @@ -91,8 +91,6 @@ public slots: signals: void xyCoordinates(QgsPoint &p); private: - void keyPressEvent(QKeyEvent* ev); - void keyReleaseEvent(QKeyEvent* ev); void mouseMoveEvent(QMouseEvent *e); void mousePressEvent(QMouseEvent *e); void mouseReleaseEvent(QMouseEvent *e); @@ -143,9 +141,6 @@ public slots: * when no real change has occurred */ bool dirty; - /**Flag which tells if the ctrl-button is pressed*/ - bool ctrlPressed; - }; #endif diff --git a/src/qgsshapefilelayer.cpp b/src/qgsshapefilelayer.cpp index 3303bbc4541..2d1265cd0f4 100644 --- a/src/qgsshapefilelayer.cpp +++ b/src/qgsshapefilelayer.cpp @@ -434,6 +434,7 @@ void QgsShapeFileLayer::table() tabledisplay->setTitle("Tabledisplaytribute table - " + name()); tabledisplay->show(); + tabledisplay->table()->clearSelection();//deselect the first row //select the rows of the already selected features QObject::disconnect(tabledisplay->table(),SIGNAL(selectionChanged()),tabledisplay->table(),SLOT(handleChangedSelections())); @@ -456,7 +457,6 @@ void QgsShapeFileLayer::table() void QgsShapeFileLayer::select(int number) { - std::cout << "bin in QgsShapeFileLayer::select(int) " << number << std::endl; (*selected)[number]=true; } @@ -467,9 +467,7 @@ void QgsShapeFileLayer::select(QgsRect* rect, bool lock) { QObject::disconnect(tabledisplay->table(),SIGNAL(selectionChanged()),tabledisplay->table(),SLOT(handleChangedSelections())); QObject::disconnect(tabledisplay->table(),SIGNAL(selected(int)),this,SLOT(select(int)));//disconnecting because of performance reason - tabledisplay->raise(); } - std::cout << "bin in QgsShapeFileLayer::select(QgsRect)" << std::endl; if(lock==false) { @@ -496,7 +494,6 @@ void QgsShapeFileLayer::select(QgsRect* rect, bool lock) if(fet) { select(fet->GetFID()); - std::cout << "rufe die Methode selectRow auf" << fet->GetFID() << std::endl; if(tabledisplay) { tabledisplay->table()->selectRowWithId(fet->GetFID());