View Issue Details
ID | Project | Category | View Status | Date Submitted | Last Update |
---|---|---|---|---|---|
0001755 | Far Manager | Dialog | public | 2011-04-25 09:17 | 2011-10-01 05:58 |
Reporter | 2useven10 | Assigned To | vskirdin | ||
Priority | normal | Severity | minor | Reproducibility | always |
Status | closed | Resolution | fixed | ||
Product Version | 3.0 | ||||
Fixed in Version | 3.0 | ||||
Summary | 0001755: Невозможно изменить фокус в обработчике клика на RadioButton | ||||
Description | В диалоге поика вьювера хотел сделать режим автоматичекого фокусирования на строке поиска. Т.е. после нажатия на check-box и radio-button активным должно быть окно ввода искомого текста. Для этого я использовал SendDlgMessage(hDlg, DM_SETFOCUS, SD_EDIT_..., 0); Для чек-боксов всё работает как мне хочется, а радио батон переставляет фокус на себя, игнорируя мой DM_SETFOCUS. Порывшись в коде причину я нашел: FocusPos = ProcessRadioButton(...). Прилагаемый патч решает проблему. | ||||
Additional Information | Я плохо разбираюсь в UI фара. Возможно так делать нельзя или проблему можно решить другим способом... Хотелось бы услышать мнение специалистов. | ||||
Tags | No tags attached. | ||||
Build | 2046 | ||||
|
dialog.cpp.diff (703 bytes)
Index: dialog.cpp =================================================================== --- dialog.cpp (revision 5989) +++ dialog.cpp (working copy) @@ -3610,6 +3610,8 @@ Item[CurRB]->Selected=1; + unsigned ret = CurRB, focus = FocusPos; + /* $ 28.07.2000 SVS ��� ��������� ������� ������� �������� ������� �������� ����������� ������ SendDlgMessage - � ��� ������� ���! @@ -3620,10 +3622,10 @@ // ������ �����, ���� ���������� �� ������... Item[CurRB]->Selected=0; Item[PrevRB]->Selected=1; - return PrevRB; + ret = PrevRB; } - return CurRB; + return (focus == FocusPos ? ret : FocusPos); // ���� ����� �������� - ����� ��� ����! } |
|
напоминалка :) это последнее из 'посторонних' изменений для вьювера. правки минимальны: если в пользовательской части обработчика клика на радиобатон был изменен фокус не меняем его после ProcessRadioButton() |
|
dialog.cpp-refresh.diff (859 bytes)
Index: dialog.cpp =================================================================== --- dialog.cpp (revision 6263) +++ dialog.cpp (working copy) @@ -3610,20 +3610,22 @@ Item[CurRB]->Selected=1; + unsigned ret = CurRB, focus = FocusPos; + /* $ 28.07.2000 SVS ��� ��������� ������� ������� �������� ������� �������� ����������� ������ SendDlgMessage - � ��� ������� ���! */ if (!SendDlgMessage(this,DN_BTNCLICK,PrevRB,0) || - !SendDlgMessage(this,DN_BTNCLICK,CurRB,ToPtr(1))) + !SendDlgMessage(this,DN_BTNCLICK,CurRB,ToPtr(1))) { // ������ �����, ���� ���������� �� ������... Item[CurRB]->Selected=0; Item[PrevRB]->Selected=1; - return PrevRB; + ret = PrevRB; } - return CurRB; + return (focus == FocusPos ? ret : FocusPos); // ���� ����� �������� - ����� ��� ����! } |
|
> хотел сделать режим автоматичекого фокусирования на строке поиска. Т.е. после нажатия на check-box и radio-button активным должно быть окно ввода искомого текста Баг багом, но лучше так не делать. Если пользователь, например, переключает чекбокс "Учитывать регистр", то после этого он вполне может захотеть переключить и "Только целые слова", нажав для перехода стрелку вниз, вправо или Tab. Внезапное же перемещение фокуса в строку ввода способно сильно испортить карму. |
|
умолчательное поведение не изменится. фича включается по флагу. К тому же Alt+C, Alt+W - удобнее (IMHO) |
|
> хотел сделать режим автоматичекого фокусирования на строке поиска. Это ж и намакросить можно. |
|
build 2046 |
Date Modified | Username | Field | Change |
---|---|---|---|
2011-04-25 09:17 | 2useven10 | New Issue | |
2011-04-25 09:17 | 2useven10 | File Added: dialog.cpp.diff | |
2011-05-23 09:35 | 2useven10 | Note Added: 0007002 | |
2011-05-23 09:46 | 2useven10 | File Added: dialog.cpp-refresh.diff | |
2011-05-23 09:48 | 2useven10 | Note Edited: 0007002 | |
2011-05-23 09:53 | DrKnS | Note Added: 0007003 | |
2011-05-23 10:12 | 2useven10 | Note Added: 0007004 | |
2011-05-23 10:13 | 2useven10 | Note Edited: 0007004 | |
2011-05-23 10:15 | 2useven10 | Note Edited: 0007004 | |
2011-05-23 10:31 | JohnDoe | Note Added: 0007005 | |
2011-05-23 11:19 | vskirdin | Note Added: 0007006 | |
2011-05-23 11:19 | vskirdin | Assigned To | => vskirdin |
2011-05-23 11:19 | vskirdin | Status | new => feedback |
2011-09-30 21:24 | 2useven10 | Status | feedback => resolved |
2011-10-01 05:58 | vskirdin | Build | => 2046 |
2011-10-01 05:58 | vskirdin | Status | resolved => closed |
2011-10-01 05:58 | vskirdin | Resolution | open => fixed |
2011-10-01 05:58 | vskirdin | Fixed in Version | => 3.0 |