On Tue, 1 Oct 2019 at 11:33, Youssef A. Abukwaik via meld-list <[email protected]> wrote: > During the past three weeks, I have struggled with bringing the Mac build to > sync up with upstream. JHBuild has significantly changed. Meld has also > significantly changed. I'm not complaining about either, but I am seriously > complaining when it comes to GTK. GTK on Mac is way behind. The stable > GTK/quartz implementations is slow, incomplete and has some significant > issues. The git GTK/quartz does not even compile.
I thought that GNOME had moved away from jhbuild, but checking now I see that the gtk-osx project is still using it (according to https://gitlab.gnome.org/GNOME/gtk-osx), and looks like they're still maintaining independent module sets, so that at least is good. > 1. GTKHeaderBar - Meld has moved to borderless window and by using > GTKHeaderBar, the window controls (min/max/close) are now embedded > within the header bar. GTK implementation sets the flag > GDK_QUARTZ_BORDERLESS_WINDOW in gdkwindow-quartz.c, however, it never > sets the flag GDK_QUARTZ_MINIATURIZABLE_WINDOW. I'm unable to minimize > the app window! Take a look at this: > https://github.com/yousseb/meld/blob/master/meld/macwindow.py#L264 I realise that this is side-stepping the problem slightly, but maybe we could consider special handling for the OSX build that reparents the header bar so that we're no longer using the borderless/client side decoration window? This could be as simple as: @@ -60,6 +60,10 @@ class MeldWindow(Gtk.ApplicationWindow): def __init__(self): super().__init__() + header_bar = self.get_titlebar() + self.set_titlebar(None) + self.appvbox.pack_start(header_bar, False, True, 0) + # Manually handle GAction additions I notice that your branch is using Gtk.UIManager. Migrating away from this to GActions is one of the huge changes in our current master branch. I'm not saying that your window class needs to match, but it might be easier in the future if it does so. Also, we don't have a menu bar option at all at the moment, mostly because I had thoroughly burnt out by the time I finished the GAction + GtkHeaderBar transition. I think maintaining a GAction-based menubar option probably makes sense for the OSX (and maybe Windows?) ports. > 2. Fullscreen mode: With the borderless window, I have big gaps around > the app from all sides.. It's much better to maximize instead of > entering full screen! > > 3. Fullscreen mode: To top it off, GTK cannot tell that it has entered > fullscreen mode on quartz. is_full = window_state & > Gdk.WindowState.FULLSCREEN is never true on GTK/quartz even if the app > is really in fullscreen These two definitely feel like outright GTK bugs that should be reported. Having said this, Meld's current fullscreen behaviour is actually very bad - we don't reparent the header bar and end up with no UI and no obvious way to exit fullscreen. I doubt that fixing that would fix the issues you've found however. > 4. I was hoping to be able to use GTK with vulkan > (https://vulkan.lunarg.com) in order to speed things up. Vulkan is only > available in the git version (3.96) of GTK and the quartz backend does not > build. This is very disappointing because the GTK/quartz rendering is slow > right now (especially with the new borderless window which adds RGBA flag - > A being the issue here - to the main window making it report that > isOpaque = false to the OS) Meld doesn't currently support GTK 4, and honestly I'm not sure when it will. The experience of maintaining Meld during the GTK 3.x series with constant toolkit breakages was unspeakably awful, and I have no reason to believe that the GTK 4 series is going to be any different. In other words, I wouldn't be trying to get GTK 4 to compile right now... let's see if we can figure out another way around the rendering issues. > I should probably take this post to the GTK mailing list, but I spent > a significant amount of hours trying to get Meld working on Mac during > the past three weeks that I just had to give you guys an idea of what's > been happening on the Mac side. I can probably get GTK 3.96 to build > on Mac and create a patch. I'll give it a shot over the next weekend. Thanks for the update. If you do try to take some of these issues to GTK, the mailing list is now actually a Discourse instance at https://discourse.gnome.org/. While it's great that you're trying to update to Meld's master branch, that branch is also still changing a fair bit. I'm getting used to the new UI, but there are several parts of it that I'm not yet happy with. If the recent changes end up being too much for you to migrate easily, I do suspect that our 3.20 branch will be maintained for a fair while. If I can help out with the (as you say, very significant) changes, then let me know. I still don't really have access to an OSX machine to help out (and don't have the spare time anyway) but I'd like your project to continue to be available for OSX users. cheers, Kai _______________________________________________ meld-list mailing list [email protected] https://mail.gnome.org/mailman/listinfo/meld-list
