extern gchar *fifopath;
extern char **closed_tabs;
extern size_t num_closed;
-gboolean isearch_counted_matches(GtkWidget *widget, guint matches,
- gpointer data);
+gboolean isearch_counted_matches(GtkWidget *widget,guint matches,gpointer data);
gboolean quit_if_nothing_active(void);
-gboolean remote_msg(GIOChannel *channel, GIOCondition condition, gpointer data);
+gboolean remote_msg(GIOChannel *channel,GIOCondition condition,gpointer data);
void allocfail(void);
-void client_destroy(GtkWidget *widget, gpointer data);
+void client_destroy(GtkWidget *widget,gpointer data);
typedef struct Client Client;
-void set_uri(const char *uri, struct Client *c);
-WebKitWebView *client_new(const gchar *uri, WebKitWebView *related_wv);
-WebKitWebView *client_new_request(WebKitWebView *web_view,
- WebKitNavigationAction *navigation_action,
- gpointer data);
-void mkdirp(const char *dir, mode_t mode);
+void set_uri(const char *uri,struct Client *c);
+WebKitWebView *client_new(const gchar *uri,WebKitWebView *related_wv);
+WebKitWebView *client_new_request(WebKitWebView *web_view,WebKitNavigationAction *navigation_action,gpointer data);
+void mkdirp(const char *dir,mode_t mode);
void cooperation_setup(void);
-void changed_load_progress(GObject *obj, GParamSpec *pspec, gpointer data);
-void changed_favicon(GObject *obj, GParamSpec *pspec, gpointer data);
-void changed_title(GObject *obj, GParamSpec *pspec, gpointer data);
-void changed_uri(GObject *obj, GParamSpec *pspec, gpointer data);
-gboolean crashed_web_view(WebKitWebView *web_view, gpointer data);
-gboolean decide_policy(WebKitWebView *web_view, WebKitPolicyDecision *decision,
- WebKitPolicyDecisionType type, gpointer data);
+void changed_load_progress(GObject *obj,GParamSpec *pspec,gpointer data);
+void changed_favicon(GObject *obj,GParamSpec *pspec,gpointer data);
+void changed_title(GObject *obj,GParamSpec *pspec,gpointer data);
+void changed_uri(GObject *obj,GParamSpec *pspec,gpointer data);
+gboolean crashed_web_view(WebKitWebView *web_view,gpointer data);
+gboolean decide_policy(WebKitWebView *web_view,WebKitPolicyDecision *decision,WebKitPolicyDecisionType type,gpointer data);
gchar *ensure_uri_scheme(const gchar *t);
-void grab_feeds_finished(GObject *object, GAsyncResult *result, gpointer data);
-void hover_web_view(WebKitWebView *web_view, WebKitHitTestResult *ht,
- guint modifiers, gpointer data);
-void icon_location(GtkEntry *entry, GtkEntryIconPosition icon_pos,
- GdkEvent *event, gpointer data);
+void grab_feeds_finished(GObject *object,GAsyncResult *result,gpointer data);
+void hover_web_view(WebKitWebView *web_view,WebKitHitTestResult *ht,guint modifiers,gpointer data);
+void icon_location(GtkEntry *entry,GtkEntryIconPosition icon_pos,GdkEvent *event,gpointer data);
void init_default_web_context(void);
-void isearch(gpointer data, gint direction);
-void isearch_init(struct Client *c, int direction);
+void isearch(gpointer data,gint direction);
+void isearch_init(struct Client *c,int direction);
void reopen_tab(void);
void mainwindow_setup(void);
void mainwindow_title(gint idx);
-void notebook_switch_page(GtkNotebook *nb, GtkWidget *p, guint idx,
- gpointer data);
-void show_web_view(WebKitWebView *web_view, gpointer data);
+void notebook_switch_page(GtkNotebook *nb,GtkWidget *p,guint idx,gpointer data);
+void show_web_view(WebKitWebView *web_view,gpointer data);
void trust_user_certs(WebKitWebContext *wc);
void version(void);
-gboolean download_handle(WebKitDownload *, gchar *, gpointer);
-gboolean download_handle(WebKitDownload *download, gchar *suggested_filename,
- gpointer data);
-void download_click(GtkToolButton *, gpointer);
-void download_click(GtkToolButton *tb, gpointer data);
-void download_cancel(GtkMenuItem *, gpointer);
-void download_cancel(GtkMenuItem *tb, gpointer data);
-gboolean downloadmanager_delete(GtkWidget *, gpointer);
-gboolean downloadmanager_delete(GtkWidget *obj, gpointer data);
+gboolean download_handle(WebKitDownload *,gchar *,gpointer);
+gboolean download_handle(WebKitDownload *download,gchar *suggested_filename,gpointer data);
+void download_click(GtkToolButton *,gpointer);
+void download_click(GtkToolButton *tb,gpointer data);
+void download_cancel(GtkMenuItem *,gpointer);
+void download_cancel(GtkMenuItem *tb,gpointer data);
+gboolean downloadmanager_delete(GtkWidget *,gpointer);
+gboolean downloadmanager_delete(GtkWidget *obj,gpointer data);
extern gint downloads;
-gboolean key_downloadmanager(GtkWidget *widget, GdkEvent *event, gpointer data);
-void changed_download_progress(GObject *obj, GParamSpec *pspec, gpointer data);
-void download_finished(WebKitDownload *download, gpointer data);
-void download_start(WebKitWebView *web_view, WebKitDownload *download,
- gpointer data);
+gboolean key_downloadmanager(GtkWidget *widget,GdkEvent *event,gpointer data);
+void changed_download_progress(GObject *obj,GParamSpec *pspec,gpointer data);
+void download_finished(WebKitDownload *download,gpointer data);
+void download_start(WebKitWebView *web_view,WebKitDownload *download,gpointer data);
typedef struct DownloadItem DownloadItem;
const char *download_get_path(struct DownloadItem *payload);
-void download_hide(GtkMenuItem *tb, gpointer data);
-void download_delete(GtkMenuItem *tb, gpointer data);
-void download_copy_url(GtkMenuItem *tb, gpointer data);
-void download_copy_path(GtkMenuItem *tb, gpointer data);
-void download_xdg_open(GtkMenuItem *tb, gpointer data);
+void download_hide(GtkMenuItem *tb,gpointer data);
+void download_delete(GtkMenuItem *tb,gpointer data);
+void download_copy_url(GtkMenuItem *tb,gpointer data);
+void download_copy_path(GtkMenuItem *tb,gpointer data);
+void download_xdg_open(GtkMenuItem *tb,gpointer data);
void downloadmanager_setup(void);
void downloadmanager_show(void);
struct Client {
GtkToolButton *tb;
WebKitDownload *download;
};
-gboolean key_common(GtkWidget *widget, GdkEvent *event, gpointer data);
+gboolean key_common(GtkWidget *widget,GdkEvent *event,gpointer data);
+void change_tab(int idx,struct Client *c);
void reorder_current_tab(int target);
-gboolean key_isearch(GtkWidget *widget, GdkEvent *event, gpointer data);
-gboolean key_wsearch(GtkWidget *widget, GdkEvent *event, gpointer data);
-gboolean key_location(GtkWidget *widget, GdkEvent *event, gpointer data);
-gboolean key_tablabel(GtkWidget *widget, GdkEvent *event, gpointer data);
-gboolean key_web_view(GtkWidget *widget, GdkEvent *event, gpointer data);
+gboolean key_isearch(GtkWidget *widget,GdkEvent *event,gpointer data);
+gboolean key_wsearch(GtkWidget *widget,GdkEvent *event,gpointer data);
+gboolean key_location(GtkWidget *widget,GdkEvent *event,gpointer data);
+gboolean key_tablabel(GtkWidget *widget,GdkEvent *event,gpointer data);
+gboolean key_web_view(GtkWidget *widget,GdkEvent *event,gpointer data);
#define INTERFACE 0
#define EXPORT_INTERFACE 0
#define LOCAL_INTERFACE 0
client_destroy(NULL, c);
return TRUE;
} else if (GDK_KEY_1 == key) {
- gtk_notebook_set_current_page(
- GTK_NOTEBOOK(mw.notebook), 0);
+ change_tab(0, c);
return TRUE;
} else if (GDK_KEY_2 == key) {
- gtk_notebook_set_current_page(
- GTK_NOTEBOOK(mw.notebook), 1);
+ change_tab(1, c);
return TRUE;
} else if (GDK_KEY_3 == key) {
- gtk_notebook_set_current_page(
- GTK_NOTEBOOK(mw.notebook), 2);
+ change_tab(2, c);
return TRUE;
} else if (GDK_KEY_4 == key) {
- gtk_notebook_set_current_page(
- GTK_NOTEBOOK(mw.notebook), 3);
+ change_tab(3, c);
return TRUE;
} else if (GDK_KEY_5 == key) {
- gtk_notebook_set_current_page(
- GTK_NOTEBOOK(mw.notebook), 4);
+ change_tab(4, c);
return TRUE;
} else if (GDK_KEY_6 == key) {
- gtk_notebook_set_current_page(
- GTK_NOTEBOOK(mw.notebook), 5);
+ change_tab(5, c);
return TRUE;
} else if (GDK_KEY_7 == key) {
+ change_tab(6, c);
gtk_notebook_set_current_page(
GTK_NOTEBOOK(mw.notebook), 6);
return TRUE;
} else if (GDK_KEY_8 == key) {
- gtk_notebook_set_current_page(
- GTK_NOTEBOOK(mw.notebook), 7);
+ change_tab(7, c);
return TRUE;
} else if (GDK_KEY_9 == key) {
- gtk_notebook_set_current_page(
- GTK_NOTEBOOK(mw.notebook), 8);
+ change_tab(8, c);
return TRUE;
} else if (GDK_KEY_u == key) {
gtk_notebook_prev_page(
return FALSE;
}
+void
+change_tab(int idx, struct Client *c)
+{
+ gtk_notebook_set_current_page(GTK_NOTEBOOK(mw.notebook), idx);
+ gtk_widget_grab_focus(GTK_WIDGET(c->web_view));
+}
+
void
reorder_current_tab(int target)
{
if (key_common(widget, event, data)) return TRUE;
if (event->type == GDK_KEY_PRESS) {
+ guint mask = gtk_accelerator_get_default_mod_mask();
+ gboolean shifted = ((((GdkEventKey *)event)->state & mask) ==
+ GDK_SHIFT_MASK);
int key = ((GdkEventKey *)event)->keyval;
if ((GDK_KEY_KP_Enter == key) || (GDK_KEY_Return == key)) {
const gchar *t =
if (!f) allocfail();
snprintf(f, len + 1, "%s%s", cfg_search_engine, t);
- webkit_web_view_load_uri(WEBKIT_WEB_VIEW(c->web_view),
- f);
+ if (shifted) {
+ client_new(f, NULL);
+ } else {
+ webkit_web_view_load_uri(
+ WEBKIT_WEB_VIEW(c->web_view), f);
+ gtk_widget_grab_focus(c->web_view);
+ }
g_free(f);
- gtk_widget_grab_focus(c->web_view);
return TRUE;
}
}
if (key_common(widget, event, data)) return TRUE;
if (event->type == GDK_KEY_PRESS) {
+ guint mask = gtk_accelerator_get_default_mod_mask();
+ gboolean shifted = ((((GdkEventKey *)event)->state & mask) ==
+ GDK_SHIFT_MASK);
int key = ((GdkEventKey *)event)->keyval;
+
if ((GDK_KEY_KP_Enter == key) || (GDK_KEY_Return == key)) {
gtk_widget_grab_focus(c->web_view);
t = gtk_entry_get_text(GTK_ENTRY(c->location));
- webkit_web_view_load_uri(WEBKIT_WEB_VIEW(c->web_view),
- ensure_uri_scheme(t));
+ if (shifted) {
+ switch_tab = TRUE;
+ client_new(t, NULL);
+ } else {
+ webkit_web_view_load_uri(
+ WEBKIT_WEB_VIEW(c->web_view),
+ ensure_uri_scheme(t));
+ }
return TRUE;
} else if (GDK_KEY_Escape == key) {
t = webkit_web_view_get_uri(