diff options
author | Brendan Taylor <whateley@gmail.com> | 2011-07-02 10:55:29 +0000 |
---|---|---|
committer | Brendan Taylor <whateley@gmail.com> | 2011-07-03 03:31:51 +0000 |
commit | 88055228d2cd8780d281eb31bf688170c23254ce (patch) | |
tree | b1dad729d64ddba9ebfd02fd53a2f695e9de1e8d /src/uzbl-core.c | |
parent | 79270bf7f392e1a11f9b61bb94473d6751707fca (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.c | 115 |
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(); |