[GNC-dev] Debugging for Bug 797236 g_closure_invoke problem

jean laroche ripngo at gmail.com
Wed Apr 1 01:36:44 EDT 2020


I don't have an idea for you but in my experience trying to follow the 
gtk calls leads nowhere.
You have to see how the path gets set in the calls where it's not NULL 
(by going up the stack) and see why that's not the case when it's NULL.

J.


On 3/31/2020 9:29 PM, Chris Good wrote:
> Hi Devs,
>
>   
>
> I'd appreciate some help if possible please.
>
>   
>
> In maint, in src/gnucash/gnome/reconcile-view.c
> gnc_reconcile_view_refresh(), now:
>
>   
>
> void
>
> gnc_reconcile_view_refresh (GNCReconcileView *view)
>
> {
>
>      GNCQueryView *qview;
>
>      GtkTreePath *cursor_path=NULL;
>
>      GtkTreeViewColumn *cursor_col;
>
>   
>
>      g_print("Start reconcile-view.c gnc_reconcile_view_refresh()\n");
>
>      g_return_if_fail (view != NULL);
>
>      g_return_if_fail (GNC_IS_RECONCILE_VIEW (view));
>
>   
>
>      qview = GNC_QUERY_VIEW (view);
>
>      gtk_tree_view_get_cursor (GTK_TREE_VIEW (qview), &cursor_path,
> &cursor_col);
>
>      gnc_query_view_refresh (qview);
>
>      if (cursor_path)
>
>      {
>
>                 g_print("reconcile-view.c gnc_reconcile_view_refresh() "
>
>                                "calling gtk_tree_view_scroll_to_cell()\n");
>
>          gtk_tree_view_scroll_to_cell ( GTK_TREE_VIEW (qview), cursor_path,
> cursor_col, FALSE, 0.0, 0.0);
>
>                 gtk_tree_path_free(cursor_path);
>
>      }
>
>   
>
> I added the call to gtk_tree_view_get_cursor () and the call to
> gtk_tree_view_scroll_to_cell()
>
> and this fixes the problem of the Reconcile window panel of debit splits
> being repositioned to the first split
>
> after using the Open button to open the register to add a new transaction.
>
>   
>
> However, it doesn't fix the problem if I use the Balance button to
> automatically add a balancing transaction.
>
> I'm trying to debug in Eclipse using the Balance button, because I can see
> that refresh_handler() is also being called (same as using the Open button)
> but the problem still exists when using the Balance button.
>
>   
>
> refresh_handler() calls recnRefresh() calls gnc_reconcile_view_refresh()
>
>   
>
> By adding breakpoints in refresh_handler and gnc_reconcile_view_refresh I
> can see that gnc_reconcile_view_refresh() is being called 8 times (4 times
> for each of the debits + credits panel) and only on the 2nd call for the
> debit panel is cursor_path not NULL. I don't understand why only 1 of the 4
> calls for the debit panel has a cursor path?
>
> Up until now, the panel still displays on the 2nd page of splits where it
> was before the Balance button was used.
>
>   
>
> Resuming after the 8th call, the debugger gets: No source available for
> "g_closure_invoke() at (address)"
>
> and I can only Resume.
>
>   
>
> I guess g_closure_invoke() is a gtk3 function and I need to install the gtk3
> dev packages which are not stripped? How do I integrate them into my Eclipse
> build?
>
>   
>
> If I Resume from here, the debits panel is now incorrectly updated to show
> the top of the debits splits.
>
>   
>
> On another topic, I followed the instructions at
> https://wiki.gnucash.org/wiki/Eclipse (thanks for these!) but don't see a
> way to do a 'ninja install' from Eclipse. Is there a way or is that not
> needed because we can either run or debug from Eclipse.
>
>   
>
> Regards,
>
> Chris Good
>
>   
>
> _______________________________________________
> gnucash-devel mailing list
> gnucash-devel at gnucash.org
> https://lists.gnucash.org/mailman/listinfo/gnucash-devel



More information about the gnucash-devel mailing list