Changeset 141585 in webkit


Ignore:
Timestamp:
Feb 1, 2013 6:11:18 AM (11 years ago)
Author:
commit-queue@webkit.org
Message:

[GTK][WK2] MiniBrowser fullscreen signals support
https://bugs.webkit.org/show_bug.cgi?id=108005

Patch by Manuel Rego Casasnovas <Manuel Rego Casasnovas> on 2013-02-01
Reviewed by Carlos Garcia Campos.

Shows a label for 2 seconds using overlay (if GTK >= 3.2.0) and hides
the toolbar when entering fullscreen. When leaving fullscreen the
label is hidden (if it's not hidden yet) and the toolbar is shown again.

  • MiniBrowser/gtk/BrowserWindow.c:

(_BrowserWindow):
(fullScreenMessageTimeoutCallback):
(webViewEnterFullScreen):
(webViewLeaveFullScreen):
(browserWindowFinalize):
(browserWindowConstructed):

Location:
trunk/Tools
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/Tools/ChangeLog

    r141578 r141585  
     12013-02-01  Manuel Rego Casasnovas  <rego@igalia.com>
     2
     3        [GTK][WK2] MiniBrowser fullscreen signals support
     4        https://bugs.webkit.org/show_bug.cgi?id=108005
     5
     6        Reviewed by Carlos Garcia Campos.
     7
     8        Shows a label for 2 seconds using overlay (if GTK >= 3.2.0) and hides
     9        the toolbar when entering fullscreen. When leaving fullscreen the
     10        label is hidden (if it's not hidden yet) and the toolbar is shown again.
     11
     12        * MiniBrowser/gtk/BrowserWindow.c:
     13        (_BrowserWindow):
     14        (fullScreenMessageTimeoutCallback):
     15        (webViewEnterFullScreen):
     16        (webViewLeaveFullScreen):
     17        (browserWindowFinalize):
     18        (browserWindowConstructed):
     19
    1202013-02-01  Alexis Menard  <alexis@webkit.org>
    221
  • trunk/Tools/MiniBrowser/gtk/BrowserWindow.c

    r130282 r141585  
    5353    GtkWidget *downloadsBar;
    5454    GdkPixbuf *favicon;
     55#if GTK_CHECK_VERSION(3, 2, 0)
     56    GtkWidget *fullScreenMessageLabel;
     57    guint fullScreenMessageLabelId;
     58#endif
    5559};
    5660
     
    262266}
    263267
     268#if GTK_CHECK_VERSION(3, 2, 0)
     269static gboolean fullScreenMessageTimeoutCallback(BrowserWindow *window)
     270{
     271    gtk_widget_hide(window->fullScreenMessageLabel);
     272    window->fullScreenMessageLabelId = 0;
     273    return FALSE;
     274}
     275#endif
     276
     277static gboolean webViewEnterFullScreen(WebKitWebView *webView, BrowserWindow *window)
     278{
     279#if GTK_CHECK_VERSION(3, 2, 0)
     280    const gchar *titleOrURI = webkit_web_view_get_title(window->webView);
     281    if (!titleOrURI)
     282        titleOrURI = webkit_web_view_get_uri(window->webView);
     283    gchar *message = g_strdup_printf("%s is now full screen. Press ESC or f to exit.", titleOrURI);
     284    gtk_label_set_text(GTK_LABEL(window->fullScreenMessageLabel), message);
     285    g_free(message);
     286
     287    gtk_widget_show(window->fullScreenMessageLabel);
     288
     289    window->fullScreenMessageLabelId = g_timeout_add_seconds(2, (GSourceFunc)fullScreenMessageTimeoutCallback, window);
     290#endif
     291
     292    gtk_widget_hide(window->toolbar);
     293
     294    return FALSE;
     295}
     296
     297static gboolean webViewLeaveFullScreen(WebKitWebView *webView, BrowserWindow *window)
     298{
     299#if GTK_CHECK_VERSION(3, 2, 0)
     300    if (window->fullScreenMessageLabelId) {
     301        g_source_remove(window->fullScreenMessageLabelId);
     302        window->fullScreenMessageLabelId = 0;
     303    }
     304    gtk_widget_hide(window->fullScreenMessageLabel);
     305#endif
     306
     307    gtk_widget_show(window->toolbar);
     308
     309    return FALSE;
     310}
     311
    264312static GtkWidget *webViewCreate(WebKitWebView *webView, BrowserWindow *window)
    265313{
     
    396444        window->favicon = NULL;
    397445    }
     446
     447#if GTK_CHECK_VERSION(3, 2, 0)
     448    if (window->fullScreenMessageLabelId)
     449        g_source_remove(window->fullScreenMessageLabelId);
     450#endif
    398451
    399452    G_OBJECT_CLASS(browser_window_parent_class)->finalize(gObject);
     
    514567    g_signal_connect(window->webView, "notify::zoom-level", G_CALLBACK(webViewZoomLevelChanged), window);
    515568    g_signal_connect(window->webView, "notify::favicon", G_CALLBACK(faviconChanged), window);
     569    g_signal_connect(window->webView, "enter-fullscreen", G_CALLBACK(webViewEnterFullScreen), window);
     570    g_signal_connect(window->webView, "leave-fullscreen", G_CALLBACK(webViewLeaveFullScreen), window);
    516571
    517572    g_signal_connect(webkit_web_view_get_context(window->webView), "download-started", G_CALLBACK(downloadStarted), window);
     
    535590
    536591    gtk_container_add(GTK_CONTAINER(overlay), GTK_WIDGET(window->webView));
     592
     593    window->fullScreenMessageLabel = gtk_label_new(NULL);
     594    gtk_widget_set_halign(window->fullScreenMessageLabel, GTK_ALIGN_CENTER);
     595    gtk_widget_set_valign(window->fullScreenMessageLabel, GTK_ALIGN_CENTER);
     596    gtk_widget_set_no_show_all(window->fullScreenMessageLabel, TRUE);
     597    gtk_overlay_add_overlay(GTK_OVERLAY(overlay), window->fullScreenMessageLabel);
    537598#else
    538599    gtk_box_pack_start(GTK_BOX(window->mainBox), GTK_WIDGET(window->webView), TRUE, TRUE, 0);
Note: See TracChangeset for help on using the changeset viewer.