diff options
author | 2007-09-26 10:39:29 -0400 | |
---|---|---|
committer | 2007-09-26 10:39:29 -0400 | |
commit | 8a78cb8bc0ac16a0cc8130638873b0eac7b8a165 (patch) | |
tree | b95b0dfe123515b4da5a36d0fc27eeed92ddab02 /src/textadept.c | |
parent | f0a91b798764dee85dc919bf71d63a93ec3a68d4 (diff) | |
download | textadept-8a78cb8bc0ac16a0cc8130638873b0eac7b8a165.tar.gz textadept-8a78cb8bc0ac16a0cc8130638873b0eac7b8a165.zip |
Fixed focus error between multiple instances of Textadept; src/textadept.c
Diffstat (limited to 'src/textadept.c')
-rw-r--r-- | src/textadept.c | 8 |
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. */ |