cefclient: win: Support window state restore (see issue #3359)

The cefclient sample app on Windows will persist window state across application
restart if run with cache_path and persist_user_references enabled.

To test:
1. Run `cefclient --cache-path=/path/to/cache --persist-user-preferences`
2. Move or resize the window, maximize, minimize, etc.
3. Exit cefclient.
4. Run cefclient again with the same arguments. The previous window state will
   be restored.
This commit is contained in:
Marshall Greenblatt
2022-11-07 15:21:44 -05:00
parent 882bc19fdd
commit e2a9236106
13 changed files with 310 additions and 94 deletions

View File

@@ -9,7 +9,7 @@
// implementations. See the translator.README.txt file in the tools directory
// for more information.
//
// $hash=aa73ff15eb79f0e7f89338db9001e2876d2a3a6e$
// $hash=aa091bc741fcefee760906fce4c8f86937dd74ca$
//
#include <dlfcn.h>
@@ -239,6 +239,10 @@ struct libcef_pointers {
cef_display_convert_screen_point_to_pixels;
decltype(&cef_display_convert_screen_point_from_pixels)
cef_display_convert_screen_point_from_pixels;
decltype(&cef_display_convert_screen_rect_to_pixels)
cef_display_convert_screen_rect_to_pixels;
decltype(&cef_display_convert_screen_rect_from_pixels)
cef_display_convert_screen_rect_from_pixels;
decltype(&cef_label_button_create) cef_label_button_create;
decltype(&cef_menu_button_create) cef_menu_button_create;
decltype(&cef_panel_create) cef_panel_create;
@@ -451,6 +455,8 @@ int libcef_init_pointers(const char* path) {
INIT_ENTRY(cef_display_get_alls);
INIT_ENTRY(cef_display_convert_screen_point_to_pixels);
INIT_ENTRY(cef_display_convert_screen_point_from_pixels);
INIT_ENTRY(cef_display_convert_screen_rect_to_pixels);
INIT_ENTRY(cef_display_convert_screen_rect_from_pixels);
INIT_ENTRY(cef_label_button_create);
INIT_ENTRY(cef_menu_button_create);
INIT_ENTRY(cef_panel_create);
@@ -1288,6 +1294,16 @@ cef_point_t cef_display_convert_screen_point_from_pixels(
return g_libcef_pointers.cef_display_convert_screen_point_from_pixels(point);
}
NO_SANITIZE("cfi-icall")
cef_rect_t cef_display_convert_screen_rect_to_pixels(const cef_rect_t* rect) {
return g_libcef_pointers.cef_display_convert_screen_rect_to_pixels(rect);
}
NO_SANITIZE("cfi-icall")
cef_rect_t cef_display_convert_screen_rect_from_pixels(const cef_rect_t* rect) {
return g_libcef_pointers.cef_display_convert_screen_rect_from_pixels(rect);
}
NO_SANITIZE("cfi-icall")
struct _cef_label_button_t* cef_label_button_create(
struct _cef_button_delegate_t* delegate,