1
0
Fork 0
mirror of git://git.code.sf.net/p/cdesktopenv/code synced 2025-02-12 11:12:18 +00:00

dtcreate: make pop-ups work properly.

This commit is contained in:
hyousatsu 2024-09-09 02:07:37 +00:00
parent 121510cb72
commit fbc9488037
3 changed files with 92 additions and 59 deletions

View file

@ -47,6 +47,7 @@ void activateCB_ErrorDialog_OkButton( Widget UxWidget,
{ {
XtDestroyWidget(XtParent(UxWidget)); XtDestroyWidget(XtParent(UxWidget));
*(Widget **)UxClientData = NULL;
} }
/******************************************************************************/ /******************************************************************************/
@ -63,7 +64,7 @@ void display_error_message (Widget parent, char *message)
XtAddCallback( ErrorDialog, XmNokCallback, XtAddCallback( ErrorDialog, XmNokCallback,
(XtCallbackProc) activateCB_ErrorDialog_OkButton, (XtCallbackProc) activateCB_ErrorDialog_OkButton,
(XtPointer) NULL ); (XtPointer) &ErrorDialog );
XtVaSetValues (ErrorDialog, XtVaSetValues (ErrorDialog,
RES_CONVERT(XmNdialogTitle, GETMESSAGE(6, 31, "Create Action - Error")), RES_CONVERT(XmNdialogTitle, GETMESSAGE(6, 31, "Create Action - Error")),

View file

@ -158,10 +158,8 @@ void activateCB_open_FindSet (Widget find_set_button, XtPointer cdata,
XtFree(container_title); XtFree(container_title);
XtFree(directory_title); XtFree(directory_title);
XtFree(dialog_title); XtFree(dialog_title);
FreeIconSearchPathList(directories_list);
XtVaSetValues (IconSelector, XmNuserData, cdata, NULL); XtVaSetValues (IconSelector, XmNuserData, cdata, NULL);
UxPopupInterface (IconSelector, no_grab); UxPopupInterface (IconSelector, no_grab);
XmProcessTraversal(ISD_SelectedIconTextField, XmTRAVERSE_CURRENT);
return; return;
} }

View file

@ -50,6 +50,7 @@
#include <X11/cursorfont.h> #include <X11/cursorfont.h>
#include <Dt/Icon.h> #include <Dt/Icon.h>
#include <Dt/Wsm.h>
#include "dtcreate.h" #include "dtcreate.h"
#include "UxXt.h" #include "UxXt.h"
@ -144,7 +145,7 @@ int myscandir(char *pszDirName, struct dirent ***NameList, int Select(), int Com
errPtr = XtMalloc((strlen(msgPtr) + strlen(fmtPtr) + errPtr = XtMalloc((strlen(msgPtr) + strlen(fmtPtr) +
strlen(pszDirName) + 1) * sizeof(char)); strlen(pszDirName) + 1) * sizeof(char));
sprintf(errPtr, fmtPtr, msgPtr, pszDirName); sprintf(errPtr, fmtPtr, msgPtr, pszDirName);
display_error_message(CreateActionAppShell, errPtr); display_error_message(IconSelector, errPtr);
XtFree(errPtr); XtFree(errPtr);
return(0); return(0);
} }
@ -245,7 +246,7 @@ struct dirent **build_dirent_list (char *filter, int *filecount)
errPtr = XtMalloc((strlen(msgPtr) + strlen(fmtPtr) + errPtr = XtMalloc((strlen(msgPtr) + strlen(fmtPtr) +
strlen(dirname) + 1) * sizeof(char)); strlen(dirname) + 1) * sizeof(char));
sprintf(errPtr, fmtPtr, msgPtr, dirname); sprintf(errPtr, fmtPtr, msgPtr, dirname);
display_error_message(CreateActionAppShell, errPtr); display_error_message(IconSelector, errPtr);
XtFree(errPtr); XtFree(errPtr);
namelist = NULL; namelist = NULL;
} }
@ -1327,13 +1328,94 @@ void resizeCB_clipWindow( Widget UxWidget,
printf("icon_count = %d\n", icon_count); printf("icon_count = %d\n", icon_count);
#endif #endif
increment = (int)height / icon_count; increment = icon_count > 0 ? (int)height / icon_count : height;
XtVaSetValues(widvScrollbar, XmNincrement, increment, NULL); XtVaSetValues(widvScrollbar, XmNincrement, increment, NULL);
return; return;
} }
static void mapCB_icon_selection_dialog(Widget UxWidget,
XtPointer UxClientData,
XtPointer UxCallbackArg)
{
DtWsmRemoveWorkspaceFunctions(UxDisplay, XtWindow(XtParent(UxWidget)));
}
static void focusCB_icon_selection_dialog(Widget UxWidget,
XtPointer UxClientData,
XtPointer UxCallbackArg)
{
char *initial_filter;
Widget descendant;
XtRemoveCallback(UxWidget, XmNfocusCallback, focusCB_icon_selection_dialog,
NULL);
TurnOnHourGlassAllWindows();
XmProcessTraversal(ISD_SelectedIconTextField, XmTRAVERSE_CURRENT);
/******************************************************************/
/* save file_filter */
/******************************************************************/
file_filter_global = (char *)calloc(strlen((char *)file_filter)+1,
sizeof(char));
#ifdef DEBUG
if (!file_filter_global)
printf("Calloc error for file_filter_global, in mapCB_icon_selection_dialog.\n");
#endif
if (file_filter[0] == '*')
file_filter_global = strcpy(file_filter_global, (char *)&file_filter[1]);
else
file_filter_global = strcpy(file_filter_global, (char *)file_filter);
load_directories_list((char **)directories_list);
initial_filter = initialize_filter((char *)file_filter);
FreeIconSearchPathList((char **)directories_list);
/******************************************************************/
/* save main_filter */
/******************************************************************/
main_filter = (char *)calloc(strlen(initial_filter)+1, sizeof(char));
#ifdef DEBUG
if (!main_filter)
printf("Calloc error for main_filter, in mapCB_icon_selection_dialog.\n");
#endif
main_filter = strcpy(main_filter, initial_filter);
icons_in_container = NULL;
icon_count = 0;
update_container_contents (initial_filter);
/******************************************************************/
/* set selected_icon_name to first name in list */
/******************************************************************/
#if 0
if (icons_in_container) {
XtVaGetValues (icons_in_container[0], XmNimageName, &icon_file_name, NULL);
XmTextFieldSetString (icon_name_text_field, icon_file_name);
selected_icon_name = XtMalloc(strlen(icon_file_name) + 1);
if (selected_icon_name)
selected_icon_name = strcpy(selected_icon_name, icon_file_name);
}
#endif
load_filter_text_field(initial_filter);
if (ErrorDialog && XtParent(ErrorDialog) == UxWidget) {
descendant = XtNameToWidget(ErrorDialog, "OK");
XtSetKeyboardFocus(ErrorDialog, descendant ? descendant : ErrorDialog);
}
TurnOffHourGlassAllWindows();
}
/***************************************************************************/ /***************************************************************************/
/* */ /* */
/* _Uxbuild_icon_selection_dialog */ /* _Uxbuild_icon_selection_dialog */
@ -1391,6 +1473,11 @@ static Widget _Uxbuild_icon_selection_dialog(void)
(XtCallbackProc) helpCB_general, (XtCallbackProc) helpCB_general,
(XtPointer) HELP_ICONSELECTOR ); (XtPointer) HELP_ICONSELECTOR );
XtAddCallback(icon_selection_dialog, XmNmapCallback,
mapCB_icon_selection_dialog, NULL);
XtAddCallback(icon_selection_dialog, XmNfocusCallback,
focusCB_icon_selection_dialog, NULL);
/* Creation of bottom_button_form */ /* Creation of bottom_button_form */
bottom_button_form = XtVaCreateManagedWidget( "bottom_button_form", bottom_button_form = XtVaCreateManagedWidget( "bottom_button_form",
@ -1857,7 +1944,6 @@ Widget create_icon_selection_dialog(swidget _UxUxParent,
{ {
char *initial_filter;
char *icon_file_name; char *icon_file_name;
Widget rtrn; Widget rtrn;
int lcv; int lcv;
@ -1914,57 +2000,5 @@ Widget create_icon_selection_dialog(swidget _UxUxParent,
XtUnmanageChild (icon_name_text_field); XtUnmanageChild (icon_name_text_field);
} }
TurnOnHourGlassAllWindows();
/******************************************************************/
/* save file_filter */
/******************************************************************/
file_filter_global = (char *)calloc(strlen((char *)file_filter)+1, sizeof(char));
#ifdef DEBUG
if (!file_filter_global) printf("Calloc error for file_filter_global, in create_icon_selection_dialog.\n");
#endif
if (file_filter[0] == '*')
file_filter_global = strcpy(file_filter_global, (char *)&file_filter[1]);
else
file_filter_global = strcpy(file_filter_global, (char *)file_filter);
load_directories_list ((char **)directories_list);
initial_filter = initialize_filter ((char *)file_filter);
/******************************************************************/
/* save main_filter */
/******************************************************************/
main_filter = (char *)calloc(strlen(initial_filter)+1, sizeof(char));
#ifdef DEBUG
if (!main_filter) printf("Calloc error for main_filter, in create_icon_selection_dialog.\n");
#endif
main_filter = strcpy(main_filter, initial_filter);;
icons_in_container = NULL;
icon_count = 0;
update_container_contents (initial_filter);
/******************************************************************/
/* set selected_icon_name to first name in list */
/******************************************************************/
#if 0
if (icons_in_container) {
XtVaGetValues (icons_in_container[0], XmNimageName, &icon_file_name, NULL);
XmTextFieldSetString (icon_name_text_field, icon_file_name);
selected_icon_name = XtMalloc(strlen(icon_file_name) + 1);
if (selected_icon_name)
selected_icon_name = strcpy(selected_icon_name, icon_file_name);
}
#endif
load_filter_text_field (initial_filter);
TurnOffHourGlassAllWindows();
return(rtrn); return(rtrn);
} }