Merge lp:~kalikiana/midori/popup into lp:midori

Proposed by Cris Dywan
Status: Merged
Approved by: André Stösel
Approved revision: 6366
Merged at revision: 6398
Proposed branch: lp:~kalikiana/midori/popup
Merge into: lp:midori
Diff against target: 152 lines (+74/-7)
3 files modified
midori/midori-browser.c (+32/-5)
midori/midori-tab.vala (+4/-0)
midori/midori-view.c (+38/-2)
To merge this branch: bzr merge lp:~kalikiana/midori/popup
Reviewer Review Type Date Requested Status
André Stösel Approve
Review via email: mp+183362@code.launchpad.net

This proposal supersedes a proposal from 2013-08-31.

Commit message

Implement dialog windows opened via javascript

To post a comment you must log in.
Revision history for this message
Cris Dywan (kalikiana) wrote : Posted in a previous version of this proposal

Meh, the cmake stuff shows up there. Let's hold this off for a moment.

Revision history for this message
Cris Dywan (kalikiana) wrote :

FYI cmake is out of the way, can be reviewed now.

Revision history for this message
André Stösel (ivaldi) :
review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== modified file 'midori/midori-browser.c'
--- midori/midori-browser.c 2013-08-15 21:32:30 +0000
+++ midori/midori-browser.c 2013-09-01 17:50:34 +0000
@@ -1553,6 +1553,32 @@
1553 gboolean user_initiated,1553 gboolean user_initiated,
1554 MidoriBrowser* browser)1554 MidoriBrowser* browser)
1555{1555{
1556 if (midori_tab_get_is_dialog (MIDORI_TAB (view)))
1557 {
1558 /* Dialog: URL, no toolbars, no tabs */
1559 MidoriBrowser* new_browser;
1560 g_signal_emit (browser, signals[NEW_WINDOW], 0, NULL, &new_browser);
1561 g_assert (new_browser != NULL);
1562 gtk_window_set_transient_for (GTK_WINDOW (new_browser), GTK_WINDOW (browser));
1563 gtk_window_set_destroy_with_parent (GTK_WINDOW (new_browser), TRUE);
1564 MidoriWebSettings* settings = midori_web_settings_new ();
1565 g_object_set (settings,
1566 "toolbar-items", "Location",
1567 "show-menubar", FALSE,
1568 "show-bookmarkbar", FALSE,
1569 "show-statusbar", FALSE,
1570 NULL);
1571 g_object_set (new_browser,
1572 "settings", settings,
1573 "show-tabs", FALSE,
1574 NULL);
1575 g_object_unref (settings);
1576 _action_set_visible (new_browser, "CompactMenu", FALSE);
1577 midori_browser_add_tab (new_browser, new_view);
1578 midori_browser_set_current_tab (new_browser, new_view);
1579 return;
1580 }
1581
1556 if (midori_view_forward_external (new_view,1582 if (midori_view_forward_external (new_view,
1557 katze_item_get_uri (midori_view_get_proxy_item (MIDORI_VIEW (new_view))),1583 katze_item_get_uri (midori_view_get_proxy_item (MIDORI_VIEW (new_view))),
1558 where))1584 where))
@@ -6773,7 +6799,6 @@
6773 MidoriToolbarStyle toolbar_style;6799 MidoriToolbarStyle toolbar_style;
6774 gchar* toolbar_items;6800 gchar* toolbar_items;
6775 gboolean close_buttons_on_tabs;6801 gboolean close_buttons_on_tabs;
6776 KatzeItem* item;
67776802
6778 g_object_get (browser->settings,6803 g_object_get (browser->settings,
6779 "remember-last-window-size", &remember_last_window_size,6804 "remember-last-window-size", &remember_last_window_size,
@@ -6840,13 +6865,15 @@
6840 {6865 {
6841 const gchar* default_search = midori_settings_get_location_entry_search (6866 const gchar* default_search = midori_settings_get_location_entry_search (
6842 MIDORI_SETTINGS (browser->settings));6867 MIDORI_SETTINGS (browser->settings));
6843 item = katze_array_get_nth_item (browser->search_engines,6868 KatzeItem* item;
6844 browser->last_web_search);6869
6845 if (item)6870 if ((item = katze_array_get_nth_item (browser->search_engines,
6871 browser->last_web_search)))
6846 midori_search_action_set_current_item (MIDORI_SEARCH_ACTION (6872 midori_search_action_set_current_item (MIDORI_SEARCH_ACTION (
6847 _action_by_name (browser, "Search")), item);6873 _action_by_name (browser, "Search")), item);
68486874
6849 if ((item = katze_array_find_uri (browser->search_engines, default_search)))6875 if (default_search != NULL
6876 && (item = katze_array_find_uri (browser->search_engines, default_search)))
6850 midori_search_action_set_default_item (MIDORI_SEARCH_ACTION (6877 midori_search_action_set_default_item (MIDORI_SEARCH_ACTION (
6851 _action_by_name (browser, "Search")), item);6878 _action_by_name (browser, "Search")), item);
6852 }6879 }
68536880
=== modified file 'midori/midori-tab.vala'
--- midori/midori-tab.vala 2013-07-28 15:50:26 +0000
+++ midori/midori-tab.vala 2013-09-01 17:50:34 +0000
@@ -92,6 +92,10 @@
92 /* Since: 0.5.5 */92 /* Since: 0.5.5 */
93 public signal void context_menu (WebKit.HitTestResult hit_test_result, ContextAction menu);93 public signal void context_menu (WebKit.HitTestResult hit_test_result, ContextAction menu);
9494
95 /* A dialog tab has a fixed size, limited GUI and is transient.
96 Since: 0.5.6 */
97 public bool is_dialog { get; protected set; }
98
95 public bool is_blank () {99 public bool is_blank () {
96 return URI.is_blank (uri);100 return URI.is_blank (uri);
97 }101 }
98102
=== modified file 'midori/midori-view.c'
--- midori/midori-view.c 2013-09-01 16:40:29 +0000
+++ midori/midori-view.c 2013-09-01 17:50:34 +0000
@@ -2618,16 +2618,39 @@
26182618
2619#ifndef HAVE_WEBKIT22619#ifndef HAVE_WEBKIT2
2620static gboolean2620static gboolean
2621midori_view_web_view_close_cb (WebKitWebView* web_view,
2622 GtkWidget* view)
2623{
2624 midori_browser_close_tab (midori_browser_get_for_widget (view), view);
2625 return TRUE;
2626}
2627
2628static gboolean
2621webkit_web_view_web_view_ready_cb (GtkWidget* web_view,2629webkit_web_view_web_view_ready_cb (GtkWidget* web_view,
2622 MidoriView* view)2630 MidoriView* view)
2623{2631{
2624 MidoriNewView where = MIDORI_NEW_VIEW_TAB;2632 MidoriNewView where = MIDORI_NEW_VIEW_TAB;
2625 GtkWidget* new_view = GTK_WIDGET (midori_view_get_for_widget (web_view));2633 GtkWidget* new_view = GTK_WIDGET (midori_view_get_for_widget (web_view));
26262634
2627 /* FIXME: Open windows opened by scripts in tabs if they otherwise2635 WebKitWebWindowFeatures* features = webkit_web_view_get_window_features (web_view);
2636 gboolean locationbar_visible, menubar_visible, toolbar_visible;
2637 gint width, height;
2638 g_object_get (features,
2639 "locationbar-visible", &locationbar_visible,
2640 "menubar-visible", &menubar_visible,
2641 "toolbar-visible", &toolbar_visible,
2642 "width", &width,
2643 "height", &height,
2644 NULL);
2645 midori_tab_set_is_dialog (MIDORI_TAB (view),
2646 !locationbar_visible && !menubar_visible && !toolbar_visible
2647 && width > 0 && height > 0);
2648
2649 /* Open windows opened by scripts in tabs if they otherwise
2628 would be replacing the page the user opened. */2650 would be replacing the page the user opened. */
2629 if (view->open_new_pages_in == MIDORI_NEW_PAGE_CURRENT)2651 if (view->open_new_pages_in == MIDORI_NEW_PAGE_CURRENT)
2630 return TRUE;2652 if (!midori_tab_get_is_dialog (MIDORI_TAB (view)))
2653 return TRUE;
26312654
2632 if (view->open_new_pages_in == MIDORI_NEW_PAGE_TAB)2655 if (view->open_new_pages_in == MIDORI_NEW_PAGE_TAB)
2633 {2656 {
@@ -2640,6 +2663,15 @@
2640 gtk_widget_show (new_view);2663 gtk_widget_show (new_view);
2641 g_signal_emit (view, signals[NEW_VIEW], 0, new_view, where, FALSE);2664 g_signal_emit (view, signals[NEW_VIEW], 0, new_view, where, FALSE);
26422665
2666 if (midori_tab_get_is_dialog (MIDORI_TAB (view)))
2667 {
2668 GtkWidget* toplevel = gtk_widget_get_toplevel (new_view);
2669 if (width > 0 && height > 0)
2670 gtk_widget_set_size_request (toplevel, width, height);
2671 g_signal_connect (web_view, "close-web-view",
2672 G_CALLBACK (midori_view_web_view_close_cb), new_view);
2673 }
2674
2643 return TRUE;2675 return TRUE;
2644}2676}
26452677
@@ -3947,6 +3979,10 @@
3947 for (i = 0; i < G_N_ELEMENTS (widgets); i++)3979 for (i = 0; i < G_N_ELEMENTS (widgets); i++)
3948 g_string_append_printf (demo, widgets[i], " class=\"fallback\"");3980 g_string_append_printf (demo, widgets[i], " class=\"fallback\"");
3949 g_string_append (demo, "</div>");3981 g_string_append (demo, "</div>");
3982 g_string_append (demo, "<p><a href=\"http://example.com\" target=\"wp\" "
3983 "onclick=\"javascript:window.open('http://example.com','wp',"
3984 "'width=320, height=240, toolbar=false'); return false\""
3985 ">Popup window</a></p>");
3950 data = g_string_free (demo, FALSE);3986 data = g_string_free (demo, FALSE);
3951 }3987 }
3952 else if (!strcmp (uri, "about:private"))3988 else if (!strcmp (uri, "about:private"))

Subscribers

People subscribed via source and target branches

to all changes: