Re: crash problem
Cheuksan Edward Wang <[email protected]> Sun, 27 Nov 2005 04:50:25 -0500
| Newsgroups | gmane.comp.scigraphica.gtkextra |
|---|---|
| Message-ID | <[email protected]> |
I fixed my problem with the attached patch. I think my crash was caused by gtkentry not generating the focus-out event. I also think those GTK_WIDGET_SET/UNSET_FLAGS are not necessary. What do you think? Cheuksan Wang On 11/26/05, Al Hooton <[email protected]> wrote: > > Can you post a small sample program that demonstrates the > problem? You > can look at the test*.c programs in the gtkextra distribution for > examples of small test programs. > > Without some code that exhibits the problem for other people to > study, > it will be difficult for anybody to help. > > -Al > > On Thu, 2005-11-24 at 22:46 -0500, Cheuksan Edward Wang wrote: > > I'm using gtk+extra-2.1.1 with glade. I'm using the gtksheet widget in > > a window. However, I'm getting the following crash when I select > > multiple cells or a row. I didn't do anything special with the focus > > in/out events. Does anyone have any ideas? > > > > Thanks > > > > Edward Wang > > > > (optical_monitoring:8995): Gtk-WARNING **: GtkEntry - did not receive > > focus-out-event. If you > > connect a handler to this signal, it must return > > FALSE so the entry gets the event as well > > > > Gtk-ERROR **: file gtkentry.c: line 4856 (blink_cb): assertion failed: > > (GTK_WIDGET_HAS_FOCUS (entry)) > > aborting... > > Aborted > > !DSPAM:4386894b125011854773323! > -- > > > Al Hooton > al-at-hootons-dot-org > > ======== > Lead maintainer of the linux-based open-source project Parapin. > http://www.sf.net/projects/parapin/ > ======== > >
gtksheet.diff
(text/x-patch, 2 KB)
--- gtksheet.c~ 2005-11-24 09:54:34.000000000 -0500
+++ gtksheet.c 2005-11-25 00:52:07.000000000 -0500
@@ -3967,8 +3967,6 @@
sheet->column[col].width+4,
sheet->row[row].height+4);
- GTK_WIDGET_UNSET_FLAGS(sheet->sheet_entry, GTK_HAS_FOCUS);
- GTK_WIDGET_SET_FLAGS(GTK_WIDGET(sheet), GTK_HAS_FOCUS);
gtk_widget_grab_focus(GTK_WIDGET(sheet));
GTK_WIDGET_UNSET_FLAGS(GTK_WIDGET(sheet->sheet_entry), GTK_VISIBLE);
@@ -4092,8 +4090,6 @@
gtk_sheet_draw_active_cell(sheet);
gtk_widget_grab_focus(GTK_WIDGET(sheet_entry));
- GTK_WIDGET_SET_FLAGS(GTK_WIDGET(sheet_entry), GTK_HAS_FOCUS);
- GTK_WIDGET_UNSET_FLAGS(GTK_WIDGET(sheet), GTK_HAS_FOCUS);
g_free(text);
}
@@ -4835,8 +4831,6 @@
NULL, NULL, event->time);
gtk_grab_add(GTK_WIDGET(sheet));
sheet->timer=gtk_timeout_add(TIMEOUT_SCROLL, gtk_sheet_scroll, sheet);
- GTK_WIDGET_UNSET_FLAGS(sheet->sheet_entry, GTK_HAS_FOCUS);
- GTK_WIDGET_SET_FLAGS(GTK_SHEET(sheet), GTK_HAS_FOCUS);
gtk_widget_grab_focus(GTK_WIDGET(sheet));
if(sheet->selection_mode != GTK_SELECTION_SINGLE &&
@@ -4901,8 +4895,6 @@
gtk_sheet_click_cell(sheet, -1, column, &veto);
gtk_grab_add(GTK_WIDGET(sheet));
sheet->timer=gtk_timeout_add(TIMEOUT_SCROLL, gtk_sheet_scroll, sheet);
- GTK_WIDGET_UNSET_FLAGS(sheet->sheet_entry, GTK_HAS_FOCUS);
- GTK_WIDGET_SET_FLAGS(GTK_SHEET(sheet), GTK_HAS_FOCUS);
gtk_widget_grab_focus(GTK_WIDGET(sheet));
GTK_SHEET_SET_FLAGS(sheet, GTK_SHEET_IN_SELECTION);
}
@@ -4915,8 +4907,6 @@
gtk_sheet_click_cell(sheet, row, -1, &veto);
gtk_grab_add(GTK_WIDGET(sheet));
sheet->timer=gtk_timeout_add(TIMEOUT_SCROLL, gtk_sheet_scroll, sheet);
- GTK_WIDGET_UNSET_FLAGS(sheet->sheet_entry, GTK_HAS_FOCUS);
- GTK_WIDGET_SET_FLAGS(GTK_SHEET(sheet), GTK_HAS_FOCUS);
gtk_widget_grab_focus(GTK_WIDGET(sheet));
GTK_SHEET_SET_FLAGS(sheet, GTK_SHEET_IN_SELECTION);
}