aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormitchell <70453897+667e-11@users.noreply.github.com>2007-09-26 10:39:29 -0400
committermitchell <70453897+667e-11@users.noreply.github.com>2007-09-26 10:39:29 -0400
commit8a78cb8bc0ac16a0cc8130638873b0eac7b8a165 (patch)
treeb95b0dfe123515b4da5a36d0fc27eeed92ddab02
parentf0a91b798764dee85dc919bf71d63a93ec3a68d4 (diff)
downloadtextadept-8a78cb8bc0ac16a0cc8130638873b0eac7b8a165.tar.gz
textadept-8a78cb8bc0ac16a0cc8130638873b0eac7b8a165.zip
Fixed focus error between multiple instances of Textadept; src/textadept.c
-rw-r--r--src/textadept.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/src/textadept.c b/src/textadept.c
index 220986be..2caa014f 100644
--- a/src/textadept.c
+++ b/src/textadept.c
@@ -14,6 +14,7 @@ static bool c_keypress(GtkWidget *widget, GdkEventKey *event, gpointer);
static void t_notification(GtkWidget*, gint, gpointer lParam, gpointer);
static void t_command(GtkWidget *editor, gint wParam, gpointer, gpointer);
static bool t_keypress(GtkWidget*, GdkEventKey *event, gpointer);
+static bool w_focus(GtkWidget*, GdkEventFocus *, gpointer);
static bool w_keypress(GtkWidget*, GdkEventKey *event, gpointer);
static bool w_exit(GtkWidget*, GdkEventAny*, gpointer);
@@ -29,6 +30,7 @@ int main(int argc, char **argv) {
void create_ui() {
window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
signal(window, "delete_event", w_exit);
+ signal(window, "focus-in-event", w_focus);
signal(window, "key_press_event", w_keypress);
GtkWidget *vbox = gtk_vbox_new(false, 0);
gtk_container_add(GTK_CONTAINER(window), vbox);
@@ -265,6 +267,12 @@ static bool t_keypress(GtkWidget*, GdkEventKey *event, gpointer) {
return l_handle_keypress(event->keyval, event);
}
+static bool w_focus(GtkWidget*, GdkEventFocus*, gpointer) {
+ if (focused_editor && !GTK_WIDGET_HAS_FOCUS(focused_editor))
+ gtk_widget_grab_focus(focused_editor);
+ return false;
+}
+
/** Window key events.
* Escape - hides the search dialog if it's open.
*/