WebKit Bugzilla
New
Browse
Search+
Log In
×
Sign in with GitHub
or
Remember my login
Create Account
·
Forgot Password
Forgotten password account recovery
[patch]
FullScreen signals
FullScreen-signals.patch (text/plain), 21.70 KB, created by
Philippe Normand
on 2012-01-31 07:41:45 PST
(
hide
)
Description:
FullScreen signals
Filename:
MIME Type:
Creator:
Philippe Normand
Created:
2012-01-31 07:41:45 PST
Size:
21.70 KB
patch
obsolete
>From 1a0efebe43e29410ce198a5959978c8bb5d9ade7 Mon Sep 17 00:00:00 2001 >From: Philippe Normand <pnormand@igalia.com> >Date: Tue, 31 Jan 2012 16:41:46 +0100 >Subject: [PATCH] FullScreen signals > >--- > Source/WebKit2/ChangeLog | 31 +++++ > Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp | 68 +++++++++++ > Source/WebKit2/UIProcess/API/gtk/WebKitWebView.h | 2 + > .../UIProcess/API/gtk/WebKitWebViewPrivate.h | 3 +- > .../UIProcess/API/gtk/tests/TestWebKitWebView.cpp | 124 +++++++++++++++++++- > .../UIProcess/gtk/FullScreenWindowController.cpp | 8 ++ > Tools/ChangeLog | 19 +++ > Tools/MiniBrowser/gtk/BrowserWindow.c | 54 +++++++++- > 8 files changed, 306 insertions(+), 3 deletions(-) > >diff --git a/Source/WebKit2/ChangeLog b/Source/WebKit2/ChangeLog >index 1448615..d90086d 100644 >--- a/Source/WebKit2/ChangeLog >+++ b/Source/WebKit2/ChangeLog >@@ -1,5 +1,36 @@ > 2012-01-31 Philippe Normand <pnormand@igalia.com> > >+ [WK2][GTK] FullScreen signals >+ https://bugs.webkit.org/show_bug.cgi?id=76166 >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ Added entering-fullscreen and leaving-fullscreen signals, meant to >+ be used by the user agent to be notified when an element requests >+ full screen display and when the full screen display is to be >+ disabled. >+ >+ * UIProcess/API/gtk/WebKitWebView.cpp: >+ (webkit_web_view_class_init): >+ (webkitWebViewEnteringFullScreen): >+ (webkitWebViewLeavingFullScreen): >+ * UIProcess/API/gtk/WebKitWebView.h: >+ * UIProcess/API/gtk/WebKitWebViewPrivate.h: >+ * UIProcess/API/gtk/tests/TestWebKitWebView.cpp: >+ (WindowProperties::enteringFullScreen): >+ (WindowProperties::leavingFullScreen): >+ (WindowProperties::UIClientTest): >+ (emitKeyStroke): >+ (testWebViewFullScreen): >+ (testWebViewFullScreenBlocked): >+ (beforeAll): >+ * UIProcess/API/gtk/webkit2marshal.list: >+ * UIProcess/gtk/FullScreenWindowController.cpp: >+ (FullScreenWindowController::enterFullScreen): >+ (FullScreenWindowController::exitFullScreen): >+ >+2012-01-31 Philippe Normand <pnormand@igalia.com> >+ > [GTK][WK2] Initial FullScreen support > https://bugs.webkit.org/show_bug.cgi?id=75553 > >diff --git a/Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp b/Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp >index e8bcaee..3972323 100644 >--- a/Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp >+++ b/Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp >@@ -58,6 +58,9 @@ enum { > > DECIDE_POLICY, > >+ ENTERING_FULLSCREEN, >+ LEAVING_FULLSCREEN, >+ > LAST_SIGNAL > }; > >@@ -254,6 +257,8 @@ static void webkit_web_view_class_init(WebKitWebViewClass* webViewClass) > webViewClass->script_confirm = webkitWebViewScriptConfirm; > webViewClass->script_prompt = webkitWebViewScriptPrompt; > webViewClass->decide_policy = webkitWebViewDecidePolicy; >+ webViewClass->entering_fullscreen = webkitWebViewEnteringFullScreen; >+ webViewClass->leaving_fullscreen = webkitWebViewLeavingFullScreen; > > g_type_class_add_private(webViewClass, sizeof(WebKitWebViewPrivate)); > >@@ -612,6 +617,55 @@ static void webkit_web_view_class_init(WebKitWebViewClass* webViewClass) > G_TYPE_BOOLEAN, 2, /* number of parameters */ > WEBKIT_TYPE_POLICY_DECISION, > WEBKIT_TYPE_POLICY_DECISION_TYPE); >+ >+ /** >+ * WebKitWebView::entering-fullscreen: >+ * @web_view: the #WebKitWebView on which the signal is emitted >+ * >+ * Emitted when JavaScript code calls >+ * <function>element.webkitRequestFullScreen</function>. If the >+ * signal is not handled the WebView will proceed to full screen >+ * its top level window. This signal can be used by client code to >+ * request permission to the user prior doing the full screen >+ * transition and eventually prepare the top-level window >+ * (e.g. hide some widgets that would otherwise be part of the >+ * full screen window). >+ >+ * Returns: %TRUE to stop other handlers from being invoked for the event. >+ * %FALSE to block the event. >+ */ >+ signals[ENTERING_FULLSCREEN] = >+ g_signal_new("entering-fullscreen", >+ G_TYPE_FROM_CLASS(webViewClass), >+ G_SIGNAL_RUN_LAST, >+ G_STRUCT_OFFSET(WebKitWebViewClass, entering_fullscreen), >+ g_signal_accumulator_first_wins, 0, >+ webkit_marshal_BOOLEAN__VOID, >+ G_TYPE_BOOLEAN, 0); >+ >+ >+ /** >+ * WebKitWebView::leaving-fullscreen: >+ * @web_view: the #WebKitWebView on which the signal is emitted >+ * >+ * Emitted when the WebView is about to restore its top level >+ * window out of its full screen state. This signal can be used by >+ * client code to restore widgets hidden during the >+ * entering-fullscreen stage for instance. >+ >+ * Returns: %TRUE to stop other handlers from being invoked for the event. >+ * %FALSE to propagate the event further. >+ */ >+ signals[LEAVING_FULLSCREEN] = >+ g_signal_new("leaving-fullscreen", >+ G_TYPE_FROM_CLASS(webViewClass), >+ G_SIGNAL_RUN_LAST, >+ G_STRUCT_OFFSET(WebKitWebViewClass, leaving_fullscreen), >+ g_signal_accumulator_first_wins, 0, >+ webkit_marshal_BOOLEAN__VOID, >+ G_TYPE_BOOLEAN, 0); >+ >+ > } > > void webkitWebViewLoadChanged(WebKitWebView* webView, WebKitLoadEvent loadEvent) >@@ -723,6 +777,20 @@ void webkitWebViewMakePolicyDecision(WebKitWebView* webView, WebKitPolicyDecisio > g_signal_emit(webView, signals[DECIDE_POLICY], 0, decision, type, &returnValue); > } > >+gboolean webkitWebViewEnteringFullScreen(WebKitWebView* webView) >+{ >+ gboolean returnValue; >+ g_signal_emit(webView, signals[ENTERING_FULLSCREEN], 0, &returnValue); >+ return returnValue; >+} >+ >+gboolean webkitWebViewLeavingFullScreen(WebKitWebView* webView) >+{ >+ gboolean returnValue; >+ g_signal_emit(webView, signals[LEAVING_FULLSCREEN], 0, &returnValue); >+ return returnValue; >+} >+ > /** > * webkit_web_view_new: > * >diff --git a/Source/WebKit2/UIProcess/API/gtk/WebKitWebView.h b/Source/WebKit2/UIProcess/API/gtk/WebKitWebView.h >index 697fcdc..f98bd7b 100644 >--- a/Source/WebKit2/UIProcess/API/gtk/WebKitWebView.h >+++ b/Source/WebKit2/UIProcess/API/gtk/WebKitWebView.h >@@ -139,6 +139,8 @@ struct _WebKitWebViewClass { > gboolean (* decide_policy) (WebKitWebView *web_view, > WebKitPolicyDecision *decision, > WebKitPolicyDecisionType type); >+ gboolean (* entering_fullscreen) (WebKitWebView *web_view); >+ gboolean (* leaving_fullscreen) (WebKitWebView *web_view); > > /* Padding for future expansion */ > void (*_webkit_reserved0) (void); >diff --git a/Source/WebKit2/UIProcess/API/gtk/WebKitWebViewPrivate.h b/Source/WebKit2/UIProcess/API/gtk/WebKitWebViewPrivate.h >index 66386d0..b863850 100644 >--- a/Source/WebKit2/UIProcess/API/gtk/WebKitWebViewPrivate.h >+++ b/Source/WebKit2/UIProcess/API/gtk/WebKitWebViewPrivate.h >@@ -43,5 +43,6 @@ void webkitWebViewRunJavaScriptAlert(WebKitWebView*, const CString& message); > bool webkitWebViewRunJavaScriptConfirm(WebKitWebView*, const CString& message); > WKStringRef webkitWebViewRunJavaScriptPrompt(WebKitWebView*, const CString& message, const CString& defaultText); > void webkitWebViewMakePolicyDecision(WebKitWebView*, WebKitPolicyDecisionType, WebKitPolicyDecision*); >- >+gboolean webkitWebViewEnteringFullScreen(WebKitWebView*); >+gboolean webkitWebViewLeavingFullScreen(WebKitWebView*); > #endif // WebKitWebViewPrivate_h >diff --git a/Source/WebKit2/UIProcess/API/gtk/tests/TestWebKitWebView.cpp b/Source/WebKit2/UIProcess/API/gtk/tests/TestWebKitWebView.cpp >index 16375ed..3532745 100644 >--- a/Source/WebKit2/UIProcess/API/gtk/tests/TestWebKitWebView.cpp >+++ b/Source/WebKit2/UIProcess/API/gtk/tests/TestWebKitWebView.cpp >@@ -22,6 +22,8 @@ > #include <wtf/HashSet.h> > #include <wtf/gobject/GRefPtr.h> > #include <wtf/text/StringHash.h> >+#include <gdk/gdk.h> >+#include <gdk/gdkkeysyms.h> > > static void testWebViewDefaultContext(WebViewTest* test, gconstpointer) > { >@@ -87,11 +89,14 @@ static void testWebViewReplaceContent(WebViewTest* test, gconstpointer) > g_main_loop_run(test->m_mainLoop); > } > >+ > static const char* kAlertDialogMessage = "WebKitGTK+ alert dialog message"; > static const char* kConfirmDialogMessage = "WebKitGTK+ confirm dialog message"; > static const char* kPromptDialogMessage = "WebKitGTK+ prompt dialog message"; > static const char* kPromptDialogReturnedText = "WebKitGTK+ prompt dialog returned text"; > >+static gboolean emitKeyStroke(gpointer data); >+ > class UIClientTest: public WebViewTest { > public: > MAKE_GLIB_TEST_FIXTURE(UIClientTest); >@@ -99,7 +104,9 @@ public: > enum WebViewEvents { > Create, > ReadyToShow, >- Close >+ Close, >+ EnteringFullScreen, >+ LeavingFullScreen > }; > > enum ScriptType { >@@ -263,15 +270,39 @@ public: > return TRUE; > } > >+ >+ static gboolean enteringFullScreen(WebKitWebView*, UIClientTest* test) >+ { >+ if (test->m_fullScreenAllowed) { >+ test->m_webViewEvents.append(EnteringFullScreen); >+ g_timeout_add(200, (GSourceFunc) emitKeyStroke, test); >+ } else { >+ gtk_widget_destroy(gtk_widget_get_toplevel(GTK_WIDGET(test->m_webView))); >+ g_main_loop_quit(test->m_mainLoop); >+ } >+ return test->m_fullScreenAllowed; >+ } >+ >+ static gboolean leavingFullScreen(WebKitWebView*, UIClientTest* test) >+ { >+ test->m_webViewEvents.append(LeavingFullScreen); >+ gtk_widget_destroy(gtk_widget_get_toplevel(GTK_WIDGET(test->m_webView))); >+ g_main_loop_quit(test->m_mainLoop); >+ return TRUE; >+ } >+ > UIClientTest() > : m_scriptType(Alert) > , m_scriptDialogConfirmed(true) > { > webkit_settings_set_javascript_can_open_windows_automatically(webkit_web_view_get_settings(m_webView), TRUE); >+ webkit_settings_set_enable_fullscreen(webkit_web_view_get_settings(m_webView), TRUE); > g_signal_connect(m_webView, "create", G_CALLBACK(viewCreate), this); > g_signal_connect(m_webView, "script-alert", G_CALLBACK(scriptAlert), this); > g_signal_connect(m_webView, "script-confirm", G_CALLBACK(scriptConfirm), this); > g_signal_connect(m_webView, "script-prompt", G_CALLBACK(scriptPrompt), this); >+ g_signal_connect(m_webView, "entering-fullscreen", G_CALLBACK(enteringFullScreen), this); >+ g_signal_connect(m_webView, "leaving-fullscreen", G_CALLBACK(leavingFullScreen), this); > } > > ~UIClientTest() >@@ -294,8 +325,42 @@ public: > bool m_scriptDialogConfirmed; > WindowProperties m_windowProperties; > HashSet<WTF::String> m_windowPropertiesChanged; >+ bool m_fullScreenAllowed; > }; > >+static gboolean emitKeyStroke(gpointer data) >+{ >+ UIClientTest* test = (UIClientTest*) data; >+ >+ // create and send the event >+ GdkEvent* pressEvent = gdk_event_new(GDK_KEY_PRESS); >+ pressEvent->key.keyval = GDK_KEY_f; >+ GdkWindow* window = gtk_widget_get_window(GTK_WIDGET(test->m_webView)); >+ pressEvent->key.window = window; >+ g_object_ref(pressEvent->key.window); >+ >+ GdkDeviceManager* manager = gdk_display_get_device_manager(gdk_window_get_display(window)); >+ gdk_event_set_device(pressEvent, gdk_device_manager_get_client_pointer(manager)); >+ >+ // When synthesizing an event, an invalid hardware_keycode value >+ // can cause it to be badly processed by Gtk+. >+ GdkKeymapKey* keys; >+ gint n_keys; >+ if (gdk_keymap_get_entries_for_keyval(gdk_keymap_get_default(), GDK_KEY_f, &keys, &n_keys)) { >+ pressEvent->key.hardware_keycode = keys[0].keycode; >+ g_free(keys); >+ } >+ >+ GdkEvent* releaseEvent = gdk_event_copy(pressEvent); >+ gtk_main_do_event(pressEvent); >+ gdk_event_free(pressEvent); >+ releaseEvent->key.type = GDK_KEY_RELEASE; >+ gtk_main_do_event(releaseEvent); >+ gdk_event_free(releaseEvent); >+ >+ return FALSE; >+} >+ > static void testWebViewCreateReadyClose(UIClientTest* test, gconstpointer) > { > test->loadHtml("<html><body onLoad=\"window.open().close();\"></html>", 0); >@@ -308,6 +373,61 @@ static void testWebViewCreateReadyClose(UIClientTest* test, gconstpointer) > g_assert_cmpint(events[2], ==, UIClientTest::Close); > } > >+static void testWebViewFullScreen(UIClientTest* test, gconstpointer) >+{ >+ test->m_fullScreenAllowed = TRUE; >+ test->loadHtml("<html><body>" >+ "<script>" >+ "var eventName = 'keypress';" >+ "function thunk() {" >+ " document.removeEventListener(eventName, thunk, false);" >+ " document.documentElement.webkitRequestFullScreen();" >+ "}" >+ "document.addEventListener(eventName, thunk, false);" >+ "</script></body></html>", 0); >+ >+ GtkWidget* window; >+ window = gtk_window_new(GTK_WINDOW_POPUP); >+ gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(test->m_webView)); >+ >+ gtk_widget_show_all(window); >+ g_timeout_add(100, (GSourceFunc) emitKeyStroke, test); >+ >+ test->waitUntilMainLoopFinishes(); >+ >+ Vector<UIClientTest::WebViewEvents>& events = test->m_webViewEvents; >+ g_assert_cmpint(events.size(), ==, 2); >+ g_assert_cmpint(events[0], ==, UIClientTest::EnteringFullScreen); >+ g_assert_cmpint(events[1], ==, UIClientTest::LeavingFullScreen); >+} >+ >+ >+static void testWebViewFullScreenBlocked(UIClientTest* test, gconstpointer) >+{ >+ test->m_fullScreenAllowed = FALSE; >+ test->loadHtml("<html><body>" >+ "<script>" >+ "var eventName = 'keypress';" >+ "function thunk() {" >+ " document.removeEventListener(eventName, thunk, false);" >+ " document.documentElement.webkitRequestFullScreen();" >+ "}" >+ "document.addEventListener(eventName, thunk, false);" >+ "</script></body></html>", 0); >+ >+ GtkWidget* window; >+ window = gtk_window_new(GTK_WINDOW_POPUP); >+ gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(test->m_webView)); >+ >+ gtk_widget_show_all(window); >+ g_timeout_add(100, (GSourceFunc) emitKeyStroke, test); >+ >+ test->waitUntilMainLoopFinishes(); >+ >+ Vector<UIClientTest::WebViewEvents>& events = test->m_webViewEvents; >+ g_assert_cmpint(events.size(), ==, 0); >+} >+ > static void testWebViewJavaScriptDialogs(UIClientTest* test, gconstpointer) > { > static const char* htmlOnLoadFormat = "<html><body onLoad=\"%s\"></body></html>"; >@@ -372,6 +492,8 @@ void beforeAll() > WebViewTest::add("WebKitWebView", "replace-content", testWebViewReplaceContent); > UIClientTest::add("WebKitWebView", "create-ready-close", testWebViewCreateReadyClose); > UIClientTest::add("WebKitWebView", "javascript-dialogs", testWebViewJavaScriptDialogs); >+ UIClientTest::add("WebKitWebView", "fullscreen", testWebViewFullScreen); >+ UIClientTest::add("WebKitWebView", "fullscreen-blocked", testWebViewFullScreenBlocked); > UIClientTest::add("WebKitWebView", "window-properties", testWebViewWindowProperties); > WebViewTest::add("WebKitWebView", "zoom-level", testWebViewZoomLevel); > } >diff --git a/Source/WebKit2/UIProcess/gtk/FullScreenWindowController.cpp b/Source/WebKit2/UIProcess/gtk/FullScreenWindowController.cpp >index eeefb0d..8e3274b 100644 >--- a/Source/WebKit2/UIProcess/gtk/FullScreenWindowController.cpp >+++ b/Source/WebKit2/UIProcess/gtk/FullScreenWindowController.cpp >@@ -69,6 +69,11 @@ void FullScreenWindowController::enterFullScreen() > if (m_fullScreenEnabled) > return; > >+ gboolean returnValue; >+ g_signal_emit_by_name(WEBKIT_WEB_VIEW(m_webViewBase.get()), "entering-fullscreen", &returnValue); >+ if (!returnValue) >+ return; >+ > this->fullScreenManagerProxy()->willEnterFullScreen(); > this->fullScreenManagerProxy()->beginEnterFullScreenAnimation(10); > >@@ -86,6 +91,9 @@ void FullScreenWindowController::exitFullScreen() > if (!m_fullScreenEnabled) > return; > >+ gboolean returnValue; >+ g_signal_emit_by_name(WEBKIT_WEB_VIEW(m_webViewBase.get()), "leaving-fullscreen", &returnValue); >+ > GtkWidget* topLevelWindow = gtk_widget_get_toplevel(GTK_WIDGET(m_webViewBase.get())); > if (gtk_widget_is_toplevel(topLevelWindow)) > g_signal_handlers_disconnect_by_func(topLevelWindow, reinterpret_cast<void*>(onFullscreenGtkKeyPressEvent), this); >diff --git a/Tools/ChangeLog b/Tools/ChangeLog >index d7a9097..af796f1 100644 >--- a/Tools/ChangeLog >+++ b/Tools/ChangeLog >@@ -1,3 +1,22 @@ >+2012-01-31 Philippe Normand <pnormand@igalia.com> >+ >+ [WK2][GTK] FullScreen signals >+ https://bugs.webkit.org/show_bug.cgi?id=76166 >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ Use the two new entering/leaving fullscreen signals to hide/show >+ the URL bar and ask the user's permission before entering >+ fullscreen. >+ >+ * MiniBrowser/gtk/BrowserWindow.c: >+ (webViewFullscreenMessageWindowClose): >+ (webViewWindowStateEvent): >+ (webViewEnteringFullScreen): >+ (webViewLeavingFullScreen): >+ (webViewCreate): >+ (browserWindowConstructed): >+ > 2012-01-31 Jocelyn Turcotte <jocelyn.turcotte@nokia.com> > > [Qt] MiniBrowser: Show touch mocking indicators only when Ctrl is held down. >diff --git a/Tools/MiniBrowser/gtk/BrowserWindow.c b/Tools/MiniBrowser/gtk/BrowserWindow.c >index e04ab0b..a617647 100644 >--- a/Tools/MiniBrowser/gtk/BrowserWindow.c >+++ b/Tools/MiniBrowser/gtk/BrowserWindow.c >@@ -45,7 +45,6 @@ struct _BrowserWindow { > GtkWidget *statusLabel; > GtkWidget *settingsDialog; > WebKitWebView *webView; >- > }; > > struct _BrowserWindowClass { >@@ -218,6 +217,55 @@ static void webViewReadyToShow(WebKitWebView *webView, BrowserWindow *window) > gtk_widget_show(GTK_WIDGET(window)); > } > >+static gboolean webViewFullscreenMessageWindowClose(GtkWidget *dialog) >+{ >+ if (GTK_IS_WIDGET (dialog)) >+ g_signal_emit_by_name (GTK_DIALOG (dialog), "close"); >+ return FALSE; >+} >+ >+static gboolean webViewWindowStateEvent(GtkWidget *widget, GdkEventWindowState *event, BrowserWindow *window) >+{ >+ if (event->new_window_state & GDK_WINDOW_STATE_FULLSCREEN) { >+ const gchar *uri = webkit_web_view_get_uri (window->webView); >+ GtkWidget *dialog = gtk_message_dialog_new (GTK_WINDOW (window), >+ GTK_DIALOG_MODAL, >+ GTK_MESSAGE_INFO, >+ GTK_BUTTONS_CLOSE, >+ "%s is now full screen. Press ESC or f to exit.", uri); >+ g_signal_connect_swapped (dialog, "response", G_CALLBACK (gtk_widget_destroy), dialog); >+ g_timeout_add (1500, (GSourceFunc) webViewFullscreenMessageWindowClose, dialog); >+ gtk_dialog_run (GTK_DIALOG (dialog)); >+ } >+ return TRUE; >+} >+ >+static gboolean webViewEnteringFullScreen(WebKitWebView *webView, BrowserWindow *window) >+{ >+ const gchar *uri = webkit_web_view_get_uri (window->webView); >+ GtkWidget* dialog = gtk_message_dialog_new (GTK_WINDOW (window), >+ GTK_DIALOG_MODAL, >+ GTK_MESSAGE_INFO, >+ GTK_BUTTONS_YES_NO, >+ "Allow full screen display of %s ?", uri); >+ gint result = gtk_dialog_run (GTK_DIALOG (dialog)); >+ if (result == GTK_RESPONSE_YES) { >+ g_signal_connect(GTK_WIDGET (window), "window-state-event", G_CALLBACK(webViewWindowStateEvent), window); >+ gtk_widget_hide (window->toolbar); >+ gtk_widget_destroy(GTK_WIDGET (dialog)); >+ return TRUE; >+ } >+ gtk_widget_destroy(GTK_WIDGET (dialog)); >+ return FALSE; >+} >+ >+static gboolean webViewLeavingFullScreen(WebKitWebView *webView, BrowserWindow *window) >+{ >+ gtk_widget_show(window->toolbar); >+ g_signal_handlers_disconnect_by_func(GTK_WIDGET(window), G_CALLBACK(webViewWindowStateEvent), window); >+ return TRUE; >+} >+ > static GtkWidget *webViewCreate(WebKitWebView *webView, BrowserWindow *window) > { > WebKitWebView *newWebView = WEBKIT_WEB_VIEW(webkit_web_view_new_with_context(webkit_web_view_get_context(webView))); >@@ -226,6 +274,8 @@ static GtkWidget *webViewCreate(WebKitWebView *webView, BrowserWindow *window) > GtkWidget *newWindow = browser_window_new(newWebView); > g_signal_connect(newWebView, "ready-to-show", G_CALLBACK(webViewReadyToShow), newWindow); > g_signal_connect(newWebView, "close", G_CALLBACK(webViewClose), newWindow); >+ g_signal_connect(newWebView, "entering-fullscreen", G_CALLBACK(webViewEnteringFullScreen), newWindow); >+ g_signal_connect(newWebView, "leaving-fullscreen", G_CALLBACK(webViewLeavingFullScreen), newWindow); > return GTK_WIDGET(newWebView); > } > >@@ -333,6 +383,8 @@ static void browserWindowConstructed(GObject *gObject) > g_signal_connect(window->webView, "notify::title", G_CALLBACK(webViewTitleChanged), window); > g_signal_connect(window->webView, "create", G_CALLBACK(webViewCreate), window); > g_signal_connect(window->webView, "load-failed", G_CALLBACK(webViewLoadFailed), window); >+ g_signal_connect(window->webView, "entering-fullscreen", G_CALLBACK(webViewEnteringFullScreen), window); >+ g_signal_connect(window->webView, "leaving-fullscreen", G_CALLBACK(webViewLeavingFullScreen), window); > > WebKitBackForwardList *backForwadlist = webkit_web_view_get_back_forward_list(window->webView); > g_signal_connect(backForwadlist, "changed", G_CALLBACK(backForwadlistChanged), window); >-- >1.7.9
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Flags:
mrobinson
:
review-
Actions:
View
|
Formatted Diff
|
Diff
Attachments on
bug 76166
:
122211
|
122227
|
124730
|
124971
|
131323
|
135344