diff --git a/src/dlangui/dialogs/filedlg.d b/src/dlangui/dialogs/filedlg.d index 04f3a015..0e04cc64 100644 --- a/src/dlangui/dialogs/filedlg.d +++ b/src/dlangui/dialogs/filedlg.d @@ -239,5 +239,7 @@ class FileDialog : Dialog, CustomGridCellAdapter { openDirectory(currentDir); _fileList.layoutHeight = FILL_PARENT; + + _fileList.setFocus(); } } diff --git a/src/dlangui/widgets/grid.d b/src/dlangui/widgets/grid.d index 50784efc..505d97de 100644 --- a/src/dlangui/widgets/grid.d +++ b/src/dlangui/widgets/grid.d @@ -642,6 +642,8 @@ class GridWidgetBase : ScrollWidgetBase { normalCell = c >= _headerCols && r >= _headerRows; } if (event.action == MouseAction.ButtonDown && event.button == MouseButton.Left) { + if (canFocus && !focused) + setFocus(); if (cellFound && normalCell) { if (c == _col && r == _row && event.doubleClick) { activateCell(c, r); @@ -1266,15 +1268,17 @@ class StringGridWidget : StringGridWidgetBase { vborder.left = vborder.right - 1; hborder.top = hborder.bottom - 1; hborder.right--; - bool selectedCol = c == col; + bool selectedCol = (c == col) && !_rowSelect; bool selectedRow = r == row; bool selectedCell = selectedCol && selectedRow; if (_rowSelect && selectedRow) selectedCell = true; // draw header cell background uint cl = 0x80909090; - if (!_rowSelect || col < _headerCols) { - if (selectedCol || selectedRow) + if (c >= _headerCols || r >= _headerRows) { + if (c < _headerCols && selectedRow) + cl = 0x80FFC040; + if (r < _headerRows && selectedCol) cl = 0x80FFC040; } buf.fillRect(rc, cl);