Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
W
wine-winehq
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
wine
wine-winehq
Commits
8d004d51
Commit
8d004d51
authored
Nov 09, 2017
by
Andrew Eikum
Committed by
Alexandre Julliard
Nov 10, 2017
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
shell32: Scale explorer browser sizes by DPI.
Signed-off-by:
Andrew Eikum
<
aeikum@codeweavers.com
>
Signed-off-by:
Alexandre Julliard
<
julliard@winehq.org
>
parent
94a85758
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
38 additions
and
16 deletions
+38
-16
ebrowser.c
dlls/shell32/ebrowser.c
+38
-16
No files found.
dlls/shell32/ebrowser.c
View file @
8d004d51
...
...
@@ -38,6 +38,7 @@ WINE_DEFAULT_DEBUG_CHANNEL(shell);
#define SPLITTER_WIDTH 2
#define NP_MIN_WIDTH 60
#define NP_DEFAULT_WIDTH 150
#define SV_MIN_WIDTH 150
typedef
struct
_event_client
{
...
...
@@ -83,6 +84,8 @@ typedef struct _ExplorerBrowserImpl {
travellog_entry
*
travellog_cursor
;
int
travellog_count
;
int
dpix
;
IShellView
*
psv
;
RECT
sv_rc
;
LPITEMIDLIST
current_pidl
;
...
...
@@ -274,6 +277,8 @@ static void update_layout(ExplorerBrowserImpl *This)
RECT
rc
;
INT
navpane_width_actual
;
INT
shellview_width_actual
;
int
np_min_width
=
MulDiv
(
NP_MIN_WIDTH
,
This
->
dpix
,
USER_DEFAULT_SCREEN_DPI
);
int
sv_min_width
=
MulDiv
(
SV_MIN_WIDTH
,
This
->
dpix
,
USER_DEFAULT_SCREEN_DPI
);
TRACE
(
"%p (navpane: %d, EBO_SHOWFRAMES: %d)
\n
"
,
This
,
This
->
navpane
.
show
,
This
->
eb_options
&
EBO_SHOWFRAMES
);
...
...
@@ -285,10 +290,10 @@ static void update_layout(ExplorerBrowserImpl *This)
navpane_width_actual
=
0
;
shellview_width_actual
=
rc
.
right
-
navpane_width_actual
;
if
(
shellview_width_actual
<
SV_MIN_WIDTH
&&
navpane_width_actual
)
if
(
shellview_width_actual
<
sv_min_width
&&
navpane_width_actual
)
{
INT
missing_width
=
SV_MIN_WIDTH
-
shellview_width_actual
;
if
(
missing_width
<
(
navpane_width_actual
-
NP_MIN_WIDTH
))
INT
missing_width
=
sv_min_width
-
shellview_width_actual
;
if
(
missing_width
<
(
navpane_width_actual
-
np_min_width
))
{
/* Shrink the navpane */
navpane_width_actual
-=
missing_width
;
...
...
@@ -327,9 +332,10 @@ static void update_layout(ExplorerBrowserImpl *This)
static
void
size_panes
(
ExplorerBrowserImpl
*
This
)
{
int
splitter_width
=
MulDiv
(
SPLITTER_WIDTH
,
This
->
dpix
,
USER_DEFAULT_SCREEN_DPI
);
MoveWindow
(
This
->
navpane
.
hwnd_splitter
,
This
->
navpane
.
rc
.
right
-
SPLITTER_WIDTH
,
This
->
navpane
.
rc
.
top
,
SPLITTER_WIDTH
,
This
->
navpane
.
rc
.
bottom
-
This
->
navpane
.
rc
.
top
,
This
->
navpane
.
rc
.
right
-
splitter_width
,
This
->
navpane
.
rc
.
top
,
splitter_width
,
This
->
navpane
.
rc
.
bottom
-
This
->
navpane
.
rc
.
top
,
TRUE
);
MoveWindow
(
This
->
hwnd_sv
,
...
...
@@ -494,12 +500,14 @@ static void splitter_draw(HWND hwnd, RECT *rc)
*/
static
LRESULT
navpane_splitter_beginresize
(
ExplorerBrowserImpl
*
This
,
HWND
hwnd
,
LPARAM
lParam
)
{
int
splitter_width
=
MulDiv
(
SPLITTER_WIDTH
,
This
->
dpix
,
USER_DEFAULT_SCREEN_DPI
);
TRACE
(
"
\n
"
);
SetCapture
(
hwnd
);
This
->
splitter_rc
=
This
->
navpane
.
rc
;
This
->
splitter_rc
.
left
=
This
->
splitter_rc
.
right
-
SPLITTER_WIDTH
;
This
->
splitter_rc
.
left
=
This
->
splitter_rc
.
right
-
splitter_width
;
splitter_draw
(
GetParent
(
hwnd
),
&
This
->
splitter_rc
);
...
...
@@ -510,6 +518,9 @@ static LRESULT navpane_splitter_resizing(ExplorerBrowserImpl *This, HWND hwnd, L
{
int
new_width
,
dx
;
RECT
rc
;
int
splitter_width
=
MulDiv
(
SPLITTER_WIDTH
,
This
->
dpix
,
USER_DEFAULT_SCREEN_DPI
);
int
np_min_width
=
MulDiv
(
NP_MIN_WIDTH
,
This
->
dpix
,
USER_DEFAULT_SCREEN_DPI
);
int
sv_min_width
=
MulDiv
(
SV_MIN_WIDTH
,
This
->
dpix
,
USER_DEFAULT_SCREEN_DPI
);
if
(
GetCapture
()
!=
hwnd
)
return
FALSE
;
...
...
@@ -518,10 +529,10 @@ static LRESULT navpane_splitter_resizing(ExplorerBrowserImpl *This, HWND hwnd, L
rc
=
This
->
navpane
.
rc
;
new_width
=
This
->
navpane
.
width
+
dx
;
if
(
new_width
>
NP_MIN_WIDTH
&&
This
->
sv_rc
.
right
-
new_width
>
SV_MIN_WIDTH
)
if
(
new_width
>
np_min_width
&&
This
->
sv_rc
.
right
-
new_width
>
sv_min_width
)
{
rc
.
right
=
new_width
;
rc
.
left
=
rc
.
right
-
SPLITTER_WIDTH
;
rc
.
left
=
rc
.
right
-
splitter_width
;
splitter_draw
(
GetParent
(
hwnd
),
&
This
->
splitter_rc
);
splitter_draw
(
GetParent
(
hwnd
),
&
rc
);
This
->
splitter_rc
=
rc
;
...
...
@@ -533,6 +544,8 @@ static LRESULT navpane_splitter_resizing(ExplorerBrowserImpl *This, HWND hwnd, L
static
LRESULT
navpane_splitter_endresize
(
ExplorerBrowserImpl
*
This
,
HWND
hwnd
,
LPARAM
lParam
)
{
int
new_width
,
dx
;
int
np_min_width
=
MulDiv
(
NP_MIN_WIDTH
,
This
->
dpix
,
USER_DEFAULT_SCREEN_DPI
);
int
sv_min_width
=
MulDiv
(
SV_MIN_WIDTH
,
This
->
dpix
,
USER_DEFAULT_SCREEN_DPI
);
if
(
GetCapture
()
!=
hwnd
)
return
FALSE
;
...
...
@@ -542,10 +555,10 @@ static LRESULT navpane_splitter_endresize(ExplorerBrowserImpl *This, HWND hwnd,
splitter_draw
(
GetParent
(
hwnd
),
&
This
->
splitter_rc
);
new_width
=
This
->
navpane
.
width
+
dx
;
if
(
new_width
<
NP_MIN_WIDTH
)
new_width
=
NP_MIN_WIDTH
;
else
if
(
This
->
sv_rc
.
right
-
new_width
<
SV_MIN_WIDTH
)
new_width
=
This
->
sv_rc
.
right
-
SV_MIN_WIDTH
;
if
(
new_width
<
np_min_width
)
new_width
=
np_min_width
;
else
if
(
This
->
sv_rc
.
right
-
new_width
<
sv_min_width
)
new_width
=
This
->
sv_rc
.
right
-
sv_min_width
;
This
->
navpane
.
width
=
new_width
;
...
...
@@ -649,9 +662,11 @@ static LRESULT navpane_on_wm_create(HWND hwnd, CREATESTRUCTW *crs)
static
LRESULT
navpane_on_wm_size_move
(
ExplorerBrowserImpl
*
This
)
{
UINT
height
,
width
;
int
splitter_width
=
MulDiv
(
SPLITTER_WIDTH
,
This
->
dpix
,
USER_DEFAULT_SCREEN_DPI
);
TRACE
(
"%p
\n
"
,
This
);
width
=
This
->
navpane
.
rc
.
right
-
This
->
navpane
.
rc
.
left
-
SPLITTER_WIDTH
;
width
=
This
->
navpane
.
rc
.
right
-
This
->
navpane
.
rc
.
left
-
splitter_width
;
height
=
This
->
navpane
.
rc
.
bottom
-
This
->
navpane
.
rc
.
top
;
MoveWindow
(
This
->
navpane
.
hwnd_nstc
,
...
...
@@ -692,6 +707,7 @@ static void initialize_navpane(ExplorerBrowserImpl *This, HWND hwnd_parent, RECT
{
WNDCLASSW
wc
;
HWND
splitter
;
int
splitter_width
=
MulDiv
(
SPLITTER_WIDTH
,
This
->
dpix
,
USER_DEFAULT_SCREEN_DPI
);
static
const
WCHAR
navpane_classname
[]
=
{
'e'
,
'b'
,
'_'
,
'n'
,
'a'
,
'v'
,
'p'
,
'a'
,
'n'
,
'e'
,
0
};
if
(
!
GetClassInfoW
(
shell32_hInstance
,
navpane_classname
,
&
wc
)
)
...
...
@@ -712,8 +728,8 @@ static void initialize_navpane(ExplorerBrowserImpl *This, HWND hwnd_parent, RECT
splitter
=
CreateWindowExW
(
0
,
navpane_classname
,
NULL
,
WS_CHILD
|
WS_TABSTOP
|
WS_VISIBLE
,
rc
->
right
-
SPLITTER_WIDTH
,
rc
->
top
,
SPLITTER_WIDTH
,
rc
->
bottom
-
rc
->
top
,
rc
->
right
-
splitter_width
,
rc
->
top
,
splitter_width
,
rc
->
bottom
-
rc
->
top
,
hwnd_parent
,
0
,
shell32_hInstance
,
This
);
if
(
!
splitter
)
ERR
(
"Failed to create navpane : %d.
\n
"
,
GetLastError
());
...
...
@@ -849,6 +865,7 @@ static HRESULT WINAPI IExplorerBrowser_fnInitialize(IExplorerBrowser *iface,
ExplorerBrowserImpl
*
This
=
impl_from_IExplorerBrowser
(
iface
);
WNDCLASSW
wc
;
LONG
style
;
HDC
parent_dc
;
static
const
WCHAR
EB_CLASS_NAME
[]
=
{
'E'
,
'x'
,
'p'
,
'l'
,
'o'
,
'r'
,
'e'
,
'r'
,
'B'
,
'r'
,
'o'
,
'w'
,
's'
,
'e'
,
'r'
,
'C'
,
'o'
,
'n'
,
't'
,
'r'
,
'o'
,
'l'
,
0
};
...
...
@@ -876,6 +893,12 @@ static HRESULT WINAPI IExplorerBrowser_fnInitialize(IExplorerBrowser *iface,
if
(
!
RegisterClassW
(
&
wc
))
return
E_FAIL
;
}
parent_dc
=
GetDC
(
hwndParent
);
This
->
dpix
=
GetDeviceCaps
(
parent_dc
,
LOGPIXELSX
);
ReleaseDC
(
hwndParent
,
parent_dc
);
This
->
navpane
.
width
=
MulDiv
(
NP_DEFAULT_WIDTH
,
This
->
dpix
,
USER_DEFAULT_SCREEN_DPI
);
style
=
WS_CHILD
|
WS_VISIBLE
|
WS_CLIPSIBLINGS
;
if
(
!
(
This
->
eb_options
&
EBO_NOBORDER
))
style
|=
WS_BORDER
;
...
...
@@ -2066,7 +2089,6 @@ HRESULT WINAPI ExplorerBrowser_Constructor(IUnknown *pUnkOuter, REFIID riid, voi
eb
->
IInputObject_iface
.
lpVtbl
=
&
vt_IInputObject
;
/* Default settings */
eb
->
navpane
.
width
=
150
;
eb
->
navpane
.
show
=
TRUE
;
list_init
(
&
eb
->
event_clients
);
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment