Fix up mouseover handling in the port matrix.
git-svn-id: svn://localhost/ardour2/branches/3.0@4478 d708f5d6-7413-0410-9779-e7cbd77b26cf
This commit is contained in:
parent
018fff15ef
commit
23e7641a9b
|
@ -29,11 +29,10 @@ PortMatrixBody::PortMatrixBody (PortMatrix* p)
|
||||||
_row_labels (p, this),
|
_row_labels (p, this),
|
||||||
_grid (p, this),
|
_grid (p, this),
|
||||||
_xoffset (0),
|
_xoffset (0),
|
||||||
_yoffset (0),
|
_yoffset (0)
|
||||||
_pointer_inside (false)
|
|
||||||
{
|
{
|
||||||
modify_bg (Gtk::STATE_NORMAL, Gdk::Color ("#00000"));
|
modify_bg (Gtk::STATE_NORMAL, Gdk::Color ("#00000"));
|
||||||
add_events (Gdk::ENTER_NOTIFY_MASK | Gdk::LEAVE_NOTIFY_MASK | Gdk::POINTER_MOTION_MASK);
|
add_events (Gdk::LEAVE_NOTIFY_MASK | Gdk::POINTER_MOTION_MASK);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -263,13 +262,7 @@ PortMatrixBody::setup ()
|
||||||
_row_labels.setup ();
|
_row_labels.setup ();
|
||||||
_grid.setup ();
|
_grid.setup ();
|
||||||
|
|
||||||
set_mouseover (
|
set_mouseover (PortMatrixNode ());
|
||||||
PortMatrixNode (
|
|
||||||
ARDOUR::BundleChannel (boost::shared_ptr<ARDOUR::Bundle> (), 0),
|
|
||||||
ARDOUR::BundleChannel (boost::shared_ptr<ARDOUR::Bundle> (), 0)
|
|
||||||
)
|
|
||||||
);
|
|
||||||
|
|
||||||
compute_rectangles ();
|
compute_rectangles ();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -365,12 +358,10 @@ PortMatrixBody::rebuild_and_draw_row_labels ()
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
PortMatrixBody::on_enter_notify_event (GdkEventCrossing* ev)
|
PortMatrixBody::on_leave_notify_event (GdkEventCrossing* ev)
|
||||||
{
|
{
|
||||||
if (ev->type == GDK_ENTER_NOTIFY) {
|
if (ev->type == GDK_LEAVE_NOTIFY) {
|
||||||
_pointer_inside = true;
|
set_mouseover (PortMatrixNode ());
|
||||||
} else if (ev->type == GDK_LEAVE_NOTIFY) {
|
|
||||||
_pointer_inside = false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
@ -379,7 +370,7 @@ PortMatrixBody::on_enter_notify_event (GdkEventCrossing* ev)
|
||||||
bool
|
bool
|
||||||
PortMatrixBody::on_motion_notify_event (GdkEventMotion* ev)
|
PortMatrixBody::on_motion_notify_event (GdkEventMotion* ev)
|
||||||
{
|
{
|
||||||
if (_pointer_inside && Gdk::Region (_grid.parent_rectangle()).point_in (ev->x, ev->y)) {
|
if (Gdk::Region (_grid.parent_rectangle()).point_in (ev->x, ev->y)) {
|
||||||
_grid.mouseover_event (
|
_grid.mouseover_event (
|
||||||
_grid.parent_to_component_x (ev->x),
|
_grid.parent_to_component_x (ev->x),
|
||||||
_grid.parent_to_component_y (ev->y)
|
_grid.parent_to_component_y (ev->y)
|
||||||
|
|
|
@ -64,7 +64,7 @@ protected:
|
||||||
void on_size_request (Gtk::Requisition *);
|
void on_size_request (Gtk::Requisition *);
|
||||||
void on_size_allocate (Gtk::Allocation &);
|
void on_size_allocate (Gtk::Allocation &);
|
||||||
bool on_button_press_event (GdkEventButton *);
|
bool on_button_press_event (GdkEventButton *);
|
||||||
bool on_enter_notify_event (GdkEventCrossing *);
|
bool on_leave_notify_event (GdkEventCrossing *);
|
||||||
bool on_motion_notify_event (GdkEventMotion *);
|
bool on_motion_notify_event (GdkEventMotion *);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
@ -85,7 +85,6 @@ private:
|
||||||
Gdk::Rectangle _grid_rect;
|
Gdk::Rectangle _grid_rect;
|
||||||
uint32_t _xoffset;
|
uint32_t _xoffset;
|
||||||
uint32_t _yoffset;
|
uint32_t _yoffset;
|
||||||
bool _pointer_inside;
|
|
||||||
|
|
||||||
PortMatrixNode _mouseover;
|
PortMatrixNode _mouseover;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user