aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/uzbl-core.c
diff options
context:
space:
mode:
authorGravatar Brendan Taylor <whateley@gmail.com>2011-07-02 10:55:29 +0000
committerGravatar Brendan Taylor <whateley@gmail.com>2011-07-03 03:31:51 +0000
commit88055228d2cd8780d281eb31bf688170c23254ce (patch)
treeb1dad729d64ddba9ebfd02fd53a2f695e9de1e8d /src/uzbl-core.c
parent79270bf7f392e1a11f9b61bb94473d6751707fca (diff)
the status bar is now a custom gtk widget
it gives the left side of the status bar as much space as it needs (but importantly, no more than the size of the window. this should put the window resize bug to rest for good...
Diffstat (limited to 'src/uzbl-core.c')
-rw-r--r--src/uzbl-core.c115
1 files changed, 44 insertions, 71 deletions
diff --git a/src/uzbl-core.c b/src/uzbl-core.c
index 6d2b7b1..598abdf 100644
--- a/src/uzbl-core.c
+++ b/src/uzbl-core.c
@@ -710,27 +710,27 @@ parse_command(const char *cmd, const char *params, GString *result) {
void
move_statusbar() {
- if (!uzbl.gui.scrolled_win && !uzbl.gui.mainbar)
+ if (!uzbl.gui.scrolled_win && !uzbl.gui.status_bar)
return;
g_object_ref(uzbl.gui.scrolled_win);
- g_object_ref(uzbl.gui.mainbar);
+ g_object_ref(uzbl.gui.status_bar);
gtk_container_remove(GTK_CONTAINER(uzbl.gui.vbox), uzbl.gui.scrolled_win);
- gtk_container_remove(GTK_CONTAINER(uzbl.gui.vbox), uzbl.gui.mainbar);
+ gtk_container_remove(GTK_CONTAINER(uzbl.gui.vbox), uzbl.gui.status_bar);
if(uzbl.behave.status_top) {
- gtk_box_pack_start (GTK_BOX (uzbl.gui.vbox), uzbl.gui.mainbar, FALSE, TRUE, 0);
- gtk_box_pack_start (GTK_BOX (uzbl.gui.vbox), uzbl.gui.scrolled_win, TRUE, TRUE, 0);
- }
- else {
- gtk_box_pack_start (GTK_BOX (uzbl.gui.vbox), uzbl.gui.scrolled_win, TRUE, TRUE, 0);
- gtk_box_pack_start (GTK_BOX (uzbl.gui.vbox), uzbl.gui.mainbar, FALSE, TRUE, 0);
+ gtk_box_pack_start (GTK_BOX (uzbl.gui.vbox), uzbl.gui.status_bar, FALSE, TRUE, 0);
+ gtk_box_pack_start (GTK_BOX (uzbl.gui.vbox), uzbl.gui.scrolled_win, TRUE, TRUE, 0);
+ } else {
+ gtk_box_pack_start (GTK_BOX (uzbl.gui.vbox), uzbl.gui.scrolled_win, TRUE, TRUE, 0);
+ gtk_box_pack_start (GTK_BOX (uzbl.gui.vbox), uzbl.gui.status_bar, FALSE, TRUE, 0);
}
+
g_object_unref(uzbl.gui.scrolled_win);
- g_object_unref(uzbl.gui.mainbar);
+ g_object_unref(uzbl.gui.status_bar);
+
if (!uzbl.state.plug_mode)
gtk_widget_grab_focus (GTK_WIDGET (uzbl.gui.web_view));
- return;
}
gboolean
@@ -769,19 +769,13 @@ update_title(void) {
if (b->show_status) {
title_format = b->title_format_short;
- /* Left side */
- if (b->status_format && GTK_IS_LABEL(uzbl.gui.mainbar_label_left)) {
- gchar *parsed = expand(b->status_format, 0);
- gtk_label_set_markup(GTK_LABEL(uzbl.gui.mainbar_label_left), parsed);
- g_free(parsed);
- }
+ gchar *parsed = expand(b->status_format, 0);
+ uzbl_status_bar_update_left(uzbl.gui.status_bar, parsed);
+ g_free(parsed);
- /* Right side */
- if (b->status_format_right && GTK_IS_LABEL(uzbl.gui.mainbar_label_right)) {
- gchar *parsed = expand(b->status_format_right, 0);
- gtk_label_set_markup(GTK_LABEL(uzbl.gui.mainbar_label_right), parsed);
- g_free(parsed);
- }
+ parsed = expand(b->status_format_right, 0);
+ uzbl_status_bar_update_right(uzbl.gui.status_bar, parsed);
+ g_free(parsed);
}
/* Update window title */
@@ -849,49 +843,6 @@ create_scrolled_win() {
GtkWidget*
-create_mainbar() {
- GUI *g = &uzbl.gui;
-
- g->mainbar = gtk_hbox_new (FALSE, 0);
-
- /* create left panel */
- g->mainbar_label_left = gtk_label_new ("");
- gtk_label_set_selectable(GTK_LABEL(g->mainbar_label_left), TRUE);
- gtk_misc_set_alignment (GTK_MISC(g->mainbar_label_left), 0, 0);
- gtk_misc_set_padding (GTK_MISC(g->mainbar_label_left), 2, 2);
-
- /* create right panel */
- g->mainbar_label_right = gtk_label_new ("");
- gtk_label_set_selectable(GTK_LABEL(g->mainbar_label_right), TRUE);
- gtk_misc_set_alignment (GTK_MISC(g->mainbar_label_right), 1, 0);
- gtk_misc_set_padding (GTK_MISC(g->mainbar_label_right), 2, 2);
- gtk_label_set_ellipsize(GTK_LABEL(g->mainbar_label_right), PANGO_ELLIPSIZE_START);
-
- /* add the labels to the mainbar */
- gtk_box_pack_start (GTK_BOX (g->mainbar), g->mainbar_label_left, FALSE, FALSE, 0);
- gtk_box_pack_start (GTK_BOX (g->mainbar), g->mainbar_label_right, TRUE, TRUE, 0);
-
- /* set up signal handlers */
- g_object_connect((GObject*)g->mainbar,
- "signal::key-press-event", (GCallback)key_press_cb, NULL,
- "signal::key-release-event", (GCallback)key_release_cb, NULL,
- NULL);
-
- g_object_connect((GObject*)g->mainbar_label_left,
- "signal::key-press-event", (GCallback)key_press_cb, NULL,
- "signal::key-release-event", (GCallback)key_release_cb, NULL,
- NULL);
-
- g_object_connect((GObject*)g->mainbar_label_right,
- "signal::key-press-event", (GCallback)key_press_cb, NULL,
- "signal::key-release-event", (GCallback)key_release_cb, NULL,
- NULL);
-
- return g->mainbar;
-}
-
-
-GtkWidget*
create_window() {
GtkWidget* window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
@@ -1071,25 +1022,47 @@ initialize(int argc, char** argv) {
fprintf(stderr, "uzbl: error hooking %d: %s\n", SIGALRM, strerror(errno));
event_buffer_timeout(10);
-
/* HTTP client */
uzbl.net.soup_session = webkit_get_default_session();
uzbl.net.soup_cookie_jar = uzbl_cookie_jar_new();
soup_session_add_feature(uzbl.net.soup_session, SOUP_SESSION_FEATURE(uzbl.net.soup_cookie_jar));
-
commands_hash();
variables_hash();
/* GUI */
gtk_init(&argc, &argv);
- create_mainbar();
+
+ /* set up the status bar */
+ uzbl.gui.status_bar = uzbl_status_bar_new();
+
+ /* set up signal handlers (it's not great to have this here...) */
+ g_object_connect((GObject*)uzbl.gui.status_bar,
+ "signal::key-press-event", (GCallback)key_press_cb, NULL,
+ "signal::key-release-event", (GCallback)key_release_cb, NULL,
+ NULL);
+
+ /*
+ g_object_connect((GObject*)UZBL_STATUS_BAR(uzbl.gui.status_bar)->label_left,
+ "signal::key-press-event", (GCallback)key_press_cb, NULL,
+ "signal::key-release-event", (GCallback)key_release_cb, NULL,
+ NULL);
+
+ g_object_connect((GObject*)(UZBL_STATUS_BAR(uzbl.gui.status_bar)->label_right),
+ "signal::key-press-event", (GCallback)key_press_cb, NULL,
+ "signal::key-release-event", (GCallback)key_release_cb, NULL,
+ NULL);
+ */
+
+ /* create the main window itself */
create_scrolled_win();
+ /* pack the window and the status bar */
uzbl.gui.vbox = gtk_vbox_new(FALSE, 0);
+
gtk_box_pack_start(GTK_BOX(uzbl.gui.vbox), uzbl.gui.scrolled_win, TRUE, TRUE, 0);
- gtk_box_pack_start(GTK_BOX(uzbl.gui.vbox), uzbl.gui.mainbar, FALSE, TRUE, 0);
+ gtk_box_pack_start(GTK_BOX(uzbl.gui.vbox), uzbl.gui.status_bar, FALSE, TRUE, 0);
}
@@ -1177,7 +1150,7 @@ main (int argc, char* argv[]) {
/* Update status bar */
if (!uzbl.behave.show_status)
- gtk_widget_hide(uzbl.gui.mainbar);
+ gtk_widget_hide(uzbl.gui.status_bar);
else
update_title();