mirror of
				https://github.com/RGBCube/serenity
				synced 2025-10-31 17:52:45 +00:00 
			
		
		
		
	LibGUI+Inspector: Highlight the currently remotely inspected widget
This patch adds a magenta rectangle around the currently inspected widget. This allows you to browse an app's widget tree somewhat visually using the Inspector. :^)
This commit is contained in:
		
							parent
							
								
									d16f8214d8
								
							
						
					
					
						commit
						e23c5b7e83
					
				
					 5 changed files with 29 additions and 0 deletions
				
			
		|  | @ -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] { | ||||
|  |  | |||
|  | @ -43,6 +43,8 @@ public: | |||
|     RemoteObjectGraphModel& object_graph_model() { return *m_object_graph_model; } | ||||
|     const NonnullOwnPtrVector<RemoteObject>& roots() const { return m_roots; } | ||||
| 
 | ||||
|     void set_inspected_object(uintptr_t); | ||||
| 
 | ||||
|     Function<void()> on_update; | ||||
| 
 | ||||
| private: | ||||
|  |  | |||
|  | @ -81,6 +81,7 @@ int main(int argc, char** argv) | |||
|     tree_view.on_activation = [&](auto& index) { | ||||
|         auto* remote_object = static_cast<RemoteObject*>(index.internal_data()); | ||||
|         properties_table_view.set_model(remote_object->property_model()); | ||||
|         remote_process.set_inspected_object(remote_object->json.get("address").to_number<uintptr_t>()); | ||||
|     }; | ||||
| 
 | ||||
|     window->show(); | ||||
|  |  | |||
|  | @ -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> 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(); | ||||
| } | ||||
| 
 | ||||
| } | ||||
|  |  | |||
|  | @ -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&); | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Andreas Kling
						Andreas Kling