Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

GTK4 #1977

Closed
totaam opened this issue Oct 3, 2018 · 1 comment
Closed

GTK4 #1977

totaam opened this issue Oct 3, 2018 · 1 comment
Labels
upstream wontfix This will not be worked on
Milestone

Comments

@totaam
Copy link
Collaborator

totaam commented Oct 3, 2018

Assuming that we don't jump ship by then (#1995, the python3 / gtk3 transition is hard enough: #1568), we'll need to handle Migrating from GTK+ 3.x to GTK+ 4, in particular:

  • Stop using the root window - ouch?
  • Stop using GdkScreen, GdkVisual, GdkDeviceManager
  • Adapt to GdkWindow API changes: GdkWindow has been renamed to GdkSurface. The gdk_window_new() function has been replaced by a number of more specialized constructors: gdk_surface_new_toplevel(), gdk_surface_new_popup(), gdk_surface_new_temp(), gdk_surface_new_child(), gdk_surface_new_input(), gdk_wayland_surface_new_subsurface(). Use the appropriate ones to create your windows.
    Native and foreign subwindows are no longer supported. These concepts were complicating the code and could not be supported across backends.
    gdk_window_reparent() is no longer available.
  • Adapt to drawing model changes: If you are using a GtkDrawingArea for custom drawing, you need to switch to using gtk_drawing_area_set_draw_func() to set a draw function instead of connnecting a handler to the “draw” signal.
  • Invalidation handling has changed: Only gtk_widget_queue_draw() is left to mark a widget as needing redraw. Variations like gtk_widget_queue_draw_rectangle() or gtk_widget_queue_draw_region() are no longer available.
  • Stop using GtkWidget::draw: The “draw” signal has been removed. Widgets need to implement the “snapshot” function now. Connecting draw signal handlers is no longer possible.
  • Adapt to cursor API changes..
  • Stop accessing GdkEvent fields: Direct access to GdkEvent structs is no longer possible in GTK+ 4. Some frequently-used fields already had accessors in GTK+ 3, and the remaining fields have gained accessors in GTK+ 4.
@totaam totaam added the v2.3.x label Jan 22, 2021
@totaam totaam added upstream wontfix This will not be worked on and removed v2.3.x labels Jan 23, 2021
@totaam totaam added this to the future milestone Jan 23, 2021
@totaam totaam mentioned this issue Jul 17, 2022
totaam added a commit that referenced this issue Nov 14, 2023
it doesn't render anything and everything is broken, do not use
@totaam
Copy link
Collaborator Author

totaam commented Nov 14, 2023

4311115 made it much easier to switch Gtk version using an env var for testing.
So I thought I would try to see just how bad the switch to Gtk4 would be.
The answer is OMG, the waylandization of Gtk has been in full swing. Is there anything useful left at all?
The new gtk4 branch created: https://github.com/Xpra-org/xpra/tree/gtk4 contains a single commit which allows the client to connect - nothing else.
This does not look fixable. Too many features have been removed.

@totaam totaam closed this as not planned Won't fix, can't repro, duplicate, stale Nov 14, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
upstream wontfix This will not be worked on
Projects
None yet
Development

No branches or pull requests

1 participant