Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions data/themes/darktable.css
Original file line number Diff line number Diff line change
Expand Up @@ -1075,8 +1075,8 @@ treeview header label
/*-------------------------------------
- Preferences dialog window options -
-------------------------------------*/
#preferences-content,
#preferences-content .dialog-action-box,
#preferences-box,
#preferences-box .dialog-action-box,
#quick-presets-manager box /* set same setting on quick preset manager dialog window ; accessible to bottom left button on footer bar in darkroom view */
{
margin: 0; /* reset default dialog margin to main items. And needed to have an hover and selected effect on all width of categories in sidebar */
Expand Down
10 changes: 4 additions & 6 deletions src/common/database.c
Original file line number Diff line number Diff line change
Expand Up @@ -4498,13 +4498,12 @@ dt_database_t *dt_database_init(const char *alternative, const gboolean load_dat
g_free(quick_check_text);
g_free(data_status);

GtkWidget *content_area = gtk_dialog_get_content_area(GTK_DIALOG (dialog));
GtkWidget *label = gtk_label_new(NULL);
gtk_label_set_markup(GTK_LABEL(label), label_text);
g_free(label_text);
gtk_container_add(GTK_CONTAINER (content_area), label);
dt_gui_dialog_add(GTK_DIALOG(dialog), label);

gtk_widget_show_all(content_area);
gtk_widget_show_all(dialog);

const int resp = gtk_dialog_run(GTK_DIALOG(dialog));

Expand Down Expand Up @@ -4671,13 +4670,12 @@ dt_database_t *dt_database_init(const char *alternative, const gboolean load_dat
g_free(quick_check_text);
g_free(libdb_status);

GtkWidget *content_area = gtk_dialog_get_content_area(GTK_DIALOG (dialog));
GtkWidget *label = gtk_label_new(NULL);
gtk_label_set_markup(GTK_LABEL(label), label_text);
g_free(label_text);
gtk_container_add(GTK_CONTAINER (content_area), label);
dt_gui_dialog_add(GTK_DIALOG(dialog), label);

gtk_widget_show_all(content_area);
gtk_widget_show_all(dialog);

const int resp = gtk_dialog_run(GTK_DIALOG(dialog));

Expand Down
9 changes: 2 additions & 7 deletions src/common/film.c
Original file line number Diff line number Diff line change
Expand Up @@ -348,11 +348,6 @@ static gboolean ask_and_delete(gpointer user_data)
ngettext("delete empty directory?",
"delete empty directories?", n_empty_dirs));

GtkWidget *content_area = gtk_dialog_get_content_area(GTK_DIALOG(dialog));

GtkWidget *scroll = gtk_scrolled_window_new(NULL, NULL);
gtk_widget_set_vexpand(scroll, TRUE);

GtkListStore *store = gtk_list_store_new(1, G_TYPE_STRING);

for(GList *list_iter = empty_dirs; list_iter; list_iter = g_list_next(list_iter))
Expand All @@ -369,11 +364,11 @@ static gboolean ask_and_delete(gpointer user_data)
"text", 0, NULL);
gtk_tree_view_append_column(GTK_TREE_VIEW(tree), column);

gtk_container_add(GTK_CONTAINER(scroll), tree);
GtkWidget *scroll = dt_gui_scroll_wrap(tree);
gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scroll), GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC);
gtk_scrolled_window_set_min_content_height(GTK_SCROLLED_WINDOW(scroll), DT_PIXEL_APPLY_DPI(25));

gtk_container_add(GTK_CONTAINER(content_area), scroll);
dt_gui_dialog_add(GTK_DIALOG(dialog), scroll);

gtk_widget_show_all(dialog); // needed for the content area!

Expand Down
10 changes: 3 additions & 7 deletions src/control/crawler.c
Original file line number Diff line number Diff line change
Expand Up @@ -711,8 +711,6 @@ void dt_control_crawler_show_image_list(GList *images)

// a list with all the images
GtkTreeViewColumn *column;
GtkWidget *scroll = gtk_scrolled_window_new(NULL, NULL);
gtk_widget_set_vexpand(scroll, TRUE);
GtkListStore *store = gtk_list_store_new(DT_CONTROL_CRAWLER_NUM_COLS,
G_TYPE_INT, // id
G_TYPE_STRING, // image path
Expand Down Expand Up @@ -798,7 +796,7 @@ void dt_control_crawler_show_image_list(GList *images)
g_object_set(renderer_date, "xalign", 1., NULL);
gtk_tree_view_append_column(GTK_TREE_VIEW(tree), column);

gtk_container_add(GTK_CONTAINER(scroll), tree);
GtkWidget *scroll = dt_gui_scroll_wrap(tree);
gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scroll),
GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC);

Expand All @@ -814,10 +812,9 @@ void dt_control_crawler_show_image_list(GList *images)
#endif
gtk_widget_set_size_request(dialog, -1, DT_PIXEL_APPLY_DPI(400));
gtk_window_set_transient_for(GTK_WINDOW(dialog), GTK_WINDOW(win));
GtkWidget *content_area = gtk_dialog_get_content_area(GTK_DIALOG(dialog));

GtkWidget *content_box = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0);
gtk_container_add(GTK_CONTAINER(content_area), content_box);
dt_gui_dialog_add(GTK_DIALOG(dialog), content_box);

GtkWidget *box = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 0);
gtk_box_pack_start(GTK_BOX(content_box), box, FALSE, FALSE, 0);
Expand Down Expand Up @@ -855,10 +852,9 @@ void dt_control_crawler_show_image_list(GList *images)
gtk_box_pack_start(GTK_BOX(box), GTK_WIDGET(gui->spinner), FALSE, FALSE, 0);

/* Log report */
scroll = gtk_scrolled_window_new(NULL, NULL);
gui->log = gtk_tree_view_new();
scroll = dt_gui_scroll_wrap(gui->log);
gtk_box_pack_start(GTK_BOX(content_box), scroll, TRUE, TRUE, 0);
gtk_container_add(GTK_CONTAINER(scroll), gui->log);
gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scroll),
GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC);

Expand Down
4 changes: 1 addition & 3 deletions src/dtgtk/range.c
Original file line number Diff line number Diff line change
Expand Up @@ -1027,7 +1027,6 @@ static void _popup_date_init(GtkDarktableRangeSelect *range)
gtk_box_pack_start(GTK_BOX(hbox2), pop->seconds, FALSE, TRUE, 0);

// the treeview
GtkWidget *sw = gtk_scrolled_window_new(NULL, NULL);
GtkTreeModel *model = GTK_TREE_MODEL(gtk_tree_store_new(DATETIME_NUM_COLS, G_TYPE_STRING, G_TYPE_UINT,
G_TYPE_STRING, G_TYPE_STRING, G_TYPE_UINT, G_TYPE_UINT));
pop->treeview = gtk_tree_view_new_with_model(model);
Expand All @@ -1043,10 +1042,9 @@ static void _popup_date_init(GtkDarktableRangeSelect *range)
GtkCellRenderer *renderer = gtk_cell_renderer_text_new();
gtk_tree_view_column_pack_start(col, renderer, TRUE);
gtk_tree_view_column_set_cell_data_func(col, renderer, _date_tree_count_func, NULL, NULL);

gtk_tree_view_set_tooltip_column(GTK_TREE_VIEW(pop->treeview), DATETIME_COL_TOOLTIP);

gtk_container_add(GTK_CONTAINER(sw), pop->treeview);
GtkWidget *sw = dt_gui_scroll_wrap(pop->treeview);
gtk_box_pack_start(GTK_BOX(hbox), sw, FALSE, TRUE, 0);

// the select line
Expand Down
44 changes: 10 additions & 34 deletions src/gui/accelerators.c
Original file line number Diff line number Diff line change
Expand Up @@ -2549,20 +2549,17 @@ static void _restore_clicked(GtkButton *button, gpointer user_data)
NULL);
gtk_dialog_set_default_response(GTK_DIALOG(dialog), GTK_RESPONSE_REJECT);

GtkContainer *content_area =
GTK_CONTAINER(gtk_dialog_get_content_area(GTK_DIALOG (dialog)));
GtkWidget *label = gtk_label_new(_("restore shortcuts from one of these states:\n"
" - default\n"
" - as at startup\n"
" - as when opening this dialog\n"));
gtk_widget_set_halign(label, GTK_ALIGN_START);
gtk_container_add(content_area, label);
GtkWidget *clear = gtk_check_button_new_with_label
(_("clear all newer shortcuts\n"
"(instead of just restoring changed ones)"));
gtk_container_add(content_area, clear);
dt_gui_dialog_add(GTK_DIALOG(dialog), label, clear);

gtk_widget_show_all(GTK_WIDGET(content_area));
gtk_widget_show_all(dialog);

const int resp = gtk_dialog_run(GTK_DIALOG(dialog));
const gboolean wipe = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(clear));
Expand Down Expand Up @@ -2632,38 +2629,28 @@ static void _export_clicked(GtkButton *button, gpointer user_data)
NULL);
gtk_dialog_set_default_response(GTK_DIALOG(dialog), GTK_RESPONSE_REJECT);

GtkContainer *content_area =
GTK_CONTAINER(gtk_dialog_get_content_area(GTK_DIALOG (dialog)));
GtkWidget *label = gtk_label_new(_("export all shortcuts to a file\n"
"or just for one selected device\n"));
gtk_widget_set_halign(label, GTK_ALIGN_START);
gtk_container_add(content_area, label);

GtkWidget *combo_dev = gtk_combo_box_text_new();
gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(combo_dev), _("all"));
gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(combo_dev), _("keyboard"));
for(GSList *driver = darktable.control->input_drivers; driver; driver = driver->next)
gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(combo_dev),
((dt_input_driver_definition_t *)driver->data)->name);
gtk_container_add(content_area, combo_dev);

GtkWidget *device_box = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 0);

GtkWidget *combo_id = gtk_combo_box_text_new();
for(gchar num[] = "0"; *num <= '9'; (*num)++)
gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(combo_id), num);
gtk_container_add(GTK_CONTAINER(device_box), combo_id);
gtk_container_add(GTK_CONTAINER(device_box), dt_ui_label_new(_("device id")));

gtk_container_add(content_area, device_box);

GtkWidget *count = gtk_label_new("");
gtk_container_add(content_area, count);

g_signal_connect(combo_dev, "changed", G_CALLBACK(_import_export_dev_changed), combo_id);
g_signal_connect(combo_id, "changed", G_CALLBACK(_export_id_changed), count);

gtk_widget_show_all(GTK_WIDGET(content_area));
dt_gui_dialog_add(GTK_DIALOG(dialog), label, combo_dev,
dt_gui_hbox(combo_id, dt_ui_label_new(_("device id"))),
count);
gtk_widget_show_all(dialog);

gtk_combo_box_set_active(GTK_COMBO_BOX(combo_dev), 0);

Expand Down Expand Up @@ -2714,20 +2701,16 @@ static void _import_clicked(GtkButton *button, gpointer user_data)
NULL);
gtk_dialog_set_default_response(GTK_DIALOG(dialog), GTK_RESPONSE_REJECT);

GtkContainer *content_area =
GTK_CONTAINER(gtk_dialog_get_content_area(GTK_DIALOG (dialog)));
GtkWidget *label = gtk_label_new(_("import all shortcuts from a file\n"
"or just for one selected device\n"));
gtk_widget_set_halign(label, GTK_ALIGN_START);
gtk_container_add(content_area, label);

GtkWidget *combo_dev = gtk_combo_box_text_new();
gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(combo_dev), _("all"));
gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(combo_dev), _("keyboard"));
for(GSList *driver = darktable.control->input_drivers; driver; driver = driver->next)
gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(combo_dev),
((dt_input_driver_definition_t *)driver->data)->name);
gtk_container_add(content_area, combo_dev);

GtkWidget *device_grid = gtk_grid_new();

Expand All @@ -2743,16 +2726,15 @@ static void _import_clicked(GtkButton *button, gpointer user_data)
gtk_grid_attach(GTK_GRID(device_grid), combo_to_id, 0, 1, 1, 1);
gtk_grid_attach(GTK_GRID(device_grid), dt_ui_label_new(_("id when loaded")), 1, 1, 1, 1);

gtk_container_add(content_area, device_grid);

GtkWidget *clear = gtk_check_button_new_with_label(_("clear device first"));
gtk_container_add(content_area, clear);

g_signal_connect(combo_dev, "changed", G_CALLBACK(_import_export_dev_changed),
combo_from_id);
g_signal_connect(combo_from_id, "changed", G_CALLBACK(_import_id_changed), combo_to_id);

gtk_widget_show_all(GTK_WIDGET(content_area));
dt_gui_dialog_add(GTK_DIALOG(dialog), label, combo_dev, device_grid, clear);
gtk_widget_show_all(dialog);

gtk_combo_box_set_active(GTK_COMBO_BOX(combo_dev), 0);

Expand Down Expand Up @@ -2926,11 +2908,8 @@ GtkWidget *dt_shortcuts_prefs(GtkWidget *widget)
_add_prefs_column(shortcuts_view, renderer, _("instance"), SHORTCUT_VIEW_INSTANCE);

// Adding the shortcuts treeview to its containers
GtkWidget *scroll = gtk_scrolled_window_new(NULL, NULL);
GtkWidget *scroll = dt_gui_scroll_wrap(GTK_WIDGET(shortcuts_view));
gtk_widget_set_size_request(scroll, -1, 100);
gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scroll),
GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
gtk_container_add(GTK_CONTAINER(scroll), GTK_WIDGET(shortcuts_view));
gtk_paned_pack2(GTK_PANED(container), scroll, TRUE, FALSE);

// Creating the action selection treeview
Expand Down Expand Up @@ -3007,11 +2986,8 @@ GtkWidget *dt_shortcuts_prefs(GtkWidget *widget)
gtk_tree_view_append_column(GTK_TREE_VIEW(actions_view), column);

// Adding the action treeview to its containers
scroll = gtk_scrolled_window_new(NULL, NULL);
scroll = dt_gui_scroll_wrap(GTK_WIDGET(actions_view));
gtk_widget_set_size_request(scroll, -1, 100);
gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scroll),
GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
gtk_container_add(GTK_CONTAINER(scroll), GTK_WIDGET(actions_view));
gtk_paned_pack1(GTK_PANED(container), scroll, TRUE, FALSE);

if(found_iter.user_data)
Expand Down
4 changes: 2 additions & 2 deletions src/gui/gtk.c
Original file line number Diff line number Diff line change
Expand Up @@ -4095,7 +4095,7 @@ GtkWidget *dt_ui_resize_wrap(GtkWidget *w,
}
else
{
GtkWidget *sw = gtk_scrolled_window_new(NULL, NULL);
GtkWidget *sw = dt_gui_scroll_wrap(w);
gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(sw),
GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC);
gtk_scrolled_window_set_min_content_height
Expand All @@ -4104,7 +4104,6 @@ GtkWidget *dt_ui_resize_wrap(GtkWidget *w,
G_CALLBACK(_resize_wrap_scroll), config_str);
g_signal_connect(G_OBJECT(w), "draw",
G_CALLBACK(_resize_wrap_draw), config_str);
gtk_container_add(GTK_CONTAINER(sw), w);
gtk_widget_set_margin_bottom(sw, DT_RESIZE_HANDLE_SIZE);
w = gtk_event_box_new();
gtk_container_add(GTK_CONTAINER(w), sw);
Expand Down Expand Up @@ -4482,6 +4481,7 @@ void dt_gui_simulate_button_event(GtkWidget *widget,

GtkWidget *(dt_gui_box_add)(const char *file, const int line, const char *function, GtkBox *box, gpointer list[])
{
if(!GTK_IS_BOX(box)) dt_print(DT_DEBUG_ALWAYS, "%s:%d %s: trying to add widgets to non-box container using dt_gui_box_add", file, line, function);
int i = 1;
for(; *list != (gpointer)-1; list++, i++)
{
Expand Down
9 changes: 9 additions & 0 deletions src/gui/gtk.h
Original file line number Diff line number Diff line change
Expand Up @@ -549,6 +549,7 @@ GtkWidget *(dt_gui_box_add)(const char *file, const int line, const char *functi
#define dt_gui_box_add(box, ...) dt_gui_box_add(__FILE__, __LINE__, __FUNCTION__, GTK_BOX(box), (gpointer[]){ __VA_ARGS__, (gpointer)-1 })
#define dt_gui_hbox(...) dt_gui_box_add(gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 0), __VA_ARGS__)
#define dt_gui_vbox(...) dt_gui_box_add(gtk_box_new(GTK_ORIENTATION_VERTICAL, 0), __VA_ARGS__)
#define dt_gui_dialog_add(dialog, ...) dt_gui_box_add(gtk_dialog_get_content_area(GTK_DIALOG(dialog)), __VA_ARGS__)
#define dt_gui_expand(widget) dt_gui_expand(GTK_WIDGET(widget))
#define dt_gui_align_right(widget) dt_gui_align_right(GTK_WIDGET(widget))

Expand All @@ -564,6 +565,14 @@ static inline GtkWidget *(dt_gui_align_right)(GtkWidget *widget)
return dt_gui_expand(widget);
}

static inline GtkWidget *dt_gui_scroll_wrap(GtkWidget *widget)
{
GtkWidget *scrolled_window = gtk_scrolled_window_new(NULL, NULL);
gtk_widget_set_vexpand(scrolled_window, TRUE);
gtk_container_add(GTK_CONTAINER(scrolled_window), widget);
return scrolled_window;
}

// Simulate a mouse button event (button is 1, 2, 3 - mouse button) sent to a Widget
void dt_gui_simulate_button_event(GtkWidget *widget,
const GdkEventType eventtype,
Expand Down
15 changes: 4 additions & 11 deletions src/gui/hist_dialog.c
Original file line number Diff line number Diff line change
Expand Up @@ -231,19 +231,12 @@ int dt_gui_hist_dialog_new(dt_history_copy_item_t *d,
dt_osx_disallow_fullscreen(GTK_WIDGET(dialog));
#endif

GtkContainer *content_area =
GTK_CONTAINER(gtk_dialog_get_content_area(GTK_DIALOG(dialog)));

GtkWidget *scroll = gtk_scrolled_window_new(NULL, NULL);
gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scroll),
GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC);
gtk_scrolled_window_set_min_content_height(GTK_SCROLLED_WINDOW(scroll),
DT_PIXEL_APPLY_DPI(450));

/* create the list of items */
d->items = GTK_TREE_VIEW(gtk_tree_view_new());
gtk_container_add(GTK_CONTAINER(scroll), GTK_WIDGET(d->items));
gtk_box_pack_start(GTK_BOX(content_area), GTK_WIDGET(scroll), TRUE, TRUE, 0);
GtkWidget *scroll = dt_gui_scroll_wrap(GTK_WIDGET(d->items));
gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scroll),
GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC);
dt_gui_dialog_add(GTK_DIALOG(dialog), scroll);

GtkListStore *liststore
= gtk_list_store_new(DT_HIST_ITEMS_NUM_COLS,
Expand Down
11 changes: 2 additions & 9 deletions src/gui/metadata_tags.c
Original file line number Diff line number Diff line change
Expand Up @@ -93,10 +93,6 @@ GtkWidget *dt_metadata_tags_dialog(GtkWidget *parent, gpointer metadata_activate
_("_done"), GTK_RESPONSE_NONE, NULL);
gtk_dialog_set_default_response(GTK_DIALOG(dialog), GTK_RESPONSE_NONE);
gtk_window_set_default_size(GTK_WINDOW(dialog), DT_PIXEL_APPLY_DPI(500), DT_PIXEL_APPLY_DPI(300));
GtkWidget *area = gtk_dialog_get_content_area(GTK_DIALOG(dialog));
GtkWidget *vbox = gtk_box_new(GTK_ORIENTATION_VERTICAL, 8);
gtk_container_set_border_width(GTK_CONTAINER(vbox), 8);
gtk_box_pack_start(GTK_BOX(area), vbox, TRUE, TRUE, 0);

// keep a reference to the "add" button to toggle its sensitivity
add_button = gtk_dialog_get_widget_for_response(GTK_DIALOG(dialog), GTK_RESPONSE_ACCEPT);
Expand All @@ -105,14 +101,10 @@ GtkWidget *dt_metadata_tags_dialog(GtkWidget *parent, gpointer metadata_activate
gtk_entry_set_text(GTK_ENTRY(sel_entry), "");
gtk_widget_set_tooltip_text(sel_entry, _("list filter"));
gtk_entry_set_activates_default(GTK_ENTRY(sel_entry), TRUE);
gtk_box_pack_start(GTK_BOX(vbox), sel_entry, FALSE, TRUE, 0);
g_signal_connect(G_OBJECT(sel_entry), "changed", G_CALLBACK(_tag_name_changed), NULL);

GtkWidget *w = gtk_scrolled_window_new(NULL, NULL);
gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(w), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
gtk_box_pack_start(GTK_BOX(vbox), w, TRUE, TRUE, 0);
sel_view = GTK_TREE_VIEW(gtk_tree_view_new());
gtk_container_add(GTK_CONTAINER(w), GTK_WIDGET(sel_view));
GtkWidget *w = dt_gui_scroll_wrap(GTK_WIDGET(sel_view));
gtk_widget_set_tooltip_text(GTK_WIDGET(sel_view), _("list of available tags. click 'add' button or double-click on tag to add the selected one"));
GtkTreeSelection *selection = gtk_tree_view_get_selection(sel_view);
gtk_tree_selection_set_mode(selection, GTK_SELECTION_SINGLE);
Expand Down Expand Up @@ -162,6 +154,7 @@ GtkWidget *dt_metadata_tags_dialog(GtkWidget *parent, gpointer metadata_activate
g_object_unref(model);
g_signal_connect(G_OBJECT(sel_view), "row-activated", G_CALLBACK(metadata_activated_callback), user_data);

dt_gui_dialog_add(GTK_DIALOG(dialog), sel_entry, w);
return dialog;
}

Expand Down
Loading
Loading