diff options
-rw-r--r-- | addressbook/ChangeLog | 7 | ||||
-rw-r--r-- | addressbook/gui/widgets/e-minicard-view-widget.c | 25 |
2 files changed, 32 insertions, 0 deletions
diff --git a/addressbook/ChangeLog b/addressbook/ChangeLog index 58f834dbb4..801f39ac6c 100644 --- a/addressbook/ChangeLog +++ b/addressbook/ChangeLog @@ -1,3 +1,10 @@ +2003-06-25 Gilbert Fang <gilbert.fang@sun.com> + + * gui/widgets/e-minicard-view-widget.c + (e_minicard_view_widget_real_focus_in_event): new function, + override the event handler for focus_in_event, set the first item + be focused if no focused item at all. Fixes bug 41826. + 2003-06-18 Chris Toshok <toshok@ximian.com> * gui/contact-editor/e-contact-editor.c (fill_in_field): in the diff --git a/addressbook/gui/widgets/e-minicard-view-widget.c b/addressbook/gui/widgets/e-minicard-view-widget.c index b4681e1b4b..c90a581975 100644 --- a/addressbook/gui/widgets/e-minicard-view-widget.c +++ b/addressbook/gui/widgets/e-minicard-view-widget.c @@ -38,6 +38,7 @@ static void e_minicard_view_widget_reflow (ECanvas *canvas); static void e_minicard_view_widget_size_allocate (GtkWidget *widget, GtkAllocation *allocation); static void e_minicard_view_widget_style_set (GtkWidget *widget, GtkStyle *previous_style); static void e_minicard_view_widget_realize (GtkWidget *widget); +static gboolean e_minicard_view_widget_real_focus_in_event (GtkWidget *widget, GdkEventFocus *event); static ECanvasClass *parent_class = NULL; @@ -158,12 +159,36 @@ e_minicard_view_widget_class_init (EMinicardViewWidgetClass *klass) widget_class->style_set = e_minicard_view_widget_style_set; widget_class->realize = e_minicard_view_widget_realize; widget_class->size_allocate = e_minicard_view_widget_size_allocate; + widget_class->focus_in_event = e_minicard_view_widget_real_focus_in_event; canvas_class->reflow = e_minicard_view_widget_reflow; klass->selection_change = NULL; klass->column_width_changed = NULL; klass->right_click = NULL; + +} + +static gboolean +e_minicard_view_widget_real_focus_in_event(GtkWidget *widget, GdkEventFocus *event) +{ + GnomeCanvas *canvas; + EMinicardViewWidget *view; + + canvas = GNOME_CANVAS (widget); + view = E_MINICARD_VIEW_WIDGET(widget); + + if (!canvas->focused_item) { + EReflow *reflow = E_REFLOW (view->emv); + if (reflow->count) { + int unsorted = e_sorter_sorted_to_model (E_SORTER (reflow->sorter), 0); + + if (unsorted != -1) + canvas->focused_item = reflow->items [unsorted]; + } + } + + return GTK_WIDGET_CLASS(parent_class)->focus_in_event (widget, event); } static void |