From 1de5a58dbe8377220f9d7d3d68d9917b562e29c2 Mon Sep 17 00:00:00 2001 From: "J. Nick Koston" Date: Sat, 26 Sep 2026 02:36:31 +0100 Subject: [PATCH] [display] Use register_apply_condition for display.is_displaying_page (#19705) --- esphome/components/display/__init__.py | 13 ++----------- esphome/components/display/display.h | 12 ------------ tests/components/ssd1306_i2c/common-actions.yaml | 16 ++++++++++++++++ .../ssd1306_i2c/test-actions.esp8266-ard.yaml | 7 +++++++ 4 files changed, 25 insertions(+), 23 deletions(-) create mode 100644 tests/components/ssd1306_i2c/common-actions.yaml create mode 100644 tests/components/ssd1306_i2c/test-actions.esp8266-ard.yaml diff --git a/esphome/components/display/__init__.py b/esphome/components/display/__init__.py index b664579be9..1cd75ddaf0 100644 --- a/esphome/components/display/__init__.py +++ b/esphome/components/display/__init__.py @@ -39,9 +39,6 @@ DisplayPage = display_ns.class_("DisplayPage") DisplayPagePtr = DisplayPage.operator("ptr") DisplayRef = Display.operator("ref") DisplayPageShowAction = display_ns.class_("DisplayPageShowAction", automation.Action) -DisplayIsDisplayingPageCondition = display_ns.class_( - "DisplayIsDisplayingPageCondition", automation.Condition -) DisplayOnPageChangeTrigger = display_ns.class_( "DisplayOnPageChangeTrigger", automation.Trigger ) @@ -301,9 +298,8 @@ automation.register_apply_action( ) -@automation.register_condition( +automation.register_apply_condition( "display.is_displaying_page", - DisplayIsDisplayingPageCondition, cv.maybe_simple_value( { cv.GenerateID(CONF_ID): cv.use_id(Display), @@ -311,13 +307,8 @@ automation.register_apply_action( }, key=CONF_PAGE_ID, ), + automation.ApplyCall("get_active_page() == {}", ((CONF_PAGE_ID, DisplayPagePtr),)), ) -async def display_is_displaying_page_to_code(config, condition_id, template_arg, args): - paren = await cg.get_variable(config[CONF_ID]) - page = await cg.get_variable(config[CONF_PAGE_ID]) - var = cg.new_Pvariable(condition_id, template_arg, paren) - cg.add(var.set_page(page)) - return var @coroutine_with_priority(CoroPriority.CORE) diff --git a/esphome/components/display/display.h b/esphome/components/display/display.h index af5a7bc132..bebeba8dcb 100644 --- a/esphome/components/display/display.h +++ b/esphome/components/display/display.h @@ -848,18 +848,6 @@ template class DisplayPageShowAction final : public Action class DisplayIsDisplayingPageCondition final : public Condition { - public: - DisplayIsDisplayingPageCondition(Display *parent) : parent_(parent) {} - - void set_page(DisplayPage *page) { this->page_ = page; } - bool check(const Ts &...x) override { return this->parent_->get_active_page() == this->page_; } - - protected: - Display *parent_; - DisplayPage *page_; -}; - class DisplayOnPageChangeTrigger final : public Trigger { public: explicit DisplayOnPageChangeTrigger(Display *parent) { parent->add_on_page_change_trigger(this); } diff --git a/tests/components/ssd1306_i2c/common-actions.yaml b/tests/components/ssd1306_i2c/common-actions.yaml new file mode 100644 index 0000000000..737fe7f26b --- /dev/null +++ b/tests/components/ssd1306_i2c/common-actions.yaml @@ -0,0 +1,16 @@ +button: + - platform: template + name: Page check + on_press: + - if: + condition: + display.is_displaying_page: ssd1306_i2c_page1 + then: + - logger.log: On page 1 + - if: + condition: + display.is_displaying_page: + id: ssd1306_i2c_ssd1306_i2c_display + page_id: ssd1306_i2c_page2 + then: + - logger.log: On page 2 diff --git a/tests/components/ssd1306_i2c/test-actions.esp8266-ard.yaml b/tests/components/ssd1306_i2c/test-actions.esp8266-ard.yaml new file mode 100644 index 0000000000..e18129c919 --- /dev/null +++ b/tests/components/ssd1306_i2c/test-actions.esp8266-ard.yaml @@ -0,0 +1,7 @@ +substitutions: + reset_pin: GPIO2 + +packages: + i2c: !include ../../test_build_components/common/i2c/esp8266-ard.yaml + ssd1306_i2c: !include common.yaml + actions: !include common-actions.yaml