elm_code widget: fire user change events

This does not yet have a "change" attached so does not
support undo/redo yet
This commit is contained in:
Andy Williams 2015-03-21 20:04:12 +00:00
parent 4aa3defb30
commit 8eb3978c1e
3 changed files with 19 additions and 7 deletions

View File

@ -761,7 +761,9 @@ _elm_code_widget_text_at_cursor_insert(Elm_Code_Widget *widget, const char *text
elm_code_line_text_insert(line, col, text, length);
eo_do(widget,
elm_code_widget_cursor_position_set(col + length, row));
elm_code_widget_cursor_position_set(col + length, row),
// TODO construct and pass a change object
eo_event_callback_call(ELM_CODE_WIDGET_EVENT_CHANGED_USER, NULL));
}
static void
@ -787,7 +789,9 @@ _elm_code_widget_newline(Elm_Code_Widget *widget)
free(content);
eo_do(widget,
elm_code_widget_cursor_position_set(1, row + 1));
elm_code_widget_cursor_position_set(1, row + 1),
// TODO construct and pass a change object
eo_event_callback_call(ELM_CODE_WIDGET_EVENT_CHANGED_USER, NULL));
}
static void
@ -831,6 +835,8 @@ _elm_code_widget_backspaceline(Elm_Code_Widget *widget, Eina_Bool nextline)
if (!nextline)
eo_do(widget,
elm_code_widget_cursor_position_set(length1 + 1, row - 1));
// TODO construct and pass a change object
eo_do(widget, eo_event_callback_call(ELM_CODE_WIDGET_EVENT_CHANGED_USER, NULL));
}
static void
@ -850,8 +856,6 @@ _elm_code_widget_backspace(Elm_Code_Widget *widget)
return;
_elm_code_widget_backspaceline(widget, EINA_FALSE);
line = elm_code_file_line_get(code->file, row - 1);
return;
}
@ -860,6 +864,9 @@ _elm_code_widget_backspace(Elm_Code_Widget *widget)
elm_code_line_text_remove(line, col - 1, 1);
eo_do(widget,
elm_code_widget_cursor_position_set(col - 1, row));
// TODO construct and pass a change object
eo_do(widget, eo_event_callback_call(ELM_CODE_WIDGET_EVENT_CHANGED_USER, NULL));
}
static void
@ -884,7 +891,9 @@ _elm_code_widget_delete(Elm_Code_Widget *widget)
elm_code_line_text_remove(line, col, 1);
eo_do(widget,
elm_code_widget_cursor_position_set(col, row));
elm_code_widget_cursor_position_set(col, row),
// TODO construct and pass a change object
eo_event_callback_call(ELM_CODE_WIDGET_EVENT_CHANGED_USER, NULL));
}
static void

View File

@ -180,6 +180,7 @@ class Elm_Code_Widget (Elm_Layout, Elm_Interface_Atspi_Text)
events {
line,clicked;
cursor,changed;
changed,user;
selection,changed;
selection,cleared;
}

View File

@ -127,7 +127,8 @@ _changed_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info)
{
Elm_Entry_Change_Info *change;
Edi_Editor *editor = data;
/*
TODO move this code into elm_code for undo/redo
change = calloc(1, sizeof(*change));
memcpy(change, event_info, sizeof(*change));
if (change->insert)
@ -140,6 +141,7 @@ _changed_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info)
}
editor->undo_stack = eina_list_prepend(editor->undo_stack, change);
*/
editor->modified = EINA_TRUE;
if (editor->save_timer)
@ -641,8 +643,8 @@ edi_editor_add(Evas_Object *parent, Edi_Mainview_Item *item)
editor->show_highlight = !strcmp(item->editortype, "code");
evas_object_event_callback_add(widget, EVAS_CALLBACK_KEY_DOWN,
_smart_cb_key_down, editor);
evas_object_smart_callback_add(widget, "changed,user", _changed_cb, editor);
/*
evas_object_smart_callback_add(txt, "changed,user", _changed_cb, editor);
evas_object_smart_callback_add(txt, "undo,request", _undo_cb, editor);
*/
evas_object_smart_callback_add(widget, "unfocused", _unfocused_cb, editor);