summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Hofmann <scm@uninformativ.de>2014-06-18 21:37:04 +0200
committerPeter Hofmann <scm@uninformativ.de>2014-06-18 21:37:04 +0200
commitea94a6fa573659553caa7d89ba0f4607dab46033 (patch)
tree0ad7d8e55d1e61e9c128cacbd730c2a2c883badd
parenteaff2ba4e8682c29837fdebc428a6b2285c633a6 (diff)
downloadlariza-ea94a6fa573659553caa7d89ba0f4607dab46033.tar.gz
Kick the lousy status bar
- It didn't show the load progress. - It destroyed the browser's usability. When there's a horizontal scroll bar, it MUST be placed at the bottom of the screen. There MUST NOT be any widget below it.
-rw-r--r--browser.c52
1 files changed, 26 insertions, 26 deletions
diff --git a/browser.c b/browser.c
index 199ea22..072409d 100644
--- a/browser.c
+++ b/browser.c
@@ -21,8 +21,8 @@ static WebKitWebView *client_new(const gchar *uri);
static WebKitWebView *client_new_request(WebKitWebView *, WebKitWebFrame *,
gpointer);
static void cooperation_setup(void);
-static void changed_load_status(GObject *obj, GParamSpec *pspec,
- gpointer data);
+static void changed_load_progress(GObject *obj, GParamSpec *pspec,
+ gpointer data);
static void changed_title(GObject *, GParamSpec *, gpointer);
static void changed_uri(GObject *, GParamSpec *, gpointer);
static gboolean download_handle(WebKitWebView *, WebKitDownload *, gpointer);
@@ -45,8 +45,9 @@ struct Client
{
GtkWidget *win;
GtkWidget *vbox;
+ GtkWidget *top_box;
GtkWidget *location;
- GtkWidget *status;
+ GtkWidget *progress;
GtkWidget *scroll;
GtkWidget *web_view;
};
@@ -222,8 +223,8 @@ client_new(const gchar *uri)
G_CALLBACK(changed_title), c);
g_signal_connect(G_OBJECT(c->web_view), "notify::uri",
G_CALLBACK(changed_uri), c);
- g_signal_connect(G_OBJECT(c->web_view), "notify::load-status",
- G_CALLBACK(changed_load_status), c);
+ g_signal_connect(G_OBJECT(c->web_view), "notify::progress",
+ G_CALLBACK(changed_load_progress), c);
g_signal_connect(G_OBJECT(c->web_view), "create-web-view",
G_CALLBACK(client_new_request), NULL);
g_signal_connect(G_OBJECT(c->web_view), "close-web-view",
@@ -257,13 +258,16 @@ client_new(const gchar *uri)
g_signal_connect(G_OBJECT(c->location), "key-press-event",
G_CALLBACK(key_location), c);
- c->status = gtk_statusbar_new();
- gtk_statusbar_set_has_resize_grip(GTK_STATUSBAR(c->status), FALSE);
+ c->progress = gtk_progress_bar_new();
+ gtk_progress_bar_set_fraction(GTK_PROGRESS_BAR(c->progress), 0);
+
+ c->top_box = gtk_hbox_new(FALSE, 2);
+ gtk_box_pack_start(GTK_BOX(c->top_box), c->location, TRUE, TRUE, 0);
+ gtk_box_pack_end(GTK_BOX(c->top_box), c->progress, FALSE, TRUE, 0);
c->vbox = gtk_vbox_new(FALSE, 2);
- gtk_box_pack_start(GTK_BOX(c->vbox), c->location, FALSE, FALSE, 0);
+ gtk_box_pack_start(GTK_BOX(c->vbox), c->top_box, FALSE, FALSE, 0);
gtk_container_add(GTK_CONTAINER(c->vbox), c->scroll);
- gtk_box_pack_end(GTK_BOX(c->vbox), c->status, FALSE, FALSE, 0);
gtk_container_add(GTK_CONTAINER(c->win), c->vbox);
@@ -328,24 +332,16 @@ cooperation_setup(void)
}
void
-changed_load_status(GObject *obj, GParamSpec *pspec, gpointer data)
+changed_load_progress(GObject *obj, GParamSpec *pspec, gpointer data)
{
struct Client *c = (struct Client *)data;
+ gdouble p;
(void)obj;
(void)pspec;
- if (webkit_web_view_get_load_status(WEBKIT_WEB_VIEW(c->web_view))
- == WEBKIT_LOAD_FINISHED)
- {
- gtk_statusbar_pop(GTK_STATUSBAR(c->status), 1);
- gtk_statusbar_push(GTK_STATUSBAR(c->status), 1, "Finished.");
- }
- else
- {
- gtk_statusbar_pop(GTK_STATUSBAR(c->status), 1);
- gtk_statusbar_push(GTK_STATUSBAR(c->status), 1, "Loading...");
- }
+ p = webkit_web_view_get_progress(WEBKIT_WEB_VIEW(c->web_view));
+ gtk_progress_bar_set_fraction(GTK_PROGRESS_BAR(c->progress), p);
}
void
@@ -477,9 +473,14 @@ hover_web_view(WebKitWebView *web_view, gchar *title, gchar *uri, gpointer data)
(void)web_view;
(void)title;
- gtk_statusbar_pop(GTK_STATUSBAR(c->status), 0);
- if (uri != NULL)
- gtk_statusbar_push(GTK_STATUSBAR(c->status), 0, uri);
+ if (!gtk_widget_is_focus(c->location))
+ {
+ if (uri == NULL)
+ gtk_entry_set_text(GTK_ENTRY(c->location),
+ webkit_web_view_get_uri(WEBKIT_WEB_VIEW(c->web_view)));
+ else
+ gtk_entry_set_text(GTK_ENTRY(c->location), uri);
+ }
}
gboolean
@@ -586,8 +587,7 @@ key_web_view(GtkWidget *widget, GdkEvent *event, gpointer data)
else if (((GdkEventKey *)event)->keyval == GDK_KEY_Escape)
{
webkit_web_view_stop_loading(WEBKIT_WEB_VIEW(c->web_view));
- gtk_statusbar_pop(GTK_STATUSBAR(c->status), 1);
- gtk_statusbar_push(GTK_STATUSBAR(c->status), 1, "Aborted.");
+ gtk_progress_bar_set_fraction(GTK_PROGRESS_BAR(c->progress), 0);
}
}
else if (event->type == GDK_BUTTON_PRESS)