2001-02-23 Jon Trowbridge <trow@ximian.com>
* gal/e-text/e-entry.c (e_entry_set_position): Fixed.
(e_entry_select_region): Fixed.
(e_entry_show_popup): Grab/ungrab the pointer and keyboard when
the popup appears/disappears. This (mostly) solves the "floating
popup" problem.
(button_press_cb): Added. We catch button presses outside of
the popup, and hide the popup when they occur.
* gal/e-text/e-completion-view.c (e_completion_view_get_type,
e_completion_view_class_init): Changed base class to GtkEventBox.
(e_completion_view_key_press_handler): Make Escape always cause an
unbrowse, even wehen we are editting.
svn path=/trunk/; revision=8369
2001-02-19 Christopher James Lahey <clahey@ximian.com>
* configure.in: Changed the version number to 0.5.99.1.
* gal/Makefile.am (libgal_la_LIBADD): Change the directories for
e-table-text-model.lo, e-text-event-processor.lo, and
e-text-event-processor-emacs-like.lo. Reordered the e-text
directory to be after the e-table directory in build order.
* gal/e-text/Makefile.am: Removed
e-text-event-processor-emacs-like.c,
e-text-event-processor-emacs-like.h,
e-text-event-processor-types.h, e-text-event-processor.c, and
e-text-event-processor.h. Added e-table-text-model.c and
e-table-text-model.h.
* gal/e-text/e-table-text-model.c: Changed the signature of these
mehtods to match the changed signature in ETextModel.
* gal/e-text/e-text-event-processor-emacs-like.c,
gal/e-text/e-text-event-processor-emacs-like.h,
gal/e-text/e-text-event-processor-types.h,
gal/e-text/e-text-event-processor.c,
gal/e-text/e-text-event-processor.h: Moved these to gal/util/.
* gal/e-text/e-text.c, gal/e-text/e-text.h: Changed the includes
to match the moved files.
* gal/util/Makefile.am: Added e-text-event-processor-emacs-like.c,
e-text-event-processor-emacs-like.h,
e-text-event-processor-types.h, e-text-event-processor.c, and
e-text-event-processor.h.
* gal/util/e-text-event-processor-emacs-like.h,
gal/util/e-text-event-processor.h: Changed the includes to match
the moved files.
2001-02-19 Christopher James Lahey <clahey@ximian.com>
* Makefile.am: Removed e-table-text-model.c and
e-table-text-model.h.
* e-table-text-model.c, e-table-text-model.h: Moved these to
gal/e-text/.
* e-cell-text.c: Changed the include line for
e-text-event-processor.h and e-text-event-processor-emacs-like.h.
svn path=/trunk/; revision=8298
2001-02-19 Jon Trowbridge <trow@ximian.com>
* gal/e-text/e-entry.c (e_entry_enable_completion_full): Added.
Allows you to attach an ECompletion to an EEntry, and have that
ECompletion be used for (obviously enough) completions.
* gal/e-text/e-completion-view.h, gal/e-text/e-completion-view.c:
Added. ECompletionView is a widget for displaying the results of
a completion request in a format that is appropriate for a
drop-down window.
* gal/e-text/e-completion.h, gal/e-text/e-completion.c: Added.
ECompletion is a "pure virtual base class" for completion-type
operations. It is implemented so that completions can be either
synchronous or asynchronous.
* gal/e-text/e-text.c: Lots of changes to accomodate the
ETextModel changes. First of all, we render embedded text objects
as being underlined. We also cause the model to emit the
appropriate object activation signal when an embedded object is
double-clicked. Also, all of the code that moves the cursor in
response to user input has been removed. Instead, the EText now
listens for "reposition" events from the underlying model, and
bases all cursor motions on those.
(get_bounds_item_relative): Fixed bug in the handling of
differently-anchored text. Being differently-anchored is not a
crime or a perversion --- it is an alternative lifestyle that we
have to respect.
* gal/e-text/e-text-model-uri.h, gal/e-text/e-text-model-uri.c: A
sample ETextModel that converts URIs into embedded objects that
get opened in the browser when you double-click them.
* gal/e-text/e-text-model-repos.h,
gal/e-text/e-text-model-repos.c: Added. A group of simple
structures & functions for handling various cursor movement rules.
These are the sorts of things that are passed as arguments to
ETextModel "reposition" event handlers.
* gal/e-text/e-text-model.h, gal/e-text/e-text-model.c: Privitized
the ETextModel struct and "methodized" all of the operations, so
that derived classes can do arbitrarily respond to get/set
requests in arbitrarily strange ways. Also added the concept of
declaring regions of the text as "embedded text objects".
Finally, caused operations that change the text to emit a
"reposition" signal that passes information that can be used by a
view (like an EText) to move the cursor or selection in an
intelligent way in response to those changes. This means that you
can now open two ETexts that look at the same ETextModel, and have
the cursor in one do the right thing when you edit the other. (As
opposed to producing a lot of potential segfaults, as it was
before.)
svn path=/trunk/; revision=8280
2001-02-08 Christopher James Lahey <clahey@ximian.com>
* gal/e-text/e-text-model-test.c (describe_model): Commented out
this function since it's not being used.
svn path=/trunk/; revision=8109
2001-02-07 Christopher James Lahey <clahey@ximian.com>
* gal/e-text/e-text.c, gal/e-text/e-text.h (e_text_realize): Store
the whole GdkColor instead of just the pixel.
svn path=/trunk/; revision=8063
2001-02-05 Christopher James Lahey <clahey@ximian.com>
* gal/e-text/e-entry.h: Changed draw_borders from a gboolean to a
a guint : 1.
svn path=/trunk/; revision=7990
2001-01-31 Radek Doulik <rodo@ximian.com>
* gal/e-text/e-entry.h: added gboolean draw_borders to make it
compile, probably some forgotten commit of e-entry.h
svn path=/trunk/; revision=7926
2001-01-30 Christopher James Lahey <clahey@ximian.com>
* gal/e-text/e-entry.c (canvas_size_allocate, et_set_arg): Fixed
allocation and placement of text for no bordered text.
svn path=/trunk/; revision=7922
2001-01-30 Christopher James Lahey <clahey@ximian.com>
* gal/e-text/e-entry.c (canvas_size_allocate, et_set_arg): Fixed
allocation and placement of text window.
* gal/e-text/e-text.c (e_text_draw): Fixed display of the text.
svn path=/trunk/; revision=7920
2001-01-30 Christopher James Lahey <clahey@helixcode.com>
* Reverted the latest change to EText since we're in feature freeze.
svn path=/trunk/; revision=7912
2001-01-29 Jon Trowbridge <trow@gnu.org>
* gal/e-text/e-text.c (e_text_init): Connect to the model's
"position" signal.
(e_text_init): Set default value for rgba_object as blue.
(e_text_destroy): Disconnect model position signal.
(fix_selection): Some extra sanity checking to keep the selection
from spilling outside of the bounds of the text string as it
expands or contracts. Should be obsolete due to the changes to
objectify_uris --- but I'll leave this in here for now, in an
attempt to avoid non-\0-terminated strings, segfaults, and all of
that fun stuff.
(e_text_text_model_position): Move our cursor according to the
suggestions made by our ETextModel, via the "position" signal.
(text_width_with_objects): Check that text is not NULL.
(text_draw_with_objects): Accept an extra GdkGC for use in drawing
objects.
(e_text_set_arg): Properly handle the "position" signal when
changing models.
(e_text_draw): Initialize the GC for drawing objects, if
necessary.
(_insert): Comment out the code that adjustes text->selection_*.
The cursor is now moved by the ETextModel directly via the
position signal, not by the view.
* gal/e-text/e-text-model-uri.c (objectify_uris): Add more
sophisticated uri recognition via regular expressions.
(objectify_uris): Changed to track position changes as model->text
expands and contracts along with the objects. Block the
objectification of any chunks of text that straddle our current
position.
(e_text_model_uri_set_text): Added position info to objectify_uris
call.
(e_text_model_uri_insert): Added position info to objectify_uris
call.
(e_text_model_uri_insert_length): Added position info to
objectify_uris call.
(e_text_model_uri_delete): Added position info to objectify_uris
call.
* gal/e-text/e-text-model.c (e_text_model_class_init): Added a
"position" signal that allows the ETextModel to send cursor
positioning information back to any view. We need this for text
with objects, where the text string can grow and shrink in ways
that the view doesn't expect.
(e_text_model_real_insert): Added sanity checking of args and a
position emission.
(e_text_model_real_insert_length): Added sanity checking of args
and a position emission.
(e_text_model_real_delete): Added sanity checking of args.
(e_text_model_suggest_position): A wrapper around the "position"
signal emitter.
svn path=/trunk/; revision=7894
2001-01-26 Jon Trowbridge <trow@gnu.org>
* gal/e-text/e-text-model-test.c: Added; a new test program that
demonstrates objects in ETexts.
* gal/e-text/e-text-model-uri.c: Added; a text model that converts
URIs in the text into objects that are passed off to the GNOME URI
handler when activated. This is actually still extremely broken;
I got it just working enough to test out my EText changes.
* gal/e-text/e-text.c: A whole lot of changes, designed to make
ETextModel objects render properly. The basic idea of the changes
is pretty simple, though.
(text_width_with_objects): First of all, this function is an
alternative to e_font_utf8_text_width that takes into the account
the embedded \1s in the text string and properly accounts for the
width of the object strings.
(unicode_strlen_with_objects): Next, this function finds the
proper strlen of a string, expanding the \1s.
(text_draw_with_objects): Finally, this is just a replacement for
e_font_draw_utf8_text that does the right thing for objects. I've
gone through all of e-text.c and replace calls by those original
functions with my new object-enabled alternatives.
(split_into_lines): Some tweaking to get line breaking to work
properly. Made \1 into a "break character", so that we can break
lines between multiple adjacent objects. (Which seemed like the
right thing to do, but there may be cases where that is
undesireable.)
(_get_position_from_xy): Fixed to properly handle embedded
objects, and to get the right selection semantics for objects.
(Or at least semantics that feel right to me.) Also fixed a bug
that caused selection, etc. to not work properly if the text was
anchored anywhere other than with GTK_ANCHOR_NORTH*.
(_get_position): Hacked to cause objects to activate when they are
double-clicked. There is probably a better way to do this.
* gal/e-text/e-text-model.c (e_text_model_real_object_count):
Provide a default implementation of an object counter. Derived
classes might want to override this for efficiency reasons.
(e_text_model_strdup_expanded_text): Added. Allocates and returns
a string contains the model's text with the objects "expanded"
within.
* gal/e-text/e-text-model.h: Added obj_count, get_nth_obj, and
activate_nth_obj virtual methods to ETextModelClass.
svn path=/trunk/; revision=7842
2001-01-18 Christopher James Lahey <clahey@helixcode.com>
* gal/e-text/e-text.c (_do_tooltip): Make tooltip appear properly
even if anchor is set.
svn path=/trunk/; revision=7620
2001-01-18 Christopher James Lahey <clahey@helixcode.com>
* gal/e-text/e-entry.c (canvas_size_allocate, et_set_arg): Center
text vertically.
svn path=/trunk/; revision=7619
2001-01-17 Christopher James Lahey <clahey@helixcode.com>
* gal/e-text/e-entry.c (e_entry_init): Made EEntry be shrinkable.
svn path=/trunk/; revision=7604
2001-01-17 Christopher James Lahey <clahey@helixcode.com>
* gal/e-text/e-entry.c, gal/e-text/e-entry.h (et_set_arg): Make
justification work properly for entries. Documented.
svn path=/trunk/; revision=7603
2001-01-16 Jason Leach <jasonleach@usa.net>
* gal/e-text/e-text.c (e_text_set_arg): Emit a "changed" signal to
the EText after we gtk_object_set a "model" arg and fill the EText
with text from the model, which obviously changes the text.
svn path=/trunk/; revision=7530
2000-12-26 Christopher James Lahey <clahey@helixcode.com>
* gal/e-text/e-entry.c: Added a "draw_background" argument. Set
the default for the "draw_background" argument to the contained
EText to TRUE.
* gal/e-text/e-text.c: Changed the default for the
"draw_background" argument to FALSE.
svn path=/trunk/; revision=7176
2000-12-26 Miguel de Icaza <miguel@helixcode.com>
* gal/e-text/e-entry.c: Connect to the "changed" and "activate"
signals on the EText to the proxy routines.
(e_entry_proxy_changed): Proxy this to our signals.
(e_entry_proxy_activate): ditto.
svn path=/trunk/; revision=7173
2000-12-25 Miguel de Icaza <miguel@helixcode.com>
* gal/e-text/e-text.c (e_text_init): Always have some text. Fixes crash.
* gal/widgets/e-reflow.c (set_empty): Set draw_background to FALSE.
svn path=/trunk/; revision=7172
2000-12-25 Miguel de Icaza <miguel@helixcode.com>
* gal/e-text/e-text.c (e_text_init): Always have some text. Fixes crash.
svn path=/trunk/; revision=7171
2000-12-25 Miguel de Icaza <miguel@helixcode.com>
* gal/e-text/e-text.c (e_text_draw): Made the code CanvasItem
correct: the code should not draw at arbitrary positions in the
GdkWindow, it should instead draw from item->x1, item->y1 to
item->y1, item->y2 (Chris, we need to talk about this, I think my
current fix is passable, but might not be fully correct.
Specially the interpretation of the width, height arguments).
(e_text_class_init): Fix name.
(e_text_set_arg): Use correct name.
svn path=/trunk/; revision=7163
2000-12-13 Christopher James Lahey <clahey@helixcode.com>
* gal/e-text/e-text.c (_do_tooltip): Changed the color from yellow
to light gray.
* gal/widgets/e-canvas-vbox.c (e_canvas_vbox_event): Made it so
that e-canvas-vbox doesn't eat all the keyboard events. This
means widget navigation keys work properly.
svn path=/trunk/; revision=6989
2000-10-19 Christopher James Lahey <clahey@helixcode.com>
* gal/e-text/e-text-event-processor-emacs-like.c: Made the number
keys on the number pad work in ETexts and ECellTexts.
svn path=/trunk/; revision=6027
2000-10-07 Damon Chaplin <damon@helixcode.com>
* gal/e-text/e-text.c (e_text_unrealize): set cursors to NULL after
destroying them, to avoid any possibility of BadCursor.
(e_text_event): just return if the EText item is destroyed.
svn path=/trunk/; revision=5780
2000-09-22 Christopher James Lahey <clahey@helixcode.com>
* gal/e-text/e-text-event-processor-emacs-like.c: Fixed operation
of the keypad keys in EText and ECellText.
svn path=/trunk/; revision=5548
2000-08-25 Christopher James Lahey <clahey@helixcode.com>
* e-table-col.c, e-table-config.c, e-table-header.c,
e-table-text-model.c: Added some g_return_if_fails and
g_return_val_if_fails.
svn path=/trunk/; revision=5056