This is an automated email from the git hooks/post-receive script.

git pushed a commit to branch master
in repository efm2.

View the commit online.

commit 008e5b1883f474127cdee29b80c51cdf1151fc46
Author: Carsten Haitzler (Rasterman) <[email protected]>
AuthorDate: Fri Jan 16 17:53:25 2026 +0000

    move key inoput handling to its own file
---
 src/efm/efm.c       | 294 +---------------------------------------------------
 src/efm/efm_key.c   | 162 +++++++++++++++++++++++++++++
 src/efm/efm_key.h   |  10 ++
 src/efm/efm_util.c  | 140 +++++++++++++++++++++++++
 src/efm/efm_util.h  |   2 +
 src/efm/meson.build |   1 +
 6 files changed, 317 insertions(+), 292 deletions(-)

diff --git a/src/efm/efm.c b/src/efm/efm.c
index e089a2c..4acfb52 100644
--- a/src/efm/efm.c
+++ b/src/efm/efm.c
@@ -13,7 +13,7 @@
 #include "efm_back_end.h"
 #include "efm_custom.h"
 #include "efm_private.h"
-#include "esc.h"
+#include "efm_key.h"
 
 int _log_dom = -1;
 
@@ -37,146 +37,6 @@ _cb_header_change(void *data)
   evas_object_smart_callback_call(sd->o_smart, "header_change", NULL);
 }
 
-static void
-_cb_lost_selection(void *data, Elm_Sel_Type selection EINA_UNUSED)
-{
-  Smart_Data *sd = evas_object_smart_data_get(data);
-
-  if (sd->cnp_have)
-    {
-      sd->cnp_have = EINA_FALSE;
-      sd->cnp_cut  = EINA_FALSE;
-      printf("XXX: lost select\n");
-    }
-}
-
-static void
-_cnp_copy_files(Smart_Data *sd)
-{
-  Eina_Strbuf *strbuf;
-  const char  *str = NULL;
-
-  strbuf = eina_strbuf_new();
-  if (!strbuf) return;
-  if (sd->cnp_cut) eina_strbuf_append(strbuf, "#EFM: cut\n");
-  if (_selected_icons_uri_strbuf_append(sd, strbuf))
-    {
-      str = eina_strbuf_string_get(strbuf);
-      if (str)
-        {
-          elm_cnp_selection_set(sd->o_scroller, ELM_SEL_TYPE_CLIPBOARD,
-                                ELM_SEL_FORMAT_URILIST, str, strlen(str));
-          elm_cnp_selection_loss_callback_set(sd->o_scroller,
-                                              ELM_SEL_TYPE_CLIPBOARD,
-                                              _cb_lost_selection, sd->o_smart);
-        }
-    }
-  if (sd->cnp_cut)
-    {
-      Eina_Strbuf *buf = cmd_strbuf_new("cnp-cut");
-
-      if (str) printf("XXX: CUT: [%s]\n", str);
-      else printf("XXX: CUT: no str\n");
-      if (buf)
-        {
-          _uri_list_cmd_strbuf_append(buf, "path", str);
-          cmd_strbuf_exe_consume(buf, sd->exe_open);
-        }
-    }
-  else
-    {
-      Eina_Strbuf *buf = cmd_strbuf_new("cnp-copy");
-
-      if (str) printf("XXX: COPY: [%s]\n", str);
-      else printf("XXX: COPY: no str\n");
-      if (buf)
-        {
-          _uri_list_cmd_strbuf_append(buf, "path", str);
-          cmd_strbuf_exe_consume(buf, sd->exe_open);
-        }
-    }
-  eina_strbuf_free(strbuf);
-}
-
-static Eina_Bool
-_cb_sel_get(void *data, Evas_Object *_obj EINA_UNUSED, Elm_Selection_Data *ev)
-{
-  Smart_Data *sd = evas_object_smart_data_get(data);
-
-  if (!sd) return EINA_TRUE;
-  printf("XXX: GET SEL %i\n", ev->format);
-  if (ev->format & ELM_SEL_FORMAT_URILIST)
-    {
-      char **plist, **p, *esc, *tmp;
-
-      tmp = malloc(ev->len + 1);
-      if (tmp)
-        {
-          Eina_Strbuf *buf = cmd_strbuf_new("cnp-paste");
-
-          memcpy(tmp, ev->data, ev->len);
-          tmp[ev->len] = 0;
-          plist        = eina_str_split(tmp, "\n", -1);
-          for (p = plist; *p != NULL; p++)
-            {
-              if (**p)
-                {
-                  if (!strncmp(*p, " //..//#", 8))
-                    {
-                      const char *comment = *p + 8;
-                      printf("XXX: PASTE COMMENT [%s]\n", comment);
-                    }
-                  else
-                    {
-                      esc = unescape(*p);
-                      if (!esc) continue;
-                      printf("XXX: PASTE FILE: [%s]\n", esc);
-                    }
-                }
-            }
-          free(*plist);
-          free(plist);
-          switch (ev->action)
-            { // reality is we will not get an action in the selection
-            case ELM_XDND_ACTION_COPY:
-              cmd_strbuf_append(buf, "action", "copy");
-              break;
-            case ELM_XDND_ACTION_MOVE:
-              cmd_strbuf_append(buf, "action", "move");
-              break;
-            case ELM_XDND_ACTION_ASK:
-              cmd_strbuf_append(buf, "action", "ask");
-              break;
-            case ELM_XDND_ACTION_LIST:
-              cmd_strbuf_append(buf, "action", "list");
-              break;
-            case ELM_XDND_ACTION_LINK:
-              cmd_strbuf_append(buf, "action", "link");
-              break;
-            case ELM_XDND_ACTION_DESCRIPTION:
-              cmd_strbuf_append(buf, "action", "description");
-              break;
-            default:
-              break;
-            }
-          if (buf)
-            {
-              _uri_list_cmd_strbuf_append(buf, "path", tmp);
-              cmd_strbuf_exe_consume(buf, sd->exe_open);
-            }
-          free(tmp);
-        }
-    }
-  return EINA_TRUE;
-}
-
-static void
-_cnp_paste_files(Smart_Data *sd)
-{
-  elm_cnp_selection_get(sd->o_scroller, ELM_SEL_TYPE_CLIPBOARD,
-                        ELM_SEL_FORMAT_URILIST, _cb_sel_get, sd->o_smart);
-}
-
 static void
 _cb_key_down(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED,
              void *event_info)
@@ -185,157 +45,7 @@ _cb_key_down(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED,
   Evas_Event_Key_Down *ev      = event_info;
   Eina_Bool            handled = EINA_FALSE;
 
-  // these keys we use/steal for navigation, so want them for sure
-  if (!strcmp(ev->key, "Up")) handled = _icon_focus_dir(sd, EFM_FOCUS_DIR_UP);
-  else if (!strcmp(ev->key, "Down"))
-    handled = _icon_focus_dir(sd, EFM_FOCUS_DIR_DOWN);
-  else if (!strcmp(ev->key, "Left"))
-    handled = _icon_focus_dir(sd, EFM_FOCUS_DIR_LEFT);
-  else if (!strcmp(ev->key, "Right"))
-    handled = _icon_focus_dir(sd, EFM_FOCUS_DIR_RIGHT);
-  else if (!strcmp(ev->key, "Prior"))
-    handled = _icon_focus_dir(sd, EFM_FOCUS_DIR_PGUP);
-  else if (!strcmp(ev->key, "Next"))
-    handled = _icon_focus_dir(sd, EFM_FOCUS_DIR_PGDN);
-  else if ((!strcmp(ev->key, "Return")) || (!strcmp(ev->key, "KP_Enter")))
-    {
-      if (sd->last_focused)
-        {
-          Icon        *icon   = sd->last_focused;
-          Eina_Strbuf *strbuf = eina_strbuf_new();
-
-          if (!icon->selected) _icon_select(icon);
-
-          if (strbuf)
-            {
-              if (_selected_icons_uri_strbuf_append(sd, strbuf))
-                {
-                  Eina_Strbuf *buf = cmd_strbuf_new("file-run");
-
-                  _icon_open_with_cmd_strbuf_append(buf, "open-with", sd);
-                  _uri_list_cmd_strbuf_append(buf, "path",
-                                              eina_strbuf_string_get(strbuf));
-                  cmd_strbuf_exe_consume(buf, sd->exe_open);
-                }
-              eina_strbuf_free(strbuf);
-            }
-          handled = EINA_TRUE;
-        }
-    }
-  else if (!strcmp(ev->key, "space"))
-    {
-      if (sd->last_focused)
-        {
-          Icon *icon = sd->last_focused;
-
-          if (evas_key_modifier_is_set(ev->modifiers, "Shift"))
-            { // range select
-              if (!icon->selected)
-                {
-                  if (icon->sd->last_selected)
-                    _select_range(icon->sd->last_selected, icon);
-                  else _icon_select(icon);
-                }
-            }
-          else if (evas_key_modifier_is_set(ev->modifiers, "Control"))
-            { // multi-single select toggle
-              if (!icon->selected) _icon_select(icon);
-              else _icon_unselect(icon);
-            }
-          else
-            { // select just one file so unselect previous files
-              _unselect_all(icon->sd);
-              if (!icon->selected) _icon_select(icon);
-              else _icon_unselect(icon);
-            }
-          handled = EINA_TRUE;
-        }
-    }
-  else if (!strcmp(ev->key, "Escape"))
-    {
-      handled = _unselect_all(sd);
-    }
-  // XXX: hmm - should we handle this?
-  //   else if (!strcmp(ev->key, "Backspace"))
-  //     {
-  //     }
-  else if (!strcmp(ev->key, "Delete"))
-    {
-      Eina_Strbuf *strbuf = eina_strbuf_new();
-
-      if (strbuf)
-        {
-          const char *cmd = "file-trash";
-
-          if (evas_key_modifier_is_set(ev->modifiers, "Shift"))
-            cmd = "file-unlink";
-
-          if (_selected_icons_uri_strbuf_append(sd, strbuf))
-            {
-              Eina_Strbuf *buf = cmd_strbuf_new(cmd);
-
-              _file_list_cmd_strbuf_append(buf, "path",
-                                           eina_strbuf_string_get(strbuf));
-              cmd_strbuf_exe_consume(buf, sd->exe_open);
-            }
-          eina_strbuf_free(strbuf);
-        }
-      handled = EINA_TRUE;
-    }
-  else if (!strcmp(ev->key, "Home"))
-    {
-      if (sd->icons)
-        {
-          sd->last_focused_before = sd->last_focused;
-          sd->last_focused        = sd->icons->data;
-          _icon_focus(sd);
-          handled = EINA_TRUE;
-        }
-    }
-  else if (!strcmp(ev->key, "End"))
-    {
-      if (sd->icons)
-        {
-          sd->last_focused_before = sd->last_focused;
-          sd->last_focused        = eina_list_last(sd->icons)->data;
-          _icon_focus(sd);
-          handled = EINA_TRUE;
-        }
-    }
-  else if ((!strcmp(ev->key, "c"))
-           && (evas_key_modifier_is_set(ev->modifiers, "Control")))
-    {
-      sd->cnp_have = EINA_TRUE;
-      sd->cnp_cut  = EINA_FALSE;
-      _cnp_copy_files(sd);
-      handled = EINA_TRUE;
-    }
-  else if ((!strcmp(ev->key, "x"))
-           && (evas_key_modifier_is_set(ev->modifiers, "Control")))
-    {
-      sd->cnp_have = EINA_TRUE;
-      sd->cnp_cut  = EINA_TRUE;
-      _cnp_copy_files(sd);
-      handled = EINA_TRUE;
-    }
-  else if ((!strcmp(ev->key, "v"))
-           && (evas_key_modifier_is_set(ev->modifiers, "Control")))
-    {
-      _cnp_paste_files(sd);
-      handled = EINA_TRUE;
-    }
-  else if ((!strcmp(ev->key, "a"))
-           && (evas_key_modifier_is_set(ev->modifiers, "Control")))
-    {
-      _efm_sel_all(sd);
-      handled = EINA_TRUE;
-    }
-  else if ((!strcmp(ev->key, "Insert"))
-           && (evas_key_modifier_is_set(ev->modifiers, "Shift")))
-    {
-      _cnp_paste_files(sd);
-      handled = EINA_TRUE;
-    }
+  handled = _efm_key_handle(sd, ev);
   // flag on hold if we use the  event - otherwise pass it on
   if (handled)
     {
diff --git a/src/efm/efm_key.c b/src/efm/efm_key.c
new file mode 100644
index 0000000..c311c04
--- /dev/null
+++ b/src/efm/efm_key.c
@@ -0,0 +1,162 @@
+#include "cmd.h"
+#include "efm_util.h"
+#include "efm_key.h"
+
+Eina_Bool
+_efm_key_handle(Smart_Data *sd, Evas_Event_Key_Down *ev)
+{
+  Eina_Bool handled = EINA_FALSE;
+
+  // these keys we use/steal for navigation, so want them for sure
+  if (!strcmp(ev->key, "Up")) handled = _icon_focus_dir(sd, EFM_FOCUS_DIR_UP);
+  else if (!strcmp(ev->key, "Down"))
+    handled = _icon_focus_dir(sd, EFM_FOCUS_DIR_DOWN);
+  else if (!strcmp(ev->key, "Left"))
+    handled = _icon_focus_dir(sd, EFM_FOCUS_DIR_LEFT);
+  else if (!strcmp(ev->key, "Right"))
+    handled = _icon_focus_dir(sd, EFM_FOCUS_DIR_RIGHT);
+  else if (!strcmp(ev->key, "Prior"))
+    handled = _icon_focus_dir(sd, EFM_FOCUS_DIR_PGUP);
+  else if (!strcmp(ev->key, "Next"))
+    handled = _icon_focus_dir(sd, EFM_FOCUS_DIR_PGDN);
+  else if ((!strcmp(ev->key, "Return")) || (!strcmp(ev->key, "KP_Enter")))
+    {
+      if (sd->last_focused)
+        {
+          Icon        *icon   = sd->last_focused;
+          Eina_Strbuf *strbuf = eina_strbuf_new();
+
+          if (!icon->selected) _icon_select(icon);
+
+          if (strbuf)
+            {
+              if (_selected_icons_uri_strbuf_append(sd, strbuf))
+                {
+                  Eina_Strbuf *buf = cmd_strbuf_new("file-run");
+
+                  _icon_open_with_cmd_strbuf_append(buf, "open-with", sd);
+                  _uri_list_cmd_strbuf_append(buf, "path",
+                                              eina_strbuf_string_get(strbuf));
+                  cmd_strbuf_exe_consume(buf, sd->exe_open);
+                }
+              eina_strbuf_free(strbuf);
+            }
+          handled = EINA_TRUE;
+        }
+    }
+  else if (!strcmp(ev->key, "space"))
+    {
+      if (sd->last_focused)
+        {
+          Icon *icon = sd->last_focused;
+
+          if (evas_key_modifier_is_set(ev->modifiers, "Shift"))
+            { // range select
+              if (!icon->selected)
+                {
+                  if (icon->sd->last_selected)
+                    _select_range(icon->sd->last_selected, icon);
+                  else _icon_select(icon);
+                }
+            }
+          else if (evas_key_modifier_is_set(ev->modifiers, "Control"))
+            { // multi-single select toggle
+              if (!icon->selected) _icon_select(icon);
+              else _icon_unselect(icon);
+            }
+          else
+            { // select just one file so unselect previous files
+              _unselect_all(icon->sd);
+              if (!icon->selected) _icon_select(icon);
+              else _icon_unselect(icon);
+            }
+          handled = EINA_TRUE;
+        }
+    }
+  else if (!strcmp(ev->key, "Escape"))
+    {
+      handled = _unselect_all(sd);
+    }
+  // XXX: hmm - should we handle this?
+  //   else if (!strcmp(ev->key, "Backspace"))
+  //     {
+  //     }
+  else if (!strcmp(ev->key, "Delete"))
+    {
+      Eina_Strbuf *strbuf = eina_strbuf_new();
+
+      if (strbuf)
+        {
+          const char *cmd = "file-trash";
+
+          if (evas_key_modifier_is_set(ev->modifiers, "Shift"))
+            cmd = "file-unlink";
+
+          if (_selected_icons_uri_strbuf_append(sd, strbuf))
+            {
+              Eina_Strbuf *buf = cmd_strbuf_new(cmd);
+
+              _file_list_cmd_strbuf_append(buf, "path",
+                                           eina_strbuf_string_get(strbuf));
+              cmd_strbuf_exe_consume(buf, sd->exe_open);
+            }
+          eina_strbuf_free(strbuf);
+        }
+      handled = EINA_TRUE;
+    }
+  else if (!strcmp(ev->key, "Home"))
+    {
+      if (sd->icons)
+        {
+          sd->last_focused_before = sd->last_focused;
+          sd->last_focused        = sd->icons->data;
+          _icon_focus(sd);
+          handled = EINA_TRUE;
+        }
+    }
+  else if (!strcmp(ev->key, "End"))
+    {
+      if (sd->icons)
+        {
+          sd->last_focused_before = sd->last_focused;
+          sd->last_focused        = eina_list_last(sd->icons)->data;
+          _icon_focus(sd);
+          handled = EINA_TRUE;
+        }
+    }
+  else if ((!strcmp(ev->key, "c"))
+           && (evas_key_modifier_is_set(ev->modifiers, "Control")))
+    {
+      sd->cnp_have = EINA_TRUE;
+      sd->cnp_cut  = EINA_FALSE;
+      _cnp_copy_files(sd);
+      handled = EINA_TRUE;
+    }
+  else if ((!strcmp(ev->key, "x"))
+           && (evas_key_modifier_is_set(ev->modifiers, "Control")))
+    {
+      sd->cnp_have = EINA_TRUE;
+      sd->cnp_cut  = EINA_TRUE;
+      _cnp_copy_files(sd);
+      handled = EINA_TRUE;
+    }
+  else if ((!strcmp(ev->key, "v"))
+           && (evas_key_modifier_is_set(ev->modifiers, "Control")))
+    {
+      _cnp_paste_files(sd);
+      handled = EINA_TRUE;
+    }
+  else if ((!strcmp(ev->key, "a"))
+           && (evas_key_modifier_is_set(ev->modifiers, "Control")))
+    {
+      _efm_sel_all(sd);
+      handled = EINA_TRUE;
+    }
+  else if ((!strcmp(ev->key, "Insert"))
+           && (evas_key_modifier_is_set(ev->modifiers, "Shift")))
+    {
+      _cnp_paste_files(sd);
+      handled = EINA_TRUE;
+    }
+  return handled;
+}
\ No newline at end of file
diff --git a/src/efm/efm_key.h b/src/efm/efm_key.h
new file mode 100644
index 0000000..b214c31
--- /dev/null
+++ b/src/efm/efm_key.h
@@ -0,0 +1,10 @@
+#ifndef EFM_KEY_H
+#define EFM_KEY_H 1
+
+#include <Elementary.h>
+
+#include "efm_structs.h"
+
+Eina_Bool _efm_key_handle(Smart_Data *sd, Evas_Event_Key_Down *ev);
+
+#endif
\ No newline at end of file
diff --git a/src/efm/efm_util.c b/src/efm/efm_util.c
index 56e5e44..c1783a2 100644
--- a/src/efm/efm_util.c
+++ b/src/efm/efm_util.c
@@ -11,6 +11,146 @@
 #include "mimeapps.h"
 
 // util funcs for the efm view
+static void
+_cb_lost_selection(void *data, Elm_Sel_Type selection EINA_UNUSED)
+{
+  Smart_Data *sd = evas_object_smart_data_get(data);
+
+  if (sd->cnp_have)
+    {
+      sd->cnp_have = EINA_FALSE;
+      sd->cnp_cut  = EINA_FALSE;
+      printf("XXX: lost select\n");
+    }
+}
+
+static Eina_Bool
+_cb_sel_get(void *data, Evas_Object *_obj EINA_UNUSED, Elm_Selection_Data *ev)
+{
+  Smart_Data *sd = evas_object_smart_data_get(data);
+
+  if (!sd) return EINA_TRUE;
+  printf("XXX: GET SEL %i\n", ev->format);
+  if (ev->format & ELM_SEL_FORMAT_URILIST)
+    {
+      char **plist, **p, *esc, *tmp;
+
+      tmp = malloc(ev->len + 1);
+      if (tmp)
+        {
+          Eina_Strbuf *buf = cmd_strbuf_new("cnp-paste");
+
+          memcpy(tmp, ev->data, ev->len);
+          tmp[ev->len] = 0;
+          plist        = eina_str_split(tmp, "\n", -1);
+          for (p = plist; *p != NULL; p++)
+            {
+              if (**p)
+                {
+                  if (!strncmp(*p, " //..//#", 8))
+                    {
+                      const char *comment = *p + 8;
+                      printf("XXX: PASTE COMMENT [%s]\n", comment);
+                    }
+                  else
+                    {
+                      esc = unescape(*p);
+                      if (!esc) continue;
+                      printf("XXX: PASTE FILE: [%s]\n", esc);
+                    }
+                }
+            }
+          free(*plist);
+          free(plist);
+          switch (ev->action)
+            { // reality is we will not get an action in the selection
+            case ELM_XDND_ACTION_COPY:
+              cmd_strbuf_append(buf, "action", "copy");
+              break;
+            case ELM_XDND_ACTION_MOVE:
+              cmd_strbuf_append(buf, "action", "move");
+              break;
+            case ELM_XDND_ACTION_ASK:
+              cmd_strbuf_append(buf, "action", "ask");
+              break;
+            case ELM_XDND_ACTION_LIST:
+              cmd_strbuf_append(buf, "action", "list");
+              break;
+            case ELM_XDND_ACTION_LINK:
+              cmd_strbuf_append(buf, "action", "link");
+              break;
+            case ELM_XDND_ACTION_DESCRIPTION:
+              cmd_strbuf_append(buf, "action", "description");
+              break;
+            default:
+              break;
+            }
+          if (buf)
+            {
+              _uri_list_cmd_strbuf_append(buf, "path", tmp);
+              cmd_strbuf_exe_consume(buf, sd->exe_open);
+            }
+          free(tmp);
+        }
+    }
+  return EINA_TRUE;
+}
+
+void
+_cnp_copy_files(Smart_Data *sd)
+{
+  Eina_Strbuf *strbuf;
+  const char  *str = NULL;
+
+  strbuf = eina_strbuf_new();
+  if (!strbuf) return;
+  if (sd->cnp_cut) eina_strbuf_append(strbuf, "#EFM: cut\n");
+  if (_selected_icons_uri_strbuf_append(sd, strbuf))
+    {
+      str = eina_strbuf_string_get(strbuf);
+      if (str)
+        {
+          elm_cnp_selection_set(sd->o_scroller, ELM_SEL_TYPE_CLIPBOARD,
+                                ELM_SEL_FORMAT_URILIST, str, strlen(str));
+          elm_cnp_selection_loss_callback_set(sd->o_scroller,
+                                              ELM_SEL_TYPE_CLIPBOARD,
+                                              _cb_lost_selection, sd->o_smart);
+        }
+    }
+  if (sd->cnp_cut)
+    {
+      Eina_Strbuf *buf = cmd_strbuf_new("cnp-cut");
+
+      if (str) printf("XXX: CUT: [%s]\n", str);
+      else printf("XXX: CUT: no str\n");
+      if (buf)
+        {
+          _uri_list_cmd_strbuf_append(buf, "path", str);
+          cmd_strbuf_exe_consume(buf, sd->exe_open);
+        }
+    }
+  else
+    {
+      Eina_Strbuf *buf = cmd_strbuf_new("cnp-copy");
+
+      if (str) printf("XXX: COPY: [%s]\n", str);
+      else printf("XXX: COPY: no str\n");
+      if (buf)
+        {
+          _uri_list_cmd_strbuf_append(buf, "path", str);
+          cmd_strbuf_exe_consume(buf, sd->exe_open);
+        }
+    }
+  eina_strbuf_free(strbuf);
+}
+
+void
+_cnp_paste_files(Smart_Data *sd)
+{
+  elm_cnp_selection_get(sd->o_scroller, ELM_SEL_TYPE_CLIPBOARD,
+                        ELM_SEL_FORMAT_URILIST, _cb_sel_get, sd->o_smart);
+}
+
 double
 _scale_get(Smart_Data *sd)
 {
diff --git a/src/efm/efm_util.h b/src/efm/efm_util.h
index 247c9e2..0298fe4 100644
--- a/src/efm/efm_util.h
+++ b/src/efm/efm_util.h
@@ -17,6 +17,8 @@ typedef enum
 
 Eina_Bool      _selected_icons_uri_strbuf_append(Smart_Data *sd, Eina_Strbuf *strbuf);
 void           _detail_realized_items_resize(Smart_Data *sd);
+void           _cnp_copy_files(Smart_Data *sd);
+void           _cnp_paste_files(Smart_Data *sd);
 double         _scale_get(Smart_Data *sd);
 Eina_List     *_icons_path_find(const char *path);
 Eina_Bool      _icon_focus_dir(Smart_Data *sd, Efm_Focus_Dir dir);
diff --git a/src/efm/meson.build b/src/efm/meson.build
index 0bd7d95..1807477 100644
--- a/src/efm/meson.build
+++ b/src/efm/meson.build
@@ -19,6 +19,7 @@ executable('efm', [
     'efm_custom.c',
     'efm_menu.c',
     'efm_popup_menu.c',
+    'efm_key.c',
     'main.c'
   ],
   include_directories: inc,

-- 
To stop receiving notification emails like this one, please contact
the administrator of this repository.

Reply via email to