]> 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 20d586df6eff9aff69d1921fcd4334c8af937520..d717171755e0b223b171cde61f543d6594f64c33 100644 (file)
@@ -18,7 +18,7 @@ namespace {
 FunctionWidget::FunctionWidget(Function* function, Mainwindow* mainwindow)
        : function(function)
        , mainwindow(mainwindow)
-       , logger(log4cxx::Logger::getLogger("Mainwindow")) {
+       , logger(log4cxx::Logger::getLogger("gui.Mainwindow")) {
 
        // CFG
        CFGScene * scene = new CFGScene;
@@ -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) {