Example #1
0
// This is set in glade.
//    gtk_widget_add_events(mDrawingArea, GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK |
//          GDK_FOCUS_CHANGE_MASK);
void ClassDiagramView::buttonReleaseEvent(const GdkEventButton *event)
    {
    if(event->button == 1)
        {
//      if(abs(event->x - gPressInfo.startPos.x) > 5 ||
//              abs(event->y - gPressInfo.startPos.y) > 5)
            {
            ClassNode *node = getNode(
                    gStartPosInfo.x, gStartPosInfo.y);
            if(node)
                {
                GraphPoint clickOffset(static_cast<int>(event->x),
                    static_cast<int>(event->y));
                clickOffset.sub(gStartPosInfo);
                GraphPoint newPos(node->getPosition());
                newPos.add(clickOffset.getZoomed(1/mClassDiagram.getDesiredZoom()));

                node->setPosition(newPos);
                mClassDiagram.setModified();
                drawToDrawingArea();
                }
            }
//      else
            {
/*
            DiagramNode *node = getNode(event->x, event->y);
            if(node)
                {
//              gDiagramGraph.clearGraph();
//              gLastSelectedClassName = node->getClassifier()->getName();
//              gDiagramGraph.addNodes(gModelData, node->getClassifier());
//              gDiagramGraph.setGraph(gModelData, getDrawOptions());
//              gDiagramGraph.drawDiagram(getDrawOptions());
                }
*/
            }
        }
    else
        {
        displayDrawContextMenu(event->button, event->time,
            reinterpret_cast<gpointer>(const_cast<GdkEventButton*>(event)));
        }
    }