fix window title handling.
@@ -1352,6 +1352,13 @@ | ||
1352 | 1352 | def get_window_parent() |
1353 | 1353 | @yaml["parent"] |
1354 | 1354 | end |
1355 | + def get_window_title_max_length() | |
1356 | + len = @yaml["title_max_length"]; | |
1357 | + if len == nil | |
1358 | + return 128 | |
1359 | + end | |
1360 | + return len | |
1361 | + end | |
1355 | 1362 | |
1356 | 1363 | def generate_header_eventtype_enumulate(main_name) |
1357 | 1364 | script = <<-EOS |
@@ -1486,6 +1493,9 @@ | ||
1486 | 1493 | <%- if self.is_attr_scrollable() -%> |
1487 | 1494 | hmi_windowscroll_t wscr; |
1488 | 1495 | <%- end -%> |
1496 | + <%- if !self.is_attr_alwaysopen() -%> | |
1497 | + TC title[<%= self.get_window_title_max_length() %>+1]; | |
1498 | + <%- end -%> | |
1489 | 1499 | WEVENT savedwev; |
1490 | 1500 | <%- @parts.each do |p| -%><%= p.generate_source_struct(self.struct_name()) %><%- end -%> |
1491 | 1501 | }; |
@@ -1648,7 +1658,13 @@ | ||
1648 | 1658 | |
1649 | 1659 | EXPORT W <%= self.struct_name() %>_settitle(<%= self.struct_name() %>_t *window, TC *title) |
1650 | 1660 | { |
1661 | + <%- if !self.is_attr_alwaysopen() -%> | |
1662 | + tc_strncpy(window->title, title, <%= self.get_window_title_max_length() %>); | |
1663 | + window->title[<%= self.get_window_title_max_length() %>] = TNULL; | |
1664 | + return wset_tit(window->wid, -1, window->title, 0); | |
1665 | + <%- else -%> | |
1651 | 1666 | return wset_tit(window->wid, -1, title, 0); |
1667 | + <%- end -%> | |
1652 | 1668 | } |
1653 | 1669 | |
1654 | 1670 | EXPORT Bool <%= self.struct_name() %>_isactive(<%= self.struct_name() %>_t *window) |
@@ -1709,12 +1725,9 @@ | ||
1709 | 1725 | } |
1710 | 1726 | |
1711 | 1727 | <%- end -%> |
1712 | -<% if self.is_attr_alwaysopen() %>LOCAL<% else %>EXPORT<% end %> W <%= self.struct_name() %>_open(<%= self.struct_name() %>_t *window) | |
1728 | +<% if self.is_attr_alwaysopen() %>LOCAL<% else %>EXPORT<% end %> W <%= self.struct_name() %>_open(<%= self.struct_name() %>_t *window<% if self.is_attr_alwaysopen() %>, TC *title<% end %>) | |
1713 | 1729 | { |
1714 | 1730 | WID wid; |
1715 | - <%- if self.get_window_title() != nil -%> | |
1716 | - TC title[] = {<%= conv_TCArray_to_hex_definition(conv_euc_to_TCArray(self.get_window_title())) %>}; | |
1717 | - <%- end -%> | |
1718 | 1731 | <%- if self.is_exist_controllparts() -%> |
1719 | 1732 | RECT r; |
1720 | 1733 | <%- end -%> |
@@ -1723,7 +1736,7 @@ | ||
1723 | 1736 | return 0; |
1724 | 1737 | } |
1725 | 1738 | |
1726 | - wid = wopn_wnd(WA_STD<% if self.is_attr_subwindow() %>|WA_SUBW<% end %><% if self.is_attr_resizable() %>|WA_SIZE|WA_HHDL|WA_VHDL<% end %><% if self.is_attr_scrollable() %>|WA_BBAR|WA_RBAR<% end %>, <% if self.is_attr_subwindow() %>window->parent->wid<% else %>window->parent<% end %>, &(window->r), NULL, 2, <%- if self.get_window_title() != nil -%>title<%- else -%>NULL<%- end -%>, &window->bgpat, NULL); | |
1739 | + wid = wopn_wnd(WA_STD<% if self.is_attr_subwindow() %>|WA_SUBW<% end %><% if self.is_attr_resizable() %>|WA_SIZE|WA_HHDL|WA_VHDL<% end %><% if self.is_attr_scrollable() %>|WA_BBAR|WA_RBAR<% end %>, <% if self.is_attr_subwindow() %>window->parent->wid<% else %>window->parent<% end %>, &(window->r), NULL, 2, <% if !self.is_attr_alwaysopen() %>window->title<%- else -%>title<%- end -%>, &window->bgpat, NULL); | |
1727 | 1740 | if (wid < 0) { |
1728 | 1741 | DP_ER("wopn_wnd: subjectoption error", wid); |
1729 | 1742 | return wid; |
@@ -1832,10 +1845,21 @@ | ||
1832 | 1845 | return NULL; |
1833 | 1846 | } |
1834 | 1847 | <%- end -%> |
1848 | + <%- if !self.is_attr_alwaysopen() -%> | |
1849 | + tc_strset(window->title, TNULL, <%= self.get_window_title_max_length() %>+1); | |
1850 | + if (title != 0) { | |
1851 | + tc_strncpy(window->title, title, <%= self.get_window_title_max_length() %>); | |
1852 | + } else { | |
1853 | + <%- l = 0 -%> | |
1854 | + <%- conv_euc_to_TCArray(self.get_window_title()).each do |ch| -%> | |
1855 | + window->title[<%= l %>] = 0x<%= ch.to_s(16) %>;<%- l+=1 %> | |
1856 | + <%- end -%> | |
1857 | + } | |
1858 | + <%- end -%> | |
1835 | 1859 | <%- @parts.each do |p| -%><%= p.generate_initialize_in_new() %><%- end -%> |
1836 | 1860 | |
1837 | 1861 | <%- if self.is_attr_alwaysopen() -%> |
1838 | - err = <%= self.struct_name() %>_open(window); | |
1862 | + err = <%= self.struct_name() %>_open(window, title); | |
1839 | 1863 | if (err < 0) { |
1840 | 1864 | <%- if self.is_attr_scrollable() -%> |
1841 | 1865 | hmi_windowscroll_finalize(&window->wscr); |