Random thoughts/suggestions/questions #74

Open
opened 2025-12-08 17:51:20 +01:00 by desbeers · 14 comments

I think my application is in a pretty good state!

Here just some random notes that I collected over the weeks...

Double vs Int

SwiftUI is using Double for a lot of stuff. .frame, .padding etc. GTK does not. When calculating sizes I have to Int them. Could there be an overload for Double?

Paddings

We can use .padding() or .padding(10, .leading) but not .padding(.leading). The default is 10 and a new overload with just the edge should give 10.

I like that, because if the default will change, the overload will do as well.

FlowBox

I use a FlowBox to display chord variations. Even though I don’t have a selection-binding, I can still select elements. I was expecting a plain view. I have to add selection: nil specifically. A small detail.

EitherView

This View seems to loose the state of its Bindings when switching? I use a direct if/else now. I have more issues with Bindings. They don’t aways bound.

ForEach

It would be nice to have the homogeneous function added to this struct. GTK_BOX supports it. I bluntly copied the struct, renamed it and added it. Works like a charm!

Its widgets+grid in my source.

Conditional CSS

I can’t use a conditional css declaration:

.style(correct ? .green : .red)

If correct (a Bool) is changed; the style does not. It seems GTK does not update the style for some reason.

(I use Enums for style definitions, an extension, I love Enums!)

View ID’s

To force SwiftUI to refresh a View, I can give it an unique ID:

.id(chord.definition)

So it forgets the previous version. GTK has the memory of a dinosaur, haha! Is it possible to do something like that?

Reason: when a chord is changed and I look at its diagram, I see the old version for a moment.

Performance

While all working well; my application becomes sluggish when opening a very long song. After I close the song and open a short new one, it is still sluggish. I’m not familiar with GTK but it seems to ‘remember’ a lot of stuff :-)

I tried to Debounce the parsing of a song, but so far no luck. Investigating...

Any suggestions?

Document based

To be able to open song document from Files I have a smelly hack... Every instance of Chord Provider has an unique ID. This is smelly (and I can’t use the sqlite storage). But it works.

Custom widgets

Learned a lot about the internals of swift-adwaita and GTK. Even a bit of C :-) Wrote some custom stuff...

Chord Diagrams and strum patterns

I’m very proud of them! Draw them with cairo. But, to be honest, did that with ‘try and error’...

Columns

I use adw_wrap_box to show a song in columns. It would be nice to have that widget in your package :-)

Pictures

Two custom widgets to display images from the application bundle. Hacked code; still learning GTK stuff...

Empty

Sometimes I like to show nothing; like when going to all enum cases. I’ve added an empty AdwaitaView. Seems to work well but feels smelly...

Like SwiftUIs EmptyView()

All in all

It is great fun to use your swift-adwaita and I’m still surprised how well it works with my previous SwiftUI knowledge.

I want to release a flatpak soonish. My main concerns are that the application can become sluggish and my documents hack.

And for later:

  • Make the editor more fancy (I use GtkSourceView).
  • Write a makefile to make a macOS package. I maintain the macOS version of the official ChordPro implementation and wrote a Swift wrapper for that.
  • Learn internals from GTK.
  • Learn Git so I can contribute code to your project. Still a Github Desktop user...

Are there any other Open Source projects based on your project?

I think [my application](https://github.com/Desbeers/Chord-Provider) is in a pretty good state! Here just some random notes that I collected over the weeks... ## Double vs Int `SwiftUI` is using Double for a lot of stuff. `.frame`, `.padding` etc. GTK does not. When calculating sizes I have to `Int` them. Could there be an overload for `Double`? ## Paddings We can use `.padding()` or `.padding(10, .leading)` but not `.padding(.leading)`. The default is 10 and a new overload with just the *edge* should give 10. I like that, because if the default will change, the overload will do as well. ## FlowBox I use a `FlowBox` to display chord variations. Even though I don’t have a selection-binding, I can still select elements. I was expecting a *plain* view. I have to add `selection: nil` specifically. A small detail. ## EitherView This View seems to loose the state of its `Bindings` when switching? I use a direct `if/else` now. I have more issues with `Bindings`. They don’t aways *bound*. ## ForEach It would be nice to have the `homogeneous` function added to this struct. GTK_BOX supports it. I bluntly copied the `struct`, renamed it and added it. Works like a charm! Its `widgets+grid` in my source. ## Conditional CSS I can’t use a conditional css declaration: `.style(correct ? .green : .red)` If `correct` (a Bool) is changed; the style does not. It seems GTK does not update the style for some reason. (I use `Enums` for style definitions, an extension, I love `Enum`s!) ## View ID’s To *force* `SwiftUI` to refresh a View, I can give it an unique ID: `.id(chord.definition)` So it forgets the previous version. GTK has the memory of a dinosaur, haha! Is it possible to do something like that? Reason: when a chord is changed and I look at its diagram, I see the old version for a moment. ## Performance While all working well; my application becomes sluggish when opening a very long song. After I close the song and open a short new one, it is still sluggish. I’m not familiar with GTK but it seems to ‘remember’ a lot of stuff :-) I tried to `Debounce` the parsing of a song, but so far no luck. Investigating... Any suggestions? ## Document based To be able to open song document from `Files` I have a smelly hack... Every instance of *Chord Provider* has an unique ID. This is smelly (and I can’t use the sqlite storage). But it works. ## Custom widgets Learned a lot about the internals of `swift-adwaita` and `GTK`. Even a bit of `C` :-) Wrote some custom stuff... ### Chord Diagrams and strum patterns I’m very proud of them! Draw them with `cairo`. But, to be honest, did that with ‘try and error’... ### Columns I use `adw_wrap_box` to show a song in columns. It would be nice to have that widget in your package :-) ### Pictures Two custom widgets to display images from the application bundle. Hacked code; still learning `GTK` stuff... ### Empty Sometimes I like to show nothing; like when going to all `enum` cases. I’ve added an empty `AdwaitaView`. Seems to work well but feels smelly... Like `SwiftUI`s `EmptyView()` ## All in all It is great fun to use your `swift-adwaita` and I’m still surprised how well it works with my previous `SwiftUI` knowledge. I want to release a `flatpak` soonish. My main concerns are that the application can become sluggish and my `documents` hack. And for later: - Make the editor more fancy (I use GtkSourceView). - Write a `makefile` to make a macOS package. I maintain the macOS version of the official ChordPro implementation and wrote a `Swift` wrapper for that. - Learn internals from `GTK`. - Learn `Git` so I can contribute code to your project. Still a `Github Desktop` user... Are there any other Open Source projects based on your project?
david-swift referenced this issue from a commit 2025-12-30 15:15:13 +01:00
Owner

Thanks for the suggestions (and sorry for my late answer)!

Double vs Int

I see your point, however, as GTK uses integers everywhere, I don't think it makes a lot of sense to add "implicit" double conversion to specific parts of Adwaita for Swift.

EitherView

Thanks for reporting! Could you maybe provide an example for bindings that do not work, as I haven't experienced this. Actually, I would recommend using if/else directly, as this gets mapped to an EitherView behind the scenes.

Performance

There might be some issue with a widget not freeing the memory of its children correctly or something similar. However, I couldn't find the exact problem. Using the newly added id modifier to completely erase and rebuild the preview when switching to a new song might be the best solution for now.

Document based

I can't help you with that unfortunately 😅

and I can’t use the sqlite storage

This is something I plan to change quite a bit in order to make it more "sqlitey" (maybe based on Point-Free's sqlite-data once Linux support is fixed) anyways :)


Congratulations on how your app looks and feel, I really like it! It got very sophisticated very fast :)

Empty

I think this is a perfectly valid alternative to SwiftUI's EmptyView. It is equivalent to [] or VStack { }.


Are there any other Open Source projects based on your project?

Not too many. Here are some I found:

Thanks for the suggestions (and sorry for my late answer)! > Double vs Int I see your point, however, as GTK uses integers everywhere, I don't think it makes a lot of sense to add "implicit" double conversion to specific parts of Adwaita for Swift. > EitherView Thanks for reporting! Could you maybe provide an example for bindings that do not work, as I haven't experienced this. Actually, I would recommend using `if`/`else` directly, as this gets mapped to an `EitherView` behind the scenes. > Performance There might be some issue with a widget not freeing the memory of its children correctly or something similar. However, I couldn't find the exact problem. Using the newly added `id` modifier to completely erase and rebuild the preview when switching to a new song might be the best solution for now. > Document based I can't help you with that unfortunately 😅 > and I can’t use the sqlite storage This is something I plan to change quite a bit in order to make it more "sqlitey" (maybe based on Point-Free's sqlite-data once Linux support is fixed) anyways :) --- Congratulations on how your app looks and feel, I really like it! It got very sophisticated very fast :) > Empty I think this is a perfectly valid alternative to SwiftUI's `EmptyView`. It is equivalent to `[]` or `VStack { }`. --- > Are there any other Open Source projects based on your project? Not too many. Here are some I found: - https://github.com/alfianlosari/GTKChatGPT - https://github.com/AlidadeMC/cubiomeskit (which I couldn't build on my machine) - https://sr.ht/~jak2k/Motivation/ - https://github.com/david-swift/Memorize (my own project)
Author

Happy new year David!

Thanks for your commits. I’ve updated my source.

Double vs Int

I see your point, however, as GTK uses integers everywhere, I don't think it makes a lot of sense to add "implicit" double conversion to specific parts of Adwaita for Swift.

Why not? Just round the double? Just a convenient init? Or am I missing something?

EitherView

Thanks for reporting! Could you maybe provide an example for bindings that do not work, as I haven't experienced this. Actually, I would recommend using if/else directly, as this gets mapped to an EitherView behind the scenes.

Yeh, I should make a sample application with my issues. I’ll do that; easier to debug. if/else is working fine.

Performance

There might be some issue with a widget not freeing the memory of its children correctly or something similar. However, I couldn't find the exact problem. Using the newly added id modifier to completely erase and rebuild the preview when switching to a new song might be the best solution for now.

Problem is (was) on my side. My custom widgets (especially for chord diagrams) was leaking. C is new to me and not as forgiven as Swift. I think its better now.

However, using the id modifier is often smelly coding :-) Learned that in my SwiftUI days. I use it now for inline chord diagrams (small stuff) and the rendering of the song with its own unique ID.

GTKSourceView still becomes sluggish sometimes even thought I rewrote it completely. Work in progress!

Talking about that; I pushed swift-adwaita to the limits I think. So cool! The editor has its controller with a lot of fancy stuff. Bridging it all! Snippets, markers, autocomplete brackets. Passing chances and line numbers back to Swift`.

Document based

I can't help you with that unfortunately 😅

I think its fine how I do it now. Not natural on macOS but ok on Linux.

and I can’t use the sqlite storage

This is something I plan to change quite a bit in order to make it more "sqlitey" (maybe based on Point-Free's sqlite-data once Linux support is fixed) anyways :)

My struct saving is ok for now. It would be nice if your change does not involve an external package. An not the ID of the application because I misuse that a bit, haha!

Next

Congratulations on how your app looks and feel, I really like it! It got very sophisticated very fast :)

Thanks! Next I have to find-out how to add it to flathub once I got my last issues solved. Details are important for me:

  • Clean and well documented code
  • My Swift code is pretty ok; I know what I’m doing :-)
  • My C code works by good luck; it is a mess...
  • I don’t want crashes (looking at you C!)
  • A pleasant user experience

It will be soon a true Swift application build for Gnome!

Very cool :-)

Happy new year David! Thanks for your commits. I’ve updated my source. # Double vs Int > I see your point, however, as GTK uses integers everywhere, I don't think it makes a lot of sense to add "implicit" double conversion to specific parts of Adwaita for Swift. Why not? Just round the double? Just a convenient init? Or am I missing something? # EitherView > Thanks for reporting! Could you maybe provide an example for bindings that do not work, as I haven't experienced this. Actually, I would recommend using if/else directly, as this gets mapped to an EitherView behind the scenes. Yeh, I should make a sample application with my issues. I’ll do that; easier to debug. `if/else` is working fine. # Performance > There might be some issue with a widget not freeing the memory of its children correctly or something similar. However, I couldn't find the exact problem. Using the newly added id modifier to completely erase and rebuild the preview when switching to a new song might be the best solution for now. Problem is (was) on my side. My custom widgets (especially for chord diagrams) was leaking. `C` is new to me and not as forgiven as `Swift`. I think its better now. However, using the `id` modifier is often *smelly* coding :-) Learned that in my `SwiftUI` days. I use it now for *inline* chord diagrams (small stuff) and the rendering of the song with its own unique ID. GTKSourceView still becomes sluggish sometimes even thought I rewrote it completely. Work in progress! Talking about that; I pushed `swift-adwaita` to the limits I think. So cool! The editor has its *controller* with a lot of fancy stuff. Bridging it all! Snippets, markers, autocomplete brackets. Passing chances and line numbers back to Swift`. # Document based > I can't help you with that unfortunately 😅 I think its fine how I do it now. Not *natural* on *macOS* but ok on *Linux*. # and I can’t use the sqlite storage > This is something I plan to change quite a bit in order to make it more "sqlitey" (maybe based on Point-Free's sqlite-data once Linux support is fixed) anyways :) My `struct` saving is ok for now. It would be nice if your change does not involve an external package. An not the ID of the application because I misuse that a bit, haha! # Next > Congratulations on how your app looks and feel, I really like it! It got very sophisticated very fast :) Thanks! Next I have to find-out how to add it to `flathub` once I got my last issues solved. Details are important for me: - Clean and well documented code - My `Swift` code is pretty ok; I know what I’m doing :-) - My `C` code works by *good luck*; it is a mess... - I don’t want crashes (looking at you `C`!) - A pleasant user experience It will be soon a true `Swift` application build for Gnome! Very cool :-)
Author

While coding my next challenge: adding a chord definition dialog, I found a couple of new issues/ideas to keep you entertained...
ChordDefinitions.png

CSS

  • It looks to me the .css AnyView modifier will always add the style because it is not storing its new value when there is a new String.
  • The .css modifier is called many (many, many, many times) even thought it is only added in the Main View.
  • It will always add a new provider instead of replacing the old one. I don’t know how GTK is dealing with it; merging?
  • When I change from light to dark (and visa versa) the style does not change. It needs a View refresh. I tried real hard to debug. In The GTK Inspector its working well.
  • Same for css dark mode declarations. The declarations are completely ignored... But not in the GTK Inspector.

So I changed my code to do its own css handing with a notification on theme change. Smelly as usual :-) You know where to find my code for review.

AnyView extensions

Added some simple extensions:

  • Make a round button:

      extension AnyView {
    
      /// Make a button or similar widget use round appearance.
      /// - Parameter active: Whether the style is currently applied.
      /// - Returns: A view.
      public func round(_ active: Bool = true) -> AnyView {
          style("round", active: active)
      }
      }
    
  • Use orientation to make a widget vertical.

      extension AnyView {
    
      public func vertical() -> AnyView {
          inspect { storage, updateProperties in
              gtk_orientable_set_orientation(storage.opaquePointer, GTK_ORIENTATION_VERTICAL)
          }
      }
      }
    

Override ToggleGroup

Yeh, this might be very specific for my needs but I brutally copied ToggleGroup to adjust it. See screenshot. Problem is that I cannot just add another extension (Like your ToggleGroup+) because the auto-generated appearFunctions and updateFunctions in ToggleGroup are not public. Should they be public? Then I can add extensions to my needs and maybe contribute them back when not too specific?

Your ToggleGroup+ is very strict about having Self as ID while I use description, requiring conformance to CustomStringConvertible.

ID

In a SwiftUI ForEach, I can make a ID self:

ForEach(Chord.BaseFret.allCases, id: \.self) { value in
    Text(value.description)
        .tag(value)
}

That would save a lot of code! Now I have to wrap a lot of stuff.

All in all, progress!

While coding my next challenge: adding a `chord definition dialog`, I found a couple of new issues/ideas to keep you entertained... ![ChordDefinitions.png](/attachments/dfd8ec32-2aa1-4cd2-a80f-edbb423cf70f) # CSS - It looks to me the `.css` `AnyView` modifier will *always* add the style because it is not storing its new value when there is a new String. - The `.css` modifier is called many (many, many, many times) even thought it is only added in the `Main View`. - It will always add a new `provider` instead of replacing the old one. I don’t know how GTK is dealing with it; merging? - When I change from `light` to `dark` (and visa versa) the style does not change. It needs a `View` refresh. I tried *real hard* to debug. In The *GTK Inspector* its working well. - Same for `css dark mode` declarations. The declarations are completely ignored... But not in the *GTK Inspector*. So I changed my code to do its own `css` handing with a notification on *theme change*. Smelly as usual :-) You know where to find my code for review. # AnyView extensions Added some simple extensions: - Make a round button: extension AnyView { /// Make a button or similar widget use round appearance. /// - Parameter active: Whether the style is currently applied. /// - Returns: A view. public func round(_ active: Bool = true) -> AnyView { style("round", active: active) } } - Use `orientation` to make a widget *vertical*. extension AnyView { public func vertical() -> AnyView { inspect { storage, updateProperties in gtk_orientable_set_orientation(storage.opaquePointer, GTK_ORIENTATION_VERTICAL) } } } # Override `ToggleGroup` Yeh, this might be very specific for my needs but I brutally copied `ToggleGroup` to adjust it. See screenshot. Problem is that I cannot just add another extension (Like your `ToggleGroup+`) because the auto-generated `appearFunctions` and `updateFunctions ` in `ToggleGroup` are not *public*. Should they be *public*? Then I can add extensions to my needs and maybe contribute them back when not *too* specific? Your `ToggleGroup+` is very strict about having *Self* as ID while I use *description*, requiring conformance to *CustomStringConvertible*. # ID In a SwiftUI `ForEach`, I can make a ID *self*: ForEach(Chord.BaseFret.allCases, id: \.self) { value in Text(value.description) .tag(value) } That would save a lot of code! Now I have to wrap a lot of stuff. All in all, progress!
Author

Well, learned new stuff again!

Made my code much more Swifty...

  • Use storage.notify(..) for style changes.
  • Use Swift classes to pass data to C functions without conversion.

With the new knowledge I will update the GTKSourceView code (that is already not sluggish anymore) and then it should be ready for a release :-)

Fun!

Well, learned new stuff again! Made my code much more *Swifty*... - Use `storage.notify(..)` for style changes. - Use `Swift` classes to pass data to `C` functions without conversion. With the new knowledge I will update the `GTKSourceView` code (that is already not sluggish anymore) and then it should be ready for a release :-) Fun!
Owner

Well, happy new year (a month later, sorry) 🎉

I'm so excited about your project and it's amazing to see the rapid progress!

Thanks for the updates and suggestions/reports!

It will always add a new provider instead of replacing the old one. I don’t know how GTK is dealing with it; merging?

Oh this was very bad! Thanks for noticing, this is fixed by now :)

The .css modifier is called many (many, many, many times) even thought it is only added in the Main View.

I can't reproduce this?

So I changed my code to do its own css handing with a notification on theme change. Smelly as usual :-) You know where to find my code for review.

I spent some hours experimenting and researching, and I couldn't get it working with CSS only :(

Should they be public? Then I can add extensions to my needs and maybe contribute them back when not too specific?

I introduced the Swift package trait exposeGeneratedAppearUpdateFunctions to do exactly that, so you can activate this trait and interact with those properties.

Also, I restructured quite some logic of this package yesterday, so if you find something suddenly not working, please report!

An not the ID of the application because I misuse that a bit, haha!

You can actually overwrite this behavior:

import MetaSQLite

@main
struct Demo: App {

    let app = AdwaitaApp(id: "io.github.AparokshaUI.Demo")

    init() {
        DatabaseInformation.setPath(AdwaitaApp.userDataDir().appendingPathComponent("xyz.sqlite").path)
    }
    
    var scene: Scene {
    
// ...

But MetaSQLite will definitely see some changes at some point...


Next, I will look into the id stuff (I'll probably add keypaths) and I definitely see your double/int point, so I'll find a solution for this as well :)

Well, happy new year (a month later, sorry) 🎉 I'm so excited about your project and it's amazing to see the rapid progress! Thanks for the updates and suggestions/reports! > It will always add a new provider instead of replacing the old one. I don’t know how GTK is dealing with it; merging? Oh this was very bad! Thanks for noticing, this is fixed by now :) > The .css modifier is called many (many, many, many times) even thought it is only added in the Main View. I can't reproduce this? > So I changed my code to do its own css handing with a notification on theme change. Smelly as usual :-) You know where to find my code for review. I spent some hours experimenting and researching, and I couldn't get it working with CSS only :( > Should they be public? Then I can add extensions to my needs and maybe contribute them back when not too specific? I introduced the Swift package trait `exposeGeneratedAppearUpdateFunctions` to do exactly that, so you can activate this trait and interact with those properties. Also, I restructured quite some logic of this package yesterday, so if you find something suddenly not working, please report! > An not the ID of the application because I misuse that a bit, haha! You can actually overwrite this behavior: ```swift import MetaSQLite @main struct Demo: App { let app = AdwaitaApp(id: "io.github.AparokshaUI.Demo") init() { DatabaseInformation.setPath(AdwaitaApp.userDataDir().appendingPathComponent("xyz.sqlite").path) } var scene: Scene { // ... ``` But MetaSQLite will definitely see some changes at some point... --- Next, I will look into the id stuff (I'll probably add keypaths) and I definitely see your double/int point, so I'll find a solution for this as well :)
Author

Thanks for the updates David!

I've updated the packages and a quick looks showed me my application still works well :-) Going to update my code with the new stuff and I will report back.

Only thing; it does not compile under macOS anymore because the CSQLite package cannot be resolved on that platform.

I looked at https://github.com/stephencelis/CSQLite/blob/master/Package.swift and it does not have:

platforms: [.macOS(.v13), .iOS(.v13), .tvOS(.v13), .watchOS(.v6), .macCatalyst(.v13)],

On Linux, all is fine.

Thanks for the updates David! I've updated the packages and a quick looks showed me my application still works well :-) Going to update my code with the new stuff and I will report back. Only thing; it does not compile under macOS anymore because the `CSQLite` package cannot be resolved on that platform. I looked at `https://github.com/stephencelis/CSQLite/blob/master/Package.swift` and it does not have: platforms: [.macOS(.v13), .iOS(.v13), .tvOS(.v13), .watchOS(.v6), .macCatalyst(.v13)], On Linux, all is fine.
Owner

Thanks! I think it should work now on macOS as well (I'm writing from Linux, so I'd be glad if you could confirm this). The SQLite.swift project has undergone some major changes recently.

Thanks! I think it should work now on macOS as well (I'm writing from Linux, so I'd be glad if you could confirm this). The SQLite.swift project has undergone some major changes recently.
Author

Yes, all fine on macOS now as well!

Yes, all fine on macOS now as well!
Owner

I added support for keypaths throughout the whole package, so now e.g. toggle groups are much more flexible (see https://git.aparoksha.dev/aparoksha/adwaita-swift/src/branch/main/Sources/Demo/ToggleGroupDemo.swift). So you probably won't have to write an extension for ToggleGroup anymore :)

I added support for keypaths throughout the whole package, so now e.g. toggle groups are much more flexible (see https://git.aparoksha.dev/aparoksha/adwaita-swift/src/branch/main/Sources/Demo/ToggleGroupDemo.swift). So you probably won't have to write an extension for `ToggleGroup` anymore :)
Author

I added support for keypaths throughout the whole package

That's great! Updated my 'easy' Enums and it works like a charm without ToggleGroup extensions.

I introduced the Swift package trait exposeGeneratedAppearUpdateFunctions to do exactly that

I tried to update my custom MyToggleGroup+ override and while appear and update are available now, the init() from the base (generated) ToggleGroup is not because that is still internal. Could that also be added to the trait?

I think (didn't try yet) I can replace my whole custom implementation with the keypath init; but it would still be nice to have the applicability to add custom extensions to all the generated base Structs :-)

>> I added support for keypaths throughout the whole package That's great! Updated my 'easy' Enums and it works like a charm without `ToggleGroup` extensions. >> I introduced the Swift package trait exposeGeneratedAppearUpdateFunctions to do exactly that I tried to update my custom `MyToggleGroup+` override and while *appear* and *update* are available now, the `init()` from the base (generated) `ToggleGroup` is not because that is still internal. Could that also be added to the trait? I think (didn't try yet) I can replace my whole custom implementation with the keypath init; but it would still be nice to have the applicability to add custom extensions to all the generated base Structs :-)
Author

While updating my code I found-out that the Preferences dialog is partly broken now (it was fine) when you have more than one page. I've added a second page in the Demo app and in the tabs is shows a broken image and no title:

Preferences.png

The tabs itself are still working well.

While updating my code I found-out that the Preferences dialog is partly broken now (it was fine) when you have more than one page. I've added a second page in the Demo app and in the tabs is shows a broken image and no title: ![Preferences.png](/attachments/f163c824-71f6-4a1b-a323-2e0f57239597) The tabs itself are still working well.
Author

An not the ID of the application because I misuse that a bit, haha!

You can actually overwrite this behavior:

Thanks for the tip! I use sqlite now for settings storage :-)

>> An not the ID of the application because I misuse that a bit, haha! > You can actually overwrite this behavior: Thanks for the tip! I use sqlite now for settings storage :-)
Author

While updating my code I found-out that the Preferences dialog is partly broken now

Found one more issue with the Preferences; search is broken now too. Initial, the Window is empty, except some shadow, and when you enter a search it shows No Results Found. This is both for a Preference dialog with tabs as well a single page.

You can see the behaviour in the Demo app as well.

> While updating my code I found-out that the Preferences dialog is partly broken now Found one more issue with the Preferences; search is broken now too. Initial, the Window is empty, except some shadow, and when you enter a search it shows *No Results Found*. This is both for a Preference dialog with tabs as well a single page. You can see the behaviour in the Demo app as well.
Owner

Should work now - thanks for the report :)

Should work now - thanks for the report :)
Sign in to join this conversation.
No Milestone
2 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: aparoksha/adwaita-swift#74
No description provided.