Skip to content

[graphics] introducing gtk4canvas component - #23944

Draft
linev wants to merge 12 commits into
root-project:masterfrom
linev:gtk4_canvas
Draft

linev wants to merge 12 commits into
root-project:masterfrom
linev:gtk4_canvas

Conversation

@linev

@linev linev commented Nov 2, 2026

Copy link
Copy Markdown
Member

Like qt6canvas, provides alternative TCanvasImp implementation.

Includes:

  • subclass of Gtk::DrawingArea to paint ROOT graphics
  • subclass of Gtk::Window to show menu, toolbar, statusbar and drawings
  • preliminary implementation of TVirtualPadEditor
  • support mouse events
  • showing status bar
  • toolbar

Works in progress

@linev linev self-assigned this Nov 2, 2026
@linev
linev marked this pull request as draft November 2, 2026 12:05
linev added 8 commits November 2, 2026 14:04
It uses GTK4 classes for implement pad painting
Implemented virtual pad editor interface
There is now special TCanvas method which indicate when canvas
has to be repaint
Use this signal to display status in the canvas
check if libvulkan exists and avoid its copy from cef release dir
Prevents conflict with gtk4 canvas or any other components which can use libvulkan
Let toggle visibility state via correspondent menu items
@github-actions

github-actions Bot commented Nov 3, 2026

Copy link
Copy Markdown

Test Results

    21 files      21 suites   3d 15h 8m 34s ⏱️
 3 856 tests  3 854 ✅ 0 💤 2 ❌
75 950 runs  75 947 ✅ 0 💤 3 ❌

For more details on these failures, see this check.

Results for commit 7350fca.

linev added 4 commits November 3, 2026 11:23
Allows to keep full canvas for any screenshots
Using cached cairo image, exract full image or just pad as ASImage. So one implements missing screenshot functionality of gtk4
Include all supported file formats
Update items when menu state changed - in case when canvas name is changed

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant