Maciej Suminski
40129d2244
Fixed cursor freeze after canceling a tool with cursor over a drag point
...
Fixes: lp:1716702
* https://bugs.launchpad.net/kicad/+bug/1716702
2017-11-08 11:41:45 +01:00
Maciej Suminski
f5c561e281
Fix build error due to missing optional::value_or()
2017-11-04 11:29:55 +01:00
Tomasz Włostowski
9932ff32ae
refactoring: wrapped boost::optional in OPT<> class for the purpose of easier transition to C++17 in the future
2017-11-03 23:59:02 +01:00
Tomasz Włostowski
781008bfa5
refactoring: allow to run TOOL_MANAGER and SELECTION_TOOL without a host wxFrame
2017-11-03 20:02:06 +01:00
jean-pierre charras
6300041ce4
Fix a focus issue in GAL canvas:
...
Sometimes there is no window that has the focus (it happens when an other PCB_BASE_FRAME is opened and is iconized on Windows).
2017-10-30 15:12:41 +01:00
jean-pierre charras
788972554b
minor fix
2017-10-23 19:11:32 +02:00
jean-pierre charras
eb2340bc23
Show/Hide icons in menus (according to Icons option) in GAL, like in Legacy mode.
...
Cosmetic enhancement in Gerbview context menu.
2017-10-23 18:48:03 +02:00
jean-pierre charras
4905bbe500
hotkey management: enhancements in code to know if a hotkey was handled by an event or not.
...
No actual change in key management: in legacy it was partially existing, and not yet used in GAL mode.
2017-10-06 09:23:13 +02:00
Jon Evans
77bf22359e
Move zoom_tool.h to include
2017-09-25 13:35:01 +02:00
jean-pierre charras
b18601dfc6
Send wxEVENT_CHAR to GUI (if the key is not a special key that scrolls the draw panel) both on Linux and Windows
...
fix lp:1718488
2017-09-20 20:21:54 +02:00
jean-pierre charras
48393c605e
Try to fix special keys (ARROWS, PAGE UP/DOWN) issues both on Linux and Windows in GAL mode
...
Fixes: lp:1717270
https://bugs.launchpad.net/kicad/+bug/1717270
2017-09-18 16:04:31 +02:00
jean-pierre charras
e2505cb2fd
better fix than commit c0bc2f1
that tried to fix an overzealous event propagation:
...
The fix is now only for Windows, because it creates issues and does not fix the special keys issues on Linux.
This is due to the serious differences in event management between platforms.
2017-09-15 16:29:26 +02:00
jean-pierre charras
c0bc2f1bee
Try to fix an overzealous event propagation that creates some key events (arrows, page up page down and some others) and mouse events called twice.
...
the first call is the right call, the last call being the default handler.
2017-09-15 11:29:50 +02:00
Jon Evans
eec1366ead
Move ZOOM_TOOL to common; add RMB-drag to zoom out
2017-08-31 10:04:00 +02:00
Tomasz Włostowski
2e4c22f718
router: fix corruption of board data when the inline drag is activated while the router tool is running
...
Fixes: lp:1712838
* https://bugs.launchpad.net/kicad/+bug/1712838
2017-08-30 01:16:06 +02:00
Maciej Suminski
ef22c2589d
Store forced cursor position in VC_SETTINGS
2017-08-07 08:59:32 +02:00
Maciej Suminski
76bd05a69b
Prevent creating too many transitions by TOOL_MANAGER
...
- added TOOL_INTERACTIVE::resetTransitions()
- made protected and moved TOOL_BASE::setTransitions() to TOOL_INTERACTIVE
- TOOL_MANAGER calls TOOL_INTERACTIVE::resetTransitions() instead of
setTransitions()
2017-07-31 15:09:19 +02:00
Maciej Suminski
2652cfeafd
Restore the cursor position after the context menu is closed
...
Fixes: lp:1696328
* https://bugs.launchpad.net/kicad/+bug/1696328
2017-07-28 10:55:38 +02:00
Maciej Suminski
950d87a920
Removed boost::adaptor from ACTION_MANAGER
2017-07-27 16:06:30 +02:00
Maciej Suminski
75f68061a4
Save the drag origin only on the first click
2017-07-27 10:54:08 +02:00
Tomasz Włostowski
3b16d3cffe
further DLIST/Iterators cleanup, some code formatting
2017-06-23 11:12:37 +02:00
Tomasz Włostowski
9ad886344b
New connectivity algorithm.
2017-06-23 11:12:36 +02:00
Maciej Suminski
dcc803ecb1
VIEW_CONTROLS::GetMousePosition() returns the mouse position in world coordinates.
2017-06-12 16:24:52 +02:00
Maciej Suminski
bf590780b8
Do not store 'force cursor position' setting in VIEW_CONTROLS::SETTINGS
...
Fixes: lp:1678875
* https://bugs.launchpad.net/kicad/+bug/1678875
2017-04-04 00:57:54 +02:00
John Beard
78a5185857
Allow GAL cursor to be always displayed
...
A new items is added to the GAL display options (and the dialog), and a
hotkey (Ctrl+Shift+x) is added to toggle it.
Fixes: lp:1673633
* https://bugs.launchpad.net/kicad/+bug/1673633
2017-03-22 10:04:56 +01:00
Tomasz Włostowski
3cc90ce2d2
Fixed center-on-zoom behaviour in the GAL canvas
...
Fixes: lp:1672868
* https://bugs.launchpad.net/kicad/+bug/1672868
2017-03-15 11:48:35 +01:00
Maciej Suminski
338735c5bf
Added a missing include to tool_manager.h
...
Previously full information about VC_SETTINGS type was not
available, so it was not possible to create a VC_SETTINGS stack
for some compilers.
2017-03-07 17:18:58 +01:00
Maciej Suminski
c6e3ac7067
Removed boost::adaptors from TOOL_MANAGER
2017-03-07 17:18:22 +01:00
Maciej Suminski
fc4240886b
Store VIEW_CONTROLS settings on a stack
...
This is the right implementation of the commit b25ded4d
.
Previously if there were tools launched from another tool,
the settings could be stored in a wrong TOOL_STATE object.
2017-03-06 15:04:27 +01:00
Maciej Suminski
d1550b0cdb
Renamed VIEW_CONTROLS::SETTINGS to VC_SETTINGS.
...
Because nested types cannot be forwarded.
2017-03-06 15:04:27 +01:00
Maciej Suminski
ac38f1112d
Removed duplicated code from TOOL_MANAGER::RunAction()
2017-03-06 15:04:27 +01:00
Jon Evans
88f7c55d95
Move ZoomFitScreen and ZoomPreset from PCBNEW_CONTROL to COMMON_TOOLS
...
BOARD::GetBoundingBox() now directly calls BOARD::ComputeBoundingBox()
and there is a new method BOARD::GetBoardEdgesBoundingBox() used for
call sites that needed to use ComputeBoundingBox( true ) in the past.
This allows COMMON_TOOLS to implement ZoomFitScreen without knowledge
of the BOARD class.
2017-03-03 13:28:19 +01:00
Maciej Suminski
1d8730752c
Restore valid force cursor setting before saving VIEW_CONTROLS settings
...
There are times, when TOOL_MANAGER has to force cursor position
to make tools work as expected (e.g. when popping up a menu,
so tools get the right click position instead of current position
pointing to an entry in the menu).
If another tool is invoked, VIEW_CONTROLS settings have to be stored
in the TOOL_STATE object. In such case, it is necessary to revert the
force cursor setting when saving VIEW_CONTROLS settings.
Fixes: lp:1668712
* https://bugs.launchpad.net/kicad/+bug/1668712
2017-03-02 12:07:09 +01:00
jean-pierre charras
8526935183
GAL: better progression between zoom in/zoom out (in/out/in sequence keeps the same zoom value)
2017-03-01 13:00:42 +01:00
Jon Evans
fd4e2b042c
Refactor SELECTION, SELECTION_CONDITIONS, and context menus to common
...
SELECTION now holds EDA_ITEMs not BOARD_ITEMs so various places had to
change to casting the selected items to BOARD_ITEMs.
Fixed compilation warnings on clang (Tom)
2017-02-28 14:47:20 +01:00
Maciej Suminski
adba96fd2b
Changed optional::value_or() to optional::get_value_or()
...
get_value_or() is considered deprecated, but still works in the newest
boost (1.63). On the other hand, value_or() is not available in some
versions that are still used by major distros.
2017-02-24 17:34:23 +01:00
Maciej Suminski
e34b73e187
Do not freeze cursor when a tool was cancelled using the context menu
...
dispatchContextMenu() stores the cursor position before displaying a
menu, so the tools use the original cursor position when processing
events (instead of the mouse position pointing to a menu entry). Later,
the previous position has to be restored, but if in the meantime the
tool was cancelled - previous settings were restored to a wrong tool.
2017-02-24 16:55:18 +01:00
Maciej Suminski
b25ded4d90
Store VIEW_CONTROLS settings when tools are switched
...
Fixes: lp:1663783
* https://bugs.launchpad.net/kicad/+bug/1663783
Fixes: lp:1667580
* https://bugs.launchpad.net/kicad/+bug/1667580
2017-02-24 16:47:19 +01:00
Maciej Suminski
72cae92320
Disable context menu trigger if the assigned menu is set to null
2017-02-24 13:32:43 +01:00
John Beard
c001c6114f
Add cancel interactive tool action to GAL
...
This is used to provide menu entries that allows cancellation of
interactive drawing and routing tools without needing the keyboard.
It is provided in the drawing tools and the router tool.
The cancel event doesn't have any new functionality (e.g. track rip-up
for the PNS router - lp:1448460), this just adds it to the menu, where
it behaves the same as an Escape keypress.
2017-02-24 10:37:07 +01:00
jean-pierre charras
a9d6af8001
Fix a comment
2017-02-23 13:17:23 +01:00
jean-pierre charras
10396ff435
Tool manager: renames Yield() to KiYield(), due to a collision name between the Yield macro in wxWidgets and Tool manager Yield.
...
Can be dependent on platforms.
2017-02-23 08:30:29 +01:00
Maciej Suminski
d7bf44eee0
Removed a few more headers from base_struct.h
2017-02-22 17:54:01 +01:00
Jon Evans
4c83b0a94d
Move TOOL_ACTIONs to their corresponding tools; create COMMON_TOOLS
...
Some grid/zoom tools are left in PCBNEW_CONTROL because they currently
depend on Pcbnew-specific class members. Once refactoring is done to
make it possible to use all zoom and grid controls outside of pcbnew,
these last tools can be moved to common to match their ACTIONs.
2017-02-22 10:32:48 +01:00
Jon Evans
167f45ca2b
Refactor COMMON_ACTIONS into a base and derived class
...
New virtual class ACTIONS is added as a member to EDA_DRAW_FRAME so
that the TOOL_DISPATCHER can have access to the appropriate derived
version of TranslateLegacyId()
2017-02-22 10:32:48 +01:00
John Beard
ca91c27852
Adjust pad sub-menu enablements
...
The apply settings and push settings options now take account of the
validity of the global pad settings when deciding whether to show or
not.
Global pad push now requires a source pad and doesn't push from the
global pad setting when there is no selection.
The whole submenu is hidden when there are no enabled items.
Fixes: lp:1664016
* https://bugs.launchpad.net/kicad/+bug/1664016
2017-02-20 11:08:34 +01:00
jean-pierre charras
283ba553ba
Change wxItemMenu GetLabel (deprecated) to GetItemLabelText
...
GetLabel can compile or not, depending on the compatibility level used to build wxWidgets.
2017-02-10 08:33:48 +01:00
Maciej Suminski
1bcbbb41cd
Fixed double menu entries in context menus
2017-02-10 00:08:53 +01:00
Maciej Suminski
060e163511
Fixed invoking TOOL_ACTIONs in submenus
...
Fixes: lp:1663101
* https://bugs.launchpad.net/kicad/+bug/1663101
2017-02-10 00:08:23 +01:00
Maciej Suminski
4b9243e0bf
Allow registering TOOLs in any order.
2017-01-30 13:21:43 +01:00
Maciej Suminski
8f82f04153
Copy menu title in CONTEXT_MENU::copyFrom()
2017-01-25 20:29:27 +01:00
Maciej Suminski
5d9190038f
TOOL_EVENTs of "message" type are passed to all tools
...
Message type is a kind of notification, so it should be received by all
interested tools. It used to be like that in the past, but has been
broken recently.
2017-01-25 11:31:55 +01:00
Maciej Suminski
1102eb0d0d
Store menu titles in CONTEXT_MENU
...
Previously a title had to be provided when a submenu was added,
but this led to storing the same title in many places.
2017-01-23 14:52:11 +01:00
Maciej Suminski
fc7be1a497
Removed redundant CONTEXT_MENU::m_parent field.
2017-01-23 11:40:59 +01:00
Maciej Suminski
682da70a86
Fixed the issue of creating and event handling in context menus (GAL).
...
When creating a copy of CONTEXT_MENU, always a CONTEXT_MENU instance was
constructed, whereas an inherited type should be used. Solved with
CONTEXT_MENU::create() that has to be overridden in inheriting classes.
Event & update handlers are now virtual functions, instead of setting
the handlers with Set{Event,Update}Handler().
2017-01-23 11:40:59 +01:00
Maciej Suminski
75fb04d650
TOOL_ACTIONs are handled with transitions, no handlers needed in the event loops
...
There used to be a number of TOOL_ACTIONs that had entries both in
SetTransitions() and the event loop, which seemed redundant and
troublesome.
Now it is not necessary anymore, transitions setup is enough to execute
associated actions.
2017-01-18 14:20:39 +01:00
decimad
6a9c1cb6a1
Split the undo/redo event into the two stages "pre" and "post" for convenient synchronization of dependent state.
2016-09-23 13:29:25 +02:00
decimad
ee3d75f273
Add coroutine call invocation context to identify the main stack frame.
...
Run the text draw-tool on the main stack frame.
Fixes: lp:1547282
* https://bugs.launchpad.net/kicad/+bug/1547282
2016-09-21 11:56:40 +02:00
Maciej Suminski
cdc951d0a3
Fixed a crash when dragging a line was interrupted
...
Crash was caused by removing an element from m_activeTools list, causing other iterators to be invalidated.
2016-08-08 17:20:02 +02:00
Michael Steinberg
86496d3141
Pcbnew: fix dangling board reference crash in GAL. (fixes lp:1584489)
2016-08-05 13:45:14 -04:00
decimad
532634abf2
fix reentrant tool state crash
2016-08-02 10:34:27 +02:00
Michael Steinberg
06d4894fdb
boost::context fixes to make it compatible with boost 1.61
2016-07-05 00:14:32 +02:00
Maciej Suminski
33e7fe6211
Fix a crash caused by invalid iterator (thanks to Michael Steinberg)
...
TOOL_MANAGER::finishTool() caused iterator to become invalid when an element was removed from the m_activeTools deque.
2016-07-04 16:12:21 +02:00
Simon Richter
1b2fd6a382
Replace BOOST_FOREACH with C++11 range based for.
2016-06-29 16:07:55 -04:00
Michael Steinberg
fde12ebd25
Replace boost::function and boost::bind with their std:: counterparts
2016-06-29 12:23:11 +02:00
Simon Richter
96ec9db5d6
Add missing C++ stdlib headers
...
The GCC standard library headers often include other headers, which makes
some code compile that forgets to include several headers.
2016-05-28 12:46:29 -04:00
Collin Anderson
08b52131df
Fix beep on hotkey press in OS X
2016-05-05 11:34:16 -04:00
Maciej Suminski
031fbb4630
Avoid too frequent message panel updates.
2016-05-02 16:12:17 +02:00
Bernhard Stegmaier
3e2b4244f9
OSX: add support for wxMagnifyEvent on OSX builds using wxWidgets 3.1.0 or greater.
2016-01-24 19:18:29 -05:00
Maciej Suminski
d373915340
Fixed crash when context menu is invoked during track dragging (GAL).
2015-12-03 14:26:12 +01:00
Maciej Suminski
a09d6431e4
Coverity report fix: handle an exception potentially thrown by CONTEXT_MENU::runOnSubmenus.
2015-08-15 16:00:33 +02:00
Maciej Suminski
03d8d6850a
Minor fixes. - Prevent a crash if m_activeTools is empty (should not happen, but you know the Murphy's law) - Better use of conditions in FOOTPRINT_EDIT_FRAME::Process_Special_Functions()
2015-08-07 18:17:51 +02:00
Maciej Suminski
9ecc593aac
TOOL_SETTINGS acquires wxConfigBase each time it is used.
2015-08-07 18:17:51 +02:00
Tomasz Wlostowski
9c2bcb2f3c
Fixed crash on right click on zone with GAL mode.
2015-08-03 11:53:58 +02:00
Maciej Suminski
29cbaa206e
Fixed updating of Zoom & Grid context menus.
2015-07-30 13:49:35 +02:00
Maciej Suminski
094c286024
Fixed issues reported by Coverity.
2015-07-30 13:49:35 +02:00
Maciej Suminski
c9837595ef
Fixed VIEW_CONTROLS too frequent reset.
2015-07-28 10:30:06 +02:00
Maciej Suminski
e9921d8eea
Fixed an assert when footprint viewer was closed before the pcbnew window.
2015-07-28 10:29:00 +02:00
Maciej Suminski
d010703eaf
Fixed cursor freeze in pcbnew (GAL).
2015-07-24 10:58:47 +02:00
Maciej Suminski
d6bc33bd42
Removed a few more memory leaks and fixed crash on exit.
2015-07-24 09:42:46 +02:00
Maciej Suminski
982eee7905
Do not invoke PNS inline dragging when 'Duplicate' is run.
2015-07-24 09:42:45 +02:00
Maciej Suminski
59af7a96f8
Minor code cleaning.
2015-07-15 14:08:52 +02:00
Maciej Suminski
4661e39e08
Fixed displayed modifiers for hotkeys in context menus (GAL).
2015-07-07 18:37:00 +02:00
Maciej Suminski
3cb095b7c2
GAL canvases update status bar, message panel & zoom widget.
2015-07-03 20:58:12 +02:00
Maciej Suminski
766da1e494
Code formatting.
2015-07-02 16:11:15 +02:00
Tomasz Wlostowski
a86fda1d37
tools: added TOOL_SETTINGS class for storing persistent tool settings in config file (just a wrapper for wxConfigBase) router: free angle mode (mark obstacles only) & persistent settings
2015-07-02 16:09:51 +02:00
Maciej Suminski
a988ebaabd
Zone merging (GAL).
2015-06-19 17:32:33 +02:00
Maciej Suminski
dd5275f6c6
Minor SELECTION_TOOL fixes.
2015-06-16 14:51:39 +02:00
Maciej Suminski
5c6ecb0491
Zoom hotkeys fix for Windows (GAL).
2015-06-16 14:22:12 +02:00
Garth Corral
6eaf029a0e
Pinch to zoom for OS X.
2015-05-21 22:54:29 +02:00
Maciej Suminski
da75c52665
Hot keys settings are synchronized between GAL & legacy
2015-05-05 20:39:42 +02:00
Maciej Suminski
99e5228948
Moved the list of TOOL_ACTIONs to ACTION_MANAGER.
2015-05-05 20:39:41 +02:00
jean-pierre charras
2047d87317
Minor fixes (Bug #1414328 and Bug #1440312 ). Remove translatable attribute in a debug message.
...
tools/edit_tool.cpp: remove limitation (GAL mode) to delete the last pad in a footprint (a footprint can have 0 pad, for instance a logo)
2015-05-01 17:01:09 +02:00
Maciej Suminski
8390fec69d
Minor fixes.
2015-04-30 10:46:08 +02:00
Maciej Suminski
e37b07a6fc
Explicit destruction of menu entries in CONTEXT_MENU.
2015-04-30 10:46:07 +02:00
Maciej Suminski
b218c1099f
Added TA_CONTEXT_MENU_CLOSED tool event.
2015-04-30 10:46:07 +02:00
Maciej Suminski
f2788a3086
Corrected way of storing cursor coordinates for context
2015-04-30 10:46:06 +02:00
Maciej Suminski
06b978b829
Refactored CONTEXT_MENU, added handler for updating.
2015-04-30 10:46:05 +02:00
Maciej Suminski
4be876a13a
Expandable CONTEXT_MENUs (GAL). Minor CONTEXT_MENU
2015-04-30 10:46:04 +02:00
Maciej Suminski
946b9d1933
setTransitions() are called automatically for tools.
2015-04-30 10:46:03 +02:00