Repository navigation
Conversation
# Conflicts: # CHANGELOG.md
Collaborator
Author
|
More (quick) measurements (re-runs):
(Python CPU renderer, native Wayland, KDE, 1920x1080 at 120 Hz):
Fixed a regression I introduced - pie animation: close_popups freed the pie while animations still ran on it. |
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What does this change?
Fixes:
buipy_renderfailed on Wayland sessions).visible,enabled, ...) to the value it already had relaid out and redrew the whole window. Unchanged values now do nothing. The Rust binding places every widget each frame, so every Rust frame was a full redraw earleir.BK_canvas_put_item/BK_canvas_truncate(display lists rebuilt each frame) redrew the whole canvas. Only items that changed, moved or were removed are redrawn now.ImGui_ImplBUI_AbandonFrame()(C:cImGui_ImplBUI_AbandonFrame), which ends the frame with Dear ImGui's error recovery; the Python binding calls it (buipy_imguiaborted with "Missing End()").Linux windows
wm "state"2 / 0 hides and shows a window on X11 and Wayland. X11 had no"state", and Wayland could not hide a window.wm "override"(no frame) and"topmost"work on X11 (_MOTIF_WM_HINTS,_NET_WM_STATE_ABOVE, ported from GHOST)."override"works on Wayland through client-side decorations. Both worked only on Win32 and Cocoa.wm "transparent"gives per-pixel alpha: a 32-bit ARGB visual on X11, ARGB8888 buffers on Wayland. The software raster can keep alpha (BUI_raster_set_alpha,BUI_raster_clear). Opaque frames are the same as to before.wm "layer"and"anchor"make a wlr-layer-shell surface on Wayland (KDE Plasma, wlroots compositors). Wayland has no other way to keep a window on top. The protocol XML is inkit/extern/wayland_protocolsand listed inTHIRD_PARTY_NOTICES.md.API:
BKWindowCallbacks.on_focusreports when a window gets or loses keyboard focus, on Win32, Cocoa, X11 and Wayland. Losing focus cancels an open pie, as Blender'sWINDEACTIVATEdoes. Bindings: PythonWindow.on_focus, RustApp::on_window_activation, JavaScript window eventsfocus/blur.WindowOptions.window_background = WindowBackgroundAppearance::Transparent, JavaScriptapp.window({ transparent: true }).BK_hit_at(ctx, x, y)is public (it was internal): the interactive node under a point. Pythonctx.hit, Luactx:hit.BK_open_pietakes a centre point, so its signature changes.-100000keeps the pointer, as inBK_open_menu.Pie behaviour:
pie_menu_begin,pie_tap_timeout).subopens a sub-pie at the pointer.menu_block_set_keyaccels).pie_animation_timeout(60 ms), off with reduced motion.pie_handler. They were item positions.Python:
Benchmarks
(Rust CPU renderer, native Wayland, KDE, 1920x1080 at 120 Hz):
How was it tested?
ctest --test-dir buildpassescargo testpasses (if Rust changed)Checklist
CHANGELOG.mdupdated (Unreleased)docs/, README if user-facing)SPDX-License-Identifier: GPL-2.0-or-laterheader