ajwillia-ms pushed a commit to branch master.

http://git.enlightenment.org/tools/edi.git/commit/?id=7a9241458a377e0387100d20a51f33cf9e1636c6

commit 7a9241458a377e0387100d20a51f33cf9e1636c6
Author: Andy Williams <a...@andywilliams.me>
Date:   Wed Mar 30 16:44:50 2016 +0100

    [editor] move tooltips to inline error meessages
    
    Not perfect on refresh times but much easier to read than before
---
 elm_code/src/lib/Makefile.am                      |  1 -
 elm_code/src/lib/widget/elm_code_widget.c         | 38 +++++++++++-------
 elm_code/src/lib/widget/elm_code_widget_private.h |  1 -
 elm_code/src/lib/widget/elm_code_widget_tooltip.c | 47 -----------------------
 elm_code/src/tests/widget/elm_code_test_widget.c  |  1 -
 5 files changed, 25 insertions(+), 63 deletions(-)

diff --git a/elm_code/src/lib/Makefile.am b/elm_code/src/lib/Makefile.am
index 08efd7a..91bf637 100644
--- a/elm_code/src/lib/Makefile.am
+++ b/elm_code/src/lib/Makefile.am
@@ -41,7 +41,6 @@ elm_code_line.c \
 elm_code_text.c \
 elm_code_file.c \
 elm_code_parse.c \
-widget/elm_code_widget_tooltip.c \
 widget/elm_code_widget_selection.c \
 widget/elm_code_widget.c \
 elm_code_diff_widget.c \
diff --git a/elm_code/src/lib/widget/elm_code_widget.c 
b/elm_code/src/lib/widget/elm_code_widget.c
index c1f82bd..a5ca616 100644
--- a/elm_code/src/lib/widget/elm_code_widget.c
+++ b/elm_code/src/lib/widget/elm_code_widget.c
@@ -313,7 +313,7 @@ _elm_code_widget_fill_line(Elm_Code_Widget *widget, 
Elm_Code_Line *line)
    Eina_Unicode unichr;
    unsigned int length, x, charwidth, i, w;
    int chrpos, gutter;
-   Evas_Object *grid;
+   Evas_Object *grid, *status;
    Evas_Textgrid_Cell *cells;
    Elm_Code_Widget_Data *pd;
 
@@ -363,6 +363,29 @@ _elm_code_widget_fill_line(Elm_Code_Widget *widget, 
Elm_Code_Line *line)
      _elm_code_widget_fill_whitespace(widget, '\n', &cells[length + gutter]);
 
    evas_object_textgrid_update_add(grid, 0, 0, w, 1);
+
+   // add a status below the line if needed (and remove those no longer needed)
+   status = evas_object_data_get(grid, "status");
+   if (line->status_text)
+     {
+        if (!status)
+          {
+             status = elm_label_add(pd->gridbox);
+             evas_object_size_hint_weight_set(status, EVAS_HINT_EXPAND, 
EVAS_HINT_EXPAND);
+             evas_object_size_hint_align_set(status, 0.05, EVAS_HINT_FILL);
+             evas_object_show(status);
+
+             elm_box_pack_after(pd->gridbox, status, grid);
+             evas_object_data_set(grid, "status", status);
+          }
+        elm_object_text_set(status, line->status_text);
+     }
+   else if (status)
+     {
+        elm_box_unpack(pd->gridbox, status);
+        evas_object_hide(status);
+        evas_object_data_set(grid, "status", NULL);
+     }
 }
 
 static void
@@ -713,24 +736,15 @@ _elm_code_widget_mouse_move_cb(void *data, Evas *e 
EINA_UNUSED, Evas_Object *obj
 {
    Elm_Code_Widget *widget;
    Elm_Code_Widget_Data *pd;
-   Elm_Code_Line *line;
    Evas_Event_Mouse_Move *event;
    unsigned int row;
    int col;
-   Eina_Bool hasline;
 
    widget = (Elm_Code_Widget *)data;
    pd = eo_data_scope_get(widget, ELM_CODE_WIDGET_CLASS);
    event = (Evas_Event_Mouse_Move *)event_info;
 
-   hasline = _elm_code_widget_position_at_coordinates_get(widget, pd, 
event->cur.canvas.x, event->cur.canvas.y, &row, &col);
-   if (!hasline)
-     _elm_code_widget_tooltip_text_set(widget, NULL);
-   else
-     {
-        line = elm_code_file_line_get(pd->code->file, row);
-        _elm_code_widget_tooltip_text_set(widget, line->status_text);
-     }
+   _elm_code_widget_position_at_coordinates_get(widget, pd, 
event->cur.canvas.x, event->cur.canvas.y, &row, &col);
 
    if (!pd->editable || !event->buttons)
      return;
@@ -1771,8 +1785,6 @@ _elm_code_widget_evas_object_smart_add(Eo *obj, 
Elm_Code_Widget_Data *pd)
    elm_object_content_set(scroller, gridrows);
    pd->gridbox = gridrows;
 
-   _elm_code_widget_tooltip_add(obj);
-
    evas_object_event_callback_add(obj, EVAS_CALLBACK_RESIZE, 
_elm_code_widget_resize_cb, obj);
    evas_object_event_callback_add(obj, EVAS_CALLBACK_KEY_DOWN, 
_elm_code_widget_key_down_cb, obj);
 
diff --git a/elm_code/src/lib/widget/elm_code_widget_private.h 
b/elm_code/src/lib/widget/elm_code_widget_private.h
index 1c7b2ae..09c5003 100644
--- a/elm_code/src/lib/widget/elm_code_widget_private.h
+++ b/elm_code/src/lib/widget/elm_code_widget_private.h
@@ -28,7 +28,6 @@ typedef struct
    Eina_Bool show_whitespace, tab_inserts_spaces;
 
    Elm_Code_Widget_Selection_Data *selection;
-   Evas_Object *tooltip;
 
    /* Undo stack */
    Eina_List *undo_stack;
diff --git a/elm_code/src/lib/widget/elm_code_widget_tooltip.c 
b/elm_code/src/lib/widget/elm_code_widget_tooltip.c
deleted file mode 100644
index 44abe91..0000000
--- a/elm_code/src/lib/widget/elm_code_widget_tooltip.c
+++ /dev/null
@@ -1,47 +0,0 @@
-#ifdef HAVE_CONFIG
-# include "config.h"
-#endif
-
-#include "Elm_Code.h"
-
-#include "elm_code_widget_private.h"
-
-void
-_elm_code_widget_tooltip_text_set(Evas_Object *widget, const char *text)
-{
-   Elm_Code_Widget_Data *pd;
-
-   pd = eo_data_scope_get(widget, ELM_CODE_WIDGET_CLASS);
-
-   if (!text)
-     {
-        elm_object_tooltip_hide(widget);
-        return;
-     }
-
-   elm_object_tooltip_show(widget);
-
-   if (pd->tooltip) // will have been created by the callback below...
-     elm_object_text_set(pd->tooltip, text);
-}
-
-static Evas_Object *
-_elm_code_widget_tooltip_cb(void *data EINA_UNUSED, Evas_Object *obj, 
Evas_Object *tooltip)
-{
-   Elm_Code_Widget_Data *pd;
-   Evas_Object *label;
-
-   pd = eo_data_scope_get(obj, ELM_CODE_WIDGET_CLASS);
-
-   label = elm_label_add(tooltip);
-   pd->tooltip = label;
-
-   return label;
-}
-
-void
-_elm_code_widget_tooltip_add(Evas_Object *widget)
-{
-   elm_object_tooltip_content_cb_set(widget, _elm_code_widget_tooltip_cb, 
NULL, NULL);
-}
-
diff --git a/elm_code/src/tests/widget/elm_code_test_widget.c 
b/elm_code/src/tests/widget/elm_code_test_widget.c
index 3471e3c..7f2303f 100644
--- a/elm_code/src/tests/widget/elm_code_test_widget.c
+++ b/elm_code/src/tests/widget/elm_code_test_widget.c
@@ -5,7 +5,6 @@
 #include "elm_code_suite.h"
 
 #include "widget/elm_code_widget.c"
-#include "widget/elm_code_widget_tooltip.c"
 
 static void _assert_cell_type(Evas_Textgrid_Cell cell, Elm_Code_Token_Type 
type, int id)
 {

-- 


Reply via email to