Attempt to fix handling of background and foreground tabs.
This commit is contained in:
parent
a2aa737677
commit
62cbafe12a
4 changed files with 65 additions and 23 deletions
7
TODO
7
TODO
|
@ -1,18 +1,13 @@
|
||||||
TODO:
|
TODO:
|
||||||
. Import and export of the bookmarks file, or using one from a specific path
|
. Import and export of the bookmarks file, or using one from a specific path
|
||||||
. Save files on change as opposed to on quit
|
. Save files on change as opposed to on quit
|
||||||
. Position context menus properly
|
|
||||||
. New tabs from a TabNew action should always open in the foreground
|
|
||||||
. Middle click toolbuttons or menuitems should open new tabs
|
. Middle click toolbuttons or menuitems should open new tabs
|
||||||
. Implement support for (multiple) userscripts/ userstyles
|
. Implement support for (multiple) userscripts/ userstyles
|
||||||
. Actual multiple window support, some things just ignore this currently
|
. Actual multiple window support, some things just ignore this currently
|
||||||
. Custom context menu actions
|
. Custom context menu actions, like in Thunar or Epiphany
|
||||||
. Create proper submenus in the window's menu instead of popups
|
|
||||||
. Custom tab names
|
. Custom tab names
|
||||||
. Identify and fix Gtk2.6 compatibility problems
|
. Identify and fix Gtk2.6 compatibility problems
|
||||||
. Open an auto-vanishing findbox with '.'
|
. Open an auto-vanishing findbox with '.'
|
||||||
. Support gettext
|
|
||||||
. Implement custom actions, like in Thunar or Epiphany
|
|
||||||
. Custom panels, loaded from (x)htm(l) files or websites
|
. Custom panels, loaded from (x)htm(l) files or websites
|
||||||
. Drag tabs onto the panel to add them to the sidebar
|
. Drag tabs onto the panel to add them to the sidebar
|
||||||
. Save completion stores
|
. Save completion stores
|
||||||
|
|
|
@ -13,6 +13,8 @@
|
||||||
|
|
||||||
#include <glib/gi18n.h>
|
#include <glib/gi18n.h>
|
||||||
|
|
||||||
|
#include <string.h>
|
||||||
|
|
||||||
static void
|
static void
|
||||||
proxy_toggle_button_toggled_cb (GtkToggleButton* button, GObject* object)
|
proxy_toggle_button_toggled_cb (GtkToggleButton* button, GObject* object)
|
||||||
{
|
{
|
||||||
|
@ -186,6 +188,8 @@ katze_property_proxy (gpointer object,
|
||||||
int n_families;
|
int n_families;
|
||||||
pango_context_list_families (context, &families, &n_families);
|
pango_context_list_families (context, &families, &n_families);
|
||||||
g_object_get (object, property, &string, NULL);
|
g_object_get (object, property, &string, NULL);
|
||||||
|
if (!string)
|
||||||
|
string = g_strdup (G_PARAM_SPEC_STRING (pspec)->default_value);
|
||||||
gint i = 0;
|
gint i = 0;
|
||||||
while (i < n_families)
|
while (i < n_families)
|
||||||
{
|
{
|
||||||
|
|
|
@ -231,6 +231,19 @@ _midori_browser_set_statusbar_text (MidoriBrowser* browser,
|
||||||
priv->statusbar_text ? priv->statusbar_text : "");
|
priv->statusbar_text ? priv->statusbar_text : "");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
_midori_browser_set_current_page_smartly (MidoriBrowser* browser,
|
||||||
|
gint n)
|
||||||
|
{
|
||||||
|
MidoriBrowserPrivate* priv = browser->priv;
|
||||||
|
|
||||||
|
gboolean open_tabs_in_the_background;
|
||||||
|
g_object_get (priv->settings, "open-tabs-in-the-background",
|
||||||
|
&open_tabs_in_the_background, NULL);
|
||||||
|
if (!open_tabs_in_the_background)
|
||||||
|
midori_browser_set_current_page (browser, n);
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
_midori_browser_update_progress (MidoriBrowser* browser,
|
_midori_browser_update_progress (MidoriBrowser* browser,
|
||||||
gint progress)
|
gint progress)
|
||||||
|
@ -420,8 +433,8 @@ midori_web_view_new_tab_cb (GtkWidget* web_view,
|
||||||
const gchar* uri,
|
const gchar* uri,
|
||||||
MidoriBrowser* browser)
|
MidoriBrowser* browser)
|
||||||
{
|
{
|
||||||
midori_browser_append_uri (browser, uri);
|
gint n = midori_browser_append_uri (browser, uri);
|
||||||
gtk_widget_grab_focus (web_view);
|
_midori_browser_set_current_page_smartly (browser, n);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -565,7 +578,11 @@ static void
|
||||||
_action_tab_new_activate (GtkAction* action,
|
_action_tab_new_activate (GtkAction* action,
|
||||||
MidoriBrowser* browser)
|
MidoriBrowser* browser)
|
||||||
{
|
{
|
||||||
midori_browser_append_uri (browser, "");
|
MidoriBrowserPrivate* priv = browser->priv;
|
||||||
|
|
||||||
|
gint n = midori_browser_append_uri (browser, "");
|
||||||
|
midori_browser_set_current_page (browser, n);
|
||||||
|
gtk_widget_grab_focus (priv->location);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -817,7 +834,8 @@ midori_browser_menu_trash_item_activate_cb (GtkWidget* menuitem,
|
||||||
KatzeXbelItem* item = g_object_get_data (G_OBJECT (menuitem),
|
KatzeXbelItem* item = g_object_get_data (G_OBJECT (menuitem),
|
||||||
"KatzeXbelItem");
|
"KatzeXbelItem");
|
||||||
const gchar* uri = katze_xbel_bookmark_get_href (item);
|
const gchar* uri = katze_xbel_bookmark_get_href (item);
|
||||||
midori_browser_append_uri (browser, uri);
|
gint n = midori_browser_append_uri (browser, uri);
|
||||||
|
midori_browser_set_current_page (browser, n);
|
||||||
katze_xbel_item_unref (item);
|
katze_xbel_item_unref (item);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1322,7 +1340,8 @@ midori_panel_bookmarks_button_release_event_cb (GtkWidget* widget,
|
||||||
if (event->button == 2 && katze_xbel_item_is_bookmark (item))
|
if (event->button == 2 && katze_xbel_item_is_bookmark (item))
|
||||||
{
|
{
|
||||||
const gchar* uri = katze_xbel_bookmark_get_href (item);
|
const gchar* uri = katze_xbel_bookmark_get_href (item);
|
||||||
midori_browser_append_uri (browser, uri);
|
gint n = midori_browser_append_uri (browser, uri);
|
||||||
|
midori_browser_set_current_page (browser, n);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
_midori_panel_bookmarks_popup (widget, event, item, browser);
|
_midori_panel_bookmarks_popup (widget, event, item, browser);
|
||||||
|
@ -1741,7 +1760,10 @@ _action_bookmark_open_tab_activate (GtkAction* action,
|
||||||
KatzeXbelItem* item;
|
KatzeXbelItem* item;
|
||||||
gtk_tree_model_get (model, &iter, 0, &item, -1);
|
gtk_tree_model_get (model, &iter, 0, &item, -1);
|
||||||
if (katze_xbel_item_is_bookmark (item))
|
if (katze_xbel_item_is_bookmark (item))
|
||||||
midori_browser_append_xbel_item (browser, item);
|
{
|
||||||
|
gint n = midori_browser_append_xbel_item (browser, item);
|
||||||
|
_midori_browser_set_current_page_smartly (browser, n);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1763,7 +1785,10 @@ _action_bookmark_open_window_activate (GtkAction* action,
|
||||||
KatzeXbelItem* item;
|
KatzeXbelItem* item;
|
||||||
gtk_tree_model_get (model, &iter, 0, &item, -1);
|
gtk_tree_model_get (model, &iter, 0, &item, -1);
|
||||||
if (katze_xbel_item_is_bookmark (item))
|
if (katze_xbel_item_is_bookmark (item))
|
||||||
midori_browser_append_xbel_item (browser, item);
|
{
|
||||||
|
gint n = midori_browser_append_xbel_item (browser, item);
|
||||||
|
_midori_browser_set_current_page_smartly (browser, n);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1798,7 +1823,8 @@ _action_undo_tab_close_activate (GtkAction* action,
|
||||||
|
|
||||||
// Reopen the most recent trash item
|
// Reopen the most recent trash item
|
||||||
KatzeXbelItem* item = midori_trash_get_nth_xbel_item (priv->trash, 0);
|
KatzeXbelItem* item = midori_trash_get_nth_xbel_item (priv->trash, 0);
|
||||||
midori_browser_append_xbel_item (browser, item);
|
gint n = midori_browser_append_xbel_item (browser, item);
|
||||||
|
midori_browser_set_current_page (browser, n);
|
||||||
midori_trash_remove_nth_item (priv->trash, 0);
|
midori_trash_remove_nth_item (priv->trash, 0);
|
||||||
_midori_browser_update_actions (browser);
|
_midori_browser_update_actions (browser);
|
||||||
}
|
}
|
||||||
|
@ -2953,7 +2979,7 @@ midori_browser_append_tab (MidoriBrowser* browser,
|
||||||
{
|
{
|
||||||
gtk_widget_show (menuitem);
|
gtk_widget_show (menuitem);
|
||||||
g_signal_connect (menuitem, "activate",
|
g_signal_connect (menuitem, "activate",
|
||||||
G_CALLBACK (midori_browser_window_menu_item_activate_cb), browser);
|
G_CALLBACK (midori_browser_window_menu_item_activate_cb), scrolled);
|
||||||
gtk_menu_shell_append (GTK_MENU_SHELL (priv->menu_window), menuitem);
|
gtk_menu_shell_append (GTK_MENU_SHELL (priv->menu_window), menuitem);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2969,14 +2995,6 @@ midori_browser_append_tab (MidoriBrowser* browser,
|
||||||
_midori_browser_update_actions (browser);
|
_midori_browser_update_actions (browser);
|
||||||
|
|
||||||
n = gtk_notebook_page_num (GTK_NOTEBOOK (priv->notebook), scrolled);
|
n = gtk_notebook_page_num (GTK_NOTEBOOK (priv->notebook), scrolled);
|
||||||
gboolean open_tabs_in_the_background;
|
|
||||||
g_object_get (priv->settings, "open-tabs-in-the-background",
|
|
||||||
&open_tabs_in_the_background, NULL);
|
|
||||||
if (!open_tabs_in_the_background)
|
|
||||||
{
|
|
||||||
gtk_notebook_set_current_page (GTK_NOTEBOOK (priv->notebook), n);
|
|
||||||
gtk_widget_grab_focus (priv->location);
|
|
||||||
}
|
|
||||||
return n;
|
return n;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3052,6 +3070,27 @@ midori_browser_append_uri (MidoriBrowser* browser,
|
||||||
return midori_browser_append_tab (browser, web_view);
|
return midori_browser_append_tab (browser, web_view);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* midori_browser_set_current_page:
|
||||||
|
* @browser: a #MidoriBrowser
|
||||||
|
* @n: the index of a page
|
||||||
|
*
|
||||||
|
* Switches to the page with the index @n.
|
||||||
|
*
|
||||||
|
* The widget will also grab the focus automatically.
|
||||||
|
**/
|
||||||
|
void
|
||||||
|
midori_browser_set_current_page (MidoriBrowser* browser,
|
||||||
|
gint n)
|
||||||
|
{
|
||||||
|
MidoriBrowserPrivate* priv = browser->priv;
|
||||||
|
|
||||||
|
gtk_notebook_set_current_page (GTK_NOTEBOOK (priv->notebook), n);
|
||||||
|
GtkWidget* widget = midori_browser_get_current_page (browser);
|
||||||
|
if (widget)
|
||||||
|
gtk_widget_grab_focus (widget);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* midori_browser_get_current_page:
|
* midori_browser_get_current_page:
|
||||||
* @browser: a #MidoriBrowser
|
* @browser: a #MidoriBrowser
|
||||||
|
|
|
@ -76,6 +76,10 @@ gint
|
||||||
midori_browser_append_uri (MidoriBrowser* browser,
|
midori_browser_append_uri (MidoriBrowser* browser,
|
||||||
const gchar* uri);
|
const gchar* uri);
|
||||||
|
|
||||||
|
void
|
||||||
|
midori_browser_set_current_page (MidoriBrowser* browser,
|
||||||
|
gint n);
|
||||||
|
|
||||||
GtkWidget*
|
GtkWidget*
|
||||||
midori_browser_get_current_page (MidoriBrowser* browser);
|
midori_browser_get_current_page (MidoriBrowser* browser);
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue