kicad/pcbnew
Seth Hillbrand bd57957df7 Revise method of selecting footprints in contrast
When working in high contrast mode, we want to be able to select a
footprint with only elements in, e.g. silk and fab layers.

The previous design for footprint IsOnLayer had one behavior of every
other element and a different behavior for footprints.  This leads to
multiple bugs as new features use the overloaded IsOnLayer expecting it
to report if the element exists on a layer or not.

For footprints, we need a different routine to determine whether or not
to select the footprint when clicking on it.  IsOnLayer will report if
the footprint has any elements on a specific layer but we don't want to
use the bbox for a hittest because large footprints with through hole
pads will exist on every layer and have an enormous bbox.  Instead, we
filter footprints based on the hittest of each element.  This behaves in
a more logical fashion, allowing you to select a footprint by clicking
on a visible element of that footprint.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/15284

(cherry picked from commit f3d65b5156)
2023-09-29 12:09:11 -07:00
..
autorouter Fail-safety in spreadRectangles. 2023-02-11 16:42:27 +03:00
board_stackup_manager PANEL_SETUP_BOARD_STACKUP: save the m_HasDielectricConstrains BOARD_STACKUP member. 2023-09-19 18:05:42 +02:00
connectivity Refine track dangling test. 2023-07-09 21:08:51 +01:00
dialogs DIALOG_EXPORT_STEP_LOG: print the command line sent to kicad-cli in report window. 2023-09-05 00:26:43 +00:00
drc drc_test_provider_text_dims.cpp: ensure glyphs to test are OUTLINE_GLYPH. 2023-09-09 10:37:58 +02:00
exporters Gerber place file: change DCode size of pads others than 1 or A1 to 0.1 mm 2023-08-31 16:44:14 +02:00
import_gfx SVG import: skip shapes that are not stroked and not filled. 2023-09-08 14:49:08 +03:00
microwave Fix static event table derived object definitions. 2023-01-28 14:10:06 -05:00
navlib Navlib: Ensure a pointer is initialized. 2023-05-10 09:36:51 +02:00
netlist_reader Move to requiring explicit action to save project settings 2023-03-24 11:49:50 -07:00
plugins Ensure that layer names are unique when importing 2023-09-29 11:03:21 -07:00
python Improve error reporting when running Python action plugins. 2023-09-15 13:33:28 +03:00
ratsnest Don't blindly cast to PCBNEW_SETTING: we may be in CVPCB.... 2023-07-16 19:45:13 +01:00
router Don't return separate shapes from a custom-shaped pad. 2023-09-03 22:11:15 +01:00
specctra_import_export Specctra: remove grouped tracks from group before cleaning up 2023-05-22 14:58:56 +00:00
teardrop Footprint viewer: ensure the footprint is updated after new library selection 2023-03-29 16:59:12 +02:00
tools Revise method of selecting footprints in contrast 2023-09-29 12:09:11 -07:00
widgets Save flip board status in custom preset 2023-09-29 11:07:49 -07:00
CMakeLists.txt pcbnew: move DIALOG_PAD_PROPERTIES_BASE from dialog_pad_properties to its own files. 2023-01-17 09:44:28 +01:00
Doxyfile_python
Doxyfile_xml
action_plugin.cpp More wxString wide literals. 2022-02-05 21:29:34 +00:00
action_plugin.h
array_creator.cpp array_creator: Transform item before adding, modify only the first one. 2022-11-19 04:07:35 +05:00
array_creator.h
array_pad_number_provider.cpp
array_pad_number_provider.h Fix typos in pcbnew sub-directory 2022-06-30 09:39:45 -04:00
board.cpp Handle dimensions and textboxes when plotting contours to DXF. 2023-08-31 12:37:44 +01:00
board.h Consolidate Maximum clearance calculation 2023-07-26 13:16:32 -07:00
board_commit.cpp Coverity fixes and code cleaning. 2023-03-04 13:14:59 -05:00
board_commit.h Propagate nets within non-conflicting clusters immediately. 2023-01-23 16:25:29 +00:00
board_connected_item.cpp Properties: Hide Net Class from GUI 2023-03-26 19:50:10 -04:00
board_connected_item.h 15% rendering optimization in PCB_TRACK::ViewGetLOD. 2023-01-27 18:37:43 +03:00
board_design_settings.cpp When routing, check for board-level clearances 2023-07-24 15:19:59 -07:00
board_item.cpp AllCuMask() and AllTechMask() are static, they do NOT modify "this". 2023-02-03 15:08:31 +00:00
board_item_container.h Fix typos in pcbnew sub-directory 2022-06-30 09:39:45 -04:00
build_BOM_from_board.cpp Fix a bunch more issues with sheetpaths and allowExtraText. 2023-05-05 18:02:59 +01:00
cleanup_item.cpp Add pad-recombining to FPEditor's Cleanup Graphics. 2022-09-24 19:34:06 +01:00
cleanup_item.h Add pad-recombining to FPEditor's Cleanup Graphics. 2022-09-24 19:34:06 +01:00
collectors.cpp Attempt to fix std::initializer_list lifetime issue. 2022-08-21 20:54:41 +01:00
collectors.h Attempt to fix std::initializer_list lifetime issue. 2022-08-21 20:54:41 +01:00
convert_shape_list_to_polygon.cpp Move checking for null parent higher. 2023-08-19 20:09:47 +01:00
convert_shape_list_to_polygon.h Step exporter: export circular board outlines as cylinder 2023-05-28 19:38:27 +02:00
cross-probing.cpp PCM: auto reload global libs after dialog is run 2023-02-28 16:48:28 -05:00
edit.cpp PCB Editor: Add User Background Images 2022-07-14 11:23:23 +00:00
edit_track_width.cpp PCB Editor: prevent scroll wheel on track size opening board settings 2023-01-20 12:13:16 -05:00
edit_zone_helpers.cpp More safety around ratsnest state. 2022-11-30 13:00:21 +00:00
files.cpp Be smarter about releasing lockfiles 2023-09-29 11:02:42 -07:00
footprint.cpp Revise method of selecting footprints in contrast 2023-09-29 12:09:11 -07:00
footprint.h Revise method of selecting footprints in contrast 2023-09-29 12:09:11 -07:00
footprint_edit_frame.cpp Make sure infobar gets created earlier. 2023-06-11 22:32:05 +01:00
footprint_edit_frame.h Fp editor and Fp viewer: fix missing info on msg panel after loading a fp 2023-01-25 17:47:04 +01:00
footprint_editor_settings.cpp Prefer MRU path to LastImportExportPath for importing footprints. 2023-07-09 21:39:18 +01:00
footprint_editor_utils.cpp PCM: auto reload global libs after dialog is run 2023-02-28 16:48:28 -05:00
footprint_info_impl.cpp Stricter API for LIB_TABLE 2023-08-15 01:39:09 +00:00
footprint_info_impl.h ADDED: Threadpool 2022-06-24 22:59:24 +00:00
footprint_libraries_utils.cpp Remove group reference when exporting individual footprints 2023-08-02 23:21:36 +01:00
footprint_preview_panel.cpp Make FOOTPRINT_PREVIEW_PANEL a FPHOLDER. 2023-06-11 22:30:16 +01:00
footprint_preview_panel.h Units for footprint preview widgets. 2023-01-02 22:12:26 +00:00
footprint_tree_pane.cpp Footprint Editor: Focus search field when window is first opened 2022-12-20 19:54:02 +00:00
footprint_tree_pane.h Footprint Editor: Focus search field when window is first opened 2022-12-20 19:54:02 +00:00
footprint_viewer_frame.cpp Remember footprint library browsers liblist width. 2023-08-31 12:37:44 +01:00
footprint_viewer_frame.h Fp editor and Fp viewer: fix missing info on msg panel after loading a fp 2023-01-25 17:47:04 +01:00
footprint_wizard.cpp
footprint_wizard.h More wxString wide literals. 2022-02-05 21:29:34 +00:00
footprint_wizard_frame.cpp Fix static event table derived object definitions. 2023-01-28 14:10:06 -05:00
footprint_wizard_frame.h
footprint_wizard_frame_functions.cpp More wxString wide literals. 2022-02-05 21:29:34 +00:00
fp_shape.cpp Add support for non-cardianlly-rotated text boxes. 2023-03-02 14:58:44 +00:00
fp_shape.h Rename GetSelectMenuText to GetItemDescription 2023-01-11 22:27:44 -05:00
fp_text.cpp Cleanup. 2023-06-17 16:04:56 +01:00
fp_text.h Use rendered text to generate bounding box for knockout text. 2023-06-06 11:19:41 +01:00
fp_text_grid_table.cpp Add missing property to footprint texts table. 2023-05-03 17:58:29 +01:00
fp_text_grid_table.h Add missing property to footprint texts table. 2023-05-03 17:58:29 +01:00
fp_textbox.cpp Fix accidental plotting of disabled textbox borders 2023-08-24 21:14:27 -04:00
fp_textbox.h Fix accidental plotting of disabled textbox borders 2023-08-24 21:14:27 -04:00
fp_tree_model_adapter.cpp Add pin/unpin context menu to Symbol Chooser and Footprint Chooser. 2022-09-21 14:45:12 +01:00
fp_tree_model_adapter.h Add pin/unpin context menu to Symbol Chooser and Footprint Chooser. 2022-09-21 14:45:12 +01:00
fp_tree_synchronizing_adapter.cpp Treat canvas item as current when tree view contains no selection. 2023-06-10 10:57:14 +01:00
fp_tree_synchronizing_adapter.h Treat canvas item as current when tree view contains no selection. 2023-06-10 10:57:14 +01:00
generate_footprint_info.cpp Handle updated document description format 2022-04-15 11:17:01 -07:00
generate_footprint_info.h
graphics_cleaner.cpp GRAPHICS_CLEANER: fix bad detection of short Bezier curves that can be cleaned 2022-12-10 18:19:09 +01:00
graphics_cleaner.h Add pad-recombining to FPEditor's Cleanup Graphics. 2022-09-24 19:34:06 +01:00
grid_layer_box_helpers.cpp
grid_layer_box_helpers.h
initpcb.cpp BoardDesignSettings are owned by FOOTPRINT_EDITOR_SETTINGS in the FP Editor. 2023-06-12 10:08:09 +01:00
invoke_pcb_dialog.h
io_mgr.cpp Rename PROPERTIES to STRING_UTF8_MAP for clarity 2022-11-06 11:51:52 -05:00
io_mgr.h Cleanup printf bits 2023-05-07 19:02:02 +03:00
kicad_clipboard.cpp Remove temp items from its group before deleting them 2023-08-02 23:32:45 +01:00
kicad_clipboard.h Rename PROPERTIES to STRING_UTF8_MAP for clarity 2022-11-06 11:51:52 -05:00
load_select_footprint.cpp Move saving preferences out of the destructor. 2022-11-14 20:01:37 +00:00
menubar_footprint_editor.cpp Never call ReCreateMenuBar inside a menu event handler 2022-12-16 16:37:51 -05:00
menubar_pcb_editor.cpp Small order change for three View menu items 2023-01-22 01:04:17 +00:00
netinfo.h Expose shared_ptr to swig 2023-03-09 14:02:48 +00:00
netinfo_item.cpp Fix netnames. 2023-01-27 19:35:41 +03:00
netinfo_list.cpp Coverity fixes and code cleaning. 2023-03-04 13:14:59 -05:00
pad.cpp Bug fixes for paste margins on custom-shaped pads. 2023-09-03 22:32:40 +01:00
pad.h Don't allow setting a pad width or height of 0. 2023-06-10 10:57:14 +01:00
pad_custom_shape_functions.cpp Name shortening and line-break reduction. 2022-10-21 18:41:39 +01:00
pcb_base_edit_frame.cpp Update dimension units when opening PCBs in CLI. 2023-03-14 11:56:33 +00:00
pcb_base_edit_frame.h Tighten lifecycle management of parent group pointers. 2022-11-11 17:27:28 +00:00
pcb_base_frame.cpp Move Spacemouse to advanced config 2023-04-25 11:30:36 -07:00
pcb_bitmap.cpp Pcbnew: Fix rotating bitmaps 2023-05-11 01:14:34 +00:00
pcb_bitmap.h Fix handling of PPI when loading embedded images 2023-02-15 00:42:30 +00:00
pcb_dimension.cpp Tailor inspector text properties for dimension objects. 2023-07-09 21:54:52 +01:00
pcb_dimension.h Move automatic dimension processing inside PCB_DIMENSION_BASE. 2023-03-12 21:04:09 +00:00
pcb_draw_panel_gal.cpp Locked shadows should not be on overlay 2023-01-27 22:09:42 -05:00
pcb_draw_panel_gal.h
pcb_edit_frame.cpp Prevent crash when a python script tries to use pcbnew too early. 2023-08-25 00:17:03 +03:00
pcb_edit_frame.h Update DRC exclusions model to match terminology. 2023-04-15 12:10:23 +01:00
pcb_expr_evaluator.cpp Bug fixes for handling boolean flags in DRC rules. 2023-06-02 00:20:11 +01:00
pcb_expr_evaluator.h Cleanup printf bits 2023-05-07 19:02:02 +03:00
pcb_expr_functions.cpp Revise method of selecting footprints in contrast 2023-09-29 12:09:11 -07:00
pcb_group.cpp Rename GetSelectMenuText to GetItemDescription 2023-01-11 22:27:44 -05:00
pcb_item_containers.h
pcb_layer_box_selector.cpp Improve HiDPI handling of appearance/layer controls 2023-03-07 08:49:06 -05:00
pcb_layer_box_selector.h
pcb_marker.cpp Rename GetSelectMenuText to GetItemDescription 2023-01-11 22:27:44 -05:00
pcb_marker.h Rename GetSelectMenuText to GetItemDescription 2023-01-11 22:27:44 -05:00
pcb_origin_transforms.cpp Remove bad static_cast. 2022-07-24 23:41:41 +01:00
pcb_origin_transforms.h
pcb_painter.cpp Don't include plating thickness when drawing hole clearance lines. 2023-09-06 16:31:46 +01:00
pcb_painter.h Dim other pads when in pad edit mode. 2023-01-06 11:13:57 +00:00
pcb_plot_params.cpp Avoid duplicating similar options in print and plot headers 2022-11-12 16:02:24 +01:00
pcb_plot_params.h Avoid duplicating similar options in print and plot headers 2022-11-12 16:02:24 +01:00
pcb_plot_params_parser.h Pcbnew: add plot on all layers feature. 2022-04-02 14:33:40 -04:00
pcb_plot_svg.cpp kicad-cli, export plot PDF and SVG: add missing option --drill-shape-opt. 2023-08-19 10:56:32 -04:00
pcb_plot_svg.h kicad-cli, export plot PDF and SVG: add missing option --drill-shape-opt. 2023-08-19 10:56:32 -04:00
pcb_screen.cpp
pcb_shape.cpp Fix some PCB_SHAPE properties 2023-02-24 01:24:41 +00:00
pcb_shape.h Add support for non-cardianlly-rotated text boxes. 2023-03-02 14:58:44 +00:00
pcb_target.cpp Rename GetSelectMenuText to GetItemDescription 2023-01-11 22:27:44 -05:00
pcb_target.h Rename GetSelectMenuText to GetItemDescription 2023-01-11 22:27:44 -05:00
pcb_text.cpp PCB_TEXT::TransformTextToPolySet() fix a typo that can creates a *lot* of 2023-07-11 13:12:47 +02:00
pcb_text.h Use rendered text to generate bounding box for knockout text. 2023-06-06 11:19:41 +01:00
pcb_textbox.cpp Fix accidental plotting of disabled textbox borders 2023-08-24 21:14:27 -04:00
pcb_textbox.h Fix accidental plotting of disabled textbox borders 2023-08-24 21:14:27 -04:00
pcb_track.cpp Pcbnew: fix some issues with very small arcs (size a few internal units) 2023-09-15 17:47:21 +02:00
pcb_track.h Pcbnew: fix some issues with very small arcs (size a few internal units) 2023-09-15 17:47:21 +02:00
pcb_view.cpp
pcb_view.h
pcbnew.cpp Flip the RegisterSettings order to avoid legacy import crashes 2023-09-04 23:22:39 -04:00
pcbnew.h Remove convert_to_biu.h, merge contents to base_units.h 2022-09-16 21:09:28 -04:00
pcbnew.icns
pcbnew_config.cpp Move to requiring explicit action to save project settings 2023-03-24 11:49:50 -07:00
pcbnew_config.h
pcbnew_doc.icns
pcbnew_id.h Footprint viewers: fix regression: re-add automatic zoom option when loading a new footprint 2022-04-18 11:15:14 +02:00
pcbnew_jobs_handler.cpp kicad-cli, export plot PDF and SVG: add missing option --drill-shape-opt. 2023-08-19 10:56:32 -04:00
pcbnew_jobs_handler.h Fix gerbers and drill plot not logging errors 2023-04-21 03:40:28 +00:00
pcbnew_printout.cpp Print hole walls if in colour (and printing real drill sizes). 2022-11-13 13:18:42 +00:00
pcbnew_printout.h PCBNEW_PRINTOUT: fix incorrect size of holes printed with the "small drill" option 2022-11-12 16:02:24 +01:00
pcbnew_settings.cpp Fix Search pane not remembering docking sizes and positions 2023-06-11 20:24:41 +00:00
pcbnew_settings.h Fix Search pane not remembering docking sizes and positions 2023-06-11 20:24:41 +00:00
pcbplot.cpp Allow plotting of multiple board layers per plot in Python. 2023-02-14 09:53:16 -05:00
pcbplot.h Use rendered text to generate bounding box for knockout text. 2023-06-06 11:19:41 +01:00
plot_board_layers.cpp Pcbnew: fix some issues with very small arcs (size a few internal units) 2023-09-15 17:47:21 +02:00
plot_brditems_plotter.cpp Fix accidental plotting of disabled textbox borders 2023-08-24 21:14:27 -04:00
plotcontroller.h Allow plotting of multiple board layers per plot in Python. 2023-02-14 09:53:16 -05:00
plotprint_opts.h Avoid duplicating similar options in print and plot headers 2022-11-12 16:02:24 +01:00
plugin.cpp Rename PROPERTIES to STRING_UTF8_MAP for clarity 2022-11-06 11:51:52 -05:00
sel_layer.cpp More wxString wide literals. 2022-02-05 21:29:34 +00:00
toolbars_footprint_editor.cpp Expose changing arc edit mode in arc button context menu and Preferences 2022-12-05 21:28:16 +03:00
toolbars_footprint_viewer.cpp Never call ReCreateMenuBar inside a menu event handler 2022-12-16 16:37:51 -05:00
toolbars_pcb_editor.cpp Fix Search pane not remembering docking sizes and positions 2023-06-11 20:24:41 +00:00
tracks_cleaner.cpp Refine track dangling test. 2023-07-09 21:08:51 +01:00
tracks_cleaner.h Performance enhancements for Cleanup Tracks & Vias.Performance enhancements for Cleanup Tracks & Vias.Performance enhancements for Cleanup Tracks & Vias.Performance enhancements for Cleanup Tracks & Vias.Performance enhancements for Cleanup Tracks & Vias.Performance enhancements for Cleanup Tracks & Vias.Performance enhancements for Cleanup Tracks & Vias.Performance enhancements for Cleanup Tracks & Vias.Performance enhancements for Cleanup Tracks & Vias. 2022-03-18 11:04:53 +00:00
undo_redo.cpp Implement undo/redo around Pad Edit Mode changes. 2023-09-02 11:18:34 +01:00
zone.cpp Allow GetLayer() to be used with single-layer zones. 2023-08-15 17:51:52 +01:00
zone.h Some router/DRC performance boost (ZONE::GetZoneName) 2023-08-04 23:56:02 +03:00
zone_filler.cpp Revert "Record hole knockouts in zone filler earlier" 2023-08-25 07:35:06 +02:00
zone_filler.h Fix an edge-case in the spoke genration logic for non-cardinal spokes. 2022-10-01 19:31:47 +01:00
zone_settings.cpp Zones: use metric defaults and limits instead of mixed units 2023-02-11 07:39:29 -05:00
zone_settings.h Set new zone priority to unique number 2022-08-24 16:37:57 -07:00
zones.h Zones: use metric defaults and limits instead of mixed units 2023-02-11 07:39:29 -05:00
zones_functions_for_undo_redo.cpp More tightening of group parent lifecycles. 2022-11-16 00:42:38 +00:00
zones_functions_for_undo_redo.h Formatting and a bit of cleanup. 2022-10-21 18:41:39 +01:00