app: tool_manager: correctly preserve tool state across a push/pop

tool_manager_select_tool(): don't reset the previously active tool if
it is only temporarily pushed to the tool stack.

tool_manager_pop_tool(): don't try to restore the previously active
tool's state because it was not reset on push().
This commit is contained in:
Michael Natterer
2011-04-06 20:40:26 +02:00
parent 9778b6a440
commit cb6b821c70

View File

@ -168,7 +168,12 @@ tool_manager_select_tool (Gimp *gimp,
tool_manager = tool_manager_get (gimp);
if (tool_manager->active_tool)
/* reset the previously selected tool, but only if it is not only
* temporarily pushed to the tool stack
*/
if (tool_manager->active_tool &&
! (tool_manager->tool_stack &&
tool_manager->active_tool == tool_manager->tool_stack->data))
{
GimpTool *active_tool = tool_manager->active_tool;
GimpDisplay *display;
@ -224,20 +229,14 @@ tool_manager_pop_tool (Gimp *gimp)
if (tool_manager->tool_stack)
{
GimpTool *tool = tool_manager->tool_stack->data;
GimpDisplay *focus_display = NULL;
if (tool_manager->active_tool)
focus_display = tool_manager->active_tool->focus_display;
GimpTool *tool = tool_manager->tool_stack->data;
tool_manager->tool_stack = g_slist_remove (tool_manager->tool_stack,
tool);
tool_manager_select_tool (gimp, tool);
g_object_unref (tool);
if (focus_display)
tool_manager_focus_display_active (gimp, focus_display);
g_object_unref (tool);
}
}