2004-08-04 Chris Toshok <toshok@ximian.com>
* gal/e-text/e-entry.c (e_entry_refresh_popup): nuke, unnecessary.
(e_entry_start_completion): set item_chosen to FALSE.
(added_cb): nuke, unnecessary.
(full_cb): only show the popup if the user hasn't chosen an entry.
(activate_cb): set item_chosen to TRUE.
svn path=/trunk/; revision=26832
2004-06-11 Radek Doulik <rodo@ximian.com>
* gal/e-text/e-entry.c (canvas_size_request): hardcode the border
size. it is hardcoded in e-text as well. Even using style values
in e-text will not help as style values might differ between EText
and EEntry. I think it will be best to rewrite EEntry for evo 2.1
so that it derives from GtkEntry and only adds the auto completion
feature
Fixes part of #42864
svn path=/trunk/; revision=26309
2004-04-01 Chris Toshok <toshok@ximian.com>
[ fixes bug #51897 ]
* gal/e-text/e-text.c (insert_preedit_text): only reset the layout
attrs if there is some preedit text to insert. also, try getting
text->layout's attributes before creating a new list. this will
keep us from overwriting existing attributes and wiping out the
underlining for objects.
svn path=/trunk/; revision=25294
2004-02-03 Chris Toshok <toshok@ximian.com>
* gal/e-text/e-text.c (e_text_command): it's possible to get to
this function without the EText ever being realized. Since we
create the layout in realize(), let's just create it here too.
Fixes crash bug 46165 (aka "The Bug with a million dups").
svn path=/trunk/; revision=24579
2004-01-27 Rodney Dawes <dobey@ximian.com>
* gal/e-text/e-text.c (popup_targets_received): Use button->time for
the mouse click event, so that the popup stays up on button release
Fixes#47548
svn path=/trunk/; revision=24483
2004-01-06 JP Rosevear <jpr@ximian.com>
* gal/e-text/e-text.c (popup_targets_received): free event
(e_text_do_popup): copy the event so we have good data
Fixes#51956
svn path=/trunk/; revision=24071
2003-10-14 Suresh Chandrasekharan <suresh.chandrasekharan@sun.com>
* Support for preedit in e-text widgets.
* gal/gal/e-text/e-text.c: Added e_text_preedit_changed_cb and
insert_preedit_text.
* Modified the following functions.
(e_text_draw) Calls insert_preedit_text also cursor pos @ the end of
text->selection_start + text->preedit_len
(e_text_event) Added hooks for preedit_cb
(e_text_init) Inits text->preedit_len
(e_text_retrieve_surrounding_cb) Removed printf
(e_text_delete_surrounding_cb) Correct params for
gtk_editable_delete_text to make it work.
* gal/gal/e-text/e-text.h: Added preedit_len in struct _EText
2003-09-25 Suresh Chandrasekharan <suresh.chandrasekharan@sun.com>
* Fix for "44222 task summary entry widget not i18ned". The following
files are changed.
* gal/gal/e-table/e-cell-text.c: Lots of changes for i18n
selection/input support. Added these functions for input method support.
(e_cell_text_preedit_changed_cb)
(e_cell_text_commit_cb)
(e_cell_text_retrieve_surrounding_cb)
(e_cell_text_delete_surrounding_cb)
(layout_with_preedit) This function inserts the preedit string
with the right attribs to the layout text.
(build_attr_list) Creates the PangoAttrList with bold/stikeout/underline
as applicable for the current ECellText.
The following functions are modified.
(ect_stop_editing): disconnect signal handlers when editing stops
(ect_draw): Changes for including the preedit only to the currently
selected row/col. Also display the cursor at the end of preedit text.
(ect_event): Connects the IM callbacks to the key press event.
Disconnect when not in editing mode. Also a special flag to see
when Enter key pressed in preedit mode, the text is committed only
not a new row is created. This woks in conjunction with the changes
made in the eti_event in e-table-item.c file and e-cell.h.
(ect_height): Changes due to parameters changing for generate_layout
(ect_enter_edit): Initialization of im_context for a cell text and
assoociated flags.
(ect_max_width): Changes due to parameters changing for
generate_layout.
(ect_max_width_by_row): Changes due to parameters changing for
generate_layout.
(ect_show_tooltip): Changes due to parameters changing for
generate_layout.
(e_cell_text_construct): check whether paramters are NULL.
(get_position_from_xy): Changes due to parameters changing for
generate_layout.
(_insert): Set the selection_start as the minimum of strlen(edit->text)
and selection_start. Used to correct the preedit_string length
which may have added to the selection_start.
(e_cell_text_view_command): When inserting, if in the preedit mode
do not delete the selection.
(_selection_get): Set utf8 data instead of string data.
(_selection_received): Take in UTF8_ATOM inaddition to
GDK_SELECTION_TYPE_STRING.
(e_cell_text_view_get_selection): Make utf8 data when acting as a
selection source.
* gal/e-table/e-cell-text.h : Included <gtk/gtkmenu.h>
* gal/e-table/e-cell.h: Added enum E_CELL_PREEDIT to ECellFlags
* gal/e-table/e-table-item.c: (eti_event) Changes for not committing
the edited text as a seperate row in preedit mode.
* gal/e-table/e-table.c: (table_canvas_focus_event_cb) To have
proper im_context focus for the ecanvas holding the e-table.
svn path=/trunk/; revision=22882
2003-09-08 Tim Wo <tim.wo@sun.com>
* gal/a11y/e-text/gal-a11y-e-text-factory.h: GalA11yETextFactory
should inherit from AtkObjectFactory not AtkObject. (#47097).
* gal/a11y/e-text/gal-a11y-e-text.c (et_class_init): Set value
for "component_parent_iface". (#47097)
* gal/e-text/e-text.c (e_text_class_init): Added registration
code for GalA11yETextFactory. (#47097)
svn path=/trunk/; revision=22551
2003-08-10 Maxx Cao <maxx.cao@sun.com>
* gal/e-text/e-text.c (e_text_event): filter S-F10 key binding, and
show popup menu.
(popup_menu_placement_cb): function added to adjust popup menu position.+ (popup_targets_received): show popup menu in different ways, according
to whether it's invoked by mouse click or key binding.
svn path=/trunk/; revision=22204
2003-05-13 Chris Toshok <toshok@ximian.com>
[ fixes several utf8/pango related problems, including bugs
#41288, #42596, #42604 ]
* configure.in (GAL_CURRENT): bump to 3, per mkestner.
(GAL_REVISION): drop to 0, per mkestner.
* gal/e-text/e-text.c (reset_layout_attrs): we need to convert the
start/end bounds of the object to byte indices for the attribute.
(reset_layout): in the layout == NULL case don't create the layout
then immediately set it again with the same text. also, we need
to convert selection_start to a byte index before calling
pango_layout_get_cursor_pos.
(e_text_draw): remove some #ifdef 0'd code, move the calculation
of our initial clip_rect below the xpos/ypos assignments so we
don't duplicate the expression. Fix the selection drawing in the
multiline case so that it actually works, instead of assuming that
all ETexts only have 1 line *boggle*.
(get_position_from_xy): this needs to return a utf8 offset.
(e_text_copy_clipboard): convert sel_start/sel_end to byte indices
before copying.
(primary_get_cb): same.
(paste_received): validate the input here, and drop the length
parameter from e_text_insert.
(next_word): convert from an utf8 offset on entry to this
function, and return a utf8 offset when we're done. also, remove
the call the g_unichar_validate. we validate at all points where
text is inserted.
(find_offset_into_line): new function used in the backward/forward
line code. find the utf8 offset into a line (the number of utf8
characters from a prior \n or beginning of the string.)
(_get_position): in general there are lots of changes here because
text->selection_start/text->selection_end are utf8 offsets, not
byte offsets. fix E_TEP_START_OF_LINE so that hitting Ctrl-a when
you're at the beginning of a line doesn't take you to the
beginning of the previous line. fix E_TEP_END_OF_LINE in an
analogous fashion. for E_TEP_FORWARD_CHARACTER we just increment
by 1. for E_TEP_BACKWARD_CHARACTER we just decrement by 1. for
E_TEP_BACKWARD_WORD we drop the g_unichar_validate call and
simplify things a bit. reimplement
E_TEP_FORWARD_LINE/E_TEP_BACKWARD_LINE so they find the current
offset into the line, then scan forward/backward for the next/prev
line, and put us at the right offset on that line. fix
E_TEP_SELECT_WORD so double clicking in the space between words
doesn't select both words - if you double click on the trailing
edge of the space, it selects the next word. leading edge selects
the previous one. for E_TEP_SELECT_ALL use g_utf8_strlen.
(e_text_insert): everything that calls this passes a \0 terminated
string, so we assume it's \0 terminated (the old code did as well,
with calls to strlen) and drop the length parameter. also make
sure this is all utf8 happy.
(capitalize): use g_utf8_offset_to_pointer instead of just adding
text->text and start/end, and remove the validate call. also fix
the call to e_text_model_delete and use e_text_model_insert_length
instead of e_text_model_insert.
(e_text_command): for E_TEP_INSERT, validate the input. for
E_TEP_CAPS just use MAX instead of the neat little hack. also,
fix the scrolling so that it scrolls properly in both X and Y
directions (there are still some hiccups but it's much much better
than previously).
(e_text_commit_cb): validate the input here.
* gal/e-text/e-text-model.c (struct _ETextModelPrivate): just use
a GString here and get rid of MAX_LENGTH.
(e_text_model_dispose): free GString.
(e_text_model_real_validate_position): clean this up a bit.
(e_text_model_real_get_text): return the contents of the GString.
(e_text_model_real_get_text_length): use g_utf8_strlen here.
(e_text_model_real_set_text): convert to GString
(e_text_model_real_insert): just call e_text_model_insert_length
here instead of duplicating the function.
(e_text_model_real_insert_length): convert to utf8/gstring.
i.e. convert @position and @length to a bytes and use
g_string_insert_len.
(e_text_model_real_delete): same, with g_string_erase.
(e_text_model_get_text_length): use g_utf8_strlen
(e_text_model_strdup_nth_object): convert the length of the object
to bytes before copying.
(e_text_model_get_nth_object_bounds): calculate start/end properly
for u
svn path=/trunk/; revision=21163
2003-05-01 Mike Kestner <mkestner@ximian.com>
* gal/e-text/e-completion-callbacks.c (e_completion_callbacks_new):
return the instantiated object. [bug #42156]
2003-05-01 Mike Kestner <mkestner@ximian.com>
* e-cell-combo.c (e_cell_combo_selection_changed): new
(e_cell_combo_init): connect to selection_changed on popup_list
(e_cell_combo_do_popup): block selection_changed while popping up
[bug #40996]
svn path=/trunk/; revision=21042
2003-04-03 Chris Toshok <toshok@ximian.com>
* gal/e-text/e-entry.c (e_entry_init): set handle_popup to TRUE on
the EText.
* gal/e-text/e-text.c (e_text_set_property): add setter for
handle_popup.
(e_text_get_property): add getter for handle_popup.
(e_text_event): only do our special popup handling if handle_popup
is true. otherwise, pass the event along.
(e_text_class_init): install the handle_popup property.
(e_text_init): init handle_popup to FALSE, so we get default
behavior in most cases.
* gal/e-text/e-text.h: add "handle_popup" field, so the user of an
EText can decide whether to handle popups themselves.
svn path=/trunk/; revision=20664
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..
svn path=/trunk/; revision=20659
2003-04-02 Chris Toshok <toshok@ximian.com>
* gal/e-text/e-text.c (e_text_copy_clipboard): ifdef
gtk_widget_get_clipboard since we need to build against gtk 2.0.
(e_text_update_primary_selection): same.
(e_text_paste): same.
(e_text_do_popup): same.
svn path=/trunk/; revision=20657
2003-04-02 Chris Toshok <toshok@ximian.com>
* gal/e-text/e-text.c (e_text_dispose): just disconnect based on
DATA, so we only need 1 call.
(e_text_event): same.
svn path=/trunk/; revision=20655
2003-04-02 Chris Toshok <toshok@ximian.com>
[ 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
2003-04-01 Chris Toshok <toshok@ximian.com>
[ fixes bug #39508 ]
* gal/e-text/e-text.c (e_text_command): add back in some suitably
pango-ized code to get EText's scrolling horizontally as you move
the cursor.
svn path=/trunk/; revision=20625
2003-03-26 Not Zed <NotZed@Ximian.com>
* gal/e-text/e-entry.c (e_entry_show_popup): set the popup to
insensitive when we pop it down. hack to force it to lose focus,
fix for #39719.
svn path=/trunk/; revision=20531
2003-03-07 Chris Toshok <toshok@ximian.com>
* gal/e-text/e-text.c (e_text_draw): fix drawing bugs, and disable
the stupid looking focus rect, since I can't find a theme that
uses them.
(e_text_event): force redraw in the focus-out case if the cursor
is shown (so we can erase it), and also trick ourselves into
drawing it immediately (by setting it to FALSE) in the focus-in
case.
svn path=/trunk/; revision=20223
2003-02-09 Chris Toshok <toshok@ximian.com>
* tests/.cvsignore: ignore test-completion.
* tests/test-completion.c: new program, completion test.
* tests/Makefile.am (noinst_PROGRAMS): add test-completion.
* gal/e-text/Makefile.am: remove e-completion-test from the build
here, moving it to ../../tests.
* gal/e-text/e-completion.c (e_completion_class_init): we've
removed the restart, cancel, clear, and lost signals. Also, we've
renamed some so it's easier to tell from the name which it is
(virtual func or signal.)
(e_completion_dispose): remove call to clear_search_stack, as we
don't do auto-refinement anymore.
(e_completion_clear): gone.
(e_completion_push_search): gone.
(e_completion_pop_search): gone.
(e_completion_clear_search_stack): gone.
(e_completion_refine_search): gone.
(e_completion_unrefine_search): gone.
(e_completion_begin_search): substantially clear this up, since we
don't have the refinement stuff anymore. Also, the call to
request_completion is a virtual function call, not a signal.
(e_completion_match_count): always return matches->len here, never
match_count, which is gone (with the refinement stuff)
(e_completion_foreach_match): remove the hit_count stuff.
(e_completion_restart): gone.
(e_completion_lost_match): gone.
(e_completion_end_search): remove the sorting stuff from here (and
the call to restart.) the etable sorting stuff will have to take
up the slack, but for now there's no reason to restart the search
here.
* gal/e-text/e-completion.h (struct _ECompletionClass): straighten
out what's a virtual function and what's a signal, instead of
using signals for both. Also, remove the auto_refine stuff, as
it's not used.
* gal/e-text/e-completion-view.c (e_completion_view_size_request):
make the damn drop down window bigger (100 pixels, or the
requisition height, whichever is bigger.)
(e_completion_view_disconnect): remove handling for signals that
are gone.
(restart_completion_cb): gone.
(cancel_completion_cb): gone.
(clear_completion_cb): gone.
(lost_completion_cb): gone.
(e_completion_view_construct): track new names of ECompletion
signals.
* gal/e-text/e-completion-view.h (struct _ECompletionView): remove
restart_signal_id, cancel_signal_id, clear_signal_id, and
lost_signal_id.
* gal/e-text/e-entry.c (get_borders): new function, ala gtkentry.
(canvas_size_request): use get_borders instead of computing it
here.
(e_entry_init): remove duplicate assignment of
emulate_label_resize.
(e_entry_show_popup): remove some ifdef'ed crap.
(e_entry_start_completion): don't cancel the completion before
starting again. This keeps the popup from disappearing.
* gal/e-text/e-completion-match.c (e_completion_match_construct):
no more hit_count.
* gal/e-text/e-completion-match.h (struct _ECompletionMatch):
remove hit_count.
* gal/e-text/e-completion-callbacks.[ch]: new class so we can use
callbacks instead of subclassing.
svn path=/trunk/; revision=19859
e_text_destroy; chain up to ::dispose instead of ::destroy.
(e_text_dispose, e_text_class_init): Override ::dispose, not
::destroy.
svn path=/trunk/; revision=19577
2003-01-17 Chris Toshok <toshok@ximian.com>
* gal/e-text/e-text.c (show_pango_rectangle): reverse part of the
patch from 1/15.
svn path=/trunk/; revision=19510
2003-01-15 Chris Toshok <toshok@ximian.com>
* gal/e-text/e-text.c (show_pango_rectangle): apply the patch
NotZed and I came up with to fix the height of the evolution
composer entries.
svn path=/trunk/; revision=19486
2003-01-14 Chris Toshok <toshok@ximian.com>
* gal/e-text/e-entry.c (canvas_size_request): use PangoFontMetrics
here instead of using the ascent/descent of the GtkStyle's font.
svn path=/trunk/; revision=19468
2002-12-08 Chris Toshok <toshok@ximian.com>
* tests/test-text.c: lots of stuff, add 2 e-text widgets, 1
readonly, the other writable (that uses the uri model..)
* gal/e-text/e-text.[ch]: lots of pango changes. we don't do
*anything* with gdk/e fonts now. everything is pango. There are
still some issues while editting but display should more or less
work properly now, and without all the performance problems.
* gal/e-text/e-completion-view.c (e_completion_view_expose_event):
use gtk_widget_send_expose instead of gtk_widget_event so we don't
get the annoying gtk warning.
* gal/e-text/e-entry.c (e_entry_dispose): make sure both the gdk
and gtk grabs are removed.
(e_entry_class_init): fill_color_gdk is a boxed type, not pointer.
* gal/e-text/e-text-model-uri.h (E_TYPE_TEXT_MODEL_URI): oops,
this should be e_text_model_uri_get_type, not
e_text_model_get_type.
svn path=/trunk/; revision=19054
2002-11-29 Chris Toshok <toshok@ximian.com>
* gal/e-text/e-text.c: rework this from the gal-2 branch, clahey's
patch, and the stuff i'd done since. it's working *MUCH* better
now.
svn path=/trunk/; revision=18957
2002-11-11 Chris Toshok <toshok@ximian.com>
* gal/e-text/e-completion-view.c (e_completion_view_destroy): only
clear choices if cv->choices != NULL.
(e_completion_view_disconnect): zero out cancel_signal_id.
svn path=/trunk/; revision=18718
2002-09-10 JP Rosevear <jpr@ximian.com>
* gal/e-text/e-text.c (line_splitter): take a clip_height and use
it to set the maximum number of lines if necessary
(split_into_lines): pass clip_height arg
svn path=/trunk/; revision=18032
2002-06-05 Christopher James Lahey <clahey@ximian.com>
* gal/e-text/e-text.c: Added debugging printfs.
(e_text_request_paste): Fixed the order of setting
last_type_request before calling gtk_selection_convert due to a
reentrancy bug.
svn path=/trunk/; revision=17119
2002-06-03 Christopher James Lahey <clahey@ximian.com>
* gal/e-text/e-text.c, gal/e-text/e-text.h (e_text_style_set):
Reflow and redraw when the style gets set.
svn path=/trunk/; revision=17086
2002-05-09 Christopher James Lahey <clahey@ximian.com>
* gal/e-text/e-text.c: Switch from gnome_canvas_item_grab to
e_canvas_item_grab.
* gal/widgets/e-canvas.c, gal/widgets/e-canvas.h
(e_canvas_item_grab, e_canvas_item_ungrab): Added these functions.
From gal/e-table/ChangeLog:
2002-05-09 Christopher James Lahey <clahey@ximian.com>
* e-table-item.c, e-table-item.h: Switched from
gnome_canvas_item_grab to e_canvas_item_grab.
svn path=/trunk/; revision=16738
2002-05-02 Christopher James Lahey <clahey@ximian.com>
* gal/e-text/e-text.c (e_text_draw): Make the style here match the
proper widget style to emulate a label or an entry.
svn path=/trunk/; revision=16670