summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorsmatz <smatz@openttd.org>2009-06-01 14:36:36 +0000
committersmatz <smatz@openttd.org>2009-06-01 14:36:36 +0000
commitda57fe63f348a1f4628b9f17df171f4c54f0d2e7 (patch)
treed8d0c13631718e8127e3735bacc56cb9114a45c7
parent1a506f5912b174f50e206b6489f5687d86ea23c6 (diff)
downloadopenttd-da57fe63f348a1f4628b9f17df171f4c54f0d2e7.tar.xz
(svn r16497) -Feature [FS#2870]: Q/W/E/D will now open the landscape toolbar and select appropriate tool
-rw-r--r--src/terraform_gui.cpp34
-rw-r--r--src/terraform_gui.h6
-rw-r--r--src/toolbar_gui.cpp2
3 files changed, 34 insertions, 8 deletions
diff --git a/src/terraform_gui.cpp b/src/terraform_gui.cpp
index e56945903..e281b6b03 100644
--- a/src/terraform_gui.cpp
+++ b/src/terraform_gui.cpp
@@ -350,20 +350,20 @@ static const WindowDesc _terraform_desc(
_terraform_widgets, _nested_terraform_widgets, lengthof(_nested_terraform_widgets)
);
-void ShowTerraformToolbar(Window *link)
+Window *ShowTerraformToolbar(Window *link)
{
- if (!Company::IsValidID(_local_company)) return;
+ if (!Company::IsValidID(_local_company)) return NULL;
Window *w = AllocateWindowDescFront<TerraformToolbarWindow>(&_terraform_desc, 0);
- if (link == NULL) return;
+ if (link == NULL) return w;
if (w == NULL) {
w = FindWindowById(WC_SCEN_LAND_GEN, 0);
+ if (w == NULL) return NULL;
} else {
w->top = 22;
w->SetDirty();
}
- if (w == NULL) return;
/* Align the terraform toolbar under the main toolbar and put the linked
* toolbar to left of it
@@ -371,6 +371,18 @@ void ShowTerraformToolbar(Window *link)
link->top = w->top;
link->left = w->left - link->width;
link->SetDirty();
+
+ return w;
+}
+
+void ShowTerraformToolbarWithTool(uint16 key, uint16 keycode)
+{
+ Window *w = FindWindowById(WC_SCEN_LAND_GEN, 0);
+
+ if (w == NULL) w = ShowTerraformToolbar(NULL);
+ if (w == NULL) return;
+
+ w->OnKeyPress(key, keycode);
}
static byte _terraform_size = 1;
@@ -774,7 +786,17 @@ static const WindowDesc _scen_edit_land_gen_desc(
_scen_edit_land_gen_widgets, _nested_scen_edit_land_gen_widgets, lengthof(_nested_scen_edit_land_gen_widgets)
);
-void ShowEditorTerraformToolbar()
+Window *ShowEditorTerraformToolbar()
+{
+ return AllocateWindowDescFront<ScenarioEditorLandscapeGenerationWindow>(&_scen_edit_land_gen_desc, 0);
+}
+
+void ShowEditorTerraformToolbarWithTool(uint16 key, uint16 keycode)
{
- AllocateWindowDescFront<ScenarioEditorLandscapeGenerationWindow>(&_scen_edit_land_gen_desc, 0);
+ Window *w = FindWindowById(WC_SCEN_LAND_GEN, 0);
+
+ if (w == NULL) w = ShowEditorTerraformToolbar();
+ if (w == NULL) return;
+
+ w->OnKeyPress(key, keycode);
}
diff --git a/src/terraform_gui.h b/src/terraform_gui.h
index b81f67d28..a7c3fa6f0 100644
--- a/src/terraform_gui.h
+++ b/src/terraform_gui.h
@@ -9,7 +9,9 @@
void CcTerraform(bool success, TileIndex tile, uint32 p1, uint32 p2);
-void ShowTerraformToolbar(Window *link = NULL);
-void ShowEditorTerraformToolbar();
+Window *ShowTerraformToolbar(Window *link = NULL);
+void ShowTerraformToolbarWithTool(uint16 key, uint16 keycode);
+Window *ShowEditorTerraformToolbar();
+void ShowEditorTerraformToolbarWithTool(uint16 key, uint16 keycode);
#endif /* GUI_H */
diff --git a/src/toolbar_gui.cpp b/src/toolbar_gui.cpp
index d97059d07..ec447a1e9 100644
--- a/src/toolbar_gui.cpp
+++ b/src/toolbar_gui.cpp
@@ -1096,6 +1096,7 @@ struct MainToolbarWindow : Window {
case WKC_CTRL | WKC_ALT | 'C': if (!_networking) ShowCheatWindow(); break;
case 'A': if (CanBuildVehicleInfrastructure(VEH_TRAIN)) ShowBuildRailToolbar(_last_built_railtype, 4); break; // Invoke Autorail
case 'L': ShowTerraformToolbar(); break;
+ case 'Q': case 'W': case 'E': case 'D': ShowTerraformToolbarWithTool(key, keycode); break;
case 'M': ShowSmallMap(); break;
case 'V': ShowExtraViewPortWindow(); break;
default: return ES_NOT_HANDLED;
@@ -1303,6 +1304,7 @@ public:
case WKC_SHIFT | WKC_F6: ToolbarZoomOutClick(this); break;
case 'L': ShowEditorTerraformToolbar(); break;
+ case 'Q': case 'W': case 'E': case 'D': ShowEditorTerraformToolbarWithTool(key, keycode); break;
case 'M': ShowSmallMap(); break;
case 'V': ShowExtraViewPortWindow(); break;
default: return ES_NOT_HANDLED;