diff options
| author | mjwybrow <mjwybrow@users.sourceforge.net> | 2006-02-14 23:16:36 +0000 |
|---|---|---|
| committer | mjwybrow <mjwybrow@users.sourceforge.net> | 2006-02-14 23:16:36 +0000 |
| commit | a9a58c786b8c4dd7fd3e3d6aedede43d7ea4de9e (patch) | |
| tree | 816da9033c8624ebca7765f8b9db780925be3b2a /src/display/sp-canvas.cpp | |
| parent | shuffling includes to make it compile again (diff) | |
| download | inkscape-a9a58c786b8c4dd7fd3e3d6aedede43d7ea4de9e.tar.gz inkscape-a9a58c786b8c4dd7fd3e3d6aedede43d7ea4de9e.zip | |
* src/display/sp-canvas.cpp, display/sp-canvas.h, connector-context.cpp:
Revert a previous change that generated enter events for canvas items
other than the current one when mouse buttons were depressed. These
events are now only generated in the connector context, where they are
required.
(bzr r142)
Diffstat (limited to 'src/display/sp-canvas.cpp')
| -rw-r--r-- | src/display/sp-canvas.cpp | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/src/display/sp-canvas.cpp b/src/display/sp-canvas.cpp index 1c1171d35..b1ed7d3d2 100644 --- a/src/display/sp-canvas.cpp +++ b/src/display/sp-canvas.cpp @@ -960,6 +960,9 @@ sp_canvas_init (SPCanvas *canvas) canvas->need_repick = TRUE; + // See comment at in sp-canvas.h. + canvas->gen_all_enter_events = false; + canvas->tiles=NULL; canvas->tLeft=canvas->tTop=canvas->tRight=canvas->tBottom=0; canvas->tileH=canvas->tileV=0; @@ -1251,10 +1254,22 @@ emit_event (SPCanvas *canvas, GdkEvent *event) static int pick_current_item (SPCanvas *canvas, GdkEvent *event) { + int button_down; double x, y; int retval = FALSE; + if (canvas->gen_all_enter_events == false) { + // If a button is down, we'll perform enter and leave events on the + // current item, but not enter on any other item. This is more or + // less like X pointer grabbing for canvas items. + // + button_down = canvas->state & (GDK_BUTTON1_MASK | GDK_BUTTON2_MASK | + GDK_BUTTON3_MASK | GDK_BUTTON4_MASK | GDK_BUTTON5_MASK); + + if (!button_down) canvas->left_grabbed_item = FALSE; + } + /* Save the event in the canvas. This is used to synthesize enter and * leave events in case the current item changes. It is also used to * re-pick the current item if the current one gets deleted. Also, @@ -1342,6 +1357,15 @@ pick_current_item (SPCanvas *canvas, GdkEvent *event) canvas->in_repick = FALSE; } + if (canvas->gen_all_enter_events == false) { + // new_current_item may have been set to NULL during the call to + // emit_event() above + if ((canvas->new_current_item != canvas->current_item) && button_down) { + canvas->left_grabbed_item = TRUE; + return retval; + } + } + /* Handle the rest of cases */ canvas->left_grabbed_item = FALSE; |
