static gboolean _lib_plugin_header_button_press(GtkWidget *w, GdkEventButton *e, gpointer user_data) { if(e->type == GDK_2BUTTON_PRESS || e->type == GDK_3BUTTON_PRESS) return TRUE; dt_lib_module_t *module = (dt_lib_module_t *)user_data; if(e->button == 1) { /* bail out if module is static */ if(!module->expandable(module)) return FALSE; // make gtk scroll to the module once it updated its allocation size uint32_t container = module->container(module); if(dt_conf_get_bool("lighttable/ui/scroll_to_module")) { if(container == DT_UI_CONTAINER_PANEL_LEFT_CENTER) darktable.gui->scroll_to[0] = module->expander; else if(container == DT_UI_CONTAINER_PANEL_RIGHT_CENTER) darktable.gui->scroll_to[1] = module->expander; } /* handle shiftclick on expander, hide all except this */ if(!dt_conf_get_bool("lighttable/ui/single_module") != !(e->state & GDK_SHIFT_MASK)) { GList *it = g_list_first(darktable.lib->plugins); const dt_view_t *v = dt_view_manager_get_current_view(darktable.view_manager); gboolean all_other_closed = TRUE; while(it) { dt_lib_module_t *m = (dt_lib_module_t *)it->data; if(m != module && container == m->container(module) && m->expandable(module) && (m->views(module) & v->view(v))) { all_other_closed = all_other_closed && !dtgtk_expander_get_expanded(DTGTK_EXPANDER(m->expander)); dt_lib_gui_set_expanded(m, FALSE); } it = g_list_next(it); } if(all_other_closed) dt_lib_gui_set_expanded(module, !dtgtk_expander_get_expanded(DTGTK_EXPANDER(module->expander))); else dt_lib_gui_set_expanded(module, TRUE); } else { /* else just toggle */ dt_lib_gui_set_expanded(module, !dtgtk_expander_get_expanded(DTGTK_EXPANDER(module->expander))); } return TRUE; } else if(e->button == 2) { /* show preset popup if any preset for module */ return TRUE; } return FALSE; }
static gboolean _lib_plugin_header_button_press(GtkWidget *w, GdkEventButton *e, gpointer user_data) { dt_lib_module_t *module = (dt_lib_module_t *)user_data; if(e->button == 1) { /* bail out if module is static */ if(!module->expandable()) return FALSE; /* handle shiftclick on expander, hide all except this */ if(!dt_conf_get_bool("lighttable/ui/single_module") != !(e->state & GDK_SHIFT_MASK)) { GList *it = g_list_first(darktable.lib->plugins); uint32_t container = module->container(); dt_view_t *v = darktable.view_manager->view + darktable.view_manager->current_view; gboolean all_other_closed = TRUE; while(it) { dt_lib_module_t *m = (dt_lib_module_t *)it->data; if(m != module && container == m->container() && m->expandable() && (m->views() & v->view(v))) { all_other_closed = all_other_closed && !dtgtk_expander_get_expanded(DTGTK_EXPANDER(m->expander)); dt_lib_gui_set_expanded(m, FALSE); } it = g_list_next(it); } if(all_other_closed) dt_lib_gui_set_expanded(module, !dtgtk_expander_get_expanded(DTGTK_EXPANDER(module->expander))); else dt_lib_gui_set_expanded(module, TRUE); } else { /* else just toggle */ dt_lib_gui_set_expanded(module, !dtgtk_expander_get_expanded(DTGTK_EXPANDER(module->expander))); } return TRUE; } else if(e->button == 2) { /* show preset popup if any preset for module */ return TRUE; } return FALSE; }
gboolean dt_lib_gui_get_expanded(dt_lib_module_t *module) { if(!module->expandable()) return true; if(!module->expander) return true; if(!module->widget) { char var[1024]; snprintf(var, sizeof(var), "plugins/lighttable/%s/expanded", module->plugin_name); return dt_conf_get_bool(var); } return dtgtk_expander_get_expanded(DTGTK_EXPANDER(module->expander)); }
gboolean dt_lib_gui_get_expanded(dt_lib_module_t *module) { if(!module->expandable(module)) return true; if(!module->expander) return true; if(!module->widget) { char var[1024]; const dt_view_t *current_view = dt_view_manager_get_current_view(darktable.view_manager); snprintf(var, sizeof(var), "plugins/%s/%s/expanded", current_view->module_name, module->plugin_name); return dt_conf_get_bool(var); } return dtgtk_expander_get_expanded(DTGTK_EXPANDER(module->expander)); }