[sylpheed-jp:10851] v で幅が変わる問題 (Re: Sylphe ed 3.0beta2 released)
TAKAHASHI Tamotsu (高橋全) <[email protected]>
| Newsgroups | gmane.mail.sylpheed.general.japanese |
|---|---|
| Message-ID | <[email protected]> |
On Thu, 26 Nov 2009 11:44:54 +0900 TAKAHASHI Tamotsu (高橋全) <[email protected]> wrote: > On Sun, 22 Nov 2009 02:19:30 +0900 > Hiroyuki Yamamoto <[email protected]> wrote: > > 「表示・非表示 - メッセージビュー」(または V キー)、または > > サマリビュー右下の下三角を押すとメッセージビューが隠れるので、 > > その状態で操作すれば自動的にメッセージが開かれることはなくなります。 > > もう一度同じ操作をすると戻ります。 > > (まさに上記の複数メールを spam 指定するときなどによく使います) > > なるほど。それで回避できそうです。 > ……と思って使っていたら不具合を発見してしまいました。 > > 「表示」→「レイアウト」→「縦3列」にしている状態で > v を押してメッセージビューを消すと、サマリ(でしたっけ? > メッセージ一覧) の右端の項目 (手元では「サイズ」) が伸びます。 > これが単に便宜的な変化であればいいのですが、このまま > sylpheed を終了すると、その幅が保存されてしまい、 > 次回起動時にメッセージビューを表示できなくなってしまいます。 > (画面右端まで「サイズ」なので、メッセージ本文は画面外にある) > > 対策としては、 > (a) 終了時にいったんメッセージビューを表示させてから幅を保存するか、 > (b) デフォルトで「サイズ」の右にダミー項目を作り、メッセージビュー > 部分をそれで埋める。その幅は終了時にいつも 0 として保存する、 > などの対策が必要かと思います。(b) のほうが、v を押したときの > 見栄えの関係で好ましいと思います。 (a) だけ (というか summaryview の width を prefs_common に正しく 保存するだけ) ではだめで、ウィンドウが細長くなってしまいますので、 起動時にいったんメッセージビューを表示させてから消すことで、 ウィンドウサイズを調整するようにすると良さそうでした。 【添付の summary_width_minimal.diff】 これだけで、あとは見えなくていい項目を右に設定しておけば たぶん私の希望はかないます。 (b) も実現しようとするとゴチャゴチャしてしまいますが、いちおう できました。【添付の summary_width.diff】←たぶん無駄が多いです -- tamo _______________________________________________ Sylpheed-jp mailing list [email protected] http://www.sraoss.jp/mailman/listinfo/sylpheed-jp
summary_width_minimal.diff
(text/plain, 1.3 KB)
Index: src/mainwindow.c
===================================================================
--- src/mainwindow.c (revision 2362)
+++ src/mainwindow.c (working copy)
@@ -930,6 +930,7 @@
GtkWidget *ac_menu;
GtkWidget *menuitem;
gint i;
+ gboolean real_vision;
static GdkGeometry geometry;
@@ -1114,8 +1115,8 @@
g_warning(_("MainWindow: color allocation %d failed\n"), i);
}
- messageview->visible = prefs_common.msgview_visible;
-
+ real_vision = prefs_common.msgview_visible;
+ messageview->visible = TRUE; /* needs this space anyway */
main_window_set_widgets(mainwin, prefs_common.layout_type, type);
if (prefs_common.mainwin_maximized)
@@ -1169,6 +1170,8 @@
/* show main window */
gtk_widget_show(mainwin->window);
+ if (!real_vision)
+ main_window_toggle_message_view(mainwin);
#if !GTK_CHECK_VERSION(2, 6, 0)
{
@@ -1588,7 +1601,8 @@
allocation = &(GTK_WIDGET_PTR(mainwin->summaryview)->allocation);
if (allocation->width > 1 && allocation->height > 1) {
if (vlayout) {
- if (!(mainwin->type & SEPARATE_MESSAGE))
+ if (!(mainwin->type & SEPARATE_MESSAGE) &&
+ messageview_is_visible(mainwin->messageview))
prefs_common.summaryview_vwidth = allocation->width;
prefs_common.summaryview_vheight = allocation->height;
} else {
summary_width.diff
(text/plain, 8 KB)
Index: libsylph/enums.h
===================================================================
--- libsylph/enums.h (revision 2362)
+++ libsylph/enums.h (working copy)
@@ -49,6 +49,7 @@
S_COL_SIZE,
S_COL_NUMBER,
S_COL_TO,
+ S_COL_DUMMY,
S_COL_MSG_INFO,
Index: src/summaryview.c
===================================================================
--- src/summaryview.c (revision 2362)
+++ src/summaryview.c (working copy)
@@ -391,7 +391,8 @@
SORT_BY_DATE,
SORT_BY_SIZE,
SORT_BY_NUMBER,
- SORT_BY_TO
+ SORT_BY_TO,
+ SORT_BY_NONE
};
enum
@@ -2140,13 +2141,13 @@
(GtkSortType)sort_type);
if (prev_col_type != -1 && col_type != prev_col_type &&
- prev_col_type < N_SUMMARY_VISIBLE_COLS) {
+ prev_col_type < N_SUMMARY_VISIBLE_COLS - 1) {
column = summaryview->columns[prev_col_type];
column->sort_column_id = -1;
gtk_tree_view_column_set_sort_indicator(column, FALSE);
}
if (col_type != S_COL_MARK && col_type != S_COL_UNREAD &&
- col_type != S_COL_MIME && col_type < N_SUMMARY_VISIBLE_COLS) {
+ col_type != S_COL_MIME && col_type < N_SUMMARY_VISIBLE_COLS - 1) {
column = summaryview->columns[col_type];
column->sort_column_id = col_type;
gtk_tree_view_column_set_sort_indicator(column, TRUE);
@@ -2306,6 +2307,7 @@
S_COL_SIZE, to_human_readable(msginfo->size),
S_COL_NUMBER, msginfo->msgnum,
S_COL_TO, to_s ? to_s : "",
+ S_COL_DUMMY, "",
S_COL_MSG_INFO, msginfo,
@@ -5049,6 +5051,7 @@
G_TYPE_STRING,
G_TYPE_UINT,
G_TYPE_STRING,
+ G_TYPE_STRING,
G_TYPE_POINTER,
@@ -5073,6 +5076,7 @@
SET_SORT(S_COL_TO, summary_cmp_by_to);
SET_SORT(S_COL_LABEL, summary_cmp_by_label);
SET_SORT(S_COL_TDATE, summary_cmp_by_thread_date);
+ SET_SORT(S_COL_DUMMY, summary_cmp_by_num /* XXX */);
#undef SET_SORT
@@ -5111,8 +5115,10 @@
gtk_tree_view_column_set_alignment(column, align); \
gtk_tree_view_column_set_sizing \
(column, GTK_TREE_VIEW_COLUMN_FIXED); \
- gtk_tree_view_column_set_fixed_width(column, width); \
- gtk_tree_view_column_set_min_width(column, 8); \
+ if (width) { \
+ gtk_tree_view_column_set_fixed_width(column, width); \
+ gtk_tree_view_column_set_min_width(column, 8); \
+ } \
gtk_tree_view_column_set_clickable(column, TRUE); \
/* gtk_tree_view_column_set_sort_column_id(column, col); */ \
gtk_tree_view_column_set_reorderable(column, TRUE); \
@@ -5153,6 +5159,7 @@
prefs_common.summary_col_size[S_COL_NUMBER], 1.0);
ADD_COLUMN(_("To"), text, S_COL_TO, TRUE,
prefs_common.summary_col_size[S_COL_TO], 0.0);
+ ADD_COLUMN("", text, S_COL_DUMMY, FALSE, 0, 0);
#undef ADD_COLUMN
@@ -5822,7 +5829,7 @@
{
SummaryColumnType type;
- for (type = 0; type < N_SUMMARY_VISIBLE_COLS; type++) {
+ for (type = 0; type < N_SUMMARY_VISIBLE_COLS - 1; type++) {
if (summaryview->columns[type]->button == widget) {
prefs_common.summary_col_size[type] = allocation->width;
break;
@@ -5875,7 +5882,7 @@
{
SummaryColumnType type;
- for (type = 0; type < N_SUMMARY_VISIBLE_COLS; type++) {
+ for (type = 0; type < N_SUMMARY_VISIBLE_COLS - 1; type++) {
if (summaryview->columns[type]->button == button) {
summary_sort_by_column_click(summaryview, type);
break;
Index: src/prefs_summary_column.c
===================================================================
--- src/prefs_summary_column.c (revision 2362)
+++ src/prefs_summary_column.c (working copy)
@@ -71,7 +71,8 @@
N_("Date"), /* S_COL_DATE */
N_("Size"), /* S_COL_SIZE */
N_("Number"), /* S_COL_NUMBER */
- N_("To") /* S_COL_TO */
+ N_("To"), /* S_COL_TO */
+ "", /* S_COL_DUMMY */
};
static SummaryColumnState default_state[N_SUMMARY_VISIBLE_COLS] = {
@@ -83,7 +84,8 @@
{ S_COL_DATE , TRUE },
{ S_COL_SIZE , TRUE },
{ S_COL_NUMBER , FALSE },
- { S_COL_TO , FALSE }
+ { S_COL_TO , FALSE },
+ { S_COL_DUMMY , TRUE }
};
static SummaryColumnState default_sent_state[N_SUMMARY_VISIBLE_COLS] = {
@@ -95,7 +97,8 @@
{ S_COL_DATE , TRUE },
{ S_COL_SIZE , TRUE },
{ S_COL_NUMBER , FALSE },
- { S_COL_FROM , FALSE }
+ { S_COL_FROM , FALSE },
+ { S_COL_DUMMY , TRUE }
};
static void prefs_summary_column_create (void);
@@ -375,7 +378,7 @@
for (pos = 0; pos < N_SUMMARY_VISIBLE_COLS; pos++)
state[pos].type = -1;
- for (type = 0; type < N_SUMMARY_VISIBLE_COLS; type++) {
+ for (type = 0; type < N_SUMMARY_VISIBLE_COLS - 1; type++) {
pos = col_pos[type];
if (pos < 0 || pos >= N_SUMMARY_VISIBLE_COLS ||
state[pos].type != -1) {
@@ -388,6 +391,9 @@
state[pos].visible = col_visible[type];
}
+ state[S_COL_DUMMY].type = S_COL_DUMMY;
+ state[S_COL_DUMMY].visible = TRUE;
+
return state;
}
@@ -407,11 +413,14 @@
col_pos = prefs_common.summary_col_pos;
}
- for (pos = 0; pos < N_SUMMARY_VISIBLE_COLS; pos++) {
+ for (pos = 0; pos < N_SUMMARY_VISIBLE_COLS - 1; pos++) {
type = state[pos].type;
col_visible[type] = state[pos].visible;
col_pos[type] = pos;
}
+
+ col_visible[S_COL_DUMMY] = TRUE;
+ col_pos[S_COL_DUMMY] = S_COL_DUMMY;
}
static void prefs_summary_column_set_dialog(SummaryColumnState *state)
@@ -429,7 +438,7 @@
state = prefs_summary_column_get_config
(summary_col.sent_folder);
- for (pos = 0; pos < N_SUMMARY_VISIBLE_COLS; pos++) {
+ for (pos = 0; pos < N_SUMMARY_VISIBLE_COLS - 1; pos++) {
gint row;
type = state[pos].type;
name = gettext(col_name[type]);
@@ -455,7 +464,7 @@
gint row, pos = 0;
g_return_if_fail(stock_clist->rows + shown_clist->rows ==
- N_SUMMARY_VISIBLE_COLS);
+ N_SUMMARY_VISIBLE_COLS - 1);
for (row = 0; row < stock_clist->rows; row++) {
type = GPOINTER_TO_INT
@@ -472,6 +481,9 @@
state[pos + row].visible = TRUE;
}
+ state[S_COL_DUMMY].type = S_COL_DUMMY;
+ state[S_COL_DUMMY].visible = TRUE;
+
prefs_summary_column_set_config(state, summary_col.sent_folder);
main_window_set_summary_column();
}
Index: src/mainwindow.c
===================================================================
--- src/mainwindow.c (revision 2362)
+++ src/mainwindow.c (working copy)
@@ -930,6 +930,7 @@
GtkWidget *ac_menu;
GtkWidget *menuitem;
gint i;
+ gboolean real_vision;
static GdkGeometry geometry;
@@ -1114,8 +1115,8 @@
g_warning(_("MainWindow: color allocation %d failed\n"), i);
}
- messageview->visible = prefs_common.msgview_visible;
-
+ real_vision = prefs_common.msgview_visible;
+ messageview->visible = TRUE; /* needs this space anyway */
main_window_set_widgets(mainwin, prefs_common.layout_type, type);
if (prefs_common.mainwin_maximized)
@@ -1169,6 +1170,8 @@
/* show main window */
gtk_widget_show(mainwin->window);
+ if (!real_vision)
+ main_window_toggle_message_view(mainwin);
#if !GTK_CHECK_VERSION(2, 6, 0)
{
@@ -1588,7 +1601,8 @@
allocation = &(GTK_WIDGET_PTR(mainwin->summaryview)->allocation);
if (allocation->width > 1 && allocation->height > 1) {
if (vlayout) {
- if (!(mainwin->type & SEPARATE_MESSAGE))
+ if (!(mainwin->type & SEPARATE_MESSAGE) &&
+ messageview_is_visible(mainwin->messageview))
prefs_common.summaryview_vwidth = allocation->width;
prefs_common.summaryview_vheight = allocation->height;
} else {
@@ -1623,14 +1637,16 @@
prefs_common.folderview_height = allocation->height;
}
- allocation = &(GTK_WIDGET_PTR(mainwin->messageview)->allocation);
- if (allocation->width > 1 && allocation->height > 1) {
- if (vlayout) {
- prefs_common.msgview_vwidth = allocation->width;
- prefs_common.msgview_vheight = allocation->height;
- } else {
- prefs_common.msgview_width = allocation->width;
- prefs_common.msgview_height = allocation->height;
+ if (messageview_is_visible(mainwin->messageview)){
+ allocation = &(GTK_WIDGET_PTR(mainwin->messageview)->allocation);
+ if (allocation->width > 1 && allocation->height > 1) {
+ if (vlayout) {
+ prefs_common.msgview_vwidth = allocation->width;
+ prefs_common.msgview_vheight = allocation->height;
+ } else {
+ prefs_common.msgview_width = allocation->width;
+ prefs_common.msgview_height = allocation->height;
+ }
}
}