使用Gtk鼠标移动控件

时间:2012-06-29 20:23:03

标签: gtk widget vala

我在Gtk固定项目上移动控件时出现问题,代码抖动运动并且通常很慢。我已经尝试找到合适的方法来做到这一点,但是所有人都发现了同样的结果。

我认为相关的代码是:

        view.button_press_event.connect( (bp) => {
            view.set_data("in_motion", true);

            int pointX = 0; int pointY = 0;
            fixed.get_pointer(out pointX, out pointY);
            int origX = 0; int origY = 0;
            view.translate_coordinates(fixed, 0,0, out origX, out origY);

            view.set_data("startx", origX + origX);
            view.set_data("starty", origY + origY);
            view.set_data("startsx", pointX);
            view.set_data("startsy", pointY);
            view.is_focus = true;
            view.has_focus = true;
            return false;
        });
        view.button_release_event.connect( (bp) => {
            view.set_data("in_motion", false);
            return false;
        });
        view.motion_notify_event.connect( (me) => {
            // TODO: Make this less glitchy somehow
            if(view.get_data<bool>("in_motion") == true){
                int x = view.get_data<int>("startx") + (int)me.x - view.get_data<int>("startsx");
                int y = view.get_data<int>("starty") + (int)me.y - view.get_data<int>("startsy");
                ((Fixed)view.parent).move(view, x,y );
            }
            return false;
        });

(其余的在https://github.com/kennydude/diagramatic/blob/master/diagram.vala

1 个答案:

答案 0 :(得分:0)

好的,所以我设法做到了,但代码库转移到了python(Vala太难了)。

https://github.com/kennydude/diagramatic/blob/master/diagram.py