diff -Naurp ./a/core/events.lua ./b/core/events.lua
--- ./a/core/events.lua	2019-12-31 21:52:44.000000000 +0600
+++ ./b/core/events.lua	2020-01-31 04:56:29.030105291 +0600
@@ -410,6 +410,7 @@ local textadept_events = {
   'initialized', 'keypress', 'menu_clicked', 'mouse', 'quit', 'replace',
   'replace_all', 'reset_after', 'reset_before', 'resume', 'suspend',
   'tab_clicked', 'view_after_switch', 'view_before_switch', 'view_new'
+  , 'tab_middle_click', 'tab_middle_click_blank', 'tab_double_click_blank'
 }
 for _, e in pairs(textadept_events) do M[e:upper()] = e end
 
diff -Naurp ./a/modules/textadept/find.lua ./b/modules/textadept/find.lua
--- ./a/modules/textadept/find.lua	2019-12-31 21:52:44.000000000 +0600
+++ ./b/modules/textadept/find.lua	2020-01-31 04:58:51.802813262 +0600
@@ -431,7 +431,7 @@ function M.goto_file_found(line_num, nex
   else
     s, e = 0, 0 -- binary file notice, or highlighting was somehow removed
   end
-  ui.goto_file(utf8_filename:iconv(_CHARSET, 'UTF-8'), true, preferred_view)
+  ui.goto_file(utf8_filename:iconv(_CHARSET, 'UTF-8'), false, preferred_view)
   textadept.editing.goto_line(line_num - 1)
   if buffer:line_from_position(buffer.current_pos + s) == line_num - 1 then
     buffer:set_sel(buffer.current_pos + e, buffer.current_pos + s)
diff -Naurp ./a/src/textadept.c ./b/src/textadept.c
--- ./a/src/textadept.c	2019-12-31 21:52:44.000000000 +0600
+++ ./b/src/textadept.c	2020-01-31 06:17:20.218161000 +0600
@@ -1231,9 +1231,20 @@ static int t_tabbuttonpress(GtkWidget *l
              event_mod(SHIFT), event_mod(CONTROL), event_mod(MOD1),
              event_mod(META), -1);
     if (event->button == 3) lL_showcontextmenu(lua, event, "tab_context_menu");
+    // Custom event for middle click on a tab
+    if (event->button == 2) lL_event(lua, "tab_middle_click", -1);
   }
   return TRUE;
 }
+
+/** Custom signal for a tabbar (empty space) mouse click. */
+static int t_tabbarbuttonpress(GtkWidget *label, GdkEventButton *event, void*__) {
+  // Custom event for middle click on blank space on tab bar
+  if (event->button == 2) lL_event(lua, "tab_middle_click_blank", -1);
+  // Custom event for double click on blank space on tab bar
+  if (event->type == GDK_2BUTTON_PRESS) lL_event(lua, "tab_double_click_blank", -1);
+  return TRUE;
+}
 #endif
 
 /** `buffer.__index` and `buffer.__newindex` Lua metamethods. */
@@ -1292,6 +1303,8 @@ static int lbuf_property(lua_State *L) {
     lua_getfield(L, 1, "tab_pointer");
 #if GTK
     GtkNotebook *tabs = GTK_NOTEBOOK(tabbar);
+    // Custom events for button clicks on tabbar (empty space)
+    signal(tabs, "button-press-event", t_tabbarbuttonpress);
     GtkWidget *tab = (GtkWidget *)lua_touserdata(L, -1);
     lua_pushstring(L, gtk_notebook_get_tab_label_text(tabs, tab));
     if (newindex) {
