mirror of
https://gitlab.gnome.org/GNOME/gimp.git
synced 2025-07-03 17:33:25 +00:00
Issue #3503 - Display Preset names on Filter Dialogs
Don't clear the preset combo right after a preset was selected. Instead, clear it as soon as any change is made to the settings in the dialog. This way the last chosen preset's name stays in the combo as long as the current settings are identical to the preset.
This commit is contained in:
parent
e2bacf918c
commit
0afcaefec5
3 changed files with 49 additions and 6 deletions
|
@ -163,6 +163,9 @@ static void gimp_filter_tool_flush (GimpDrawableFilter *filter,
|
||||||
static void gimp_filter_tool_config_notify (GObject *object,
|
static void gimp_filter_tool_config_notify (GObject *object,
|
||||||
const GParamSpec *pspec,
|
const GParamSpec *pspec,
|
||||||
GimpFilterTool *filter_tool);
|
GimpFilterTool *filter_tool);
|
||||||
|
static void gimp_filter_tool_unset_setting (GObject *object,
|
||||||
|
const GParamSpec *pspec,
|
||||||
|
GimpFilterTool *filter_tool);
|
||||||
static void gimp_filter_tool_mask_changed (GimpImage *image,
|
static void gimp_filter_tool_mask_changed (GimpImage *image,
|
||||||
GimpFilterTool *filter_tool);
|
GimpFilterTool *filter_tool);
|
||||||
|
|
||||||
|
@ -1001,6 +1004,9 @@ gimp_filter_tool_halt (GimpFilterTool *filter_tool)
|
||||||
g_signal_handlers_disconnect_by_func (filter_tool->config,
|
g_signal_handlers_disconnect_by_func (filter_tool->config,
|
||||||
gimp_filter_tool_config_notify,
|
gimp_filter_tool_config_notify,
|
||||||
filter_tool);
|
filter_tool);
|
||||||
|
g_signal_handlers_disconnect_by_func (filter_tool->config,
|
||||||
|
gimp_filter_tool_unset_setting,
|
||||||
|
filter_tool);
|
||||||
g_clear_object (&filter_tool->config);
|
g_clear_object (&filter_tool->config);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1140,6 +1146,18 @@ gimp_filter_tool_config_notify (GObject *object,
|
||||||
pspec);
|
pspec);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
gimp_filter_tool_unset_setting (GObject *object,
|
||||||
|
const GParamSpec *pspec,
|
||||||
|
GimpFilterTool *filter_tool)
|
||||||
|
{
|
||||||
|
g_signal_handlers_disconnect_by_func (filter_tool->config,
|
||||||
|
gimp_filter_tool_unset_setting,
|
||||||
|
filter_tool);
|
||||||
|
|
||||||
|
gimp_settings_box_unset (GIMP_SETTINGS_BOX (filter_tool->settings_box));
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
gimp_filter_tool_mask_changed (GimpImage *image,
|
gimp_filter_tool_mask_changed (GimpImage *image,
|
||||||
GimpFilterTool *filter_tool)
|
GimpFilterTool *filter_tool)
|
||||||
|
@ -1421,6 +1439,9 @@ gimp_filter_tool_get_operation (GimpFilterTool *filter_tool)
|
||||||
g_signal_handlers_disconnect_by_func (filter_tool->config,
|
g_signal_handlers_disconnect_by_func (filter_tool->config,
|
||||||
gimp_filter_tool_config_notify,
|
gimp_filter_tool_config_notify,
|
||||||
filter_tool);
|
filter_tool);
|
||||||
|
g_signal_handlers_disconnect_by_func (filter_tool->config,
|
||||||
|
gimp_filter_tool_unset_setting,
|
||||||
|
filter_tool);
|
||||||
g_clear_object (&filter_tool->config);
|
g_clear_object (&filter_tool->config);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1516,10 +1537,22 @@ gimp_filter_tool_set_config (GimpFilterTool *filter_tool,
|
||||||
g_return_if_fail (GIMP_IS_FILTER_TOOL (filter_tool));
|
g_return_if_fail (GIMP_IS_FILTER_TOOL (filter_tool));
|
||||||
g_return_if_fail (GIMP_IS_SETTINGS (config));
|
g_return_if_fail (GIMP_IS_SETTINGS (config));
|
||||||
|
|
||||||
|
/* if the user didn't change a setting since the last set_config(),
|
||||||
|
* this handler is still connected
|
||||||
|
*/
|
||||||
|
g_signal_handlers_disconnect_by_func (filter_tool->config,
|
||||||
|
gimp_filter_tool_unset_setting,
|
||||||
|
filter_tool);
|
||||||
|
|
||||||
GIMP_FILTER_TOOL_GET_CLASS (filter_tool)->set_config (filter_tool, config);
|
GIMP_FILTER_TOOL_GET_CLASS (filter_tool)->set_config (filter_tool, config);
|
||||||
|
|
||||||
if (filter_tool->widget)
|
if (filter_tool->widget)
|
||||||
gimp_filter_tool_reset_widget (filter_tool, filter_tool->widget);
|
gimp_filter_tool_reset_widget (filter_tool, filter_tool->widget);
|
||||||
|
|
||||||
|
if (filter_tool->settings_box)
|
||||||
|
g_signal_connect_object (filter_tool->config, "notify",
|
||||||
|
G_CALLBACK (gimp_filter_tool_unset_setting),
|
||||||
|
G_OBJECT (filter_tool), 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
|
|
@ -553,12 +553,8 @@ gimp_settings_box_setting_selected (GimpContainerView *view,
|
||||||
GimpSettingsBox *box)
|
GimpSettingsBox *box)
|
||||||
{
|
{
|
||||||
if (object)
|
if (object)
|
||||||
{
|
g_signal_emit (box, settings_box_signals[SELECTED], 0,
|
||||||
g_signal_emit (box, settings_box_signals[SELECTED], 0,
|
object);
|
||||||
object);
|
|
||||||
|
|
||||||
gimp_container_view_select_item (view, NULL);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static gboolean
|
static gboolean
|
||||||
|
@ -961,3 +957,15 @@ gimp_settings_box_add_current (GimpSettingsBox *box,
|
||||||
|
|
||||||
gimp_operation_config_serialize (private->gimp, private->container, NULL);
|
gimp_operation_config_serialize (private->gimp, private->container, NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
gimp_settings_box_unset (GimpSettingsBox *box)
|
||||||
|
{
|
||||||
|
GimpSettingsBoxPrivate *private;
|
||||||
|
|
||||||
|
g_return_if_fail (GIMP_IS_SETTINGS_BOX (box));
|
||||||
|
|
||||||
|
private = GET_PRIVATE (box);
|
||||||
|
|
||||||
|
gimp_container_view_select_item (GIMP_CONTAINER_VIEW (private->combo), NULL);
|
||||||
|
}
|
||||||
|
|
|
@ -70,5 +70,7 @@ GtkWidget * gimp_settings_box_get_combo (GimpSettingsBox *box);
|
||||||
void gimp_settings_box_add_current (GimpSettingsBox *box,
|
void gimp_settings_box_add_current (GimpSettingsBox *box,
|
||||||
gint max_recent);
|
gint max_recent);
|
||||||
|
|
||||||
|
void gimp_settings_box_unset (GimpSettingsBox *box);
|
||||||
|
|
||||||
|
|
||||||
#endif /* __GIMP_SETTINGS_BOX_H__ */
|
#endif /* __GIMP_SETTINGS_BOX_H__ */
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue