Index: trunk/src/librnd/core/tool.h =================================================================== --- trunk/src/librnd/core/tool.h (revision 29350) +++ trunk/src/librnd/core/tool.h (revision 29351) @@ -68,7 +68,7 @@ pcb_bool (*redo_act)(pcb_hidlib_t *hl); pcb_bool (*escape)(pcb_hidlib_t *hl); - pcb_bool allow_when_drawing_ratlines; + unsigned long user_flags; } pcb_tool_t; extern vtp0_t pcb_tools; Index: trunk/src/tool_logic.c =================================================================== --- trunk/src/tool_logic.c (revision 29350) +++ trunk/src/tool_logic.c (revision 29351) @@ -52,7 +52,7 @@ int *ok = argv[1].d.p; int id = argv[2].d.i; pcb_board_t *pcb = (pcb_board_t *)hidlib; - if (pcb->RatDraw && !pcb_tool_get(id)->allow_when_drawing_ratlines) { + if (pcb->RatDraw && !(pcb_tool_get(id)->user_flags & PCB_TLF_RAT)) { pcb_message(PCB_MSG_WARNING, "That tool can not be used on the rat layer!\n"); *ok = 0; } @@ -93,7 +93,7 @@ static void tool_logic_chg_layer(conf_native_t *cfg, int arr_idx) { static int was_rat; - if (PCB->RatDraw && !was_rat && !pcb_tool_get(pcbhl_conf.editor.mode)->allow_when_drawing_ratlines) + if (PCB->RatDraw && !was_rat && !(pcb_tool_get(pcbhl_conf.editor.mode)->user_flags & PCB_TLF_RAT)) pcb_tool_select_by_name(&PCB->hidlib, "line"); was_rat = PCB->RatDraw; } Index: trunk/src/tool_logic.h =================================================================== --- trunk/src/tool_logic.h (revision 29350) +++ trunk/src/tool_logic.h (revision 29351) @@ -27,6 +27,10 @@ #ifndef PCB_TOOL_LOGIC_H #define PCB_TOOL_LOGIC_H +typedef enum { /* bitfield */ + PCB_TLF_RAT = 1 /* tool can be used on the rat layer */ +} pcb_tool_user_flags_t; + void pcb_tool_logic_init(void); void pcb_tool_logic_uninit(void); Index: trunk/src_plugins/tool_std/tool_arc.c =================================================================== --- trunk/src_plugins/tool_std/tool_arc.c (revision 29350) +++ trunk/src_plugins/tool_std/tool_arc.c (revision 29351) @@ -244,5 +244,5 @@ NULL, pcb_tool_arc_escape, - pcb_false + 0 }; Index: trunk/src_plugins/tool_std/tool_arrow.c =================================================================== --- trunk/src_plugins/tool_std/tool_arrow.c (revision 29350) +++ trunk/src_plugins/tool_std/tool_arrow.c (revision 29351) @@ -278,5 +278,5 @@ NULL, NULL, /* escape */ - pcb_true + PCB_TLF_RAT }; Index: trunk/src_plugins/tool_std/tool_buffer.c =================================================================== --- trunk/src_plugins/tool_std/tool_buffer.c (revision 29350) +++ trunk/src_plugins/tool_std/tool_buffer.c (revision 29351) @@ -141,5 +141,5 @@ NULL, NULL, /* escape */ - pcb_true + 0 }; Index: trunk/src_plugins/tool_std/tool_copy.c =================================================================== --- trunk/src_plugins/tool_std/tool_copy.c (revision 29350) +++ trunk/src_plugins/tool_std/tool_copy.c (revision 29351) @@ -130,5 +130,5 @@ NULL, NULL, /* escape */ - pcb_true + 0 }; Index: trunk/src_plugins/tool_std/tool_insert.c =================================================================== --- trunk/src_plugins/tool_std/tool_insert.c (revision 29350) +++ trunk/src_plugins/tool_std/tool_insert.c (revision 29351) @@ -177,5 +177,5 @@ NULL, NULL, /* escape */ - pcb_true + 0 }; Index: trunk/src_plugins/tool_std/tool_line.c =================================================================== --- trunk/src_plugins/tool_std/tool_line.c (revision 29350) +++ trunk/src_plugins/tool_std/tool_line.c (revision 29351) @@ -49,6 +49,7 @@ #include #include "undo.h" #include "netlist.h" +#include "tool_logic.h" #include "obj_line_draw.h" #include "obj_pstk_draw.h" @@ -527,5 +528,5 @@ pcb_tool_line_redo_act, pcb_tool_line_escape, - pcb_true + PCB_TLF_RAT }; Index: trunk/src_plugins/tool_std/tool_lock.c =================================================================== --- trunk/src_plugins/tool_std/tool_lock.c (revision 29350) +++ trunk/src_plugins/tool_std/tool_lock.c (revision 29351) @@ -41,6 +41,7 @@ #include #include "search.h" #include +#include "tool_logic.h" #include "tool_lock.h" #define PCB_OBJ_CLASS_LOCK (PCB_OBJ_PSTK | PCB_OBJ_LINE | PCB_OBJ_ARC | PCB_OBJ_POLY | PCB_OBJ_SUBC | PCB_OBJ_TEXT | PCB_OBJ_LOCKED) @@ -130,5 +131,5 @@ NULL, NULL, /* escape */ - pcb_true + PCB_TLF_RAT }; Index: trunk/src_plugins/tool_std/tool_move.c =================================================================== --- trunk/src_plugins/tool_std/tool_move.c (revision 29350) +++ trunk/src_plugins/tool_std/tool_move.c (revision 29351) @@ -139,5 +139,5 @@ NULL, NULL, /* escape */ - pcb_true + 0 }; Index: trunk/src_plugins/tool_std/tool_poly.c =================================================================== --- trunk/src_plugins/tool_std/tool_poly.c (revision 29350) +++ trunk/src_plugins/tool_std/tool_poly.c (revision 29351) @@ -201,5 +201,5 @@ pcb_tool_poly_redo_act, pcb_tool_poly_escape, - pcb_false + 0 }; Index: trunk/src_plugins/tool_std/tool_polyhole.c =================================================================== --- trunk/src_plugins/tool_std/tool_polyhole.c (revision 29350) +++ trunk/src_plugins/tool_std/tool_polyhole.c (revision 29351) @@ -230,5 +230,5 @@ pcb_tool_polyhole_redo_act, pcb_tool_polyhole_escape, - pcb_false + 0 }; Index: trunk/src_plugins/tool_std/tool_rectangle.c =================================================================== --- trunk/src_plugins/tool_std/tool_rectangle.c (revision 29350) +++ trunk/src_plugins/tool_std/tool_rectangle.c (revision 29351) @@ -166,5 +166,5 @@ pcb_tool_rectangle_anydo_act, pcb_tool_rectangle_escape, - pcb_false + 0 }; Index: trunk/src_plugins/tool_std/tool_remove.c =================================================================== --- trunk/src_plugins/tool_std/tool_remove.c (revision 29350) +++ trunk/src_plugins/tool_std/tool_remove.c (revision 29351) @@ -43,6 +43,7 @@ #include "obj_rat.h" #include #include "crosshair.h" +#include "tool_logic.h" void pcb_tool_remove_notify_mode(pcb_hidlib_t *hl) @@ -127,5 +128,5 @@ NULL, NULL, /* escape */ - pcb_true + PCB_TLF_RAT }; Index: trunk/src_plugins/tool_std/tool_rotate.c =================================================================== --- trunk/src_plugins/tool_std/tool_rotate.c (revision 29350) +++ trunk/src_plugins/tool_std/tool_rotate.c (revision 29351) @@ -107,5 +107,5 @@ NULL, NULL, /* escape */ - pcb_true + 0 }; Index: trunk/src_plugins/tool_std/tool_text.c =================================================================== --- trunk/src_plugins/tool_std/tool_text.c (revision 29350) +++ trunk/src_plugins/tool_std/tool_text.c (revision 29351) @@ -136,6 +136,6 @@ NULL, NULL, /* escape */ - pcb_false + 0 }; Index: trunk/src_plugins/tool_std/tool_thermal.c =================================================================== --- trunk/src_plugins/tool_std/tool_thermal.c (revision 29350) +++ trunk/src_plugins/tool_std/tool_thermal.c (revision 29351) @@ -145,5 +145,5 @@ NULL, NULL, /* escape */ - pcb_false + 0 }; Index: trunk/src_plugins/tool_std/tool_via.c =================================================================== --- trunk/src_plugins/tool_std/tool_via.c (revision 29350) +++ trunk/src_plugins/tool_std/tool_via.c (revision 29351) @@ -147,5 +147,5 @@ NULL, NULL, /* escape */ - pcb_false + 0 };