[gnumeric] try to show the function name completion tooltip whenever it is appropriate but not more often



commit d008d122e23f8f16da9143ab8fe7a4c7f6978831
Author: Andreas J Guelzow <aguelzow pyrshep ca>
Date:   Mon Sep 20 11:00:44 2010 -0600

    try to show the function name completion tooltip whenever it is appropriate but not more often
    
    2010-09-20  Andreas J. Guelzow <aguelzow pyrshep ca>
    
    	* gnumeric-expr-entry.c (gee_update_lexer_items): we need to lex even
    	  if it isn't an expression, but remember whether we have one!
    	(gee_check_tooltip): check whether itis sensible to create a tooltip
    	(gnm_expr_entry_find_range): check for null pointer

 src/widgets/ChangeLog             |    7 +++++++
 src/widgets/gnumeric-expr-entry.c |   11 +++++++----
 2 files changed, 14 insertions(+), 4 deletions(-)
---
diff --git a/src/widgets/ChangeLog b/src/widgets/ChangeLog
index 206eccb..18ece84 100644
--- a/src/widgets/ChangeLog
+++ b/src/widgets/ChangeLog
@@ -1,5 +1,12 @@
 2010-09-20  Andreas J. Guelzow <aguelzow pyrshep ca>
 
+	* gnumeric-expr-entry.c (gee_update_lexer_items): we need to lex even
+	  if it isn't an expression, but remember whether we have one!
+	(gee_check_tooltip): check whether itis sensible to create a tooltip
+	(gnm_expr_entry_find_range): check for null pointer
+
+2010-09-20  Andreas J. Guelzow <aguelzow pyrshep ca>
+
 	* gnumeric-expr-entry.c (gee_update_lexer_items): don't bother to lex
 	  if it isn't an expression
 
diff --git a/src/widgets/gnumeric-expr-entry.c b/src/widgets/gnumeric-expr-entry.c
index a967e7d..d4b4d9e 100644
--- a/src/widgets/gnumeric-expr-entry.c
+++ b/src/widgets/gnumeric-expr-entry.c
@@ -121,6 +121,7 @@ struct _GnmExprEntry {
 		gboolean         had_stuff;
 		gulong           handlerid;
 		gboolean         enabled;
+		gboolean         is_expr;
 		gboolean         completion_se_valid;
 		gchar           *completion;
 		guint            completion_start;
@@ -885,8 +886,8 @@ gee_update_lexer_items (GnmExprEntry *gee)
 			 sheet_get_conventions (sheet), NULL);
 	}
 
-	if ((NULL != gnm_expr_char_start_p (str) || gee->is_cell_renderer) 
-	    && !(gee->flags & GNM_EE_SINGLE_RANGE)) {
+	gee->tooltip.is_expr = (NULL != gnm_expr_char_start_p (str));
+	if (!(gee->flags & GNM_EE_SINGLE_RANGE)) {
 		gee->lexer_items = gnm_expr_lex_all 
 			(str, &gee->pp,
 			 GNM_EXPR_PARSE_UNKNOWN_NAMES_ARE_STRINGS,
@@ -921,7 +922,8 @@ gee_check_tooltip (GnmExprEntry *gee)
 	gboolean stuff = FALSE, completion_se_set = FALSE;
 	GnmLexerItem *gli, *gli_c;
 
-	if (gee->lexer_items == NULL) {
+	if (gee->lexer_items == NULL || !gee->tooltip.enabled || 
+	    (!gee->tooltip.is_expr && !gee->is_cell_renderer)) {
 		gee_delete_tooltip (gee, TRUE);
 		return;
 	}
@@ -961,7 +963,7 @@ gee_check_tooltip (GnmExprEntry *gee)
 		gli--;
 
 	/* This creates the completion tooltip */
-	if (!stuff && gli->start > 0 && gli->token == STRING) {
+	if (!stuff && gli->token == STRING) {
 		guint start_t = gli->start;
 		char *prefix;
 		GSList *list;
@@ -1798,6 +1800,7 @@ gnm_expr_entry_find_range (GnmExprEntry *gee)
 
 	if (gee->lexer_items == NULL)
 		gee_update_lexer_items (gee);
+	g_return_val_if_fail (gee->lexer_items != NULL, FALSE);
 
 	gli = gee->lexer_items;
 	while (gli->token != 0 && gli->start < (guint) (ptr - text))



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]