diff --git a/DevTools/Inspector/RemoteProcess.cpp b/DevTools/Inspector/RemoteProcess.cpp index f2de0fddd9..1e548af5db 100644 --- a/DevTools/Inspector/RemoteProcess.cpp +++ b/DevTools/Inspector/RemoteProcess.cpp @@ -96,6 +96,14 @@ void RemoteProcess::send_request(const JsonObject& request) m_socket->write(serialized); } +void RemoteProcess::set_inspected_object(uintptr_t address) +{ + JsonObject request; + request.set("type", "SetInspectedObject"); + request.set("address", address); + send_request(request); +} + void RemoteProcess::update() { m_socket->on_connected = [this] { diff --git a/DevTools/Inspector/RemoteProcess.h b/DevTools/Inspector/RemoteProcess.h index 409f1bda43..1c21477e84 100644 --- a/DevTools/Inspector/RemoteProcess.h +++ b/DevTools/Inspector/RemoteProcess.h @@ -43,6 +43,8 @@ public: RemoteObjectGraphModel& object_graph_model() { return *m_object_graph_model; } const NonnullOwnPtrVector& roots() const { return m_roots; } + void set_inspected_object(uintptr_t); + Function on_update; private: diff --git a/DevTools/Inspector/main.cpp b/DevTools/Inspector/main.cpp index f829d7ce06..85b59dc127 100644 --- a/DevTools/Inspector/main.cpp +++ b/DevTools/Inspector/main.cpp @@ -81,6 +81,7 @@ int main(int argc, char** argv) tree_view.on_activation = [&](auto& index) { auto* remote_object = static_cast(index.internal_data()); properties_table_view.set_model(remote_object->property_model()); + remote_process.set_inspected_object(remote_object->json.get("address").to_number()); }; window->show(); diff --git a/Libraries/LibGUI/Widget.cpp b/Libraries/LibGUI/Widget.cpp index 08d2273f57..b225598d5a 100644 --- a/Libraries/LibGUI/Widget.cpp +++ b/Libraries/LibGUI/Widget.cpp @@ -240,6 +240,11 @@ void Widget::handle_paint_event(PaintEvent& event) return IterationDecision::Continue; }); second_paint_event(event); + + if (is_being_inspected()) { + Painter painter(*this); + painter.draw_rect(rect(), Color::Magenta); + } } void Widget::set_layout(NonnullRefPtr layout) @@ -763,4 +768,14 @@ Gfx::Palette Widget::palette() const return Gfx::Palette(*m_palette); } +void Widget::did_begin_inspection() +{ + update(); +} + +void Widget::did_end_inspection() +{ + update(); +} + } diff --git a/Libraries/LibGUI/Widget.h b/Libraries/LibGUI/Widget.h index b0e4b5e3cd..80d4f740cf 100644 --- a/Libraries/LibGUI/Widget.h +++ b/Libraries/LibGUI/Widget.h @@ -293,6 +293,9 @@ protected: virtual void drag_move_event(DragEvent&); virtual void drop_event(DropEvent&); + virtual void did_begin_inspection() override; + virtual void did_end_inspection() override; + private: void handle_paint_event(PaintEvent&); void handle_resize_event(ResizeEvent&);