1
0
mirror of https://github.com/cookiengineer/audacity synced 2025-06-16 16:10:06 +02:00

Move declarations again, to LabelGlyphHandle; remove a friend

This commit is contained in:
Paul Licameli 2018-11-09 08:10:16 -05:00
parent 5eb5e24ab0
commit 6af9187003
4 changed files with 34 additions and 29 deletions

View File

@ -1525,13 +1525,13 @@ auto LabelStruct::RegionRelation(
/// @iEdge - which edge is requested to move, -1 for left +1 for right.
/// @bAllowSwapping - if we can switch which edge is being dragged.
/// fNewTime - the NEW time for this edge of the label.
void LabelTrackView::MayAdjustLabel
void LabelGlyphHandle::MayAdjustLabel
( LabelTrackHit &hit, int iLabel, int iEdge, bool bAllowSwapping, double fNewTime)
{
if( iLabel < 0 )
return;
const auto pTrack = FindLabelTrack();
const auto pTrack = mpLT;
const auto &mLabels = pTrack->GetLabels();
auto labelStruct = mLabels[ iLabel ];
@ -1559,12 +1559,12 @@ void LabelTrackView::MayAdjustLabel
}
// If the index is for a real label, adjust its left and right boundary.
void LabelTrackView::MayMoveLabel( int iLabel, int iEdge, double fNewTime)
void LabelGlyphHandle::MayMoveLabel( int iLabel, int iEdge, double fNewTime)
{
if( iLabel < 0 )
return;
const auto pTrack = FindLabelTrack();
const auto pTrack = mpLT;
const auto &mLabels = pTrack->GetLabels();
auto labelStruct = mLabels[ iLabel ];
labelStruct.MoveLabel( iEdge, fNewTime );
@ -1584,12 +1584,12 @@ static int Constrain( int value, int min, int max )
return result;
}
bool LabelTrackView::HandleGlyphDragRelease
bool LabelGlyphHandle::HandleGlyphDragRelease
(LabelTrackHit &hit, const wxMouseEvent & evt,
wxRect & r, const ZoomInfo &zoomInfo,
SelectedRegion *newSel)
{
const auto pTrack = FindLabelTrack();
const auto pTrack = mpLT;
const auto &mLabels = pTrack->GetLabels();
if(evt.LeftUp())
{
@ -1643,11 +1643,12 @@ bool LabelTrackView::HandleGlyphDragRelease
MayAdjustLabel( hit, hit.mMouseOverLabelRight, +1, bAllowSwapping, fNewX );
}
if( HasSelection() )
if( pTrack->HasSelection() )
{
auto selIndex = LabelTrackView::Get( *pTrack ).GetSelectedIndex();
//Set the selection region to be equal to
//the NEW size of the label.
*newSel = mLabels[mSelIndex].selectedRegion;
*newSel = mLabels[ selIndex ].selectedRegion;
}
pTrack->SortLabels();
}
@ -1701,7 +1702,7 @@ void LabelTrackView::HandleTextDragRelease(const wxMouseEvent & evt)
return;
}
void LabelTrackView::HandleGlyphClick
void LabelGlyphHandle::HandleGlyphClick
(LabelTrackHit &hit, const wxMouseEvent & evt,
const wxRect & r, const ZoomInfo &zoomInfo,
SelectedRegion *WXUNUSED(newSel))
@ -1709,8 +1710,8 @@ void LabelTrackView::HandleGlyphClick
if (evt.ButtonDown())
{
//OverGlyph sets mMouseOverLabel to be the chosen label.
const auto pTrack = FindLabelTrack();
OverGlyph(*pTrack, hit, evt.m_x, evt.m_y);
const auto pTrack = mpLT;
LabelTrackView::OverGlyph(*pTrack, hit, evt.m_x, evt.m_y);
hit.mIsAdjustingLabel = evt.Button(wxMOUSE_BTN_LEFT) &&
( hit.mEdge & 3 ) != 0;

View File

@ -129,7 +129,7 @@ UIHandle::Result LabelGlyphHandle::Click
const wxMouseEvent &event = evt.event;
auto &viewInfo = ViewInfo::Get( *pProject );
LabelTrackView::Get( *mpLT ).HandleGlyphClick(
HandleGlyphClick(
*mpHit, event, mRect, viewInfo, &viewInfo.selectedRegion);
if (! mpHit->mIsAdjustingLabel )
@ -159,7 +159,7 @@ UIHandle::Result LabelGlyphHandle::Drag
const wxMouseEvent &event = evt.event;
auto &viewInfo = ViewInfo::Get( *pProject );
LabelTrackView::Get( *mpLT ).HandleGlyphDragRelease(
HandleGlyphDragRelease(
*mpHit, event, mRect, viewInfo, &viewInfo.selectedRegion);
// Refresh all so that the change of selection is redrawn in all tracks
@ -180,7 +180,7 @@ UIHandle::Result LabelGlyphHandle::Release
const wxMouseEvent &event = evt.event;
auto &viewInfo = ViewInfo::Get( *pProject );
if (LabelTrackView::Get( *mpLT ).HandleGlyphDragRelease(
if (HandleGlyphDragRelease(
*mpHit, event, mRect, viewInfo, &viewInfo.selectedRegion)) {
ProjectHistory::Get( *pProject ).PushState(_("Modified Label"),
_("Label Edit"),

View File

@ -16,6 +16,8 @@ Paul Licameli split from TrackPanel.cpp
class wxMouseState;
class LabelTrack;
class LabelTrackEvent;
class SelectedRegion;
class ZoomInfo;
/// mEdge:
/// 0 if not over a glyph,
@ -87,8 +89,25 @@ public:
(const LabelGlyphHandle &oldState, const LabelGlyphHandle &newState);
private:
void HandleGlyphClick
(LabelTrackHit &hit,
const wxMouseEvent & evt, const wxRect & r, const ZoomInfo &zoomInfo,
SelectedRegion *newSel);
bool HandleGlyphDragRelease
(LabelTrackHit &hit,
const wxMouseEvent & evt, wxRect & r, const ZoomInfo &zoomInfo,
SelectedRegion *newSel);
void MayAdjustLabel
( LabelTrackHit &hit,
int iLabel, int iEdge, bool bAllowSwapping, double fNewTime);
void MayMoveLabel( int iLabel, int iEdge, double fNewTime);
std::shared_ptr<LabelTrack> mpLT {};
wxRect mRect {};
/// Displacement of mouse cursor from the centre being dragged.
int mxMouseDisplacement;
};
#endif

View File

@ -139,17 +139,9 @@ public:
private:
static bool IsTextClipSupported();
void HandleGlyphClick
(LabelTrackHit &hit,
const wxMouseEvent & evt, const wxRect & r, const ZoomInfo &zoomInfo,
SelectedRegion *newSel);
void HandleTextClick
(const wxMouseEvent & evt, const wxRect & r, const ZoomInfo &zoomInfo,
SelectedRegion *newSel);
bool HandleGlyphDragRelease
(LabelTrackHit &hit,
const wxMouseEvent & evt, wxRect & r, const ZoomInfo &zoomInfo,
SelectedRegion *newSel);
void HandleTextDragRelease(const wxMouseEvent & evt);
public:
@ -168,16 +160,10 @@ public:
private:
void CalcHighlightXs(int *x1, int *x2) const;
void MayAdjustLabel
( LabelTrackHit &hit,
int iLabel, int iEdge, bool bAllowSwapping, double fNewTime);
void MayMoveLabel( int iLabel, int iEdge, double fNewTime);
void ShowContextMenu();
void OnContextMenu(wxCommandEvent & evt);
mutable int mSelIndex{-1}; /// Keeps track of the currently selected label
int mxMouseDisplacement; /// Displacement of mouse cursor from the centre being dragged.
static int mIconHeight;
static int mIconWidth;
@ -226,7 +212,6 @@ private:
static wxFont msFont;
friend LabelDefaultClickHandle;
friend LabelGlyphHandle;
friend LabelTextHandle;
};