Skip to content

Commit 9a15e52

Browse files
qarkaicaclark
authored andcommitted
Deduplicate get iter by row
1 parent 3ca9384 commit 9a15e52

File tree

1 file changed

+24
-35
lines changed

1 file changed

+24
-35
lines changed

src/layout-config.cc

Lines changed: 24 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -69,51 +69,40 @@ constexpr std::array<LayoutStyle, 4> layout_config_styles{{
6969
const gchar *layout_titles[] = { N_("Tools"), N_("Files"), N_("Image") };
7070

7171

72-
void layout_config_list_order_set(LayoutConfig *lc, gint src, gint dest)
72+
gboolean tree_model_get_row_iter(GtkTreeModel *model, int row, GtkTreeIter *iter)
7373
{
74-
GtkListStore *store;
75-
GtkTreeIter iter;
76-
gboolean valid;
77-
gint n;
74+
int cur = 0;
7875

79-
store = GTK_LIST_STORE(gtk_tree_view_get_model(GTK_TREE_VIEW(lc->listview)));
80-
81-
n = 0;
82-
valid = gtk_tree_model_get_iter_first(GTK_TREE_MODEL(store), &iter);
83-
while (valid)
76+
gboolean valid = gtk_tree_model_get_iter_first(model, iter);
77+
while (valid && cur != row)
8478
{
85-
if (n == dest)
86-
{
87-
gtk_list_store_set(store, &iter, COLUMN_TEXT, _(layout_titles[src]), COLUMN_KEY, src, -1);
88-
return;
89-
}
90-
n++;
91-
valid = gtk_tree_model_iter_next(GTK_TREE_MODEL(store), &iter);
79+
cur++;
80+
valid = gtk_tree_model_iter_next(model, iter);
9281
}
82+
83+
return valid;
9384
}
9485

95-
gint layout_config_list_order_get(LayoutConfig *lc, gint n)
86+
void layout_config_list_order_set(LayoutConfig *lc, gint src, gint dest)
9687
{
97-
GtkTreeModel *store;
88+
GtkTreeModel *model = gtk_tree_view_get_model(GTK_TREE_VIEW(lc->listview));
89+
9890
GtkTreeIter iter;
99-
gboolean valid;
100-
gint c = 0;
91+
if (!tree_model_get_row_iter(model, dest, &iter)) return;
10192

102-
store = gtk_tree_view_get_model(GTK_TREE_VIEW(lc->listview));
93+
gtk_list_store_set(GTK_LIST_STORE(model), &iter, COLUMN_TEXT, _(layout_titles[src]), COLUMN_KEY, src, -1);
94+
}
10395

104-
valid = gtk_tree_model_get_iter_first(store, &iter);
105-
while (valid)
106-
{
107-
if (c == n)
108-
{
109-
gint val;
110-
gtk_tree_model_get(store, &iter, COLUMN_KEY, &val, -1);
111-
return val;
112-
}
113-
c++;
114-
valid = gtk_tree_model_iter_next(store, &iter);
115-
}
116-
return 0;
96+
gint layout_config_list_order_get(LayoutConfig *lc, gint n)
97+
{
98+
GtkTreeModel *model = gtk_tree_view_get_model(GTK_TREE_VIEW(lc->listview));
99+
100+
GtkTreeIter iter;
101+
if (!tree_model_get_row_iter(model, n, &iter)) return 0;
102+
103+
gint val;
104+
gtk_tree_model_get(model, &iter, COLUMN_KEY, &val, -1);
105+
return val;
117106
}
118107

119108
void layout_config_widget_click_cb(GtkWidget *widget, gpointer data)

0 commit comments

Comments
 (0)