From: Tomasz Golinski Date: Sat, 16 Sep 2017 19:18:35 +0000 (+0100) Subject: Bug fix #509: Increase number of marks to 10 X-Git-Tag: v1.4~89 X-Git-Url: http://geeqie.org/cgi-bin/gitweb.cgi?p=geeqie.git;a=commitdiff_plain;h=f6831eee50823092bfbc63d45d90286371623300 Bug fix #509: Increase number of marks to 10 https://github.com/BestImageViewer/geeqie/issues/509 --- diff --git a/src/bar_keywords.c b/src/bar_keywords.c index e4974fb7..b59a0895 100644 --- a/src/bar_keywords.c +++ b/src/bar_keywords.c @@ -1292,7 +1292,7 @@ static void bar_pane_keywords_menu_popup(GtkWidget *widget, PaneKeywordsData *pk submenu = gtk_menu_new(); for (i = 0; i < FILEDATA_MARKS_SIZE; i++) { - text = g_strdup_printf(_("Mark %d"), i + 1); + text = g_strdup_printf(_("Mark %d"), 1 + (i < 9 ? i : -1)); item = menu_item_add(submenu, text, G_CALLBACK(bar_pane_keywords_connect_mark_cb), pkd); g_object_set_data(G_OBJECT(item), "mark", GINT_TO_POINTER(i + 1)); g_free(text); diff --git a/src/cellrenderericon.c b/src/cellrenderericon.c index 5f42e1c6..7820209c 100644 --- a/src/cellrenderericon.c +++ b/src/cellrenderericon.c @@ -25,9 +25,6 @@ #define FIXED_ICON_SIZE_MAX 512 -#define TOGGLE_WIDTH 13 -#define TOGGLE_SPACING 18 - static void gqv_cell_renderer_icon_get_property(GObject *object, guint param_id, diff --git a/src/cellrenderericon.h b/src/cellrenderericon.h index 57f3cf7b..62611ead 100644 --- a/src/cellrenderericon.h +++ b/src/cellrenderericon.h @@ -24,6 +24,9 @@ extern "C" { #endif /* __cplusplus */ +#define TOGGLE_WIDTH 13 +#define TOGGLE_SPACING 16 + #define GQV_TYPE_CELL_RENDERER_ICON (gqv_cell_renderer_icon_get_type()) #define GQV_CELL_RENDERER_ICON(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GQV_TYPE_CELL_RENDERER_ICON, GQvCellRendererIcon)) diff --git a/src/image-overlay.c b/src/image-overlay.c index 7afe1a41..4f8afe30 100644 --- a/src/image-overlay.c +++ b/src/image-overlay.c @@ -650,7 +650,7 @@ static GdkPixbuf *image_osd_info_render(OverlayStateData *osd) for (mark = 0; mark < FILEDATA_MARKS_SIZE; mark++) { - g_string_append_printf(buf, file_data_get_mark(fd, mark) ? " %c" : " %c", '1' + mark); + g_string_append_printf(buf, file_data_get_mark(fd, mark) ? " %c" : " %c", '1' + (mark < 9 ? mark : -1) ); } if (*text) diff --git a/src/layout_util.c b/src/layout_util.c index c8a83f9a..9c320bbd 100644 --- a/src/layout_util.c +++ b/src/layout_util.c @@ -2220,7 +2220,7 @@ static void layout_actions_setup_mark(LayoutWindow *lw, gint mark, gchar *name_t gtk_action_group_add_actions(lw->action_group, &entry, 1, lw); action = gtk_action_group_get_action(lw->action_group, name); - g_object_set_data(G_OBJECT(action), "mark_num", GINT_TO_POINTER(mark)); + g_object_set_data(G_OBJECT(action), "mark_num", GINT_TO_POINTER(mark > 0 ? mark : 10)); } static void layout_actions_setup_marks(LayoutWindow *lw) @@ -2234,17 +2234,19 @@ static void layout_actions_setup_marks(LayoutWindow *lw) for (mark = 1; mark <= FILEDATA_MARKS_SIZE; mark++) { - layout_actions_setup_mark(lw, mark, "Mark%d", _("Mark _%d"), NULL, NULL, NULL); - layout_actions_setup_mark(lw, mark, "SetMark%d", _("_Set mark %d"), NULL, _("Set mark %d"), G_CALLBACK(layout_menu_set_mark_sel_cb)); - layout_actions_setup_mark(lw, mark, "ResetMark%d", _("_Reset mark %d"), NULL, _("Reset mark %d"), G_CALLBACK(layout_menu_res_mark_sel_cb)); - layout_actions_setup_mark(lw, mark, "ToggleMark%d", _("_Toggle mark %d"), "%d", _("Toggle mark %d"), G_CALLBACK(layout_menu_toggle_mark_sel_cb)); - layout_actions_setup_mark(lw, mark, "ToggleMark%dAlt1", _("_Toggle mark %d"), "KP_%d", _("Toggle mark %d"), G_CALLBACK(layout_menu_toggle_mark_sel_cb)); - layout_actions_setup_mark(lw, mark, "SelectMark%d", _("Se_lect mark %d"), "%d", _("Select mark %d"), G_CALLBACK(layout_menu_sel_mark_cb)); - layout_actions_setup_mark(lw, mark, "SelectMark%dAlt1", _("_Select mark %d"), "KP_%d", _("Select mark %d"), G_CALLBACK(layout_menu_sel_mark_cb)); - layout_actions_setup_mark(lw, mark, "AddMark%d", _("_Add mark %d"), NULL, _("Add mark %d"), G_CALLBACK(layout_menu_sel_mark_or_cb)); - layout_actions_setup_mark(lw, mark, "IntMark%d", _("_Intersection with mark %d"), NULL, _("Intersection with mark %d"), G_CALLBACK(layout_menu_sel_mark_and_cb)); - layout_actions_setup_mark(lw, mark, "UnselMark%d", _("_Unselect mark %d"), NULL, _("Unselect mark %d"), G_CALLBACK(layout_menu_sel_mark_minus_cb)); - layout_actions_setup_mark(lw, mark, "FilterMark%d", _("_Filter mark %d"), NULL, _("Filter mark %d"), G_CALLBACK(layout_menu_mark_filter_toggle_cb)); + gint i = (mark < 10 ? mark : 0); + + layout_actions_setup_mark(lw, i, "Mark%d", _("Mark _%d"), NULL, NULL, NULL); + layout_actions_setup_mark(lw, i, "SetMark%d", _("_Set mark %d"), NULL, _("Set mark %d"), G_CALLBACK(layout_menu_set_mark_sel_cb)); + layout_actions_setup_mark(lw, i, "ResetMark%d", _("_Reset mark %d"), NULL, _("Reset mark %d"), G_CALLBACK(layout_menu_res_mark_sel_cb)); + layout_actions_setup_mark(lw, i, "ToggleMark%d", _("_Toggle mark %d"), "%d", _("Toggle mark %d"), G_CALLBACK(layout_menu_toggle_mark_sel_cb)); + layout_actions_setup_mark(lw, i, "ToggleMark%dAlt1", _("_Toggle mark %d"), "KP_%d", _("Toggle mark %d"), G_CALLBACK(layout_menu_toggle_mark_sel_cb)); + layout_actions_setup_mark(lw, i, "SelectMark%d", _("Se_lect mark %d"), "%d", _("Select mark %d"), G_CALLBACK(layout_menu_sel_mark_cb)); + layout_actions_setup_mark(lw, i, "SelectMark%dAlt1", _("_Select mark %d"), "KP_%d", _("Select mark %d"), G_CALLBACK(layout_menu_sel_mark_cb)); + layout_actions_setup_mark(lw, i, "AddMark%d", _("_Add mark %d"), NULL, _("Add mark %d"), G_CALLBACK(layout_menu_sel_mark_or_cb)); + layout_actions_setup_mark(lw, i, "IntMark%d", _("_Intersection with mark %d"), NULL, _("Intersection with mark %d"), G_CALLBACK(layout_menu_sel_mark_and_cb)); + layout_actions_setup_mark(lw, i, "UnselMark%d", _("_Unselect mark %d"), NULL, _("Unselect mark %d"), G_CALLBACK(layout_menu_sel_mark_minus_cb)); + layout_actions_setup_mark(lw, i, "FilterMark%d", _("_Filter mark %d"), NULL, _("Filter mark %d"), G_CALLBACK(layout_menu_mark_filter_toggle_cb)); g_string_append_printf(desc, " " @@ -2259,7 +2261,7 @@ static void layout_actions_setup_marks(LayoutWindow *lw) " " " " " ", - mark, mark, mark, mark, mark, mark, mark, mark, mark); + i, i, i, i, i, i, i, i, i); } g_string_append(desc, @@ -2267,10 +2269,12 @@ static void layout_actions_setup_marks(LayoutWindow *lw) " "); for (mark = 1; mark <= FILEDATA_MARKS_SIZE; mark++) { + gint i = (mark < 10 ? mark : 0); + g_string_append_printf(desc, "" "", - mark, mark); + i, i); } g_string_append(desc, "" ); diff --git a/src/metadata.c b/src/metadata.c index 45dc37a0..86a2cd21 100644 --- a/src/metadata.c +++ b/src/metadata.c @@ -1092,7 +1092,7 @@ void meta_data_connect_mark_with_keyword(GtkTreeModel *keyword_tree, GtkTreeIter path = keyword_tree_get_path(keyword_tree, kw_iter); file_data_register_mark_func(mark, meta_data_get_keyword_mark, meta_data_set_keyword_mark, path, (GDestroyNotify)string_list_free); - mark_str = g_strdup_printf("%d", mark + 1); + mark_str = g_strdup_printf("%d", (mark < 9 ? mark : -1) + 1); gtk_tree_store_set(GTK_TREE_STORE(keyword_tree), kw_iter, KEYWORD_COLUMN_MARK, mark_str, -1); g_free(mark_str); } @@ -1839,8 +1839,11 @@ GtkTreeIter *keyword_add_from_config(GtkTreeStore *keyword_tree, GtkTreeIter *pa if (mark_str) { + gint i = (gint)atoi(mark_str); + if (i == 0) i = 10; + meta_data_connect_mark_with_keyword(GTK_TREE_MODEL(keyword_tree), - &iter, (gint)atoi(mark_str) - 1); + &iter, i - 1); } g_free(name); diff --git a/src/typedefs.h b/src/typedefs.h index 7cf066a5..9327e358 100644 --- a/src/typedefs.h +++ b/src/typedefs.h @@ -529,7 +529,7 @@ struct _ImageWindow gboolean mouse_wheel_mode; }; -#define FILEDATA_MARKS_SIZE 6 +#define FILEDATA_MARKS_SIZE 10 struct _FileDataChangeInfo { FileDataChangeType type; diff --git a/src/view_file/view_file_icon.c b/src/view_file/view_file_icon.c index b612e7d4..eea06b2f 100644 --- a/src/view_file/view_file_icon.c +++ b/src/view_file/view_file_icon.c @@ -48,7 +48,8 @@ /* between these, the icon width is increased by thumb_max_width / 2 */ #define THUMB_MIN_ICON_WIDTH 128 -#define THUMB_MAX_ICON_WIDTH 150 +#define THUMB_MAX_ICON_WIDTH 160 +#define THUMB_MIN_ICON_WIDTH_WITH_MARKS TOGGLE_SPACING * FILEDATA_MARKS_SIZE #define VFICON_MAX_COLUMNS 32 #define THUMB_BORDER_PADDING 2 @@ -196,6 +197,7 @@ static gint vficon_get_icon_width(ViewFile *vf) width = options->thumbnails.max_width + options->thumbnails.max_width / 2; if (width < THUMB_MIN_ICON_WIDTH) width = THUMB_MIN_ICON_WIDTH; if (width > THUMB_MAX_ICON_WIDTH) width = options->thumbnails.max_width; + if (vf->marks_enabled && width < THUMB_MIN_ICON_WIDTH_WITH_MARKS) width = THUMB_MIN_ICON_WIDTH_WITH_MARKS; return width; } diff --git a/src/view_file/view_file_list.c b/src/view_file/view_file_list.c index b56a025c..c89e6cbd 100644 --- a/src/view_file/view_file_list.c +++ b/src/view_file/view_file_list.c @@ -854,7 +854,11 @@ static void vflist_setup_iter(ViewFile *vf, GtkTreeStore *store, GtkTreeIter *it FILE_COLUMN_MARKS + 3, file_data_get_mark(fd, 3), FILE_COLUMN_MARKS + 4, file_data_get_mark(fd, 4), FILE_COLUMN_MARKS + 5, file_data_get_mark(fd, 5), -#if FILEDATA_MARKS_SIZE != 6 + FILE_COLUMN_MARKS + 6, file_data_get_mark(fd, 6), + FILE_COLUMN_MARKS + 7, file_data_get_mark(fd, 7), + FILE_COLUMN_MARKS + 8, file_data_get_mark(fd, 8), + FILE_COLUMN_MARKS + 9, file_data_get_mark(fd, 9), +#if FILEDATA_MARKS_SIZE != 10 #error this needs to be updated #endif #endif