app: add gimp_tool_gui_set_focus_on_map() and use it

This commit is contained in:
Michael Natterer
2013-06-08 15:34:23 +02:00
parent 2d68b1d4f9
commit 25cc5922b6
4 changed files with 45 additions and 17 deletions

View File

@ -65,6 +65,7 @@ struct _GimpToolGuiPrivate
gchar *description;
GList *response_entries;
gint default_response;
gboolean focus_on_map;
gboolean overlay;
@ -133,6 +134,7 @@ gimp_tool_gui_init (GimpToolGui *gui)
GimpToolGuiPrivate *private = GET_PRIVATE (gui);
private->default_response = -1;
private->focus_on_map = TRUE;
private->vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 6);
g_object_ref_sink (private->vbox);
@ -433,6 +435,36 @@ gimp_tool_gui_get_overlay (GimpToolGui *gui)
return GET_PRIVATE (gui)->overlay;
}
void
gimp_tool_gui_set_focus_on_map (GimpToolGui *gui,
gboolean focus_on_map)
{
GimpToolGuiPrivate *private;
g_return_if_fail (GIMP_IS_TOOL_GUI (gui));
private = GET_PRIVATE (gui);
if (private->focus_on_map == focus_on_map)
return;
private->focus_on_map = focus_on_map ? TRUE : FALSE;
if (! private->overlay)
{
gtk_window_set_focus_on_map (GTK_WINDOW (private->dialog),
private->focus_on_map);
}
}
gboolean
gimp_tool_gui_get_focus_on_map (GimpToolGui *gui)
{
g_return_val_if_fail (GIMP_IS_TOOL_GUI (gui), FALSE);
return GET_PRIVATE (gui)->focus_on_map;
}
void
gimp_tool_gui_set_default_response (GimpToolGui *gui,
gint response_id)
@ -589,6 +621,9 @@ gimp_tool_gui_create_dialog (GimpToolGui *gui)
gtk_dialog_set_default_response (GTK_DIALOG (private->dialog),
private->default_response);
gtk_window_set_focus_on_map (GTK_WINDOW (private->dialog),
private->focus_on_map);
gtk_container_set_border_width (GTK_CONTAINER (private->vbox), 6);
gtk_box_pack_start (GTK_BOX (gtk_dialog_get_content_area (GTK_DIALOG (private->dialog))),
private->vbox, TRUE, TRUE, 0);

View File

@ -75,6 +75,10 @@ void gimp_tool_gui_set_overlay (GimpToolGui *gui,
gboolean overlay);
gboolean gimp_tool_gui_get_overlay (GimpToolGui *gui);
void gimp_tool_gui_set_focus_on_map (GimpToolGui *gui,
gboolean focus_on_map);
gboolean gimp_tool_gui_get_focus_on_map (GimpToolGui *gui);
void gimp_tool_gui_set_default_response (GimpToolGui *gui,
gint response_id);
void gimp_tool_gui_set_response_sensitive (GimpToolGui *gui,

View File

@ -301,8 +301,6 @@ static void
gimp_color_picker_tool_info_create (GimpColorPickerTool *picker_tool)
{
GimpTool *tool = GIMP_TOOL (picker_tool);
GtkWidget *dialog;
GtkWidget *vbox;
GtkWidget *hbox;
GtkWidget *frame;
GimpRGB color;
@ -318,12 +316,7 @@ gimp_color_picker_tool_info_create (GimpColorPickerTool *picker_tool)
NULL);
dialog = gimp_tool_gui_get_dialog (picker_tool->gui);
vbox = gimp_tool_gui_get_vbox (picker_tool->gui);
if (GTK_IS_DIALOG (dialog))
gtk_window_set_focus_on_map (GTK_WINDOW (dialog), FALSE);
gimp_tool_gui_set_focus_on_map (picker_tool->gui, FALSE);
gimp_tool_gui_set_viewable (picker_tool->gui,
GIMP_VIEWABLE (tool->drawable));
@ -332,7 +325,8 @@ gimp_color_picker_tool_info_create (GimpColorPickerTool *picker_tool)
picker_tool);
hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 6);
gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 0);
gtk_box_pack_start (GTK_BOX (gimp_tool_gui_get_vbox (picker_tool->gui)),
hbox, FALSE, FALSE, 0);
gtk_widget_show (hbox);
picker_tool->color_frame1 = gimp_color_frame_new ();

View File

@ -1039,8 +1039,6 @@ gimp_measure_tool_dialog_new (GimpMeasureTool *measure)
{
GimpTool *tool = GIMP_TOOL (measure);
GimpToolGui *gui;
GtkWidget *dialog;
GtkWidget *vbox;
GtkWidget *table;
GtkWidget *label;
@ -1052,11 +1050,7 @@ gimp_measure_tool_dialog_new (GimpMeasureTool *measure)
NULL);
dialog = gimp_tool_gui_get_dialog (gui);
vbox = gimp_tool_gui_get_vbox (gui);
if (GTK_IS_DIALOG (dialog))
gtk_window_set_focus_on_map (GTK_WINDOW (dialog), FALSE);
gimp_tool_gui_set_focus_on_map (gui, FALSE);
g_signal_connect (gui, "response",
G_CALLBACK (g_object_unref),
@ -1065,7 +1059,8 @@ gimp_measure_tool_dialog_new (GimpMeasureTool *measure)
table = gtk_table_new (4, 5, TRUE);
gtk_table_set_col_spacings (GTK_TABLE (table), 6);
gtk_table_set_row_spacings (GTK_TABLE (table), 6);
gtk_box_pack_start (GTK_BOX (vbox), table, TRUE, TRUE, 0);
gtk_box_pack_start (GTK_BOX (gimp_tool_gui_get_vbox (gui)), table,
TRUE, TRUE, 0);
gtk_widget_show (table);