273e421813f295d65aab512f508e8fb575d997d4gouldtj/** @file
273e421813f295d65aab512f508e8fb575d997d4gouldtj * Fine-grained modifier tracker for event handling.
273e421813f295d65aab512f508e8fb575d997d4gouldtj */
273e421813f295d65aab512f508e8fb575d997d4gouldtj/* Authors:
273e421813f295d65aab512f508e8fb575d997d4gouldtj * Krzysztof KosiƄski <tweenk.pl@gmail.com>
273e421813f295d65aab512f508e8fb575d997d4gouldtj *
273e421813f295d65aab512f508e8fb575d997d4gouldtj * Copyright (C) 2009 Authors
273e421813f295d65aab512f508e8fb575d997d4gouldtj * Released under GNU GPL, read the file 'COPYING' for more information
273e421813f295d65aab512f508e8fb575d997d4gouldtj */
273e421813f295d65aab512f508e8fb575d997d4gouldtj
273e421813f295d65aab512f508e8fb575d997d4gouldtj#include <gdk/gdk.h>
273e421813f295d65aab512f508e8fb575d997d4gouldtj#include <gdk/gdkkeysyms.h>
5cf507fca7719ae9280d0a5199e024e920f1284dAlex Valavanis#include "ui/tool/event-utils.h"
273e421813f295d65aab512f508e8fb575d997d4gouldtj#include "ui/tool/modifier-tracker.h"
273e421813f295d65aab512f508e8fb575d997d4gouldtj#include <gtk/gtk.h>
273e421813f295d65aab512f508e8fb575d997d4gouldtj
273e421813f295d65aab512f508e8fb575d997d4gouldtjnamespace Inkscape {
273e421813f295d65aab512f508e8fb575d997d4gouldtjnamespace UI {
273e421813f295d65aab512f508e8fb575d997d4gouldtj
273e421813f295d65aab512f508e8fb575d997d4gouldtjModifierTracker::ModifierTracker()
273e421813f295d65aab512f508e8fb575d997d4gouldtj : _left_shift(false)
d9711532c4ac816bb0dd355f048ce0e26f542710gouldtj , _right_shift(false)
273e421813f295d65aab512f508e8fb575d997d4gouldtj , _left_ctrl(false)
273e421813f295d65aab512f508e8fb575d997d4gouldtj , _right_ctrl(false)
273e421813f295d65aab512f508e8fb575d997d4gouldtj , _left_alt(false)
273e421813f295d65aab512f508e8fb575d997d4gouldtj , _right_alt(false)
273e421813f295d65aab512f508e8fb575d997d4gouldtj{}
273e421813f295d65aab512f508e8fb575d997d4gouldtj
273e421813f295d65aab512f508e8fb575d997d4gouldtjbool ModifierTracker::event(GdkEvent *event)
273e421813f295d65aab512f508e8fb575d997d4gouldtj{
273e421813f295d65aab512f508e8fb575d997d4gouldtj switch (event->type) {
273e421813f295d65aab512f508e8fb575d997d4gouldtj case GDK_KEY_PRESS:
273e421813f295d65aab512f508e8fb575d997d4gouldtj switch (shortcut_key(event->key)) {
273e421813f295d65aab512f508e8fb575d997d4gouldtj case GDK_KEY_Shift_L:
273e421813f295d65aab512f508e8fb575d997d4gouldtj _left_shift = true;
273e421813f295d65aab512f508e8fb575d997d4gouldtj break;
273e421813f295d65aab512f508e8fb575d997d4gouldtj case GDK_KEY_Shift_R:
273e421813f295d65aab512f508e8fb575d997d4gouldtj _right_shift = true;
e4a9f366dbcb54f76b8c42869fa6873808132357gouldtj break;
273e421813f295d65aab512f508e8fb575d997d4gouldtj case GDK_KEY_Control_L:
273e421813f295d65aab512f508e8fb575d997d4gouldtj _left_ctrl = true;
57e8d5fd57a890842b51a13207e222fcf953816cJazzyNico break;
57e8d5fd57a890842b51a13207e222fcf953816cJazzyNico case GDK_KEY_Control_R:
d9711532c4ac816bb0dd355f048ce0e26f542710gouldtj _right_ctrl = true;
273e421813f295d65aab512f508e8fb575d997d4gouldtj break;
273e421813f295d65aab512f508e8fb575d997d4gouldtj case GDK_KEY_Alt_L:
273e421813f295d65aab512f508e8fb575d997d4gouldtj _left_alt = true;
273e421813f295d65aab512f508e8fb575d997d4gouldtj break;
273e421813f295d65aab512f508e8fb575d997d4gouldtj case GDK_KEY_Alt_R:
a649057d824379292b26fc4d4cc99ba46b9eb26eKris _right_alt = true;
273e421813f295d65aab512f508e8fb575d997d4gouldtj break;
273e421813f295d65aab512f508e8fb575d997d4gouldtj }
273e421813f295d65aab512f508e8fb575d997d4gouldtj break;
273e421813f295d65aab512f508e8fb575d997d4gouldtj case GDK_KEY_RELEASE:
273e421813f295d65aab512f508e8fb575d997d4gouldtj switch (shortcut_key(event->key)) {
273e421813f295d65aab512f508e8fb575d997d4gouldtj case GDK_KEY_Shift_L:
273e421813f295d65aab512f508e8fb575d997d4gouldtj _left_shift = false;
273e421813f295d65aab512f508e8fb575d997d4gouldtj break;
case GDK_KEY_Shift_R:
_right_shift = false;
break;
case GDK_KEY_Control_L:
_left_ctrl = false;
break;
case GDK_KEY_Control_R:
_right_ctrl = false;
break;
case GDK_KEY_Alt_L:
_left_alt = false;
break;
case GDK_KEY_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:fileencoding=utf-8:textwidth=99 :