View Issue Details
| ID | Project | Category | View Status | Date Submitted | Last Update |
|---|---|---|---|---|---|
| 0001209 | Double Commander | Graphical user interface | public | 2015-11-13 01:05 | 2020-06-19 21:51 |
| Reporter | nicker | Assigned To | Alexx2000 | ||
| Priority | normal | Severity | major | Reproducibility | always |
| Status | closed | Resolution | fixed | ||
| Projection | none | ETA | none | ||
| Platform | x64 | OS | Windows | OS Version | 10 |
| Product Version | 0.7.0 (trunk) | Product Build | revision 6381 | ||
| Target Version | 0.7.0 | Fixed in Version | 0.7.0 | ||
| Summary | 0001209: Choosing a drive using the keyboard doesn't work if the active language is not English or CAPS LOCK is off | ||||
| Description | I added a patch that fixes this issue. | ||||
| Steps To Reproduce | 1. Activate Caps lock and/or change the keyboard language to other than English. 2. Press Alt+F1. 3. Choose any drive other than the active by pressing the corresponding key letter. | ||||
| Tags | No tags attached. | ||||
| Attached Files | udriveslist.pas.patch (1,846 bytes)
Index: udriveslist.pas
===================================================================
--- udriveslist.pas (revision 6381)
+++ udriveslist.pas (working copy)
@@ -61,8 +61,6 @@
procedure EnterEvent(Sender: TObject);
procedure ExitEvent(Sender: TObject);
procedure KeyDownEvent(Sender: TObject; var Key: Word; Shift: TShiftState);
- procedure KeyPressEvent(Sender: TObject; var Key: Char);
- procedure UTF8KeyPressEvent(Sender: TObject; var UTF8Key: TUTF8Char);
procedure SelectDrive(ADriveIndex: Integer);
procedure DoDriveSelected(ADriveIndex: Integer);
@@ -174,8 +172,6 @@
OnEnter := @EnterEvent;
OnExit := @ExitEvent;
OnKeyDown := @KeyDownEvent;
- OnKeyPress := @KeyPressEvent;
- OnUTF8KeyPress := @UTF8KeyPressEvent;
end;
procedure TDrivesListPopup.UpdateDrivesList(ADrivesList: TDrivesList);
@@ -461,21 +457,12 @@
ShowContextMenu(GetDriveIndexByRow(Row), Rect.Left, Rect.Top);
Key := 0;
end;
- end;
+ else
+ if (CheckShortcut(TUTF8Char(Char(Key)))) then
+ Key:=0;
+ end;
end;
-procedure TDrivesListPopup.KeyPressEvent(Sender: TObject; var Key: Char);
-begin
- if CheckShortcut(TUTF8Char(Key)) then
- Key := #0;
-end;
-
-procedure TDrivesListPopup.UTF8KeyPressEvent(Sender: TObject; var UTF8Key: TUTF8Char);
-begin
- if CheckShortcut(UTF8Key) then
- UTF8Key := '';
-end;
-
procedure TDrivesListPopup.SelectDrive(ADriveIndex: Integer);
begin
if (ADriveIndex >= 0) and (ADriveIndex < DrivesCount) then
@@ -551,7 +538,7 @@
if Length(Drive^.DisplayName) > 0 then
begin
Cells[1, RowNr] := Drive^.DisplayName;
- FShortCuts[I] := UTF8Copy(Drive^.DisplayName, 1, 1);
+ FShortCuts[I] := UTF8Copy(UpperCase(Drive^.DisplayName), 1, 1);
end
else
begin
udriveslist-2015-11-19.pas.patch (2,123 bytes)
Index: udriveslist.pas
===================================================================
--- udriveslist.pas (revision 6386)
+++ udriveslist.pas (working copy)
@@ -24,6 +24,10 @@
{$mode objfpc}{$H+}
+{$IFDEF MSWINDOWS}
+ {$DEFINE ForceVirtualKeysShortcuts}
+{$ENDIF}
+
interface
uses
@@ -61,9 +65,10 @@
procedure EnterEvent(Sender: TObject);
procedure ExitEvent(Sender: TObject);
procedure KeyDownEvent(Sender: TObject; var Key: Word; Shift: TShiftState);
+{$IFNDEF ForceVirtualKeysShortcuts}
procedure KeyPressEvent(Sender: TObject; var Key: Char);
procedure UTF8KeyPressEvent(Sender: TObject; var UTF8Key: TUTF8Char);
-
+{$ENDIF}
procedure SelectDrive(ADriveIndex: Integer);
procedure DoDriveSelected(ADriveIndex: Integer);
procedure ShowContextMenu(ADriveIndex: Integer; X, Y: Integer);
@@ -174,8 +179,10 @@
OnEnter := @EnterEvent;
OnExit := @ExitEvent;
OnKeyDown := @KeyDownEvent;
+{$IFNDEF ForceVirtualKeysShortcuts}
OnKeyPress := @KeyPressEvent;
OnUTF8KeyPress := @UTF8KeyPressEvent;
+{$ENDIF}
end;
procedure TDrivesListPopup.UpdateDrivesList(ADrivesList: TDrivesList);
@@ -461,9 +468,14 @@
ShowContextMenu(GetDriveIndexByRow(Row), Rect.Left, Rect.Top);
Key := 0;
end;
+{$IFDEF ForceVirtualKeysShortcuts}
+ else if (CheckShortcut(TUTF8Char(Char(Key)))) then
+ Key := 0;
+{$ENDIF}
end;
end;
+{$IFNDEF ForceVirtualKeysShortcuts}
procedure TDrivesListPopup.KeyPressEvent(Sender: TObject; var Key: Char);
begin
if CheckShortcut(TUTF8Char(Key)) then
@@ -475,6 +487,7 @@
if CheckShortcut(UTF8Key) then
UTF8Key := '';
end;
+{$ENDIF}
procedure TDrivesListPopup.SelectDrive(ADriveIndex: Integer);
begin
@@ -551,7 +564,11 @@
if Length(Drive^.DisplayName) > 0 then
begin
Cells[1, RowNr] := Drive^.DisplayName;
+{$IFDEF ForceVirtualKeysShortcuts}
+ FShortCuts[I] := UTF8Copy(UpperCase(Drive^.DisplayName), 1, 1);
+{$ELSE}
FShortCuts[I] := UTF8Copy(Drive^.DisplayName, 1, 1);
+{$ENDIF}
end
else
begin
| ||||
| Fixed in Revision | 6394 | ||||
| Operating system | Windows | ||||
| Widgetset | |||||
| Architecture | 64-bit | ||||
| has duplicate | 0001246 | closed | Меню выбора диска (Alt+F1/F2) чувствительно к текущему языку |
|
|
Patch is not correct, because under non-Windows OS "drive" name can begin with non latin characters. That's why OnKeyPress and OnUTF8KeyPress used. |
|
|
Indeed, it's documented in the Linux man pages. I can upload a new patch or you can take it from here. |
|
|
I've uploaded a better patch "udriveslist-2015-11-19.pas.patch" |
| Date Modified | Username | Field | Change |
|---|---|---|---|
| 2015-11-13 01:05 | nicker | New Issue | |
| 2015-11-13 01:06 | nicker | File Added: udriveslist.pas.patch | |
| 2015-11-13 08:51 | Alexx2000 | Note Added: 0001595 | |
| 2015-11-13 08:51 | Alexx2000 | Status | new => feedback |
| 2015-11-13 14:00 | nicker | Note Added: 0001596 | |
| 2015-11-13 14:00 | nicker | Status | feedback => new |
| 2015-11-19 02:14 | nicker | File Added: udriveslist-2015-11-19.pas.patch | |
| 2015-11-19 15:46 | nicker | Note Added: 0001598 | |
| 2015-11-22 17:53 | Alexx2000 | Fixed in Revision | => 6394 |
| 2015-11-22 17:53 | Alexx2000 | Status | new => resolved |
| 2015-11-22 17:53 | Alexx2000 | Resolution | open => fixed |
| 2015-11-22 17:53 | Alexx2000 | Assigned To | => Alexx2000 |
| 2015-11-22 17:53 | Alexx2000 | Fixed in Version | => 0.7.0 |
| 2015-11-22 17:53 | Alexx2000 | Target Version | => 0.7.0 |
| 2015-12-30 06:32 | Alexx2000 | Relationship added | has duplicate 0001246 |
| 2020-06-19 21:51 | Alexx2000 | Status | resolved => closed |