diff options
-rw-r--r-- | callbacks.c | 17 | ||||
-rw-r--r-- | callbacks.h | 3 | ||||
-rw-r--r-- | events.c | 4 | ||||
-rw-r--r-- | events.h | 1 | ||||
-rw-r--r-- | uzbl-core.c | 8 |
5 files changed, 29 insertions, 4 deletions
diff --git a/callbacks.c b/callbacks.c index 593fdac..0058868 100644 --- a/callbacks.c +++ b/callbacks.c @@ -452,11 +452,26 @@ configure_event_cb(GtkWidget* window, GdkEventConfigure* event) { (void) event; retrieve_geometry(); - send_event(GEOMETRY_CHANGED, uzbl.gui.geometry, NULL); + /* TODO: Do we need this? */ + //send_event(GEOMETRY_CHANGED, uzbl.gui.geometry, NULL); return FALSE; } gboolean +focus_cb(GtkWidget* window, GdkEventFocus* event, void *ud) { + (void) window; + (void) event; + (void) ud; + + if(event->in) + send_event(FOCUS_GAINED, "", NULL); + else + send_event(FOCUS_LOST, "", NULL); + + return TRUE; +} + +gboolean key_press_cb (GtkWidget* window, GdkEventKey* event) { (void) window; diff --git a/callbacks.h b/callbacks.h index 7222eaf..72361ba 100644 --- a/callbacks.h +++ b/callbacks.h @@ -192,3 +192,6 @@ populate_popup_cb(WebKitWebView *v, GtkMenu *m, void *c); gboolean button_press_cb (GtkWidget* window, GdkEventButton* event); +gboolean +focus_cb(GtkWidget* window, GdkEventFocus* event, void *ud); + @@ -37,7 +37,9 @@ const char *event_table[LAST_EVENT] = { "LOAD_PROGRESS" , "LINK_UNHOVER" , "FORM_ACTIVE" , - "ROOT_ACTIVE" + "ROOT_ACTIVE" , + "FOCUS_LOST" , + "FOCUS_GAINED" }; void @@ -12,6 +12,7 @@ enum event_type { VARIABLE_SET, FIFO_SET, SOCKET_SET, INSTANCE_START, INSTANCE_EXIT, LOAD_PROGRESS, LINK_UNHOVER, FORM_ACTIVE, ROOT_ACTIVE, + FOCUS_LOST, FOCUS_GAINED, /* must be last entry */ LAST_EVENT diff --git a/uzbl-core.c b/uzbl-core.c index ef9852b..25a0054 100644 --- a/uzbl-core.c +++ b/uzbl-core.c @@ -1896,7 +1896,7 @@ create_browser () { g_object_connect((GObject*)g->web_view, "signal::key-press-event", (GCallback)key_press_cb, NULL, "signal::key-release-event", (GCallback)key_release_cb, NULL, - "signal::button-press-event", (GCallback)button_press_cb, NULL, + "signal::button-press-event", (GCallback)button_press_cb, NULL, "signal::title-changed", (GCallback)title_change_cb, NULL, "signal::selection-changed", (GCallback)selection_changed_cb, NULL, "signal::load-progress-changed", (GCallback)progress_change_cb, NULL, @@ -1911,6 +1911,8 @@ create_browser () { "signal::create-web-view", (GCallback)create_web_view_cb, NULL, "signal::mime-type-policy-decision-requested", (GCallback)mime_policy_cb, NULL, "signal::populate-popup", (GCallback)populate_popup_cb, NULL, + "signal::focus-in-event", (GCallback)focus_cb, NULL, + "signal::focus-out-event", (GCallback)focus_cb, NULL, NULL); } @@ -1934,12 +1936,14 @@ create_mainbar () { return g->mainbar; } + GtkWidget* create_window () { GtkWidget* window = gtk_window_new (GTK_WINDOW_TOPLEVEL); gtk_window_set_default_size (GTK_WINDOW (window), 800, 600); gtk_widget_set_name (window, "Uzbl browser"); - g_signal_connect (G_OBJECT (window), "destroy", G_CALLBACK (destroy_cb), NULL); + g_signal_connect (G_OBJECT (window), "destroy", G_CALLBACK (destroy_cb), NULL); + g_signal_connect (G_OBJECT (window), "configure-event", G_CALLBACK (configure_event_cb), NULL); return window; } |