Skip to content

Commit

Permalink
DynamicIntFancyButton: Add synthesized secondary click on primary cli…
Browse files Browse the repository at this point in the history
…ck-and-hold

Exposes the ability to access the secondary click functionality even when a right mouse button might not be available (for example, when using a touch screen)

clickSecondary() can handle this differently from a true secondary click, if desired
  • Loading branch information
past-due committed Aug 29, 2023
1 parent 25f284a commit d8737c5
Show file tree
Hide file tree
Showing 7 changed files with 21 additions and 10 deletions.
4 changes: 2 additions & 2 deletions src/hci/build.cpp
Expand Up @@ -403,7 +403,7 @@ class BuildStatsButton: public StatsButton
BaseStatsController::scheduleDisplayStatsForm(controller);
}

void clickSecondary() override
void clickSecondary(bool synthesizedFromHold) override
{
auto droid = controller->getObjectAt(objectIndex);
ASSERT_NOT_NULLPTR_OR_RETURN(, droid);
Expand Down Expand Up @@ -495,7 +495,7 @@ class BuildOptionButton: public StatsFormButton
});
}

void clickSecondary() override
void clickSecondary(bool synthesizedFromHold) override
{
auto clickedStats = controller->getStatsAt(buildOptionIndex);
ASSERT_NOT_NULLPTR_OR_RETURN(, clickedStats);
Expand Down
2 changes: 1 addition & 1 deletion src/hci/commander.cpp
Expand Up @@ -294,7 +294,7 @@ class CommanderStatsButton: public StatsButton
controller->displayOrderForm();
}

void clickSecondary() override
void clickSecondary(bool synthesizedFromHold) override
{
auto droid = controller->getObjectAt(objectIndex);
ASSERT_NOT_NULLPTR_OR_RETURN(, droid);
Expand Down
2 changes: 1 addition & 1 deletion src/hci/groups.cpp
Expand Up @@ -132,7 +132,7 @@ class GroupButton : public DynamicIntFancyButton
controller->selectGroup(groupNumber);
}

void clickSecondary() override
void clickSecondary(bool synthesizedFromHold) override
{
controller->assignSelectedDroidsToGroup(groupNumber);
}
Expand Down
4 changes: 2 additions & 2 deletions src/hci/manufacture.cpp
Expand Up @@ -455,7 +455,7 @@ class ManufactureStatsButton: public StatsButton
BaseStatsController::scheduleDisplayStatsForm(controller);
}

void clickSecondary() override
void clickSecondary(bool synthesizedFromHold) override
{
auto factory = controller->getObjectAt(objectIndex);
ASSERT_NOT_NULLPTR_OR_RETURN(, factory);
Expand Down Expand Up @@ -559,7 +559,7 @@ class ManufactureOptionButton: public StatsFormButton
adjustFactoryProduction(true);
}

void clickSecondary() override
void clickSecondary(bool synthesizedFromHold) override
{
adjustFactoryProduction(false);
}
Expand Down
12 changes: 11 additions & 1 deletion src/hci/objects_stats.cpp
Expand Up @@ -156,10 +156,20 @@ void DynamicIntFancyButton::released(W_CONTEXT *context, WIDGET_KEY mouseButton)
}
else if (mouseButton == WKEY_SECONDARY)
{
clickSecondary();
clickSecondary(false);
}
}

bool DynamicIntFancyButton::clickHeld(W_CONTEXT *psContext, WIDGET_KEY key)
{
if (key == WKEY_PRIMARY)
{
clickSecondary(true);
return true;
}
return false;
}

void StatsButton::addProgressBar()
{
auto init = W_BARINIT();
Expand Down
5 changes: 3 additions & 2 deletions src/hci/objects_stats.h
Expand Up @@ -118,8 +118,9 @@ class DynamicIntFancyButton: public IntFancyButton
virtual void updateLayout();
void updateHighlight();
virtual void clickPrimary() {}
virtual void clickSecondary() {}
virtual void clickSecondary(bool synthesizedFromHold) {}
void released(W_CONTEXT *context, WIDGET_KEY mouseButton = WKEY_PRIMARY) override;
bool clickHeld(W_CONTEXT *psContext, WIDGET_KEY key) override;
public:
DynamicIntFancyButton();
};
Expand Down Expand Up @@ -156,7 +157,7 @@ class ObjectButton : public DynamicIntFancyButton
virtual BaseObjectsController &getController() const = 0;
virtual void jump();

void clickSecondary() override
void clickSecondary(bool synthesizedFromHold) override
{
jump();
}
Expand Down
2 changes: 1 addition & 1 deletion src/hci/research.cpp
Expand Up @@ -470,7 +470,7 @@ class ResearchStatsButton: public StatsButton
controller->refresh();
}

void clickSecondary() override
void clickSecondary(bool synthesizedFromHold) override
{
auto facility = controller->getObjectAt(objectIndex);
ASSERT_NOT_NULLPTR_OR_RETURN(, facility);
Expand Down

0 comments on commit d8737c5

Please sign in to comment.