Allocating size to GtkPopover without calling gtk_widget_measure()
Steps to reproduce
- Create a new GtkWidget with a GtkPopover as a child, along with some other widget (in this case a GtkLabel)
- Setup an Event Controller for button presses to open the popover on button press
- In gtk_widget_size_allocate, call gtk_popover_present (), to allocate the popover
- Open the popover
Current behavior
(gnome-sudoku:58317): Gtk-WARNING **: 10:52:39.818: Allocating size to GtkPopover 0x3db8400 without calling gtk_widget_measure(). How does the code know the size to allocate?
Expected outcome
Popover would allocate size properly without needing gtk_widget_measure ()
Version information
GTK build on commit f381cdef through jhbuild Linux, Fedora
Additional information
Backtrace with G_DEBUG=fatal-warnings:
#0 _g_log_abort (breakpoint=1) at ../../../../Projects/glib/glib/gmessages.c:558
#1 0x00007fbddd102ead in g_log_writer_default (log_level=18, fields=0x7ffd4ee7ac90, n_fields=6, user_data=0x0)
at ../../../../Projects/glib/glib/gmessages.c:2812
#2 0x00007fbddd100ba0 in g_log_structured_array (log_level=G_LOG_LEVEL_WARNING, fields=0x7ffd4ee7ac90, n_fields=6)
at ../../../../Projects/glib/glib/gmessages.c:1983
#3 0x00007fbddd100e71 in g_log_structured_standard (log_domain=0x7fbdddd662d9 "Gtk", log_level=G_LOG_LEVEL_WARNING,
file=0x7fbdddd662b0 "../../../../Projects/gtk/gtk/gtkwidget.c", line=0x7fbdddd66a34 "3953",
func=0x7fbdddd681f0 <__func__.180> "gtk_widget_allocate",
message_format=0x7fbdddd669c8 "Allocating size to %s %p without calling gtk_widget_measure(). How does the code know the size to allocate?") at ../../../../Projects/glib/glib/gmessages.c:2040
#4 0x00007fbddd9aa28b in gtk_widget_allocate (widget=0x27277b0, width=215, height=206, baseline=-1, transform=0x0)
at ../../../../Projects/gtk/gtk/gtkwidget.c:3953
#5 0x00007fbddd8b4cd2 in gtk_popover_native_layout (native=0x27277b0, width=215, height=206)
at ../../../../Projects/gtk/gtk/gtkpopover.c:696
#6 0x00007fbddd8e0ff4 in gtk_native_layout (self=0x27277b0, width=215, height=206)
at ../../../../Projects/gtk/gtk/gtknative.c:111
#7 0x00007fbddd8e1021 in surface_layout_cb (surface=0x26d3db0, width=215, height=206, native=0x27277b0)
at ../../../../Projects/gtk/gtk/gtknative.c:120
#8 0x00007fbdddbee5c8 in _gdk_marshal_VOID__INT_INTv (closure=0x286e690, return_value=0x0, instance=0x26d3db0,
args=0x7ffd4ee7b398, marshal_data=0x0, n_params=2, param_types=0x1882ea0) at gdk/gdkmarshalers.c:479
#9 0x00007fbddd478ff3 in _g_closure_invoke_va (closure=0x286e690, return_value=0x0, instance=0x26d3db0,
args=0x7ffd4ee7b398, n_params=2, param_types=0x1882ea0) at ../../../../Projects/glib/gobject/gclosure.c:895
#10 0x00007fbddd497609 in g_signal_emit_valist (instance=0x26d3db0, signal_id=145, detail=0, var_args=0x7ffd4ee7b398)
at ../../../../Projects/glib/gobject/gsignal.c:3481
#11 0x00007fbddd498805 in g_signal_emit (instance=0x26d3db0, signal_id=145, detail=0)
at ../../../../Projects/glib/gobject/gsignal.c:3631
#12 0x00007fbdddc988bf in gdk_surface_layout_on_clock (clock=0x17c8970, data=0x26d3db0)
at ../../../../Projects/gtk/gdk/gdksurface.c:1324
#13 0x00007fbddd47c9f0 in g_cclosure_marshal_VOID__VOID (closure=0x2730b30, return_value=0x0, n_param_values=1,
param_values=0x7ffd4ee7b700, invocation_hint=0x7ffd4ee7b640, marshal_data=0x0)
at ../../../../Projects/glib/gobject/gmarshal.c:117
#14 0x00007fbddd478cff in g_closure_invoke (closure=0x2730b30, return_value=0x0, n_param_values=1,
param_values=0x7ffd4ee7b700, invocation_hint=0x7ffd4ee7b640) at ../../../../Projects/glib/gobject/gclosure.c:832
#15 0x00007fbddd498fb7 in signal_emit_unlocked_R (node=0x17c9bb0, detail=0, instance=0x17c8970, emission_return=0x0,
instance_and_params=0x7ffd4ee7b700) at ../../../../Projects/glib/gobject/gsignal.c:3821
#16 0x00007fbddd4982b6 in g_signal_emit_valist (instance=0x17c8970, signal_id=154, detail=0, var_args=0x7ffd4ee7b9a8)
at ../../../../Projects/glib/gobject/gsignal.c:3574
#17 0x00007fbddd498805 in g_signal_emit (instance=0x17c8970, signal_id=154, detail=0)
at ../../../../Projects/glib/gobject/gsignal.c:3631
#18 0x00007fbdddc7ca18 in _gdk_frame_clock_emit_layout (frame_clock=0x17c8970)
at ../../../../Projects/gtk/gdk/gdkframeclock.c:696
#19 0x00007fbdddc7da43 in gdk_frame_clock_paint_idle (data=0x17c8970)
at ../../../../Projects/gtk/gdk/gdkframeclockidle.c:609
#20 0x00007fbdddc7d635 in gdk_frame_clock_flush_idle (data=0x17c8970)
at ../../../../Projects/gtk/gdk/gdkframeclockidle.c:400
#21 0x00007fbddd0f4f9b in g_timeout_dispatch (source=0x26d4ec0,
callback=0x7fbdddc7d533 <gdk_frame_clock_flush_idle>, user_data=0x17c8970)
at ../../../../Projects/glib/glib/gmain.c:5124
#22 0x00007fbddd0f2d24 in g_main_dispatch (context=0x154d5e0) at ../../../../Projects/glib/glib/gmain.c:3474
#23 0x00007fbddd0f3dee in g_main_context_dispatch_unlocked (context=0x154d5e0)
at ../../../../Projects/glib/glib/gmain.c:4287
#24 0x00007fbddd0f3f8d in g_main_context_iterate_unlocked (context=0x154d5e0, block=1, dispatch=1, self=0x15563d0)
at ../../../../Projects/glib/glib/gmain.c:4352
#25 0x00007fbddd0f4045 in g_main_context_iteration (context=0x154d5e0, may_block=1)
--Type <RET> for more, q to quit, c to continue without paging--c
at ../../../../Projects/glib/glib/gmain.c:4417
#26 0x00007fbddd320b27 in g_application_run (application=0x1540e30, argc=1, argv=0x7ffd4ee7bf08)
at ../../../../Projects/glib/gio/gapplication.c:2573
#27 0x000000000040e4cd in sudoku_main (args=0x7ffd4ee7bf08, args_length1=1)
at ../../../../Projects/gnome-sudoku/src/gnome-sudoku.vala:509
#28 0x000000000040e516 in main (argc=1, argv=0x7ffd4ee7bf08)
at ../../../../Projects/gnome-sudoku/src/gnome-sudoku.vala:507
More details: gnome-sudoku!54 (comment 1743952)
CC: @mcatanzaro