Mercurial > dwindows
changeset 2506:fa976a5bc7bd
Add DW_FEATURE_WINDOW_PLACEMENT for platforms supporting arbitrary window placement.
Several of the new platforms supported do not allow arbitrary window placement.
GTK3/4 with Wayland does not allow you to specify the location, just the size.
iOS and Android by default the window is the full screen, or fraction of it.
GTK2/3/4 with X11, Windows, OS/2 and MacOS support arbitrary window placement.
author | bsmith@81767d24-ef19-dc11-ae90-00e081727c95 |
---|---|
date | Thu, 06 May 2021 23:19:46 +0000 |
parents | a149dabf6a1f |
children | 4b45e888eb10 |
files | dw.h dwtest.c gtk/dw.c gtk3/dw.c gtk4/dw.c mac/dw.m os2/dw.c template/dw.c win/dw.c |
diffstat | 9 files changed, 65 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/dw.h Thu May 06 22:02:49 2021 +0000 +++ b/dw.h Thu May 06 23:19:46 2021 +0000 @@ -1763,6 +1763,7 @@ DW_FEATURE_MLE_RICH_EDIT, /* Supports Rich Edit based MLE control (Windows) */ DW_FEATURE_TASK_BAR, /* Supports icons in the taskbar or similar system widget */ DW_FEATURE_TREE, /* Supports the Tree Widget */ + DW_FEATURE_WINDOW_PLACEMENT /* Supports arbitrary window placement */ DW_FEATURE_MAX } DWFEATURE;
--- a/dwtest.c Thu May 06 22:02:49 2021 +0000 +++ b/dwtest.c Thu May 06 23:19:46 2021 +0000 @@ -2131,6 +2131,7 @@ "Supports Rich Edit based MLE control (Windows)", "Supports icons in the taskbar or similar system widget", "Supports the Tree Widget", + "Supports arbitrary window placement", NULL }; /*
--- a/gtk/dw.c Thu May 06 22:02:49 2021 +0000 +++ b/gtk/dw.c Thu May 06 23:19:46 2021 +0000 @@ -14008,6 +14008,7 @@ case DW_FEATURE_UTF8_UNICODE: case DW_FEATURE_MLE_WORD_WRAP: case DW_FEATURE_TREE: + case DW_FEATURE_WINDOW_PLACEMENT: return DW_FEATURE_ENABLED; default: return DW_FEATURE_UNSUPPORTED; @@ -14048,6 +14049,7 @@ case DW_FEATURE_UTF8_UNICODE: case DW_FEATURE_MLE_WORD_WRAP: case DW_FEATURE_TREE: + case DW_FEATURE_WINDOW_PLACEMENT: return DW_ERROR_GENERAL; /* These features are supported and configurable */ default:
--- a/gtk3/dw.c Thu May 06 22:02:49 2021 +0000 +++ b/gtk3/dw.c Thu May 06 23:19:46 2021 +0000 @@ -12640,6 +12640,21 @@ case DW_FEATURE_MLE_WORD_WRAP: case DW_FEATURE_TREE: return DW_FEATURE_ENABLED; +#ifdef GDK_WINDOWING_X11 + case DW_FEATURE_WINDOW_PLACEMENT: + { + int _locked_by_me = FALSE, retval = DW_FEATURE_UNSUPPORTED; + GdkDisplay *display; + + DW_MUTEX_LOCK; + display = gdk_display_get_default(); + + if(display && GDK_IS_X11_DISPLAY(display)) + retval = DW_ERROR_ENABLED; + DW_MUTEX_UNLOCK; + return retval; + } +#endif default: return DW_FEATURE_UNSUPPORTED; } @@ -12683,6 +12698,21 @@ case DW_FEATURE_MLE_WORD_WRAP: case DW_FEATURE_TREE: return DW_ERROR_GENERAL; +#ifdef GDK_WINDOWING_X11 + case DW_FEATURE_WINDOW_PLACEMENT: + { + int _locked_by_me = FALSE, retval = DW_FEATURE_UNSUPPORTED; + GdkDisplay *display; + + DW_MUTEX_LOCK; + display = gdk_display_get_default(); + + if(display && GDK_IS_X11_DISPLAY(display)) + retval = DW_ERROR_GENERAL; + DW_MUTEX_UNLOCK; + return retval; + } +#endif /* These features are supported and configurable */ default: return DW_FEATURE_UNSUPPORTED;
--- a/gtk4/dw.c Thu May 06 22:02:49 2021 +0000 +++ b/gtk4/dw.c Thu May 06 23:19:46 2021 +0000 @@ -11057,6 +11057,23 @@ return retval; } +DW_FUNCTION_DEFINITION(dw_x11_check, int, int trueresult, int falseresult) +DW_FUNCTION_ADD_PARAM1(handle) +DW_FUNCTION_RETURN(dw_window_raise, int) +DW_FUNCTION_RESTORE_PARAM1(trueresult, int, falseresult, int) +{ + int retval = falseresult; +#ifdef GDK_WINDOWING_X11 + GdkDisplay *display = gdk_display_get_default(); + + if(display && GDK_IS_X11_DISPLAY(display)) + { + retval = trueresult; + } +#endif + DW_FUNCTION_RETURN_THIS(retval); +} + /* * Gets the state of the requested library feature. * Parameters: @@ -11080,6 +11097,8 @@ case DW_FEATURE_MLE_WORD_WRAP: case DW_FEATURE_TREE: return DW_FEATURE_ENABLED; + case DW_FEATURE_WINDOW_PLACEMENT: + return dw_x11_check(DW_FEATURE_ENABLED, DW_FEATURE_UNSUPPORTED); default: return DW_FEATURE_UNSUPPORTED; } @@ -11112,6 +11131,8 @@ case DW_FEATURE_MLE_WORD_WRAP: case DW_FEATURE_TREE: return DW_ERROR_GENERAL; + case DW_FEATURE_WINDOW_PLACEMENT: + return dw_x11_check(DW_ERROR_GENERAL, DW_FEATURE_UNSUPPORTED); /* These features are supported and configurable */ default: return DW_FEATURE_UNSUPPORTED;
--- a/mac/dw.m Thu May 06 22:02:49 2021 +0000 +++ b/mac/dw.m Thu May 06 23:19:46 2021 +0000 @@ -13179,6 +13179,7 @@ case DW_FEATURE_MLE_WORD_WRAP: case DW_FEATURE_UTF8_UNICODE: case DW_FEATURE_TREE: + case DW_FEATURE_WINDOW_PLACEMENT: return DW_FEATURE_ENABLED; #ifdef BUILDING_FOR_MOJAVE case DW_FEATURE_DARK_MODE: @@ -13249,6 +13250,7 @@ case DW_FEATURE_MLE_WORD_WRAP: case DW_FEATURE_UTF8_UNICODE: case DW_FEATURE_TREE: + case DW_FEATURE_WINDOW_PLACEMENT: return DW_ERROR_GENERAL; /* These features are supported and configurable */ #ifdef BUILDING_FOR_MOJAVE
--- a/os2/dw.c Thu May 06 22:02:49 2021 +0000 +++ b/os2/dw.c Thu May 06 23:19:46 2021 +0000 @@ -13868,6 +13868,7 @@ case DW_FEATURE_NOTEBOOK_STATUS_TEXT: case DW_FEATURE_MDI: case DW_FEATURE_TREE: + case DW_FEATURE_WINDOW_PLACEMENT: return DW_FEATURE_ENABLED; case DW_FEATURE_TASK_BAR: { @@ -13906,6 +13907,7 @@ case DW_FEATURE_NOTEBOOK_STATUS_TEXT: case DW_FEATURE_MDI: case DW_FEATURE_TREE: + case DW_FEATURE_WINDOW_PLACEMENT: return DW_ERROR_GENERAL; case DW_FEATURE_TASK_BAR: {
--- a/template/dw.c Thu May 06 22:02:49 2021 +0000 +++ b/template/dw.c Thu May 06 23:19:46 2021 +0000 @@ -3695,7 +3695,8 @@ case DW_FEATURE_UTF8_UNICODE: /* Supports UTF8 encoded Unicode text */ case DW_FEATURE_MLE_RICH_EDIT: /* Supports Rich Edit based MLE control (Windows) */ case DW_FEATURE_TASK_BAR: /* Supports icons in the taskbar or similar system widget */ - case DW_FEATURE_TREE: .* Supports the Tree Widget */ + case DW_FEATURE_TREE: /* Supports the Tree Widget */ + case DW_FEATURE_WINDOW_PLACEMENT: /* Supports arbitrary window placement */ return DW_FEATURE_ENABLED; #endif default: @@ -3736,7 +3737,8 @@ case DW_FEATURE_UTF8_UNICODE: /* Supports UTF8 encoded Unicode text */ case DW_FEATURE_MLE_RICH_EDIT: /* Supports Rich Edit based MLE control (Windows) */ case DW_FEATURE_TASK_BAR: /* Supports icons in the taskbar or similar system widget */ - case DW_FEATURE_TREE: .* Supports the Tree Widget */ + case DW_FEATURE_TREE: /* Supports the Tree Widget */ + case DW_FEATURE_WINDOW_PLACEMENT: /* Supports arbitrary window placement */ return DW_ERROR_GENERAL; #endif /* These features are supported and configurable */
--- a/win/dw.c Thu May 06 22:02:49 2021 +0000 +++ b/win/dw.c Thu May 06 23:19:46 2021 +0000 @@ -13855,6 +13855,7 @@ case DW_FEATURE_MDI: case DW_FEATURE_TASK_BAR: case DW_FEATURE_TREE: + case DW_FEATURE_WINDOW_PLACEMENT: return DW_FEATURE_ENABLED; #ifdef BUILD_TOAST case DW_FEATURE_NOTIFICATION: @@ -13940,6 +13941,7 @@ case DW_FEATURE_MDI: case DW_FEATURE_TASK_BAR: case DW_FEATURE_TREE: + case DW_FEATURE_WINDOW_PLACEMENT: return DW_ERROR_GENERAL; #ifdef BUILD_TOAST case DW_FEATURE_NOTIFICATION: