mirror of
https://github.com/qelectrotech/qelectrotech-source-mirror.git
synced 2025-12-19 23:20:52 +01:00
Fix Home and End Buttons Handling and DiagramEditor Scroll
git-svn-id: svn+ssh://svn.tuxfamily.org/svnroot/qet/qet/trunk@4613 bfdf4180-ca20-0410-9c96-a3a8aa849046
This commit is contained in:
@@ -244,8 +244,8 @@ void Diagram::keyPressEvent(QKeyEvent *e)
|
||||
QPointF movement;
|
||||
qreal top_position = 0;
|
||||
qreal left_position = 0;
|
||||
QList<Element*> selected_elmts = this->selectedContent().elements.toList();
|
||||
if (!this->selectedContent().elements.isEmpty()) {
|
||||
QList<QGraphicsItem*> selected_elmts = this->selectedContent().items();
|
||||
if (!this->selectedContent().items(255).isEmpty()) {
|
||||
switch(e -> key()) {
|
||||
case Qt::Key_Left:
|
||||
foreach (QGraphicsItem *item, selected_elmts) {
|
||||
|
||||
@@ -604,11 +604,31 @@ switch(e -> key())
|
||||
current_project->changeTabDown();
|
||||
return;
|
||||
case Qt::Key_Home:
|
||||
if (!hasTextItems()) {
|
||||
if (
|
||||
qgraphicsitem_cast<IndependentTextItem *>(scene->focusItem()) ||
|
||||
qgraphicsitem_cast<ElementTextItem *>(scene->focusItem()) ||
|
||||
qgraphicsitem_cast<ConductorTextItem *>(scene->focusItem()) ||
|
||||
qgraphicsitem_cast<DiagramTextItem *>(scene->focusItem())
|
||||
)
|
||||
break;
|
||||
current_project->changeFirstTab();
|
||||
return;
|
||||
}
|
||||
else break;
|
||||
case Qt::Key_End:
|
||||
if (!hasTextItems()) {
|
||||
if (
|
||||
qgraphicsitem_cast<IndependentTextItem *>(scene->focusItem()) ||
|
||||
qgraphicsitem_cast<ElementTextItem *>(scene->focusItem()) ||
|
||||
qgraphicsitem_cast<ConductorTextItem *>(scene->focusItem()) ||
|
||||
qgraphicsitem_cast<DiagramTextItem *>(scene->focusItem())
|
||||
)
|
||||
break;
|
||||
current_project->changeLastTab();
|
||||
return;
|
||||
}
|
||||
else break;
|
||||
case Qt::Key_ZoomOut:
|
||||
zoom(0.85);
|
||||
return;
|
||||
@@ -622,19 +642,19 @@ switch(e -> key())
|
||||
if (e->modifiers() & Qt::ControlModifier)
|
||||
zoom(1.15);
|
||||
case Qt::Key_Up:
|
||||
if(!scene->selectedContent().elements.isEmpty()){
|
||||
if(!(scene->selectedContent().items(255).isEmpty())){
|
||||
scrollOnMovement(e);
|
||||
}
|
||||
case Qt::Key_Down:
|
||||
if(!scene->selectedContent().elements.isEmpty()){
|
||||
if(!(scene->selectedContent().items(255).isEmpty())){
|
||||
scrollOnMovement(e);
|
||||
}
|
||||
case Qt::Key_Left:
|
||||
if(!scene->selectedContent().elements.isEmpty()){
|
||||
if(!(scene->selectedContent().items(255).isEmpty())){
|
||||
scrollOnMovement(e);
|
||||
}
|
||||
case Qt::Key_Right:
|
||||
if(!scene->selectedContent().elements.isEmpty()){
|
||||
if(!(scene->selectedContent().items(255).isEmpty())){
|
||||
scrollOnMovement(e);
|
||||
}
|
||||
}
|
||||
@@ -659,7 +679,7 @@ void DiagramView::keyReleaseEvent(QKeyEvent *e) {
|
||||
or below the editor SceneRect is expanded
|
||||
*/
|
||||
void DiagramView::scrollOnMovement(QKeyEvent *e){
|
||||
QList<QGraphicsItem *> selected_elmts = scene ->selectedItems();
|
||||
QList<QGraphicsItem *> selected_elmts = scene->selectedContent().items(255);
|
||||
QRectF viewed_scene = viewedSceneRect();
|
||||
foreach (QGraphicsItem *qgi, selected_elmts){
|
||||
qreal x = qgi->pos().x();
|
||||
@@ -682,15 +702,21 @@ void DiagramView::scrollOnMovement(QKeyEvent *e){
|
||||
QScrollBar *v = verticalScrollBar();
|
||||
int h_increment=0;
|
||||
int v_increment=0;
|
||||
if (e->key()==Qt::Key_Up && elmt_above_bottom_margin)
|
||||
if (e->key()==Qt::Key_Up && elmt_above_bottom_margin) {
|
||||
v_increment = 2*qgi->boundingRect().top();
|
||||
if (v_increment == 0) v_increment = -2*qgi->boundingRect().height();
|
||||
}
|
||||
else if(e->key()==Qt::Key_Down && elmt_below_top_margin) {
|
||||
v_increment = 2*qgi->boundingRect().bottom();
|
||||
if (v_increment == 0) v_increment = -2*qgi->boundingRect().height();
|
||||
}
|
||||
else if (e->key()==Qt::Key_Left && elmt_left_of_right_margin)
|
||||
else if (e->key()==Qt::Key_Left && elmt_left_of_right_margin) {
|
||||
h_increment = 2*qgi->boundingRect().left();
|
||||
if (h_increment == 0) h_increment = -2*qgi->boundingRect().width();
|
||||
}
|
||||
else if (e->key()==Qt::Key_Right && elmt_right_of_left_margin) {
|
||||
h_increment = 2*qgi->boundingRect().right();
|
||||
if (h_increment == 0) h_increment = -2*qgi->boundingRect().width();
|
||||
}
|
||||
if (((elmt_right >= scene->sceneRect().right() - qgi->boundingRect().right()) ||
|
||||
(elmt_bottom >= scene->sceneRect().bottom() - qgi->boundingRect().bottom())) &&
|
||||
@@ -754,6 +780,23 @@ bool DiagramView::hasCopiableItems() {
|
||||
return(false);
|
||||
}
|
||||
|
||||
/**
|
||||
@return true if there is any Text Item selected
|
||||
*/
|
||||
bool DiagramView::hasTextItems() {
|
||||
foreach(QGraphicsItem *qgi, scene -> selectedItems()) {
|
||||
if (
|
||||
qgraphicsitem_cast<IndependentTextItem *>(qgi) ||
|
||||
qgraphicsitem_cast<ElementTextItem *>(qgi) ||
|
||||
qgraphicsitem_cast<ConductorTextItem *>(qgi) ||
|
||||
qgraphicsitem_cast<DiagramTextItem *>(qgi)
|
||||
) {
|
||||
return(true);
|
||||
}
|
||||
}
|
||||
return(false);
|
||||
}
|
||||
|
||||
/**
|
||||
@return true s'il y a des items selectionnes sur le schema et que ceux-ci
|
||||
peuvent etre supprimes, false sinon
|
||||
|
||||
@@ -72,6 +72,7 @@ class DiagramView : public QGraphicsView
|
||||
QETDiagramEditor *diagramEditor() const;
|
||||
bool hasSelectedItems();
|
||||
bool hasCopiableItems();
|
||||
bool hasTextItems();
|
||||
bool hasDeletableItems();
|
||||
void editSelection();
|
||||
void setEventInterface (DVEventInterface *event_interface);
|
||||
|
||||
Reference in New Issue
Block a user