From 8e8c02a71f48f990772fbed423fe5e3eb1b123cb Mon Sep 17 00:00:00 2001 From: Dylan Smith Date: Wed, 25 Feb 2009 15:15:25 -0500 Subject: [PATCH] wordpad: Sort tab stops by numeric value rather than as string. The bug could be seen by inserting tabs stops 1cm, 2cm, & 10cm. The 10cm tab stop would be inserted before 2cm since the comparison isn't based on the numeric value. --- programs/wordpad/Da.rc | 2 +- programs/wordpad/De.rc | 2 +- programs/wordpad/En.rc | 2 +- programs/wordpad/Fr.rc | 2 +- programs/wordpad/Hu.rc | 2 +- programs/wordpad/Ja.rc | 2 +- programs/wordpad/Ko.rc | 2 +- programs/wordpad/Nl.rc | 2 +- programs/wordpad/No.rc | 2 +- programs/wordpad/Pl.rc | 2 +- programs/wordpad/Pt.rc | 2 +- programs/wordpad/Ru.rc | 2 +- programs/wordpad/Si.rc | 2 +- programs/wordpad/Sv.rc | 2 +- programs/wordpad/Tr.rc | 2 +- programs/wordpad/Zh.rc | 4 ++-- programs/wordpad/wordpad.c | 22 ++++++++++++++++++++-- 17 files changed, 37 insertions(+), 19 deletions(-) diff --git a/programs/wordpad/Da.rc b/programs/wordpad/Da.rc index 8af908092b0..d09e90f9b72 100644 --- a/programs/wordpad/Da.rc +++ b/programs/wordpad/Da.rc @@ -150,7 +150,7 @@ Caption "Tabulatorer" FONT 8, "MS SHell DLg" BEGIN GROUPBOX "Tabulatorstop", -1, 10, 10, 120, 90 - COMBOBOX IDC_TABSTOPS, 20, 20, 100, 60, CBS_SIMPLE | CBS_SORT + COMBOBOX IDC_TABSTOPS, 20, 20, 100, 60, CBS_SIMPLE DEFPUSHBUTTON "&Tilfj", ID_TAB_ADD, 20, 80, 45, 15 PUSHBUTTON "&Fjern", ID_TAB_DEL, 72, 80, 45, 15 PUSHBUTTON "&OK", IDOK, 137, 15, 50, 15 diff --git a/programs/wordpad/De.rc b/programs/wordpad/De.rc index 9e748c2cf9d..5b4b176a905 100644 --- a/programs/wordpad/De.rc +++ b/programs/wordpad/De.rc @@ -152,7 +152,7 @@ Caption "Tabstopps" FONT 8, "MS SHell DLg" BEGIN GROUPBOX "Tabstoppposition", -1, 10, 10, 120, 90 - COMBOBOX IDC_TABSTOPS, 20, 20, 100, 60, CBS_SIMPLE | CBS_SORT + COMBOBOX IDC_TABSTOPS, 20, 20, 100, 60, CBS_SIMPLE DEFPUSHBUTTON "&Festlegen", ID_TAB_ADD, 20, 80, 45, 15 PUSHBUTTON "&Löschen", ID_TAB_DEL, 72, 80, 45, 15 PUSHBUTTON "&OK", IDOK, 137, 15, 50, 15 diff --git a/programs/wordpad/En.rc b/programs/wordpad/En.rc index d1cfa5ac489..dd099e13349 100644 --- a/programs/wordpad/En.rc +++ b/programs/wordpad/En.rc @@ -150,7 +150,7 @@ Caption "Tabs" FONT 8, "MS SHell DLg" BEGIN GROUPBOX "Tab stops", -1, 10, 10, 120, 90 - COMBOBOX IDC_TABSTOPS, 20, 20, 100, 60, CBS_SIMPLE | CBS_SORT + COMBOBOX IDC_TABSTOPS, 20, 20, 100, 60, CBS_SIMPLE DEFPUSHBUTTON "&Add", ID_TAB_ADD, 20, 80, 45, 15 PUSHBUTTON "&Remove", ID_TAB_DEL, 72, 80, 45, 15 PUSHBUTTON "&OK", IDOK, 137, 15, 50, 15 diff --git a/programs/wordpad/Fr.rc b/programs/wordpad/Fr.rc index b26d69622e1..459dd0ed82b 100644 --- a/programs/wordpad/Fr.rc +++ b/programs/wordpad/Fr.rc @@ -150,7 +150,7 @@ Caption "Tabulations" FONT 8, "MS SHell DLg" BEGIN GROUPBOX "Arrts de tabulation", -1, 10, 10, 120, 90 - COMBOBOX IDC_TABSTOPS, 20, 20, 100, 60, CBS_SIMPLE | CBS_SORT + COMBOBOX IDC_TABSTOPS, 20, 20, 100, 60, CBS_SIMPLE DEFPUSHBUTTON "&Ajouter", ID_TAB_ADD, 20, 80, 45, 15 PUSHBUTTON "&Supprimer", ID_TAB_DEL, 72, 80, 45, 15 PUSHBUTTON "&OK", IDOK, 137, 15, 50, 15 diff --git a/programs/wordpad/Hu.rc b/programs/wordpad/Hu.rc index 42933a13a5a..94ceda5a789 100644 --- a/programs/wordpad/Hu.rc +++ b/programs/wordpad/Hu.rc @@ -150,7 +150,7 @@ Caption "Tabs" FONT 8, "MS SHell DLg" BEGIN GROUPBOX "Tab stops", -1, 10, 10, 120, 90 - COMBOBOX IDC_TABSTOPS, 20, 20, 100, 60, CBS_SIMPLE | CBS_SORT + COMBOBOX IDC_TABSTOPS, 20, 20, 100, 60, CBS_SIMPLE DEFPUSHBUTTON "&Add", ID_TAB_ADD, 20, 80, 45, 15 PUSHBUTTON "&Remove", ID_TAB_DEL, 72, 80, 45, 15 PUSHBUTTON "&OK", IDOK, 137, 15, 50, 15 diff --git a/programs/wordpad/Ja.rc b/programs/wordpad/Ja.rc index 6133a4a7e2a..09e48aafdf5 100644 --- a/programs/wordpad/Ja.rc +++ b/programs/wordpad/Ja.rc @@ -153,7 +153,7 @@ CAPTION "タブの設定" FONT 9, "MS Shell Dlg" BEGIN GROUPBOX "タブの停止位置(&T)", -1, 10, 10, 120, 90 - COMBOBOX IDC_TABSTOPS, 20, 20, 100, 60, CBS_SIMPLE | CBS_SORT + COMBOBOX IDC_TABSTOPS, 20, 20, 100, 60, CBS_SIMPLE DEFPUSHBUTTON "追加(&A)", ID_TAB_ADD, 20, 80, 45, 15 PUSHBUTTON "削除(&R)", ID_TAB_DEL, 72, 80, 45, 15 PUSHBUTTON "&OK", IDOK, 137, 15, 50, 15 diff --git a/programs/wordpad/Ko.rc b/programs/wordpad/Ko.rc index 6ea4e46812a..79885f5e2f7 100644 --- a/programs/wordpad/Ko.rc +++ b/programs/wordpad/Ko.rc @@ -152,7 +152,7 @@ Caption " FONT 9, "MS Shell Dlg" BEGIN GROUPBOX " ", -1, 10, 10, 120, 90 - COMBOBOX IDC_TABSTOPS, 20, 20, 100, 60, CBS_SIMPLE | CBS_SORT + COMBOBOX IDC_TABSTOPS, 20, 20, 100, 60, CBS_SIMPLE DEFPUSHBUTTON "ϱ(&A)", ID_TAB_ADD, 20, 80, 45, 15 PUSHBUTTON "(&R)", ID_TAB_DEL, 72, 80, 45, 15 PUSHBUTTON "Ȯ(&O)", IDOK, 137, 15, 50, 15 diff --git a/programs/wordpad/Nl.rc b/programs/wordpad/Nl.rc index a0a405ef4ed..3c82c7e68bf 100644 --- a/programs/wordpad/Nl.rc +++ b/programs/wordpad/Nl.rc @@ -151,7 +151,7 @@ Caption "Tabs" FONT 8, "MS SHell DLg" BEGIN GROUPBOX "Tab stops", -1, 10, 10, 120, 90 - COMBOBOX IDC_TABSTOPS, 20, 20, 100, 60, CBS_SIMPLE | CBS_SORT + COMBOBOX IDC_TABSTOPS, 20, 20, 100, 60, CBS_SIMPLE DEFPUSHBUTTON "&Toevoegen", ID_TAB_ADD, 20, 80, 45, 15 PUSHBUTTON "&Verwijderen", ID_TAB_DEL, 72, 80, 45, 15 PUSHBUTTON "&OK", IDOK, 137, 15, 50, 15 diff --git a/programs/wordpad/No.rc b/programs/wordpad/No.rc index b34973e5126..6261c6fb81d 100644 --- a/programs/wordpad/No.rc +++ b/programs/wordpad/No.rc @@ -150,7 +150,7 @@ Caption "Tabulatorer" FONT 8, "MS SHell DLg" BEGIN GROUPBOX "Tabulatorstopp", -1, 10, 10, 120, 90 - COMBOBOX IDC_TABSTOPS, 20, 20, 100, 60, CBS_SIMPLE | CBS_SORT + COMBOBOX IDC_TABSTOPS, 20, 20, 100, 60, CBS_SIMPLE DEFPUSHBUTTON "&Legg til", ID_TAB_ADD, 20, 80, 45, 15 PUSHBUTTON "&Fjern", ID_TAB_DEL, 72, 80, 45, 15 PUSHBUTTON "&OK", IDOK, 137, 15, 50, 15 diff --git a/programs/wordpad/Pl.rc b/programs/wordpad/Pl.rc index 590d9a79f23..47ff1bd0e3f 100644 --- a/programs/wordpad/Pl.rc +++ b/programs/wordpad/Pl.rc @@ -151,7 +151,7 @@ Caption "Tabulatory" FONT 8, "MS Shell Dlg" BEGIN GROUPBOX "Pozycje tabulatorw", -1, 10, 10, 120, 90 - COMBOBOX IDC_TABSTOPS, 20, 20, 100, 60, CBS_SIMPLE | CBS_SORT + COMBOBOX IDC_TABSTOPS, 20, 20, 100, 60, CBS_SIMPLE DEFPUSHBUTTON "&Dodaj", ID_TAB_ADD, 20, 80, 45, 15 PUSHBUTTON "&Usu", ID_TAB_DEL, 72, 80, 45, 15 PUSHBUTTON "&OK", IDOK, 137, 15, 57, 15 diff --git a/programs/wordpad/Pt.rc b/programs/wordpad/Pt.rc index a263f4c06f6..b246c700bcd 100644 --- a/programs/wordpad/Pt.rc +++ b/programs/wordpad/Pt.rc @@ -152,7 +152,7 @@ Caption "Tabula FONT 8, "MS SHell DLg" BEGIN GROUPBOX "Marca de tabulao", -1, 10, 10, 120, 90 - COMBOBOX IDC_TABSTOPS, 20, 20, 100, 60, CBS_SIMPLE | CBS_SORT + COMBOBOX IDC_TABSTOPS, 20, 20, 100, 60, CBS_SIMPLE DEFPUSHBUTTON "&Adicionar", ID_TAB_ADD, 20, 80, 45, 15 PUSHBUTTON "&Remover", ID_TAB_DEL, 72, 80, 45, 15 PUSHBUTTON "&OK", IDOK, 135, 15, 55, 15 diff --git a/programs/wordpad/Ru.rc b/programs/wordpad/Ru.rc index f25a68889e2..e4371993991 100644 --- a/programs/wordpad/Ru.rc +++ b/programs/wordpad/Ru.rc @@ -150,7 +150,7 @@ Caption " FONT 8, "MS SHell DLg" BEGIN GROUPBOX " ", -1, 10, 10, 120, 90 - COMBOBOX IDC_TABSTOPS, 20, 20, 100, 60, CBS_SIMPLE | CBS_SORT + COMBOBOX IDC_TABSTOPS, 20, 20, 100, 60, CBS_SIMPLE DEFPUSHBUTTON "&", ID_TAB_ADD, 20, 80, 45, 15 PUSHBUTTON "&", ID_TAB_DEL, 72, 80, 45, 15 PUSHBUTTON "&", IDOK, 137, 15, 50, 15 diff --git a/programs/wordpad/Si.rc b/programs/wordpad/Si.rc index de7726c4be0..3be81b82c45 100644 --- a/programs/wordpad/Si.rc +++ b/programs/wordpad/Si.rc @@ -152,7 +152,7 @@ Caption "Tabulatorji" FONT 8, "MS SHell DLg" BEGIN GROUPBOX "Položaji tabulatorja", -1, 10, 10, 120, 90 - COMBOBOX IDC_TABSTOPS, 20, 20, 100, 60, CBS_SIMPLE | CBS_SORT + COMBOBOX IDC_TABSTOPS, 20, 20, 100, 60, CBS_SIMPLE DEFPUSHBUTTON "&Dodaj", ID_TAB_ADD, 20, 80, 45, 15 PUSHBUTTON "&Odstrani", ID_TAB_DEL, 72, 80, 45, 15 PUSHBUTTON "&V redu", IDOK, 137, 15, 50, 15 diff --git a/programs/wordpad/Sv.rc b/programs/wordpad/Sv.rc index 565f9f73321..d56cc068ecc 100644 --- a/programs/wordpad/Sv.rc +++ b/programs/wordpad/Sv.rc @@ -152,7 +152,7 @@ Caption "Tabulatorer" FONT 8, "MS Shell Dlg" BEGIN GROUPBOX "Tabulatorstopp", -1, 10, 10, 120, 90 - COMBOBOX IDC_TABSTOPS, 20, 20, 100, 60, CBS_SIMPLE | CBS_SORT + COMBOBOX IDC_TABSTOPS, 20, 20, 100, 60, CBS_SIMPLE DEFPUSHBUTTON "Lägg &till", ID_TAB_ADD, 20, 80, 45, 15 PUSHBUTTON "Ta &bort", ID_TAB_DEL, 72, 80, 45, 15 PUSHBUTTON "&OK", IDOK, 137, 15, 50, 15 diff --git a/programs/wordpad/Tr.rc b/programs/wordpad/Tr.rc index 1822620fab6..bf0eefdd0aa 100644 --- a/programs/wordpad/Tr.rc +++ b/programs/wordpad/Tr.rc @@ -152,7 +152,7 @@ Caption "Tabs" FONT 8, "MS SHell DLg" BEGIN GROUPBOX "Tab stops", -1, 10, 10, 120, 90 - COMBOBOX IDC_TABSTOPS, 20, 20, 100, 60, CBS_SIMPLE | CBS_SORT + COMBOBOX IDC_TABSTOPS, 20, 20, 100, 60, CBS_SIMPLE DEFPUSHBUTTON "&Add", ID_TAB_ADD, 20, 80, 45, 15 PUSHBUTTON "&Remove", ID_TAB_DEL, 72, 80, 45, 15 PUSHBUTTON "&OK", IDOK, 137, 15, 50, 15 diff --git a/programs/wordpad/Zh.rc b/programs/wordpad/Zh.rc index 2c9a536a776..5c11ab79963 100644 --- a/programs/wordpad/Zh.rc +++ b/programs/wordpad/Zh.rc @@ -155,7 +155,7 @@ Caption "标签" FONT 9, "MS Shell Dlg" BEGIN GROUPBOX "标签停点", -1, 10, 10, 120, 90 - COMBOBOX IDC_TABSTOPS, 20, 20, 100, 60, CBS_SIMPLE | CBS_SORT + COMBOBOX IDC_TABSTOPS, 20, 20, 100, 60, CBS_SIMPLE DEFPUSHBUTTON "添加(&A)", ID_TAB_ADD, 20, 80, 45, 15 PUSHBUTTON "删除(&R)", ID_TAB_DEL, 72, 80, 45, 15 PUSHBUTTON "确定(&O)", IDOK, 137, 15, 50, 15 @@ -380,7 +380,7 @@ Caption "標籤" FONT 9, "MS Shell Dlg" BEGIN GROUPBOX "標籤停點", -1, 10, 10, 120, 90 - COMBOBOX IDC_TABSTOPS, 20, 20, 100, 60, CBS_SIMPLE | CBS_SORT + COMBOBOX IDC_TABSTOPS, 20, 20, 100, 60, CBS_SIMPLE DEFPUSHBUTTON "添加(&A)", ID_TAB_ADD, 20, 80, 45, 15 PUSHBUTTON "刪除(&R)", ID_TAB_DEL, 72, 80, 45, 15 PUSHBUTTON "確定(&O)", IDOK, 137, 15, 50, 15 diff --git a/programs/wordpad/wordpad.c b/programs/wordpad/wordpad.c index f2ec4c570c2..c74d140c7ff 100644 --- a/programs/wordpad/wordpad.c +++ b/programs/wordpad/wordpad.c @@ -1646,8 +1646,26 @@ static INT_PTR CALLBACK tabstops_proc(HWND hWnd, UINT message, WPARAM wParam, LP MessageBoxWithResStringW(hWnd, MAKEINTRESOURCEW(STRING_MAX_TAB_STOPS), wszAppTitle, MB_OK | MB_ICONINFORMATION); } else { - SendMessageW(hTabWnd, CB_ADDSTRING, 0, (LPARAM)&buffer); - SetWindowTextW(hTabWnd, 0); + int i; + float next_number = -1; + int next_number_in_twips = -1; + int insert_number = current_units_to_twips(number); + + /* linear search for position to insert the string */ + for(i = 0; i < item_count; i++) + { + SendMessageW(hTabWnd, CB_GETLBTEXT, i, (LPARAM)&buffer); + number_from_string(buffer, &next_number, TRUE); + next_number_in_twips = current_units_to_twips(next_number); + if (insert_number <= next_number_in_twips) + break; + } + if (insert_number != next_number_in_twips) + { + number_with_units(buffer, insert_number); + SendMessageW(hTabWnd, CB_INSERTSTRING, i, (LPARAM)&buffer); + SetWindowTextW(hTabWnd, 0); + } } } SetFocus(hTabWnd);