Tracker: Fix EditFirstWidget() pose location in icon mode.
The old code works because in icon-mode you have just one row but this is not the intended way to determine the pose location in icon mode (and mini-icon mode). Refactor CommitActivePose() and kEditName in PoseView. Use CurrentPoseList() to use filtered or regular pose list (but don't update both). In practical terms this should do nothing. Change-Id: Iedafb147a6963bdb1411491be25641141325c1bf Reviewed-on: https://review.haiku-os.org/c/haiku/+/10025 Reviewed-by: waddlesplash <[email protected]> Tested-by: Commit checker robot <[email protected]>
This commit is contained in:
committed by
waddlesplash
parent
a8deca6c41
commit
5388208c0b
@@ -1169,22 +1169,22 @@ BPoseView::SetActivePose(BPose* pose)
|
|||||||
void
|
void
|
||||||
BPoseView::CommitActivePose(bool saveChanges)
|
BPoseView::CommitActivePose(bool saveChanges)
|
||||||
{
|
{
|
||||||
BPose* activePose = ActivePose();
|
if (ActivePose() == NULL)
|
||||||
if (activePose != NULL) {
|
return;
|
||||||
int32 index = fPoseList->IndexOf(ActivePose());
|
|
||||||
if (IsFiltering())
|
|
||||||
index = fFilteredPoseList->IndexOf(ActivePose());
|
|
||||||
|
|
||||||
BPoint loc(0, index * fListElemHeight);
|
int32 index = CurrentPoseList()->IndexOf(fActivePose);
|
||||||
if (ViewMode() != kListMode)
|
|
||||||
loc = ActivePose()->Location(this);
|
|
||||||
|
|
||||||
activePose->Commit(saveChanges, loc, this, index);
|
BPoint poseLoc;
|
||||||
BPose* pose = fActivePose;
|
if (ViewMode() == kListMode)
|
||||||
fActivePose = NULL;
|
poseLoc = BPoint(0, index * fListElemHeight);
|
||||||
if (IsFiltering() && !FilterPose(pose))
|
else
|
||||||
RemoveFilteredPose(pose, index);
|
poseLoc = fActivePose->Location(this);
|
||||||
}
|
|
||||||
|
fActivePose->Commit(saveChanges, poseLoc, this, index);
|
||||||
|
BPose* activePose = fActivePose;
|
||||||
|
fActivePose = NULL;
|
||||||
|
if (IsFiltering() && !FilterPose(activePose))
|
||||||
|
RemoveFilteredPose(activePose, index);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -2509,14 +2509,20 @@ BPoseView::MessageReceived(BMessage* message)
|
|||||||
|
|
||||||
case kEditName:
|
case kEditName:
|
||||||
{
|
{
|
||||||
if (ActivePose())
|
if (ActivePose() != NULL)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
BPose* pose = fSelectionList->FirstItem();
|
BPose* pose = fSelectionList->FirstItem();
|
||||||
if (pose != NULL) {
|
if (pose == NULL)
|
||||||
BPoint where(0, CurrentPoseList()->IndexOf(pose) * fListElemHeight);
|
break;
|
||||||
pose->EditFirstWidget(where, this);
|
|
||||||
}
|
BPoint poseLoc;
|
||||||
|
if (ViewMode() == kListMode)
|
||||||
|
poseLoc = BPoint(0, CurrentPoseList()->IndexOf(pose) * fListElemHeight);
|
||||||
|
else
|
||||||
|
poseLoc = pose->Location(this);
|
||||||
|
|
||||||
|
pose->EditFirstWidget(poseLoc, this);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -3483,7 +3489,14 @@ BPoseView::NewFileFromTemplate(const BMessage* message)
|
|||||||
UpdateScrollRange();
|
UpdateScrollRange();
|
||||||
CommitActivePose();
|
CommitActivePose();
|
||||||
SelectPose(pose, index);
|
SelectPose(pose, index);
|
||||||
pose->EditFirstWidget(BPoint(0, index * fListElemHeight), this);
|
|
||||||
|
BPoint poseLoc;
|
||||||
|
if (ViewMode() == kListMode)
|
||||||
|
poseLoc = BPoint(0, index * fListElemHeight);
|
||||||
|
else
|
||||||
|
poseLoc = pose->Location(this);
|
||||||
|
|
||||||
|
pose->EditFirstWidget(poseLoc, this);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -3517,7 +3530,14 @@ BPoseView::NewFolder(const BMessage* message)
|
|||||||
UpdateScrollRange();
|
UpdateScrollRange();
|
||||||
CommitActivePose();
|
CommitActivePose();
|
||||||
SelectPose(pose, index);
|
SelectPose(pose, index);
|
||||||
pose->EditFirstWidget(BPoint(0, index * fListElemHeight), this);
|
|
||||||
|
BPoint poseLoc;
|
||||||
|
if (ViewMode() == kListMode)
|
||||||
|
poseLoc = BPoint(0, index * fListElemHeight);
|
||||||
|
else
|
||||||
|
poseLoc = pose->Location(this);
|
||||||
|
|
||||||
|
pose->EditFirstWidget(poseLoc, this);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user