|
sylpheed-jp:1212
From: Tom Mishima <tmishima@xxxxxxxxxx> 三嶋です。 > それで gtkアプリケーション全体の挙動だと思うのですが、ディ > レクトリをダブルクリックして移動すると、せっかく表示して > いるファイル名が消失してしまいます。このファイル名が消え > ずに残ってくれれば、さらに user friendly という気がします。 > 実現するのは難しい(別問題?)でしょうか? 実現することは、難しくないと思いますが、Zerow_jpさんが言っている通り、 別のgtk+アプリケーションとの操作の統一が問題でしょう。 ですが、Mozillaはgtk+を使用しながら、別の方法でこれを回避している様です。 (ハックしたことがないので詳しくは分かりませんが) 多分、お望みの動作は以下のパッチで可能だと思います。 しかし、その弊害としてフォルダを選択した時に、そのフォルダが反転しません。 これは、ファイル名を書き換えて、その書き換えた文字と一致する場所を反転 しているからです。 (ファイル名と一致するフォルダがあれば、反転すると思いますが、確認して いません。) 反転はしなくとも、ダブルクリックは効いてフォルダを移動できます。 もっと根本的な部分から、アプリケーション側で書き直せば対応できると思い ますが、これ以上の時間は私にはないので。 ソースコード的には、ファイル名を入れておくstatic gcharを使っていたりと 推奨できるものではありません。 --- filesel.c.bak Wed Nov 21 19:16:57 2001 +++ filesel.c Wed Nov 21 19:17:07 2001 @@ -37,6 +37,12 @@ static void filesel_cancel_cb(GtkWidget *widget, gpointer data); static gint delete_event(GtkWidget *widget, GdkEventAny *event, gpointer data); static void key_pressed(GtkWidget *widget, GdkEventKey *event, gpointer data); +static void filesel_dir_button (GtkWidget *widget, + gint row, + gint column, + GdkEventButton *bevent, + gpointer user_data); +static gchar *filesel_file=NULL; gchar *filesel_select_file(const gchar *title, const gchar *file) { @@ -57,9 +63,15 @@ gtk_file_selection_set_filename(GTK_FILE_SELECTION(filesel), cwd); - if (file) + if (file){ gtk_file_selection_set_filename(GTK_FILE_SELECTION(filesel), file); + if (filesel_file) { + g_free(filesel_file); + filesel_file = NULL; + } + filesel_file = g_strdup(file); + } gtk_widget_show(filesel); @@ -106,7 +118,9 @@ GTK_SIGNAL_FUNC(manage_window_focus_in), NULL); gtk_signal_connect(GTK_OBJECT(filesel), "focus_out_event", GTK_SIGNAL_FUNC(manage_window_focus_out), NULL); - + gtk_signal_connect (GTK_OBJECT (GTK_FILE_SELECTION(filesel)->dir_list), "select_row", + (GtkSignalFunc) filesel_dir_button, + (gpointer) filesel); gtk_window_set_modal(GTK_WINDOW(filesel), TRUE); } @@ -133,3 +147,27 @@ if (event && event->keyval == GDK_Escape) filesel_cancel_cb(NULL, NULL); } + +static void filesel_dir_button (GtkWidget *widget, + gint row, + gint column, + GdkEventButton *bevent, + gpointer user_data) +{ + GtkFileSelection *fs = NULL; + gchar *filename, *temp = NULL; + + g_return_if_fail (GTK_IS_CLIST (widget)); + + fs = GTK_FILE_SELECTION (user_data); + g_return_if_fail (fs != NULL); + g_return_if_fail (GTK_IS_FILE_SELECTION (fs)); + + gtk_clist_get_text (GTK_CLIST (fs->dir_list), row, 0, &temp); + filename = g_strdup (temp); + + if (filesel_file != NULL) + gtk_file_selection_set_filename(GTK_FILE_SELECTION(fs), filesel_file); + +} + --- Tom Mishima <tmishima@xxxxxxxxxx> 1178 2001-11-18 07:05 [shohta@xxxxxxxxxx ] Sylpheed のカスタマイズについて 1179 2001-11-18 22:05 ┗[zero@xxxxxxxxxx ] 1185 2001-11-19 19:05 ┗[shohta@xxxxxxxxxx ] 1186 2001-11-19 19:30 ┣[niijima@xxxxxxxxxx ] @ 1187 2001-11-19 22:16 ┣[munesato@xxxxxxxxxx ] 1189 2001-11-20 03:50 ┃┗[shohta@xxxxxxxxxx ] 1190 2001-11-20 05:18 ┃ ┣[mizuno_yuta@xxxxxxxx] 1192 2001-11-20 09:50 ┃ ┃┣[munesato@xxxxxxxxxx ] 1195 2001-11-21 02:08 ┃ ┃┗[shohta@xxxxxxxxxx ] 1206 2001-11-21 14:14 ┃ ┃ ┣[neko@xxxxxxxxxx ] X-Face ( Re: Sylpheed のカスタマイズについて ) 1214 2001-11-21 23:16 ┃ ┃ ┃┣[shohta@xxxxxxxxxx ] 1223 2001-11-23 09:37 ┃ ┃ ┃┗[shohta@xxxxxxxxxx ] 1224 2001-11-23 14:59 ┃ ┃ ┃ ┗[aleut@xxxxxxxxxx ] 1225 2001-11-23 16:06 ┃ ┃ ┃ ┗[shohta@xxxxxxxxxx ] 1211 2001-11-21 18:57 ┃ ┃ ┗[mizuno_yuta@xxxxxxxx] Re: Sylpheed のカスタマイズについて ( カラー・カスタマイズ) 1221 2001-11-22 18:35 ┃ ┃ ┗[shohta@xxxxxxxxxx ] Re: Sylpheed のカスタマイズについて 1227 2001-11-23 22:33 ┃ ┃ ┗[shohta@xxxxxxxxxx ] Re: Sylpheed のカスタマイズについて ( カラー・カスタマイズ ) 1191 2001-11-20 09:00 ┃ ┗[aleut@xxxxxxxxxx ] 1193 2001-11-20 15:52 ┃ ┗[hiramatu@xxxxxxxxxx ] 1194 2001-11-20 22:21 ┃ ┣[aleut@xxxxxxxxxx ] 1199 2001-11-21 10:57 ┃ ┗[yamamoto@xxxxxxxxxx ] 1203 2001-11-21 12:56 ┃ ┣[hayase@xxxxxxxxxx ] 1204 2001-11-21 13:08 ┃ ┣[hiramatu@xxxxxxxxxx ] 1209 2001-11-21 17:04 ┃ ┗[aleut@xxxxxxxxxx ] 1210 2001-11-21 18:47 ┃ ┣[hiramatu@xxxxxxxxxx ] 1213 2001-11-21 20:50 ┃ ┃┗[yoichi@xxxxxxxxxx ] 1215 2001-11-22 01:10 ┃ ┃ ┗[zero@xxxxxxxxxx ] 1226 2001-11-23 19:58 ┃ ┃ ┗[zero@xxxxxxxxxx ] 1261 2001-11-26 22:55 ┃ ┃ ┗[aleut@xxxxxxxxxx ] -> 1212 2001-11-21 19:26 ┃ ┗[tmishima@xxxxxxxxxx ] 1216 2001-11-22 02:04 ┃ ┗[aleut@xxxxxxxxxx ] 1188 2001-11-19 22:31 ┗[zero@xxxxxxxxxx ] |