_TrackWidget struct

The TrackWidget is split into 3 parts.


  • 1. Top part contains the "main" view.
  • 2. Lane part contains each lane.
  • 3. Automation tracklist part contains each automation track.

Public variables

GtkBox* main_box
Main box containing the drawing area and the meters on the right.
char icon_name
Track icon, currently not placed anywhere but used by the ColorAreaWidget to get the pixbuf.
GtkGestureMultiPress* right_mouse_mp
Right-click gesture.
int dragged
If drag update was called at least once.
int n_press
Number of clicks, used when selecting/moving/ dragging channels.
int bg_hovered
Set between enter-leave signals.
int resize
Set when the drag should resize instead of dnd.
int resizing
Set during the whole resizing action.
TrackWidgetResizeTarget resize_target_type
Resize target type (track/at/lane).
void* resize_target
The object to resize.
Track* track
Associated Track.
int ctrl_held_at_start
Control held down on drag begin.
GtkBox* highlight_top_box
Used for highlighting.
int selected_in_dnd
The track selection processing was done in the dnd callbacks, so no need to do it in drag_end.
PangoLayout* layout
Cache layout for drawing the name.
double start_x
For drag actions.
double last_x
Used during hovering to remember the last known cursor position.
int button_pressed
Used when mouse button is held down to mark buttons as clicked.
CustomButtonWidget* clicked_button
Currently clicked button.
AutomationModeWidget* clicked_am
Currently clicked automation mode button.
CustomButtonWidget* top_buttons
Signal handler IDs for tracks that have them.
gint64 last_midi_out_trigger_time
Last MIDI event trigger time, for MIDI ports.
int redraw
Set to 1 to redraw.
cairo_t* cached_cr
Cairo caches.

Variable documentation

int _TrackWidget::bg_hovered

Set between enter-leave signals.

This is because hover can continue to send signals when hovering over other overlayed widgets (buttons, etc.).

int _TrackWidget::resize

Set when the drag should resize instead of dnd.

This is used to determine if we should resize on drag begin.

CustomButtonWidget* _TrackWidget::top_buttons

Signal handler IDs for tracks that have them.

This is more convenient instead of having them in each widget. Buttons to be drawin in order.