On Wed, 29 Jan 2020 12:16:49 GMT, Thiago Milczarek Sayao <tsa...@openjdk.org> wrote:
>> To anyone willing to test this, here is a binary test-release for linux: >> >> https://github.com/tsayao/jfx/releases/tag/test-glass-gtk > > It's ready for an initial look. > > If anyone has issues with Linux, I will fix it. **Code Changes** * glass_window.cpp / glass_window.h * Removed WindowContextPlug and WindowContextChild (that were used for applets / web start) and moved everything to one class named WindowContext (since inheritance was no required anymore) * Changed set_enabled() to use gtk_widget_set_sensitive instead of custom code; * Moved to gtk signals instead of gdk events (to use gtk_widget_set_sensitive and gtk_grab_add); * Frame Extents: Removed the code to request extents and gtk already does it by default; * Focus Grab: Use gtk_grab_add and gtk window group functions instead of custom code; * Size calculation: Reworked size calculation code. In general, X windows are content size instead of whole window size (considering extents - frame decorations). OpenJfx uses "whole window size" as window sizes, so it requires a "hack" to recalculate sizes when set_bounds() is called with window sizes instead of content sizes. The rework was to simplify code paths and make it more straightforward. * Other Size calculation changes: * Use gtk_window_set_default_size() for initial size which is the appropriate function; * Gravity is now ignored as it is on Windows glass impl; * Avoid sending same sizes to Java; * Introduced calculate_adjustments() which is a fallback when frame extents is not present (it's optional to window managers to implement it); * Geometry: Min / Max sizes - reworked it to simplify / Concentrated geometry changes on apply_geometry(). * Mouse grab: Reworked it to use to correct functions according to gtk+ version; * Draw: Reworked it to use the correct calls accord to gtk+ version changes; * Fixed JDK-8237491; * Moved background code to paint() as gtk3 uses styles to set the background and other functions were deprecated; * Reorganized function order on glass_window.cpp to match glass_window.h * GlassCursor.cpp * Gtk+3 uses a name-like-css approach - so it was properly ported to gtk3 way; * Reworked Gtk+2 to use a function instead of manual calls to find the cursor; * GtkWindow.java * Moved the extents special case to native glass; * GlassApplication.cpp * Removed Gdk events where possible (it's now on glass_window as signals); * Removed applet/web start code; * GlassView.cpp * Changes to reflect frame extents rework on glass_window * GlassWindow.cpp * WindowContextTop -> WindowContext * Removed applet / web start code; * Removed frame extents (which is not called anymore due to GtkWindow.java change); * glass_general.cpp * Removed functions that became unused; * Added is_grab_disabled() that is used on glass_window * glass_window_ime.cpp * WindowContextTop -> WindowContext; * glass_dnd.cpp / glass_dnd.h * Ported to Gtk signals; * Use all possible image formats (supported by GdkPixbuf / OpenJfx) - .gif is now possible (for ex.); * Allow COMPOUND_TEXT; * Do not request content while dragging; * Reduce overall code size. ------------- PR: https://git.openjdk.java.net/jfx/pull/77