diff options
| author | Krzysztof Kosi??ski <tweenk.pl@gmail.com> | 2010-03-14 17:38:50 +0000 |
|---|---|---|
| committer | Krzysztof Kosiński <tweenk.pl@gmail.com> | 2010-03-14 17:38:50 +0000 |
| commit | 90e813701a7865bc36755fb0f35ab74c4b6963a2 (patch) | |
| tree | 460a5260664b3e83e736918f5d2594445c3761c7 /src/ui/tool/modifier-tracker.cpp | |
| parent | disable console output on windows per default, as this probably annoys many b... (diff) | |
| download | inkscape-90e813701a7865bc36755fb0f35ab74c4b6963a2.tar.gz inkscape-90e813701a7865bc36755fb0f35ab74c4b6963a2.zip | |
Implement keyboard shortcuts for single handle adjustments.
Minor disambiguating cleanup in node.h.
(bzr r9190)
Diffstat (limited to 'src/ui/tool/modifier-tracker.cpp')
| -rw-r--r-- | src/ui/tool/modifier-tracker.cpp | 93 |
1 files changed, 93 insertions, 0 deletions
diff --git a/src/ui/tool/modifier-tracker.cpp b/src/ui/tool/modifier-tracker.cpp new file mode 100644 index 000000000..8c6033bc7 --- /dev/null +++ b/src/ui/tool/modifier-tracker.cpp @@ -0,0 +1,93 @@ +/** @file + * Fine-grained modifier tracker for event handling. + */ +/* Authors: + * Krzysztof Kosiński <tweenk.pl@gmail.com> + * + * Copyright (C) 2009 Authors + * Released under GNU GPL, read the file 'COPYING' for more information + */ + +#include <gdk/gdk.h> +#include <gdk/gdkkeysyms.h> +#include "ui/tool/event-utils.h" +#include "ui/tool/modifier-tracker.h" + +namespace Inkscape { +namespace UI { + +ModifierTracker::ModifierTracker() + : _left_shift(false) + , _right_shift(false) + , _left_ctrl(false) + , _right_ctrl(false) + , _left_alt(false) + , _right_alt(false) +{} + +bool ModifierTracker::event(GdkEvent *event) +{ + switch (event->type) { + case GDK_KEY_PRESS: + switch (shortcut_key(event->key)) { + case GDK_Shift_L: + _left_shift = true; + break; + case GDK_Shift_R: + _right_shift = true; + break; + case GDK_Control_L: + _left_ctrl = true; + break; + case GDK_Control_R: + _right_ctrl = true; + break; + case GDK_Alt_L: + _left_alt = true; + break; + case GDK_Alt_R: + _right_alt = true; + break; + } + break; + case GDK_KEY_RELEASE: + switch (shortcut_key(event->key)) { + case GDK_Shift_L: + _left_shift = false; + break; + case GDK_Shift_R: + _right_shift = false; + break; + case GDK_Control_L: + _left_ctrl = false; + break; + case GDK_Control_R: + _right_ctrl = false; + break; + case GDK_Alt_L: + _left_alt = false; + break; + case GDK_Alt_R: + _right_alt = false; + break; + } + break; + default: break; + } + + return false; +} + +} // namespace UI +} // namespace Inkscape + +/* + Local Variables: + mode:c++ + c-file-style:"stroustrup" + c-file-offsets:((innamespace . 0)(inline-open . 0)(case-label . +)) + indent-tabs-mode:nil + fill-column:99 + End: +*/ +// vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:encoding=utf-8:textwidth=99 : |
