]> git.siccegge.de Git - frida/frida.git/blobdiff - src/gui/widgets/FunctionWidget.cxx
Allow Drag-Scrolling in CFG-View
[frida/frida.git] / src / gui / widgets / FunctionWidget.cxx
index ba96e5d4af18fe3732de18e9c9e9ef6a0f9e8b3c..d717171755e0b223b171cde61f543d6594f64c33 100644 (file)
@@ -41,6 +41,7 @@ FunctionWidget::FunctionWidget(Function* function, Mainwindow* mainwindow)
                               manager, _blocks, scene, start_address, 100);
 
        QGraphicsView * view = new QGraphicsView(scene);
+       view->setDragMode(QGraphicsView::ScrollHandDrag);
        addTab(view, "CFG");
 
        // Listing
@@ -62,6 +63,7 @@ namespace {
                               CFGScene * scene, uint64_t starty, uint64_t startx) {
 
                decltype(known_blocks.begin()) old;
+               if (!block) return NULL;
                if ((old = known_blocks.find(block->getStartAddress())) != known_blocks.end())
                        return old->second;
 
@@ -77,18 +79,6 @@ namespace {
                widget->setFlag(QGraphicsItem::ItemIsMovable, true);
                widget->moveBy(100*startx, block->getStartAddress() - starty);
 
-               manager->getDisassembler()
-                       ->printEachInstruction(block->getStartAddress(),
-                                              block->getEndAddress(),
-                                              [&](uint8_t* bytes,
-                                                  size_t byte_count,
-                                                  const std::string& line,
-                                                  const std::string& ref) {
-                                                      widget->addItem(bytes, byte_count,
-                                                                      line.c_str() + 1, // remove \t
-                                                                      ref.c_str());
-                                              });
-
                BasicBlockWidget *tmp, *nextl(NULL), *nextr(NULL);
                BasicBlock * tmpblock;
                if (block->getNextBlock(0) != 0) {