diff options
Diffstat (limited to 'embed/ephy-web-view.c')
-rw-r--r-- | embed/ephy-web-view.c | 99 |
1 files changed, 4 insertions, 95 deletions
diff --git a/embed/ephy-web-view.c b/embed/ephy-web-view.c index e11eab665..bfa45edfa 100644 --- a/embed/ephy-web-view.c +++ b/embed/ephy-web-view.c @@ -1156,76 +1156,6 @@ ephy_web_view_constructed (GObject *object) } static void -_ephy_web_view_draw_statusbar (GtkWidget *widget, cairo_t *cr) -{ - gint width, height; - guint border_width, statusbar_border_width; - PangoLayout *layout; - GtkAllocation allocation; - GtkStyleContext *context; - EphyWebViewPrivate *priv; - - priv = EPHY_WEB_VIEW (widget)->priv; - - gtk_widget_get_allocation (widget, &allocation); - - layout = gtk_widget_create_pango_layout (widget, priv->text); - pango_layout_set_width (layout, PANGO_SCALE * (allocation.width * 0.9)); - pango_layout_set_ellipsize (layout, PANGO_ELLIPSIZE_END); - - pango_layout_get_pixel_size (layout, &width, &height); - - border_width = gtk_container_get_border_width (GTK_CONTAINER (widget)); - - statusbar_border_width = 4; /* FIXME: what should we use here? */ - - priv->text_rectangle.x = border_width; - priv->text_rectangle.y = allocation.height - height - border_width - (statusbar_border_width * 2); - priv->text_rectangle.width = width + (statusbar_border_width * 2); - priv->text_rectangle.height = height + (statusbar_border_width * 2); - - context = gtk_widget_get_style_context (widget); - gtk_style_context_save (context); - - gtk_style_context_set_state (context, GTK_STATE_FLAG_NORMAL); - gtk_render_background (context, cr, - priv->text_rectangle.x, - priv->text_rectangle.y, - priv->text_rectangle.width, - priv->text_rectangle.height); - gtk_render_frame (context, cr, - priv->text_rectangle.x, - priv->text_rectangle.y, - priv->text_rectangle.width, - priv->text_rectangle.height); - - gtk_style_context_set_state (context, 0); - gtk_render_layout (context, cr, - priv->text_rectangle.x + statusbar_border_width, - priv->text_rectangle.y + statusbar_border_width, - layout); - - gtk_style_context_restore (context); - - g_object_unref (layout); -} - -static gboolean -ephy_web_view_draw (GtkWidget *widget, cairo_t *cr) -{ - EphyWebViewPrivate *priv; - - GTK_WIDGET_CLASS (ephy_web_view_parent_class)->draw (widget, cr); - - priv = EPHY_WEB_VIEW (widget)->priv; - - if (priv->text && priv->text[0] != '\0') - _ephy_web_view_draw_statusbar (widget, cr); - - return FALSE; -} - -static void ephy_web_view_class_init (EphyWebViewClass *klass) { GObjectClass *gobject_class = G_OBJECT_CLASS (klass); @@ -1239,7 +1169,6 @@ ephy_web_view_class_init (EphyWebViewClass *klass) widget_class->button_press_event = ephy_web_view_button_press_event; widget_class->key_press_event = ephy_web_view_key_press_event; - widget_class->draw = ephy_web_view_draw; /** * EphyWebView:address: @@ -3752,32 +3681,12 @@ ephy_web_view_load_homepage (EphyWebView *view) static void ephy_web_view_statusbar_update (EphyWebView *view, const char *text) { - EphyWebViewPrivate *priv; - GdkWindow *window; - GdkRectangle rect; - - priv = view->priv; - - if (priv->text) - g_free (priv->text); - - priv->text = g_strdup (text); - - /* FIXME: we should invalidate the union of the sizes of the - * rectangles of the previous and next statusbar text */ - window = gtk_widget_get_window (GTK_WIDGET (view)); - if (window) { - GtkAllocation allocation; + EphyEmbed *embed; - gtk_widget_get_allocation (GTK_WIDGET (view), &allocation); + g_return_if_fail (EPHY_IS_WEB_VIEW (view)); - rect = priv->text_rectangle; - rect.width = allocation.width; - if (rect.height == 0) - rect.height = allocation.height; - - gdk_window_invalidate_rect (window, &rect, TRUE); - } + embed = EPHY_GET_EMBED_FROM_EPHY_WEB_VIEW (view); + _ephy_embed_set_statusbar_label (embed, text); } /* Portions of the following code based on GTK+. |