elm_code: hide cursor if we hide the widget.
authorAl Poole <netstar@gmail.com>
Thu, 26 Oct 2017 21:39:21 +0000 (22:39 +0100)
committerAl Poole <netstar@gmail.com>
Thu, 26 Oct 2017 21:39:21 +0000 (22:39 +0100)
The cursor isn't clipped so if we decide to hide the widget
this ensures the cursor also is hidden. This should not affect
any existing application using elm_code API.

src/lib/elementary/elm_code_widget.c

index a99eba1..175bc86 100644 (file)
@@ -557,6 +557,32 @@ _elm_code_widget_resize_cb(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EIN
 }
 
 static void
+_elm_code_widget_show_cb(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED,
+                           void *event_info EINA_UNUSED)
+{
+   Elm_Code_Widget_Data *pd;
+   Elm_Code_Widget *widget = (Elm_Code_Widget *) data;
+
+   pd = efl_data_scope_get(widget, ELM_CODE_WIDGET_CLASS);
+
+   if (pd->cursor_rect)
+     evas_object_show(pd->cursor_rect);
+}
+
+static void
+_elm_code_widget_hidden_cb(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED,
+                           void *event_info EINA_UNUSED)
+{
+   Elm_Code_Widget_Data *pd;
+   Elm_Code_Widget *widget = (Elm_Code_Widget *) data;
+
+   pd = efl_data_scope_get(widget, ELM_CODE_WIDGET_CLASS);
+
+   if (pd->cursor_rect)
+     evas_object_hide(pd->cursor_rect);
+}
+
+static void
 _elm_code_widget_cursor_ensure_visible(Elm_Code_Widget *widget)
 {
    Evas_Coord viewx, viewy, vieww, viewh, cellw = 0, cellh = 0;
@@ -2182,6 +2208,8 @@ _elm_code_widget_efl_canvas_group_group_add(Eo *obj, Elm_Code_Widget_Data *pd)
 
    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);
+   evas_object_event_callback_add(obj, EVAS_CALLBACK_HIDE, _elm_code_widget_hidden_cb, obj);
+   evas_object_event_callback_add(obj, EVAS_CALLBACK_SHOW, _elm_code_widget_show_cb, obj);
 
    evas_object_smart_callback_add(obj, "focused", _elm_code_widget_focused_event_cb, obj);
    evas_object_smart_callback_add(obj, "unfocused", _elm_code_widget_unfocused_event_cb, obj);