Re: [evolution-patches] patch for bug 49912
- From: Chris Toshok <toshok ximian com>
- To: "leon.zhang" <leon zhang sun com>
- Cc: evolution-patches <evolution-patches ximian com>
- Subject: Re: [evolution-patches] patch for bug 49912
- Date: 03 Nov 2003 12:12:36 -0800
mkestner should ok the gal changes, but this looks good to me.
when it goes in it should probably only go on the stable branch, as
there's no inplace editing in the minicard view on HEAD (so this bug
doesn't exist there.)
Chris
On Tue, 2003-10-28 at 17:24, leon.zhang wrote:
> hi, Chris
>
> This is the newest patch for bug 49912, it can:
> 1) set a has_popup property for EText to trace the status of activated popup menu.
> 2) skip focus change event ptocess in e-minicard and e-minicard-label.
> thx for your previous comments and suggestions.
>
> can you review this patch?
> regards
>
> leon
>
>
> ______________________________________________________________________
> Index: evolution/addressbook/ChangeLog
> ===================================================================
> RCS file: /export/src/cvs/evolution/addressbook/ChangeLog,v
> retrieving revision 1.1.1.1
> diff -u -r1.1.1.1 ChangeLog
> --- evolution/addressbook/ChangeLog 2003/09/26 06:34:28 1.1.1.1
> +++ evolution/addressbook/ChangeLog 2003/10/29 01:11:46
> @@ -1,3 +1,11 @@
> +2003-10-28 Leon Zhang <leon zhang sun com>
> +
> + * gui/widgets/e-minicard.c: (e_minicard_event): skip focus change
> + event if there is an activated popup menu.
> +
> + * gui/widgets/e-minicard-label.c: (e_minicard_label_event):
> + skip focus change event if there is an activated popup menu.
> +
> 2003-09-05 Dan Winship <danw ximian com>
>
> * gui/component/select-names/Makefile.am: Make libeselectnames.la
> Index: evolution/addressbook/gui/widgets/e-minicard.c
> ===================================================================
> RCS file: /export/src/cvs/evolution/addressbook/gui/widgets/e-minicard.c,v
> retrieving revision 1.1.1.1
> diff -u -r1.1.1.1 e-minicard.c
> --- evolution/addressbook/gui/widgets/e-minicard.c 2003/09/26 06:34:28 1.1.1.1
> +++ evolution/addressbook/gui/widgets/e-minicard.c 2003/10/29 01:11:46
> @@ -552,6 +552,21 @@
> switch( event->type ) {
> case GDK_FOCUS_CHANGE:
> {
> + /* if there is an activated popup menu, skip current event */
> + GList *list;
> + gboolean popup = FALSE;
> + for (list = e_minicard->fields; list; list = list->next) {
> + EMinicardField *field = E_MINICARD_FIELD(list->data);
> + EMinicardLabel *e_minicard_label = E_MINICARD_LABEL(GTK_OBJECT(field->label));
> + if (e_minicard_label->has_focus){
> + g_object_get (e_minicard_label->field, "has_popup", &popup, NULL);
> + if (popup) break;
> + }
> + }
> +
> + if (popup)
> + break;
> +
> GdkEventFocus *focus_event = (GdkEventFocus *) event;
> d(g_print("%s: GDK_FOCUS_CHANGE: %s\n", G_GNUC_FUNCTION, focus_event->in?"in":"out"));
> if (focus_event->in) {
> Index: evolution/addressbook/gui/widgets/e-minicard-label.c
> ===================================================================
> RCS file: /export/src/cvs/evolution/addressbook/gui/widgets/e-minicard-label.c,v
> retrieving revision 1.1.1.1
> diff -u -r1.1.1.1 e-minicard-label.c
> --- evolution/addressbook/gui/widgets/e-minicard-label.c 2003/09/26 06:34:28 1.1.1.1
> +++ evolution/addressbook/gui/widgets/e-minicard-label.c 2003/10/29 01:11:46
> @@ -364,6 +364,10 @@
> }
> break;
> case GDK_FOCUS_CHANGE: {
> + gboolean popup;
> + g_object_get (e_minicard_label->field, "has_popup", &popup, NULL);
> + if (popup) break;
> +
> GdkEventFocus *focus_event = (GdkEventFocus *) event;
>
> e_minicard_label->has_focus = focus_event->in;
> Index: gal/ChangeLog
> ===================================================================
> RCS file: /export/src/cvs/gal/ChangeLog,v
> retrieving revision 1.3
> diff -u -r1.3 ChangeLog
> --- gal/ChangeLog 2003/09/28 08:42:27 1.3
> +++ gal/ChangeLog 2003/10/29 01:11:46
> @@ -1,3 +1,20 @@
> +2003-10-28 Leon Zhang <leon zhang sun com>
> +
> + * gal/e-text/e-text.h: add add "has_popup" field for user to trace
> + the status of popup menu.
> +
> + * gal/e-text/e-text.c:
> + (e_text_get_property): add getter for has_popup.
> + (popup_targets_received): set "has_popup" of EText before popup menu
> + appear, and support signal "deactivate".
> + (e_text_popup_deactivated): callback of signal "deactivate".
> + (e_text_init): init default has_popup to FALSE.
> + (e_text_class_init): install the has_popup property.
> +
> +2003-04-03 Chris Toshok <toshok ximian com>
> +
> + * gal/e-text/e-text.c (e_text_commit_cb): emit a keypress signal.
> + yes, i know this might not correspond to a single keypress, but..
> 2003-09-28 Gilbert Fang <gilbert fang sun com>
>
> * gal/a11y/Makefile.am: add e-table atk support to libgal a11y
> Index: gal/gal/e-text/e-text.c
> ===================================================================
> RCS file: /export/src/cvs/gal/gal/e-text/e-text.c,v
> retrieving revision 1.2
> diff -u -r1.2 e-text.c
> --- gal/gal/e-text/e-text.c 2003/09/27 10:33:14 1.2
> +++ gal/gal/e-text/e-text.c 2003/10/29 01:11:46
> @@ -122,7 +122,8 @@
> PROP_DRAW_BUTTON,
> PROP_CURSOR_POS,
> PROP_IM_CONTEXT,
> - PROP_HANDLE_POPUP
> + PROP_HANDLE_POPUP,
> + PROP_HAS_POPUP
> };
>
> static void e_text_command(ETextEventProcessor *tep, ETextEventProcessorCommand *command, gpointer data);
> @@ -1078,6 +1079,10 @@
> g_value_set_boolean (value, text->handle_popup);
> break;
>
> + case PROP_HAS_POPUP:
> + g_value_set_boolean (value, text->has_popup);
> + break;
> +
> default:
> G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
> break;
> @@ -2557,6 +2562,12 @@
> }
>
> static void
> +e_text_popup_deactivated (EText *text)
> +{
> + text->has_popup = FALSE;
> +}
> +
> +static void
> popup_targets_received (GtkClipboard *clipboard,
> GtkSelectionData *data,
> gpointer user_data)
> @@ -2574,6 +2585,11 @@
> GTK_WIDGET(GNOME_CANVAS_ITEM (text)->canvas),
> popup_menu_detach);
>
> + text->has_popup = TRUE;
> +
> + g_signal_connect_swapped(GTK_MENU_SHELL (popup_menu), "deactivate",
> + G_CALLBACK (e_text_popup_deactivated), text);
> +
> /* cut menu item */
> menuitem = gtk_image_menu_item_new_from_stock (GTK_STOCK_CUT, NULL);
> gtk_widget_show (menuitem);
> @@ -3596,6 +3612,13 @@
> FALSE,
> G_PARAM_READWRITE));
>
> + g_object_class_install_property (gobject_class, PROP_HAS_POPUP,
> + g_param_spec_boolean ("has_popup",
> + _( "Has Popup" ),
> + _( "Has Popup" ),
> + FALSE,
> + G_PARAM_READABLE));
> +
> if (!clipboard_atom)
> clipboard_atom = gdk_atom_intern ("CLIPBOARD", FALSE);
>
> @@ -3691,6 +3714,7 @@
> text->im_context_signals_registered = FALSE;
>
> text->handle_popup = FALSE;
> + text->has_popup = FALSE;
>
>
> e_canvas_item_set_reflow_callback(GNOME_CANVAS_ITEM(text), e_text_reflow);
> Index: gal/gal/e-text/e-text.h
> ===================================================================
> RCS file: /export/src/cvs/gal/gal/e-text/e-text.h,v
> retrieving revision 1.1.1.1
> diff -u -r1.1.1.1 e-text.h
> --- gal/gal/e-text/e-text.h 2003/09/26 06:37:14 1.1.1.1
> +++ gal/gal/e-text/e-text.h 2003/10/29 01:11:46
> @@ -214,6 +214,7 @@
> gboolean im_context_signals_registered;
>
> gboolean handle_popup;
> + gboolean has_popup;
> };
>
> struct _ETextClass {
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]