Skip to content

Commit 34d82b0

Browse files
committed
icons: Add matchTextDirection to directional icons
Fixes #1907 We update the icon generation script to automatically set matchTextDirection: true for icons that imply directionality (arrow_right, chevron_right, send). This ensures these icons flip correctly in RTL locales.
1 parent 9296fb3 commit 34d82b0

File tree

2 files changed

+18
-4
lines changed

2 files changed

+18
-4
lines changed

lib/widgets/icons.dart

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ abstract final class ZulipIcons {
3131
static const IconData arrow_left_right = IconData(0xf102, fontFamily: "Zulip Icons");
3232

3333
/// The Zulip custom icon "arrow_right".
34-
static const IconData arrow_right = IconData(0xf103, fontFamily: "Zulip Icons");
34+
static const IconData arrow_right = IconData(0xf103, fontFamily: "Zulip Icons", matchTextDirection: true);
3535

3636
/// The Zulip custom icon "at_sign".
3737
static const IconData at_sign = IconData(0xf104, fontFamily: "Zulip Icons");
@@ -64,7 +64,7 @@ abstract final class ZulipIcons {
6464
static const IconData chevron_down = IconData(0xf10d, fontFamily: "Zulip Icons");
6565

6666
/// The Zulip custom icon "chevron_right".
67-
static const IconData chevron_right = IconData(0xf10e, fontFamily: "Zulip Icons");
67+
static const IconData chevron_right = IconData(0xf10e, fontFamily: "Zulip Icons", matchTextDirection: true);
6868

6969
/// The Zulip custom icon "circle_x".
7070
static const IconData circle_x = IconData(0xf10f, fontFamily: "Zulip Icons");
@@ -160,7 +160,7 @@ abstract final class ZulipIcons {
160160
static const IconData see_who_reacted = IconData(0xf12d, fontFamily: "Zulip Icons");
161161

162162
/// The Zulip custom icon "send".
163-
static const IconData send = IconData(0xf12e, fontFamily: "Zulip Icons");
163+
static const IconData send = IconData(0xf12e, fontFamily: "Zulip Icons", matchTextDirection: true);
164164

165165
/// The Zulip custom icon "settings".
166166
static const IconData settings = IconData(0xf12f, fontFamily: "Zulip Icons");

tools/icons/build-icon-font.js

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,12 +62,26 @@ async function main() {
6262
fs.copyFileSync(path.join(tmpDir, `${fontName}.ttf`), path.join(destDir, `${fontFileBaseName}.ttf`));
6363

6464
const template = fs.readFileSync(dataTemplateFile, 'utf8');
65+
// List of icons that should flip in RTL layouts
66+
const directionalIcons = [
67+
'arrow_right',
68+
'chevron_right',
69+
'send',
70+
];
71+
6572
const generated = Object.entries(codepoints).map(([name, codepoint]) => {
6673
const codepointHex = "0x" + codepoint.toString(16);
74+
75+
// Check if this icon needs the RTL flag
76+
let extraParams = "";
77+
if (directionalIcons.includes(name)) {
78+
extraParams = ", matchTextDirection: true";
79+
}
80+
6781
return `\
6882
6983
/// The Zulip custom icon "${name}".
70-
static const IconData ${name} = IconData(${codepointHex}, fontFamily: "${fontName}");
84+
static const IconData ${name} = IconData(${codepointHex}, fontFamily: "${fontName}"${extraParams});
7185
`;
7286
}).join("");
7387
const output = template.replace(

0 commit comments

Comments
 (0)