hi david, thanks for your help! After changing to this it works:
if(GTK_WIDGET_REALIZED(widget)) { gtk_widget_grab_focus(widget); } Stefan Quoting "David Ne?as (Yeti)" <[EMAIL PROTECTED]>: > On Thu, Mar 29, 2007 at 08:41:39AM +0200, Stefan Kost wrote: >> I am looking for some tips of how to get the culprit for the above >> mentioned warning. I have a notebook with 5 pages. On the first tab I >> have a gnome-canvas with some items on. For that I have registered an >> event handler to move objects on the canvas. The moving part works >> fine. When I press a key I get the assertion. Still eveything works. >> Of course I'd like to fix it anyway. So I run the app as >> G_DEBUG="fatal_warnings" gdb ~/buzztard/bin/bt-edit >> and dump a backtrace: >> [Switching to Thread -1225189712 (LWP 20028)] >> 0xb748509b in g_logv (log_domain=<value optimized out>, >> log_level=G_LOG_LEVEL_CRITICAL, format=0xb74ccb67 "%s: assertion `%s' >> failed", >> args1=0xbf93f4bc "[EMAIL PROTECTED]") at gmessages.c:493 >> 493 G_BREAKPOINT (); >> (gdb) bt >> #0 0xb748509b in g_logv (log_domain=<value optimized out>, >> log_level=G_LOG_LEVEL_CRITICAL, format=0xb74ccb67 "%s: assertion `%s' >> failed", >> args1=0xbf93f4bc "[EMAIL PROTECTED]") at gmessages.c:493 >> #1 0xb7485325 in g_log (log_domain=0xb7ac6ba7 "Gtk", >> log_level=G_LOG_LEVEL_CRITICAL, format=0xb74ccb67 "%s: assertion `%s' >> failed") at gmessages.c:517 >> #2 0xb748540b in g_return_if_fail_warning (log_domain=0xb7ac6ba7 >> "Gtk", pretty_function=0xb7b7875d "gtk_widget_event", >> expression=0xb7b76be8 "WIDGET_REALIZED_FOR_EVENT (widget, >> event)") at gmessages.c:532 >> #3 0xb7a87769 in IA__gtk_widget_event (widget=0x833e288, >> event=0x834b900) at gtkwidget.c:3927 >> #4 0xb7a95354 in IA__gtk_window_propagate_key_event >> (window=0x81f0808, event=0x834b900) at gtkwindow.c:4799 > > The key point is probably here. Gtk+ must think the widget > has keyboard focus for some reason -- or rather Gtk+ gives > the widget focus for some reason. So you have to find out > why. > >> ... >> >> and on it goes. None of my stuff there except below gtk_main. Now >> unfortunately the assertion dos not tell which widget is not realized. >> So I do: >> (gdb) select-frame 3 >> (gdb) print >> g_type_name(((GTypeClass*)((GTypeInstance*)widget)->g_class)->g_type) >> $1 = (gchar *) 0x8335450 "BtPatternView" >> >> Well this is a subclassed widget that is on the 2nd tab of the >> notbook. The "BtPatternView" subclasses a GtkTreeView, overrides >> realize, unrealize, expose, dispose and finalize. It does the chaining >> up. > > Still, knowing normal GtkTreeView behaves the same would > decrease the number of unknonws. > >> When I initially click thru all tabs (so that they get realized it >> infact works). Explicitely calling gtk_widget_show() on it doesn't >> help. So any idea what goes wrong here? > > No ideas what goes wrong, but some ideas what to try to > debug it: > - run with G_OBJECT_DEBUG=signals and look for is-focus in > the youtput, maybe you'll see a pattern, unfortunately it > may not be detailed enough > - watch all changes of window->focus_widget in gtkwindow.c > and actions of set_focus_child() of relevant containers, > probably by manual insertions of some debugging messages, > although one can use gdb facilities too > > Yeti > > -- > http://gwyddion.net/ > _______________________________________________ > gtk-app-devel-list mailing list > gtk-app-devel-list@gnome.org > http://mail.gnome.org/mailman/listinfo/gtk-app-devel-list > _______________________________________________ gtk-app-devel-list mailing list gtk-app-devel-list@gnome.org http://mail.gnome.org/mailman/listinfo/gtk-app-devel-list