Tue Aug 28 18:29:28 2001 George Lebl <jirka@5z.com>
Patch to fix few 64bit issues
* gal/e-table/e-table-header-item.c (ethi_draw) (ethi_start_drag)
gal/widgets/e-categories.c (e_categories_value_at)
(e_categories_value_to_string):
Use GINT_TO_POINTER and GPOINTER_TO_INT to cast between pointers
and ints to fix 64bit issues connected with that.
* gal/e-table/e-table-sorting-utils.c
(e_table_sorting_utils_tree_check_position)
gal/util/e-sorter-array.c (e_sorter_array_append):
Use size_t for size not ints to fix crashes
* gal/e-text/e-completion-match.c, gal/e-text/e-completion.c:
Include <string.h>
svn path=/trunk/; revision=12507
2001-08-16 Jon Trowbridge <trow@ximian.com>
* gal/e-text/e-completion-match.h: Added "hit_count" to
ECompletionMatch. Used by search refinement/unrefinement.
* gal/e-text/e-completion.c (e_completion_refine_search): Added.
Handle automatic search refinements.
(e_completion_unrefine_search): Added. Handle automatic search
"unrefinements", or reversions.
(e_completion_begin_search): Check if the refinement or
unrefinement operations can be used to handle the search. Emit
"request_search" at the end of the call.
(e_completion_class_init): Added a new signal "request_search".
"begin_search" is now purely informational, telling views that a
series of matches and an "end_search" are forthcoming.
* configure.in: Increment version of 0.10.99.3.
svn path=/trunk/; revision=12116
2001-08-09 jacob berkman <jacob@ximian.com>
* configure.in: bumped up to 0.10.99.3
* gal/e-text/e-completion-view.c (e_completion_view_init): init
matches array
(e_completion_view_destroy): free matches array
(e_completion_view_disconnect): disconnect from the clear and
lost_match signals
(e_completion_view_clear_choices): fixup for ptr array
(e_completion_view_set_cursor_row): ditto
(e_completion_view_select): ditto
(e_completion_view_key_press_handler): ditto
(clear_completion_cb): handle the clear signal
(lost_completion_cb): remove a row from the model
(table_row_count): fixup for ptr array
(table_value_at): ditto
(e_completion_view_construct): connect to clear and lost
completion signals
(e_completion_view_set_width): ptr array fixup again
* gal/e-text/e-completion.c (e_completion_class_init): add new
clean / lost completion signals
(e_completion_init): initialize the matches array
(e_completion_destroy): free the matches array
(e_completion_add_match): fixup for matches being a GPtrArray
(e_completion_clear_matches): ditto
(e_completion_clear): new function to clear the list of matches
(e_completion_foreach_match): fixup for ptrarray
(e_completion_restart): ditto
(e_completion_found_match): if we are at the limit return first,
rather than adding and then unreffing. there very well could be
some weird crashes this caused but it is kind of unlikely.
(e_completion_lost_match): new function to forget about a match
(e_completion_end_search): add a comment on why this is broken
* gal/e-text/e-entry.c (e_entry_text_keypress): only start a
delayed completion if our completion timeout is >= 0. this
provides a way for the completion starting / stopping to be
controlled by something other than the EEntry (ie, file-sel)
svn path=/trunk/; revision=11843
2001-08-09 Jon Trowbridge <trow@ximian.com>
* configure.in: Bumped version up to 0.10.99.2.
* gal/e-text/e-entry.c (e_entry_class_init): Added
"completion_popup" signal.
(e_entry_show_popup): Emit "completion_popup" signal if the popup
has appeared or disappeared.
(e_entry_enable_completion_full): Listen for "cancel_completion"
signals from our model, and disable our completion if get one.
(e_entry_completion_popup_is_visible): Added. Returns TRUE if the
completion popup is on the screen.
* gal/e-text/e-text-model.c (e_text_model_class_init): Added
"cancel_completion" signal.
(e_text_model_cancel_completion): Added. Emits
"cancel_completion" signal.
svn path=/trunk/; revision=11824
2001-07-25 Jon Trowbridge <trow@ximian.com>
* gal/e-text/e-text.c (e_text_set_arg): Properly ref the font we
pass in as an ARG_FONT_E.
(_do_tooltip): Removed some crack. We no longer have to manually
ref the font. The ref-counting now happens inside the set_arg
function, as it should.
(e_text_destroy): Set text->font to NULL after unrefing it.
2001-07-25 Jon Trowbridge <trow@ximian.com>
* e-cell-text.c (ect_unrealize): Set text_view->font to NULL
after we unref it.
svn path=/trunk/; revision=11393
2001-07-20 Jon Trowbridge <trow@ximian.com>
* gal/e-text/e-completion-view.c (e_completion_view_set_width): Removed
some debugging spew I committed by mistake.
svn path=/trunk/; revision=11293
2001-07-20 Jon Trowbridge <trow@ximian.com>
* gal/e-text/e-entry.c (e_entry_enable_completion_full): Change
window policy to allow the completion window to shrink when the
number of options decreases.
* gal/e-text/e-completion-view.c (e_completion_view_construct):
Removed some obsolete code.
svn path=/trunk/; revision=11292
2001-07-15 Christopher James Lahey <clahey@ximian.com>
* gal/e-text/e-text.c (e_text_event): Start editing immediately on
a button_press that grabs the focus. e_canvas_item_grab_focus
doesn't seem to get us the focus event until the event loop.
Fixes Ximian bug #1766.
svn path=/trunk/; revision=11111
2001-07-09 Federico Mena Quintero <federico@ximian.com>
* gal/e-text/e-text.c (_get_position): For E_TEP_END_OF_BUFFER,
use the length in bytes, not the length in characters --- this
function is supposed to return byte offsets.
svn path=/trunk/; revision=10941
2001-07-07 Christopher James Lahey <clahey@ximian.com>
* gal/e-text/e-text.c, gal/e-text/e-text.h (e_text_destroy):
Destroy the tooltip if we're the owner when we're destroyed.
Also, keep a reference to the text object in case we get a signal
on the window after the text object is destroyed.
* gal/widgets/e-canvas.c (e_canvas_destroy): Hide the tooltip if
there is one when the canvas is destroyed.
svn path=/trunk/; revision=10888
2001-07-05 Christopher James Lahey <clahey@ximian.com>
* gal/e-text/e-text.c (e_text_command): Don't scroll to the cursor
on grab, ungrab, noop, and copy commands.
svn path=/trunk/; revision=10808
2001-07-03 Christopher James Lahey <clahey@ximian.com>
* gal/e-text/e-text.c (e_text_point): If lines is NULL here split
into lines and just return that the point is outside this text
object.
svn path=/trunk/; revision=10730
2001-06-29 Jon Trowbridge <trow@ximian.com>
* gal/e-text/e-completion-match.c (e_completion_match_unref): Do
nothing if passed NULL.
(e_completion_match_compare): Move the sort_major comparison out
to make it the primary sort key (followed by score and then
sort_minor).
(e_completion_match_compare_alpha): Move the sort_major comparison
out to make it the primary sort key.
svn path=/trunk/; revision=10625
2001-06-08 Jon Trowbridge <trow@ximian.com>
* gal/e-text/e-completion-view.c: Turned off alternating row
colors in our ETable specification.
* gal/e-text/e-completion-match.c (e_completion_match_compare_alpha):
Fix the sort routine to properly use the major & minor keys for
sorting grouped elements with the same match text. I had this all
wrong.
svn path=/trunk/; revision=10159
2001-06-07 jacob berkman <jacob@ximian.com>
* gal/e-text/e-entry.c (canvas_size_allocate): we can ignore the
border, as e-text takes care of that for us
(canvas_size_request): correctly handle when borders should be
drawn
* gal/e-text/e-completion-view.c (e_completion_view_paint): fix a
small bug in the drawing-2-pixel-border change to my patch
svn path=/trunk/; revision=10149
2001-06-06 Jon Trowbridge <trow@ximian.com>
* gal/e-text/e-entry.c:
* gal/e-text/e-completion-view.c: Applied patch from Jacob Berkman
to un-offset the completion popup and add a border around it. I
tweaked it slightly to make the border two pixels thick instead of
one. (Which I like, but might annoy everyone else. We'll see.)
svn path=/trunk/; revision=10133
2001-06-05 Jon Trowbridge <trow@gnu.org>
* gal/e-text/e-entry.c: Small changes throughout to use
ECompletionMatch.
* gal/e-text/e-completion-view.c: Small changes throughout
to use ECompletionMatch.
* gal/e-text/e-completion.c: Small changes throughout to use
ECompletionMatch.
* gal/e-text/e-completion-match.h:
* gal/e-text/e-completion-match.c: Added. A struct to contain
completion matches. This lets us more easily pass around
information between the various bits of completion machinery.
svn path=/trunk/; revision=10118
2001-05-31 jacob berkman <jacob@ximian.com>
* gal/e-text/e-entry.c (e_entry_init): set allow_newlines on the
etext item to false, since we are like an entry
svn path=/trunk/; revision=10061
2001-05-07 Federico Mena Quintero <federico@ximian.com>
* gal/e-text/e-text.c (e_text_reflow): Request an update if just
our line widths needed recalculation. This fixes the bug where
the text item would not repaint itself if the canvas lost the
focus.
svn path=/trunk/; revision=9705
2001-04-29 Christopher James Lahey <clahey@ximian.com>
* gal/e-text/e-text.c: Made fewer calls to functions like
split_into_lines to save time when possible.
svn path=/trunk/; revision=9629
2001-04-20 Jon Trowbridge <trow@ximian.com>
* gal/e-text/e-completion-test.c: Limit total matches, for better
performance on slow machines. It is supposed to be a test, so
correctness of the completion operations isn't really a
priority...
* gal/e-text/e-completion-view.c (e_completion_view_construct):
Set GTK_CAN_FOCUS flag.
* gal/e-text/e-entry.c (e_entry_show_popup): Evil! Evil! Unclean!
Unclean! Manually check if the pointer is in the area where the
popup is going to appear, and if it is, warp the pointer out of
the way. After days of fucking around, this horrible hack is the
only way that I've been able to figure out to keep the focus from
being taken away from the entry and ending up somewhere strange
when the popup pops up. (The main problem is with the case of
focus-follows-cursor --- click-to-focus works fine. Sawfish
idiocincracies may also be causing problems, but I don't want to
unjustly accuse the WM of anything, as tempting and appealing as
that can be.)
(key_press_cb): Proxy for forwarding the popup's key press events
to the entry.
(key_release_cb): Proxy for forwarding the popup's key release
events to the entry.
These proxies should be enough to take care of my focus problems.
Unfortunately, they aren't, and the pointer-warping-focus-horror
is required for reasons that I don't fully understand.
* gal/e-text/e-text.c (_get_xy_from_position): Made
_get_xy_from_position return a boolean. It returns TRUE if the
computation was successful
(and if valid data is now in *xp and *yp), FALSE otherwise. Make
sure that text->lines is not NULL, and return FALSE if it is.
(_get_position): Test that _get_xy_from_position returns TRUE
before using the values in x and y.
(_get_position): Test that _get_xy_from_position returns TRUE
before using the values in x and y.
Garbage values being returned in passed-in pointers created a race
condition where you could hang an EText if you deleted the entire
contents of the buffer really quickly.
svn path=/trunk/; revision=9468
2001-04-16 Christopher James Lahey <clahey@ximian.com>
* gal/e-text/e-text.c (tooltip_event): Propagate the event after
sending it to the base EText.
svn path=/trunk/; revision=9379
2001-04-15 Christopher James Lahey <clahey@ximian.com>
* gal/e-text/e-text.c: Made setting the rgba color work even if
you're using the non-aa canvas (except for the a.)
svn path=/trunk/; revision=9337
2001-04-15 Christopher James Lahey <clahey@ximian.com>
* gal/e-text/e-text.c (tooltip_event): Use e_canvas_hide_tooltip
and e_canvas_popup_tooltip. Set bold on the tooltip.
* gal/widgets/e-canvas.c, gal/widgets/e-canvas.h: Added
e_canvas_popup_tooltip and e_canvas_hide_tooltip.
svn path=/trunk/; revision=9323
* tests/test-tree-3.c (INITIAL_SPEC): add a missing \
* gal/e-text/e-text.c (_get_position_from_xy): Add a "break;" to
an otherwise-empty default case to make it ANSI.
svn path=/trunk/; revision=9201
(woohoo!):
2001-04-05 Gediminas Paulauskas <menesis@delfi.lt>
* gal/widgets/e-popup-menu.c: Copied gnome_app_helper_gettext function
here, and use it for translating menu names (they are passed from app as
well as from gal in arrays with N_(), and domains differ).
svn path=/trunk/; revision=9190
2001-04-04 Christopher James Lahey <clahey@ximian.com>
* gal/e-text/e-text-model-uri.c, gal/e-text/e-text.c,
gal/e-text/e-text.h, gal/e-text/e-text-event-processor.c,
gal/util/e-xml-utils.c, gal/widgets/e-cursors.c,
gal/widgets/e-cursors.h: Fixed headers. Moved the .h associated
with each .c to the top of the list of included files.
* gal/util/e-util.h: Removed the bonobo-xobject.h header here.
* gal/util/e-xml-utils.c: Replaced strcasecmp with g_strcasecmp.
* gal/widgets/e-canvas-vbox.c: Make this work even if the item is
destroyed after the vbox.
* gal/widgets/e-categories.c (do_parse_categories): Made this
translate using e_utf8_from_locale string as it should.
svn path=/trunk/; revision=9175
2001-03-18 Miguel de Icaza <miguel@ximian.com>
* tests/test-tree-1.c (create_tree): Set the size of the thing to
a decent value that lets us test stuff.
2001-03-16 Miguel de Icaza <miguel@ximian.com>
* gal/e-text/e-entry.h: Expose the canvas/item that used to be
public and that were privatized.
svn path=/trunk/; revision=8802
* gal/widgets/e-canvas.c (e_canvas_item_grab_focus): Make this
take an extra argument saying whether or not to grab the
widget-level focus.
* gal/e-text/e-text.c (e_text_event): Update arguments to
e_canvas_item_grab_focus.
svn path=/trunk/; revision=8745
2001-03-12 Jon Trowbridge <trow@ximian.com>
* gal/e-text/e-text-model.c (e_text_model_real_insert_length):
Renamed "temp" as "new_text", to avoid confusion.
(e_text_model_real_delete): Renamed "temp" as "new_text", to avoid
confusion.
svn path=/trunk/; revision=8640
2001-03-06 Jon Trowbridge <trow@gnu.org>
* gal/e-text/e-entry.c (e_entry_text_keypress): Added. This is
part of a change of sematics that makes things much nicer for the
user --- auto-activate the completion popup only on keypresses
than also change the entry.
(e_entry_proxy_changed): Record that the underlying EText has
changed, and set up a timeout to clear the changed_since_keypress
flag in a very short amount of time.
(e_entry_init): Connect to the EText's "keypress" signal".
(e_entry_destroy): If our completion_delay_tag timeout is still
floating around out there when we are winding things down, remove
it.
* gal/e-text/e-text.c (e_text_class_init): Added keypress signal.
(e_text_text_model_reposition): Removed some old cruft.
(e_text_event): Emit our keypress signal after handling events of
type GDK_KEY_PRESS.
svn path=/trunk/; revision=8566
2001-03-05 Jon Trowbridge <trow@gnu.org>
* configure.in: Set version number to 0.5.99.5
* gal/e-text/e-entry.c (e_entry_class_init): Add a "popup" signal.
If you have trepidations about this, see the technical argument
below.
(e_entry_init): Connect to the EText's popup signal.
(e_entry_proxy_popup): Proxy emitter for popup signals from the
EText.
* gal/e-text/e-text.c (e_text_class_init): Added a "popup" signal.
(e_text_event): Emit the "popup" signal on right-clicks. Now you
could ask yourself: "should there be a signal named 'popup' in
EText that gets emitted on right-clicks?" And this is a
reasonable question, since... well, this has a funny feeling to
it. But the whole point of GNOME, or at least one of the original
points of GNOME, was to impose policy in a reasonable way when it
made sense in order to simplify the user's experience. Convention
dictates that popup menus are tied to right-clicks --- so rather
than setting up some elaborate forwarding of button-press signals,
why not just impose a little policy and set up a signal that is
closely tied to a familiar set of semantics? Maybe it isn't the
best thing to do from a aesthetics-of-the-API point of view, but I
doubt anyone could condemn it as being anything more than mostly
harmless.
svn path=/trunk/; revision=8565
2001-03-05 Christopher James Lahey <clahey@ximian.com>
* configure.in: Upped the version number to 0.5.99.4.
* gal/e-text/e-text.c (e_text_draw): Fixed a crash here.
svn path=/trunk/; revision=8556
2001-03-01 Jon Trowbridge <trow@ximian.com>
* configure.in: Boost version number to 0.5.99.3.
* gal/e-text/e-entry.c (e_entry_show_popup): Grab pointer when the
popup is visible, and then hide the popup if any button press
events occur outside of the popup. This lets up avoid most of the
worst "floating popup" cases that would occur if windows are
moved, desktops changed, etc. with the mouse. (Doing things like
changing desktop w/ keybindings can still cause a "floating
popup", but that is also true of Gtk's own combo box.) Change
popup positioning to slightly offset it from the entry, rather
than just plopping it down directly below.
(button_press_cb): Determine if a button press occured outside of
the popup when the pointer was grabbed, and unbrowse accordingly.
* gal/e-text/e-completion-view.c
(e_completion_view_key_press_handler): Improve keystroke handling.
Allow Tabs to pass through (after hiding the pop-up) in order to
allow focus change requests to work properly.
(e_completion_view_construct): Disable horizontal scrollbars.
* gal/e-text/e-completion-test.c (main): Reworked to use signals
instead of explicit callbacks.
* gal/e-text/e-completion.h:
* gal/e-text/e-completion.c: Fix the awkward mix of signals and
explicitly-specified callbacks by taking out the explicit
callbacks. This approach is more gtk-ish, after all.
svn path=/trunk/; revision=8458
2001-02-27 Christopher James Lahey <clahey@ximian.com>
* gal/e-text/e-completion-view.c: Changed
e_table_selection_model_clear to e_selection_model_clear.
* tests/test-tree-3.c: Changed E_TABLE_CURSOR_LINE to
E_CURSOR_LINE.
From gal/e-table/ChangeLog:
2001-02-27 Christopher James Lahey <clahey@ximian.com>
* e-table-click-to-add.c, e-table-group-container.c,
e-table-group-container.h, e-table-group-leaf.c,
e-table-group-leaf.h, e-table-item.c, e-table-item.h,
e-table-specification.c, e-table-specification.h, e-table.c,
e-table.h: Changed a lot of the ETableSelectionModels to
ESelectionModels, a lot of the ETableSorters to ESorters, all the
ETableCursorModes to ECursorModes, and all of the
ETableForeachFuncs into EForeachFuncs.
* e-table-defines.h: Moved ETableForeachFunc and ETableCursorMode
to e-selection-model.h.
* e-table-selection-model.c, e-table-selection-model.h: Made this
a subclass of ESelectionModel which simple connects to an
ETableModel.
* e-table-sorter.c, e-table-sorter.h: Made this a subclass of
ESorter so that implements the same semantics it used to.
svn path=/trunk/; revision=8422
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