I can see how you can send ASCII message first and then send UNICODE message which will screw things up.
I don't know what you mean. Can you give an example?
Sorry, I haven't paid attention to how we store text. So it shouldn't be an issue.
You missed insert items with text part inside create_tabcontrol. Besides as is it's failing for me. When I change text of the first tab "Tab 123" it's changing returned width.
Its measuring the size of the text, so _of course_ it will fail if you change the text. If it fails on a standard windows setup I can rework the test to calculate the text width manually for the comparason. But I don't have a win system setup here to test ATM. The test works here with builtin and native comctl32.
What I was talking about as in the tests/tab.c function create_tabcontrol besides creating tab control itself, inserts three tabs with text. With first tab being "Tab 123". Even when you not specify "TCIF_TEXT" tab still has that text in it, it's just not displayed.
As-is (no changes) your test fails for me. Try setting some common font with known size. BTW I tried that and it didn't work right. So we have some other problems here.
The reason why I didn't test this is because the width of the tab depends on it's text width. Which is kind of hard to test (different fonts, different font sizes etc.).
If the tab doesn't have text and/or icons and tabs are not fixed width the size is currently wrong. The patch fixes those cases (that my app depends on) and doesn't break any other case that I tested. Can you provide a case that I broke that wasn't already broken?
No, I don't have such a case. The problem is it's not exactly right. And some of your tests fail for me. I don't think AJ will except you patch if it doesn't pass tests.