On Mon, 13 Apr 2020 at 04:07, Youssef A. Abukwaik <youssef.ad...@gmail.com>
wrote:

> Ops! I had already pushed a release before I received your response -
> about two hours earlier in fact. The good news is that it is pretty stable
> and given the underlying libraries condition, it is better than the
> previous macOS release. I guess we're about to get about 200k of testers
> for an unstable release. It would be great if you can make an unstable
> release that I can match indeed, but note that this current release is
> working for most use cases and is performing well as far as I can tell.
> We'll see if users start reporting anything out of the ordinary.
>

I'll try to do that this weekend coming!


> As for upstream help, I have two things that can make life easier for me:
> 1. Hooks: Mainly for MeldApp & MeldWindow -
>    post_init, (MeldApp, MeldWindow)
>    will_become_visible, did_become_visible, (MeldWindow)
>    menu_items_changed
>    post_destroy & pre_destroy (MeldApp, MeldWindow)
> This would cleanup the code considerably. I don't like how my code looks
> one bit at the moment.
>

I've just spent some time checking out the diff to master, and I think I
can see some possible hook points... but also I feel like we might be able
to do this more cleanly if you were able to cleanly subclass MeldApp and
MeldWindow for the customisations. I feel like MeldApp should probably be
subclassable as-is (though obviously I haven't tried) and that would be
much easier to merge upstream.

MeldWindow is a little tricky because of the limitations of GtkTemplate in
Python. I *think* I could create some kind of MeldWindowBase subclass and
have MeldWindow be just:

@Gtk.Template(resourcepath)
class MeldWindow(MeldWindowBase):
    ...

which would then make it a bit easier for you to do some of  the
OSX-specific overrides. If you think this makes sense, let me know and I'll
take a look at the details.

Regarding some of the specific hooks:
  * post_init: pretty easy to do I think, but I also feel like subclassing
here might be a better option
  * will_become_visible, did_become_visible: I don't think there's any way
of doing this with GTK+, unless you want these on first visibility, in
which case I would look at subclass + overriding do_realize(). I'm happy to
add that hook if overriding do_realize in the subclass ends up being messy
though.
  * menu_items_changed: we don't actually change menus any more, because
without GtkUIManager (which is deprecated and has several long-standing
issues) we'd have to roll our own menu state handling or pick up another
library.
  * post_destroy & pre_destroy: I'm not sure whether this is possible in
GTK+ lifecycle, but maybe we can figure out what hooks could actually be
provided to help you.

2. This is perhaps a discussion rather than request. For UI files, do you
> think it would be better if I create a different UI file for any
> customization (which are usually small) or would it be better if we pass a
> variable from the application and include conditional statements within the
> ui file?
>

I'm not sure whether you mean actual `widget.ui` files here, or Python
files in the `ui` subpackage. Looking at the branch, there's not much of
either. I feel like the statusbar change should *probably* be doable with a
platform-specific CSS change; shipping OSX-specific CSS should be fairly
easy and I'm happy to help with those hooks.

For the UI file changes like appwindow.ui, it depends. I think that
customisations like showing the window manager buttons are doable (and
probably easier to handle) in code. Having the additional menu definitions
is more difficult, and I think should probably be broken out to its own UI
file.

cheers,
Kai
_______________________________________________
meld-list mailing list
meld-list@gnome.org
https://mail.gnome.org/mailman/listinfo/meld-list

Reply via email to