From d2af55db1a8119fbcdfdc262db76d78bcd282819 Mon Sep 17 00:00:00 2001 From: Chris Toshok Date: Thu, 3 Apr 2003 06:06:20 +0000 Subject: [ either fixes #39702 or comes damn, damn close. also, fixes EText to not 2003-04-02 Chris Toshok [ either fixes #39702 or comes damn, damn close. also, fixes EText to not suck *nearly* as much. ] * gal/util/e-marshal.list: add NONE:POINTER,INT,OBJECT. * gal/e-text/e-entry.h: (struct _EEntryClass): popup -> populate_popup. * gal/e-text/e-entry.c (proxy_changed): rename, the old name was too damn long. (proxy_activate): same. (proxy_populate_popup): same, and change from popup to populate_popup. (e_entry_init): track change to cb names, and populate_popup. also, pass the ECanvas's im_context to the EText. (e_entry_class_init): POPUP -> POPULATE_POPUP. * gal/e-text/e-text.h (struct _EText): remove the old selection stuff, and add im_context/reset_im_context fields. (struct _ETextClass): popup -> populate_popup. * gal/e-text/e-text.c (e_text_dispose): remove all the GtkInvisible based selection stuff, and disconnect from/unref the im_context. (e_text_set_property): add "im_context" handling. (e_text_get_property): same. (e_text_event): connect/disconnect from the IM context's signals in the FOCUS_CHANGE handler. in the KEY_PRESS/RELEASE handler, use gtk_im_context_filter_keypress if we have an im_context. also, use e_text_do_popup now instead of just emitting the "popup" signal. (e_text_copy_clipboard): new function. (e_text_delete_selection): new function. (e_text_cut_clipboard): new function. (e_text_paste_clipboard): new function. (e_text_select_all): new function. (primary_get_cb): new function, handle requests for the primary selection when we're the owner. (primary_clear_cb): new function, unfinished. (e_text_update_primary_selection): new function. (paste_received): new function, insert pasted text. (e_text_paste): new function, (popup_menu_detach): new function, not needed really. (popup_targets_received): new function, pop up the popup once we have the selection information necessary to sensitize the c/c/p buttons. (e_text_do_popup): new function, request the selection. (e_text_reset_im_context): new function. (e_text_command): for E_TEP_SELECT, call e_text_update_primary_selection. for E_TEP_DELETE/INSERT, _delete_selection -> e_text_delete_selection. for E_TEP_COPY, call e_text_copy_clipboard. for E_TEP_PASTE/E_TEP_GET_SELECTION call e_text_paste. (e_text_class_init): change the "popup" signal to "populate_popup". Also, add the "im_context" property. (e_text_commit_cb): new function. IM context callback. (e_text_retrieve_surrounding_cb): new function. IM context callback. (e_text_delete_surrounding_cb): new function. IM context callback. unfinished. svn path=/trunk/; revision=20653 --- widgets/text/e-text.h | 25 ++++++++++++++----------- 1 file changed, 14 insertions(+), 11 deletions(-) (limited to 'widgets/text/e-text.h') diff --git a/widgets/text/e-text.h b/widgets/text/e-text.h index 6a965a5d92..bff45111f9 100644 --- a/widgets/text/e-text.h +++ b/widgets/text/e-text.h @@ -37,7 +37,7 @@ #ifndef E_TEXT_H #define E_TEXT_H -#include +#include #include #include @@ -162,12 +162,7 @@ struct _EText { ETextEventProcessor *tep; /* Text Event Processor */ gint tep_command_id; - GtkWidget *invisible; /* For selection handling */ gboolean has_selection; /* TRUE if we have the selection */ - gchar *primary_selection; /* Primary selection text */ - gint primary_length; /* Primary selection text length */ - gchar *clipboard_selection; /* Clipboard selection text */ - gint clipboard_length; /* Clipboard selection text length*/ guint clip : 1; /* Use clip rectangle? */ guint fill_clip_rectangle : 1; /* Fill the clipping rectangle. */ @@ -216,16 +211,19 @@ struct _EText { guint32 last_time_request; /* The time of the last selection request. */ GdkAtom last_selection_request; /* The time of the last selection request. */ GList *queued_requests; /* Queued selection requests. */ + + GtkIMContext *im_context; + gboolean need_im_reset; }; struct _ETextClass { GnomeCanvasItemClass parent_class; - void (* changed) (EText *text); - void (* activate) (EText *text); - void (* keypress) (EText *text, guint keyval, guint state); - void (* popup) (EText *text, GdkEventButton *ev, gint pos); - void (* style_set) (EText *text, GtkStyle *previous_style); + void (* changed) (EText *text); + void (* activate) (EText *text); + void (* keypress) (EText *text, guint keyval, guint state); + void (* populate_popup) (EText *text, GdkEventButton *ev, gint pos, GtkMenu *menu); + void (* style_set) (EText *text, GtkStyle *previous_style); }; @@ -234,6 +232,11 @@ GtkType e_text_get_type (void); void e_text_cancel_editing (EText *text); void e_text_stop_editing (EText *text); +void e_text_delete_selection (EText *text); +void e_text_cut_clipboard (EText *text); +void e_text_paste_clipboard (EText *text); +void e_text_select_all (EText *text); + G_END_DECLS #endif -- cgit