On 2023-03-22 18:33, Po Lu wrote: > Andrew Tropin writes: > >> On 2023-03-22 14:11, Po Lu wrote: >> >>> Andrew Tropin writes: >>> >>>> On 2023-03-22 08:39, Po Lu wrote: >>>> >>>>> Andrew Tropin writes: >>>>> >>>>>> (gdb) frame 12 >>>>>> #12 0x00007ffff798ac04 in gtk_widget_event_internal (widget=widget@entry=0xfee500, event=event@entry=0xfdb4a0) at gtkwidget.c:7808 >>>>>> 7808 in gtkwidget.c >>>>>> (gdb) p *event >>>>>> $3 = {type = GDK_FOCUS_CHANGE, any = {type = GDK_FOCUS_CHANGE, window = 0xefc450, send_event = 0 '\000'}, expose = {type = GDK_FOCUS_CHANGE, window = 0xefc450, >>>>>> send_event = 0 '\000', area = {x = 0, y = 0, width = 0, height = 0}, region = 0x0, count = 0}, visibility = {type = GDK_FOCUS_CHANGE, window = 0xefc450, >>>>>> send_event = 0 '\000', state = GDK_VISIBILITY_UNOBSCURED}, motion = {type = GDK_FOCUS_CHANGE, window = 0xefc450, send_event = 0 '\000', time = 0, x = 0, y = 0, axes = 0x0, >>>>>> state = 0, is_hint = 0, device = 0x0, x_root = 0, y_root = 0}, button = {type = GDK_FOCUS_CHANGE, window = 0xefc450, send_event = 0 '\000', time = 0, x = 0, y = 0, >>>>>> axes = 0x0, state = 0, button = 0, device = 0x0, x_root = 0, y_root = 0}, touch = {type = GDK_FOCUS_CHANGE, window = 0xefc450, send_event = 0 '\000', time = 0, x = 0, >>>>>> y = 0, axes = 0x0, state = 0, sequence = 0x0, emulating_pointer = 0, device = 0x0, x_root = 0, y_root = 0}, scroll = {type = GDK_FOCUS_CHANGE, window = 0xefc450, >>>>>> send_event = 0 '\000', time = 0, x = 0, y = 0, state = 0, direction = GDK_SCROLL_UP, device = 0x0, x_root = 0, y_root = 0, delta_x = 0, delta_y = 0, is_stop = 0}, key = { >>>>>> type = GDK_FOCUS_CHANGE, window = 0xefc450, send_event = 0 '\000', time = 0, state = 0, keyval = 0, length = 0, string = 0x0, hardware_keycode = 0, group = 0 '\000', >>>>>> is_modifier = 0}, crossing = {type = GDK_FOCUS_CHANGE, window = 0xefc450, send_event = 0 '\000', subwindow = 0x0, time = 0, x = 0, y = 0, x_root = 0, y_root = 0, >>>>>> mode = GDK_CROSSING_NORMAL, detail = GDK_NOTIFY_ANCESTOR, focus = 0, state = 0}, focus_change = {type = GDK_FOCUS_CHANGE, window = 0xefc450, send_event = 0 '\000', in = 1}, >>>>>> configure = {type = GDK_FOCUS_CHANGE, window = 0xefc450, send_event = 0 '\000', x = 0, y = 0, width = 0, height = 0}, property = {type = GDK_FOCUS_CHANGE, window = 0xefc450, >>>>>> send_event = 0 '\000', atom = 0x0, time = 0, state = 0}, selection = {type = GDK_FOCUS_CHANGE, window = 0xefc450, send_event = 0 '\000', selection = 0x0, target = 0x0, >>>>>> property = 0x0, time = 0, requestor = 0x0}, owner_change = {type = GDK_FOCUS_CHANGE, window = 0xefc450, send_event = 0 '\000', owner = 0x0, >>>>>> reason = GDK_OWNER_CHANGE_NEW_OWNER, selection = 0x0, time = 0, selection_time = 0}, proximity = {type = GDK_FOCUS_CHANGE, window = 0xefc450, send_event = 0 '\000', >>>>>> time = 0, device = 0x0}, dnd = {type = GDK_FOCUS_CHANGE, window = 0xefc450, send_event = 0 '\000', context = 0x0, time = 0, x_root = 0, y_root = 0}, window_state = { >>>>>> type = GDK_FOCUS_CHANGE, window = 0xefc450, send_event = 0 '\000', changed_mask = 0, new_window_state = 0}, setting = {type = GDK_FOCUS_CHANGE, window = 0xefc450, >>>>>> send_event = 0 '\000', action = GDK_SETTING_ACTION_NEW, name = 0x0}, grab_broken = {type = GDK_FOCUS_CHANGE, window = 0xefc450, send_event = 0 '\000', keyboard = 0, >>>>>> implicit = 0, grab_window = 0x0}, touchpad_swipe = {type = GDK_FOCUS_CHANGE, window = 0xefc450, send_event = 0 '\000', phase = 0 '\000', n_fingers = 1 '\001', time = 0, >>>>>> x = 0, y = 0, dx = 0, dy = 0, x_root = 0, y_root = 0, state = 0}, touchpad_pinch = {type = GDK_FOCUS_CHANGE, window = 0xefc450, send_event = 0 '\000', phase = 0 '\000', >>>>>> n_fingers = 1 '\001', time = 0, x = 0, y = 0, dx = 0, dy = 0, angle_delta = 0, scale = 0, x_root = 0, y_root = 0, state = 0}, pad_button = {type = GDK_FOCUS_CHANGE, >>>>>> window = 0xefc450, send_event = 0 '\000', time = 0, group = 0, button = 0, mode = 0}, pad_axis = {type = GDK_FOCUS_CHANGE, window = 0xefc450, send_event = 0 '\000', >>>>>> time = 0, group = 0, index = 0, mode = 0, value = 0}, pad_group_mode = {type = GDK_FOCUS_CHANGE, window = 0xefc450, send_event = 0 '\000', time = 0, group = 0, mode = 0}} >>>>>> >>>>>> Thank you for your patience :) >>>>> >>>>> OK, thanks. This is quite odd. If you type: >>>>> >>>>> (gdb) p G_OBJECT_TYPE_NAME (widget) >>>>> >>>>> what do you see? >>>> >>>> (gdb) p G_OBJECT_TYPE_NAME (widget) >>>> No symbol "G_OBJECT_TYPE_NAME" in current context. >>> >>> Hmm. Would you please try this instead? >>> >>> (gdb) p g_type_name (((GTypeInstance *) widget)->g_class->g_type) >> >> (gdb) p g_type_name (((GTypeInstance *) widget)->g_class->g_type) >> 'g_type_name' has unknown return type; cast the call to its declared return type > > Ah, I guess you have to cast it to (char *): > > (gdb) p (char *) g_type_name ... (gdb) p (char *) g_type_name (((GTypeInstance *) widget)->g_class->g_type) $1 = 0x7ffff7a6dda2 "GtkWindow" -- Best regards, Andrew Tropin