Conversation
37d48c69 layersurface: Sync with our custom-surface example in GTK4 cb8e5c94 layersurface: Switch to GtkPlain 393f34d4 hack: lockscreen: Disable gesture e3fe6fef lockscreen: Properly cleanup background fa3fad0e lockscreen: Use child property and simplify construction b7bcfbb6 top-panel: Use child property and simplify construction f88bbcdc home: Use child property and simplify construction 645b26ed lockscreen-manager: Properly destroy lockscreen 372e3f90 top-panel: Use layer-surface height 4ea68a24 top-panel: Act on configured 377f6129 home: Avoid gtk_window_get_default_size 1765a8e3 home: Act on configured 89a4cd6e layersurface: Adjust to custom surface a5f789f3 tree: Drop window properties 4ad4af3b overview: Properly remove activity 11331796 activity: Use GtkPaintable 857e3e92 activity: Queue draw for the correct widget 1d9a01ed Drop gtk4-layer-shell e08794e1 for-arun: ticket-box: Fix version 8bc3dffd for-arun: feedback-status-page: Make row take full width 0123f441 backport: thumbnail: Fix indent 1e377fb0 backport: lockscreen: Fix typo 666e85bb widget-box-standalone: Port to GTK 4 47007eff quick-settings-box-standalone: Port to GTK 4 7cfeca84 notify-server-standalone: Port to GTK 4 7f511988 notify-blocks: Port to GTK 4 9db8b660 custom-quick-settings-standalone: Port to GTK 4 6158ad6c app-scroll: Port to GTK 4 11692cc8 app-grid-standalone: Port to GTK 4 b80eb6d2 app-buttons: Port to GTK 4 174326ca plugins: Add gio-unix as dependency 3c6ae907 media-players: Port to GTK 4 facf645c upcoming-events: Port to GTK 4 eac40ef0 ticket-box: Port to GTK 4 90471960 launcher-box: Port to GTK 4 cda77dd6 emergency-info: Port to GTK 4 3f984958 calendar: Port to GTK 4 6a69a640 wifi-hotspot-quick-setting: Port to GTK 4 5f825e1c location-quick-setting: Port to GTK 4 23f2b571 simple-custom-quick-setting: Port to GTK 4 b6aee759 scaling-quick-setting: Port to GTK 4 1ab344d9 pomodoro-quick-setting: Port to GTK 4 02b8f87d night-light-quick-setting: Port to GTK 4 94aa3c3d mobile-data-quick-setting: Port to GTK 4 62e2eed9 dark-mode-quick-setting: Port to GTK 4 3b85ba56 caffeine-quick-setting: Port to GTK 4 43d6f658 gtk-list-models: Remove e21946a1 testlib: Port to GTK 4 5bebeca7 tests/services: Add gio-unix as dependency 496fed7d style: Port to GTK 4 8c6cf624 main: Port to GTK 4 bac7a16d home: Port to GTK 4 9eb54cb1 top-panel: Port to GTK 4 1595ee62 lockscreen: Port to GTK 4 0e9a7810 drag-surface: Port to GTK 4 d2019262 layersurface: Port to gtk4-layer-shell 2f161ffd splash: Port to GTK 4 fad8b16f shell: Port to GTK 4 98674306 head: Port to GTK 4 cd5d0f9c monitor: Port to GTK 4 27cf0e50 toplevel: Port to GTK 4 e68c4242 monitor-manager: Port to GTK 4 44ab439b toplevel-manager: Port to GTK 4 8ed2c317 lockscreen-manager: Port to GTK 4 b3743f6a gtk-mount-manager: Port to GTK 4 cc6098e3 phosh-wayland: Port to GTK 4 3b36a5b3 style-manager: Port to GTK 4 b870910e session-manager: Port to GTK 4 bb7b0878 screenshot-manager: Port to GTK 4 299c665a background-manager: Port to GTK 4 ee98ea83 idle-manager: Port to GTK 4 98e42bb5 util: Port to GTK 4 2c2d95a1 system-prompter: Port to GTK 4 642ab828 lockshield: Port to GTK 4 d9aadd57 osd-window: Port to GTK 4 545665e8 widget-box: Port to GTK 4 0df783b7 system-modal: Port to GTK 4 2b125199 location-manager: Port to GTK 4 1e4edaa6 connectivity-manager: Port to GTK 4 389a41f9 cell-broadcast-manager: Port to GTK 4 f797b619 bt-manager: Port to GTK 4 8b3138ac keypad: Port to GTK 4 51e4f5e1 fader: Port to GTK 4 92877e16 call-notification: Port to GTK 4 d2ebc4d3 call: Port to GTK 4 fdc0a22e animations: Port to GTK 4 2ab1b270 system-prompt: Port to GTK 4 cc7985a8 system-modal-dialog: Port to GTK 4 0c1f7b01 run-command-dialog: Port to GTK 4 60cc9ce1 power-menu: Port to GTK 4 9f3cc78f polkit-auth-prompt: Port to GTK 4 0a8ac368 network-auth-prompt: Port to GTK 4 dde21424 end-session-dialog: Port to GTK 4 2383cdf9 cell-broadcast-prompt: Port to GTK 4 97ecf01b gtk-mount-prompt: Port to GTK 4 e3e06a97 emergency-menu: Port to GTK 4 3bb73e88 emergency-contact-row: Port to GTK 4 aa47c6a1 app-auth-prompt: Port to GTK 4 9143b8fb revealer: Port to GTK 4 7da79470 password-entry: Port to GTK 4 48e06b18 activity: Port to GTK 4 7ed3bf1c swipe-away-bin: Port to GTK 4 3238af1a overview: Port to GTK 4 6b9d9363 app-grid: Port to GTK 4 e0a8a452 folder-info: Port to GTK 4 3a63897e app-grid-folder-button: Port to GTK 4 53942573 app-grid-button: Port to GTk 4 652a64e0 app-grid-base-button: Port to GTK 4 025578ba lockscreen-bg: Port to GTK 4 b2ba5ef7 background: Port to GTK 4 6fe37fb3 fading-label: Port to GTK 4 8d730358 clamp: Port to GTK 4 8c2793d5 arrow: Port to GTK 4 0d09808d settings: Port to GTK 4 49b56354 brightness-settings: Port to GTK 4 c5637215 notification-banner: Port to GTK 4 2b52baed notification-frame: Port to GTK 4 ab8840b8 notification-content: Port to GTK 4 9e662ce7 timestamp-label: Port to GTK 4 13054e47 media-player: Port to GTK 4 22328b91 audio-settings: Port to GTK 4 b6a3d376 audio-device-row: Port to GTK 4 3bbb8d50 channel-bar: Port to GTK 4 480085b9 quick-settings: Port to GTK 4 e84d8538 plugin-loader: Port to GTK 4 9397f190 quick-settings-box: Port to GTK 4 e1d19142 quick-setting: Port to GTK 4 57425ec1 connectivity-info: Port to GTK 4 0a208b45 status-icon: Port to GTK 4 b06bcb88 status-icon: Drop icon-size property 9093adba feedback-status-page: Port to GTK 4 f9cdc14a bt-status-page: Port to GTK 4 4507f086 bt-device-row: Port to GTK 4 83267c66 wifi-status-page: Port to GTK 4 a1c1113b wifi-network-row: Port to GTK 4 dbeef700 status-page: Port to GTK 4 433b3ea6 status-page-placeholder: Port to GTK 4 42d9ce12 tree: Use GTK 4 and Adwaita REVERT: 62fde093 Merge branch 'rel-0.53.0' into 'main' REVERT: 08fb5f55 treewide: Document changes and release 0.53.0 REVERT: 078b70f8 Merge branch 'gvc' into 'main' REVERT: fca6c7b9 gvc: Update to latest upstream commit REVERT: 8ebf5690 Update Occitan translation REVERT: 57ee06b5 Update Brazilian Portuguese translation REVERT: 617cd925 Merge branch 'xdgp-phrosh' into 'main' REVERT: 0b9b65a1 portal: Use Rust based GUI variants by default REVERT: 5dada684 Merge branch 'rel-0.53_rc1' into 'main' REVERT: ffb544f4 treewide: Document changes and release 0.53~rc1 REVERT: 0e1ddae8 Merge branch 'fix-theme-set' into 'main' REVERT: 4cb254d0 style-manager: Set the correct css provider REVERT: 5d3e1a89 Merge branch 'track-missing-toplevels' into 'main' REVERT: f61bc362 overview: Remove splash if we never get a toplevel REVERT: 8a472695 toplevel-manager: Track launched apps REVERT: 20fa7a51 overview: Drop unused arguments from signal handler REVERT: b776dc5d toplevel-manager: Drop super-cautious checks REVERT: fde14e9a toplevel-manager: Modernize REVERT: c60a9a62 overview: Ignore missing activity REVERT: 81847921 Update Russian translation REVERT: aeed8ccd Merge branch 'mr-1868-fixup' into 'main' REVERT: 0f832d9f device-row: Fix indent REVERT: a2183867 device-row: Use 'alias' instead of 'name' for device display REVERT: 3140901c Update Cornish translation REVERT: d0174695 Update Turkish translation REVERT: 11faf8e3 Merge branch 'gvc' into 'main' REVERT: bc7371e9 gvc: Switch back to blessed repo REVERT: 20c534c2 Update Swedish translation REVERT: 9e20d3d6 Update Georgian translation REVERT: 742110a3 Update Slovenian translation REVERT: 8907c5fc Update Ukrainian translation REVERT: 38e633df Update Bulgarian translation REVERT: c123751b Merge branch 'doc-noti' into 'main' REVERT: ea9d6805 docs: Mention UsesNotifications REVERT: 07057f1c Update Romanian translation REVERT: 76cd9bcd Update Persian translation REVERT: c6307ac3 Merge branch 'i1280-plugin-prefs-open-new2' into 'main' REVERT: 9a56f3c8 caffeine-quick-setting: Allow to open prefs via mobile settings REVERT: 26fcdd72 util: Allow to open settings panel with additional parameters REVERT: 97740b11 top-panel: Make panel launching actions take parameters REVERT: 6de0c87e top-panel: Add a common parsing function for panel options REVERT: 03e6b0ad Merge branch 'polkit-more-details' into 'main' REVERT: 7c19b471 polkit-auth-prompt: Display more information about user REVERT: 82ccb1aa polkit-auth-prompt: Uncrustify REVERT: 3e1a3ff7 polkit-auth-agent: Uncrustify REVERT: 630409ee polkit-auth-prompt: Follow our coding style REVERT: 5239e552 pokit-auth-agent: Follow our coding style REVERT: 83e53dc2 Merge branch 'packaging' into 'main' REVERT: 68efe67a packaging: Update dependencies REVERT: 432260ca Merge branch 'brightness-gesture' into 'main' REVERT: 7fabf60b lockscreen: Use two finger swipe gesture for brightness REVERT: e79613ed lockscreen: Sort callbacks alphabetically REVERT: 9d5013a4 lockscreen: Use most concrete type for widget-box REVERT: 2df9648b lockscreen: Uncrustify REVERT: 44676370 brightness-manager: Skip brightenss update REVERT: 101746b9 Merge branch 'media-length' into 'main' REVERT: b680d91b media-player: Avoid nan when track length is empty REVERT: 59729218 Merge branch 'simplify-session' into 'main' REVERT: 001291d5 phosh-session: Use name variable REVERT: 59341a0e phosh-session: Avoid the extra shell exec REVERT: c08c0acd phosh-session: Drop disable-acceleration-check REVERT: 6a52749e Update Cornish translation REVERT: 6d476361 Add Cornish translation REVERT: c84e8c94 Update Bulgarian translation REVERT: 9625805e Merge branch 'splash-launch' into 'main' REVERT: 218b3fc7 activity: Use slightly rounded corners REVERT: 738ec45b activity: Render empty state only on drawing area REVERT: b590438e overview: Use light mode based on what the splash manager does REVERT: e3ec75e3 overview: Raise and lower launch splashs REVERT: a644a483 overview: Add splash manager REVERT: cd924e14 overview: Show activity for launching apps REVERT: daeba3f4 activity: Try harder to get an app-id REVERT: db6e4da5 activity: Disable swipe and close button while app is loading REVERT: d0492565 activity: Show spinner when we don't have a thumbnail REVERT: 092b3e3f overview: Use splash colors instead of fake app REVERT: 0e766a21 splash-manager: Allow to lower all splashs and to raise base on startup-id REVERT: c1f28f89 splash: Allow to lower/raise the splash REVERT: 363b832d swipe-tracker: Allow to disable swipes REVERT: f994cd89 shell: Allow to get splash manager REVERT: bfe04e06 shell: Create splash manager earlier REVERT: 7525900d activity: Use phosh_util_toggle_style_class consistently REVERT: d2386a98 activity: Just use `MIN` REVERT: f096cbf8 overview: Use most specific type for carousel REVERT: 924adf69 overview: Use common pattern for find_activity_by_toplevel() REVERT: f86a6215 overview: Fix indent REVERT: 775d6527 Update Norwegian Bokmål translation REVERT: ee3dba00 Merge branch 'volume-control' into 'main' REVERT: d761bcfa audio-devices: Use type REVERT: 87669cc7 channel-bar: Remove unused defines REVERT: 19dcbe67 audio-settings: Avoid pointless cast REVERT: 3a5db230 audio-settings: Avoid channel-bar casts REVERT: c12e7381 channel-bar: Rename source files REVERT: b5c4e2ab channel-bar: Use proper namespace REVERT: edc8cf89 audio-devices: Move out of settings REVERT: 9e555676 audio-settings: Use audio-devices and mixer control from audio-manager REVERT: f6da870b audio-manager: Manage audio devices REVERT: 6267962c Update German translation REVERT: b7857b37 Merge branch 'appinfo-exec' into 'main' REVERT: e78f73cd app-list-model: Allow app-info lookup by recently launched executable REVERT: 55f70e37 app-list-model: Fix indent REVERT: dd18f36d app-tracker: Fix indent REVERT: f6efb023 util: Fix indent REVERT: a3d0a04d Merge branch 'smooth-brightness' into 'main' REVERT: 67c7fa51 brightness-manager: Add auto-brightness offset REVERT: 284d2283 brightness-manager: Drop schema check REVERT: 62f06c2c brightness-manager: Add additional factor when night light is on REVERT: e137e9f5 monitor-manager: Add night light temperature property REVERT: a9bee469 brightness-manager: Smoothen brightness transition REVERT: 873d5c72 brightness-manager: Simplify ending the transition REVERT: 352ed50c backlight: Round backlight level REVERT: 3e1d71b3 brightness-manager: Use faster up interval REVERT: 714d2434 brightness-manager: Use _ID for schema consistently REVERT: 5f307c4b doc: Document missing plugin schema entries REVERT: c2a15a5f Merge branch 'noti-activate' into 'main' REVERT: e06a21fe notification: Activate applications when sending notifications REVERT: 2752e8ef util: Determine object path automatically REVERT: 7c83dded util: Make platform-data helpers public REVERT: cee7c70f util: Allow to activate without actions REVERT: 023f435f Merge branch 'run-schema' into 'main' REVERT: 0f5bb23b run: Use plugin_schema_path REVERT: 1c452318 Update Romanian translation git-subtree-dir: phosh git-subtree-split: 37d48c69b2414fb8b8f9cee19eae60a700c4c551
|
Important Review skippedToo many files! This PR contains 317 files, which is 17 over the limit of 300. To get a review, reduce the PR to 300 files or fewer by splitting it into smaller PRs or changing its base branch. Usage-priced reviews support at most 300 files. ⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Advanced Run ID: ⛔ Files ignored due to path filters (1)
📒 Files selected for processing (317)
You can disable this status message by setting the Comment |
|
| qr_matrix = g_byte_array_sized_new (total_size * total_size * pixel_size * BYTES_PER_R8G8B8); | ||
|
|
||
| for (column = 0; column < total_size; column++) | ||
| { | ||
| for (i = 0; i < pixel_size; i++) | ||
| { | ||
| for (row = 0; row < total_size / pixel_size; row++) | ||
| { | ||
| if (qrcodegen_getModule (qr_code, column, row)) | ||
| fill_pixel (qr_matrix, 0x00, pixel_size); | ||
| else | ||
| fill_pixel (qr_matrix, 0xff, pixel_size); | ||
| } | ||
| } | ||
| } | ||
|
|
||
| /* If subpixel size is big and margin is pretty small, | ||
| * increase the margin */ | ||
| if (pixel_size > 4 && padding < 12) { | ||
| pixel_size--; | ||
| padding = (size - qr_size * pixel_size) / 2; | ||
| } | ||
| bytes = g_byte_array_free_to_bytes (qr_matrix); | ||
|
|
||
| /* Now draw the black QR code pixels */ | ||
| cairo_set_source_rgba (cr, 0, 0, 0, 1); | ||
| for (int row = 0; row < qr_size; row++) { | ||
| for (int column = 0; column < qr_size; column++) { | ||
| if (qrcodegen_getModule (qr_code, row, column)) { | ||
| cairo_rectangle (cr, | ||
| column * pixel_size + padding, | ||
| row * pixel_size + padding, | ||
| pixel_size, pixel_size); | ||
| cairo_fill (cr); | ||
| } | ||
| } | ||
| } | ||
| texture = gdk_memory_texture_new (total_size, | ||
| total_size, | ||
| GDK_MEMORY_R8G8B8, | ||
| bytes, | ||
| total_size * BYTES_PER_R8G8B8); |
There was a problem hiding this comment.
For normal hotspot payloads, pixel_size is greater than one, so total_size exceeds qr_size. This loop passes column values up to total_size directly to qrcodegen_getModule(), although valid module coordinates stop at qr_size. Most reads therefore render white, and the oversized, column-major byte stream is displayed directly as the texture. The resulting hotspot credentials QR code is malformed and cannot be scanned.
| // FIXME Port to GTK 4 | ||
| // gtk_main_quit (); |
There was a problem hiding this comment.
SIGTERM and SIGINT schedule quit(), but this callback no longer stops a loop. The replacement GMainLoop is local to main() and remains blocked in g_main_loop_run(). Normal service shutdown therefore fades the shell but leaves the process running until the service manager times out or kills it.
| static void | ||
| phosh_channel_bar_finalize (GObject *object) | ||
| gvc_channel_bar_dispose (GObject *object) | ||
| { | ||
| PhoshChannelBar *self = PHOSH_CHANNEL_BAR (object); | ||
| gtk_widget_dispose_template (GTK_WIDGET (object), GVC_TYPE_CHANNEL_BAR); | ||
|
|
||
| G_OBJECT_CLASS (gvc_channel_bar_parent_class)->finalize (object); | ||
| } |
There was a problem hiding this comment.
Dispose calls parent finalizer
This dispose handler invokes the parent class's finalize method instead of dispose. When audio settings are torn down, the GtkBox/GtkWidget parent is finalized here and then finalized again when gvc_channel_bar_finalize() follows the normal chain, while parent disposal is skipped. This can corrupt memory or crash during ordinary widget destruction.
| static void | |
| phosh_channel_bar_finalize (GObject *object) | |
| gvc_channel_bar_dispose (GObject *object) | |
| { | |
| PhoshChannelBar *self = PHOSH_CHANNEL_BAR (object); | |
| gtk_widget_dispose_template (GTK_WIDGET (object), GVC_TYPE_CHANNEL_BAR); | |
| G_OBJECT_CLASS (gvc_channel_bar_parent_class)->finalize (object); | |
| } | |
| static void | |
| gvc_channel_bar_dispose (GObject *object) | |
| { | |
| gtk_widget_dispose_template (GTK_WIDGET (object), GVC_TYPE_CHANNEL_BAR); | |
| G_OBJECT_CLASS (gvc_channel_bar_parent_class)->dispose (object); | |
| } |
|
|
||
| if (priv->track_position > 0 && priv->track_length > 0) | ||
| level = ((double) priv->track_position) / priv->track_length; | ||
| level = priv->track_position >= 0 ? ((double) priv->track_position) / priv->track_length : 0.0; |
There was a problem hiding this comment.
When a gapless or not-yet-populated track reports a nonnegative position but a zero length, this calculation divides by zero and passes NaN or infinity to GtkProgressBar. Such tracks should display zero progress instead of an invalid fraction.
| level = priv->track_position >= 0 ? ((double) priv->track_position) / priv->track_length : 0.0; | |
| level = priv->track_position >= 0 && priv->track_length > 0 | |
| ? ((double) priv->track_position) / priv->track_length | |
| : 0.0; |
| SCHEMAS=( | ||
| "${ABS_BUILDDIR}/data:" | ||
| "${ABS_BUILDDIR}/plugins/launcher-box:" | ||
| "${ABS_BUILDDIR}/plugins/pomodoro-quick-setting" |
There was a problem hiding this comment.
The pomodoro schema directory lacks the trailing colon used by the surrounding entries. After the array is joined and spaces are removed, it is concatenated with the ticket-box directory into one nonexistent path. Running from the build tree can therefore fail to load either plugin because their GSettings schemas are missing.
| "${ABS_BUILDDIR}/plugins/pomodoro-quick-setting" | |
| "${ABS_BUILDDIR}/plugins/pomodoro-quick-setting:" |
Import Guido’s in-development Phosh GTK4 port at
37d48c69b2414fb8b8f9cee19eae60a700c4c551into thephosh/subtree above #186. This is the native dependency layer for #209;maincontinues GTK3 stable releases. Remaining migration work is tracked in #215.Preserve the
git subtree --squashimport and side-parent history, retain downstream static-resource registration, and pin gvc/libcall-ui to the validated revisions. Separate downstream commits fix the emergency dialog’s GtkPlain construction and lifecycle: provide the shortcut-manager interface required by mnemonic controls, unparent the modal template child during disposal, and destroy modal/power layer surfaces through their actual surface API. The generic widget-destruction helper remains unchanged because converting every shell path also requires ownership fixes.#209 carries the regenerated bindings, application migration, custom GTK environment, and CI/release isolation. This layer alone retains GTK3 Rust bindings, so build the complete GTK4 application at #209. Both GTK4 layers remain draft; the lower GTK3 layers can land independently.
Validation: diff confined to
phosh/; includes published #186 tip15707636. The complete #209 tree passes dynamic and embedded all-target builds, strict Clippy and Phoc suites, including the restored outgoing/incoming emergency test. Rust/C size/alignment and constant checks pass, and the final native CI image builds locally. The matching image is published, and both system and bundled build/test jobs pass remotely at #209 head9787b781. Error-dialog and broader shell disposal/cursor assumptions remain tracked in #215.Land/restack with merge commits that preserve subtree parents and
git-subtree-*trailers; do not use GitHub squash/rebase merging.