Kouhei Sutou
kou****@cozmi*****
2005年 2月 8日 (火) 02:28:20 JST
須藤です. https://sourceforge.jp/tracker/?func=detail&atid=1532&aid=5401&group_id=388 のやつです. MozillaやFirefoxではロケーションバーのテキストを選択してから 違うタブに移動しても真ん中クリックでタブを移動する前に選択し てあったテキストを張り付けることができます.が,風博士ではで きません.テキストがクリアされます. 私は「テキストを選択」→「新しいタブを開く(ここでタブを移動 している)」→「真ん中クリック」という動作を勝手にやってしま うのでこの挙動はストレスが溜っていました. ということで,MozillaやFirefoxと同じ挙動にするパッチです. -------------- next part -------------- Index: src/kz-window.c =================================================================== RCS file: /cvsroot/kazehakase/kazehakase/src/kz-window.c,v retrieving revision 1.120.2.1 diff -u -p -r1.120.2.1 kz-window.c --- src/kz-window.c 6 Feb 2005 11:24:15 -0000 1.120.2.1 +++ src/kz-window.c 7 Feb 2005 17:22:49 -0000 @@ -209,6 +209,9 @@ static void cb_smartbookmark_reorder static void cb_menu_merge_add_widget (GtkUIManager *merge, GtkWidget *widget, GtkBox *box); +static void cb_clipboard_get_text (GtkClipboard *clipboard, + const gchar *text, + gpointer data); static void cb_notebook_switch_page (GtkNotebook *notebook, GtkNotebookPage *page, guint page_num, @@ -2303,6 +2306,14 @@ idle_focus_location_entry(gpointer data) static void +cb_clipboard_get_text(GtkClipboard *clipboard, const gchar *text, gpointer data) +{ + char **received_text = data; + *received_text = g_strdup(text); +} + + +static void cb_notebook_switch_page (GtkNotebook *notebook, GtkNotebookPage *page, guint page_num, KzWindow *kz) { @@ -2335,11 +2346,26 @@ cb_notebook_switch_page (GtkNotebook *no action = gtk_action_group_get_action(kz->actions, "LocationEntry"); if (KZ_IS_ENTRY_ACTION(action)) { + GtkClipboard *clipboard = gtk_clipboard_get(GDK_SELECTION_PRIMARY); + GObject *owner = gtk_clipboard_get_owner(clipboard); + gchar *text = NULL; + if (GTK_IS_ENTRY(owner)) { + gtk_clipboard_request_text(clipboard, + cb_clipboard_get_text, + (gpointer)&text); + } if (location) kz_entry_action_set_text(KZ_ENTRY_ACTION(action), location); else kz_entry_action_set_text(KZ_ENTRY_ACTION(action), ""); + + if (text) { + gtk_clipboard_set_text(clipboard, + text, + g_utf8_strlen(text, -1)); + g_free(text); + } } action = gtk_action_group_get_action(kz->actions, "Zoom");