From: Olaf Wintermann Date: Sun, 23 Nov 2025 13:54:55 +0000 (+0100) Subject: remove old motif UI code X-Git-Url: https://uap-core.de/gitweb/?a=commitdiff_plain;h=fe097144a6e2b2e8018532db1753bb422d3ba986;p=uwplayer.git remove old motif UI code --- diff --git a/application/window.c b/application/window.c index 735cbad..01cfc26 100644 --- a/application/window.c +++ b/application/window.c @@ -37,9 +37,6 @@ static MainWindow *main_window; static void WindowCreateMenu(MainWindow *win, Widget parent, Arg *args, int nargs); -static void ViewFullscreenCB(Widget w, void *udata, void *cdata); -static void ViewSidebarCB(Widget w, void *udata, void *cdata); -static void ViewAdjustWindowSizeCB(Widget w, void *udata, void *cdata); static void PrefSingleInstanceCB(Widget w, void *udata, void *cdata); static void WindowRealized(MainWindow *win); @@ -317,82 +314,6 @@ MainWindow* WindowCreate(Display *display) { } WindowShowSidebar(window, FALSE); - - /* - // toplevel window - n = 0; - XtSetArg(args[n], XmNtitle, APP_NAME); n++; - window->window = XtAppCreateShell( - APP_NAME, - APP_CLASS, - applicationShellWidgetClass, - //vendorShellWidgetClass, - display, - args, - n); - - // close handler - Atom wm_delete_window; - wm_delete_window = XmInternAtom( - display, - "WM_DELETE_WINDOW", - 0); - XmAddWMProtocolCallback( - window->window, - wm_delete_window, - window_close_handler, - window); - - // resize handler - XtAddEventHandler(window->window, StructureNotifyMask, False, resizeEH, window); - - n = 0; - XtSetArg(args[n], XmNwidth, 360); n++; - XtSetArg(args[n], XmNheight, 220); n++; - XtSetArg(args[n], XmNshadowThickness, 0); n++; - Widget container = XmCreateForm(window->window, "form", args, n); - XtManageChild(container); - XtAddEventHandler(container, KeyPressMask, FALSE, windowKeyEH, window); - - n = 0; - XtSetArg(args[n], XmNleftAttachment, XmATTACH_FORM); n++; - XtSetArg(args[n], XmNrightAttachment, XmATTACH_FORM); n++; - XtSetArg(args[n], XmNtopAttachment, XmATTACH_FORM); n++; - WindowCreateMenu(window, container, args, n); - - n = 0; - XtSetArg(args[n], XmNrightAttachment, XmATTACH_FORM); n++; - XtSetArg(args[n], XmNbottomAttachment, XmATTACH_FORM); n++; - XtSetArg(args[n], XmNtopAttachment, XmATTACH_WIDGET); n++; - XtSetArg(args[n], XmNtopWidget, window->menubar); n++; - XtSetArg(args[n], XmNwidth, 300); n++; - XtSetArg(args[n], XmNscrollingPolicy, XmAUTOMATIC); n++; - XtSetArg(args[n], XmNscrollBarDisplayPolicy, XmAS_NEEDED); n++; - XtSetArg(args[n], XmNspacing, 0); n++; - XtSetArg(args[n], XmNshadowThickness, 0); n++; - window->sidebar_scrolledwindow = XmCreateScrolledWindow(container, "sw_sidebar", args, n); - window->sidebar = CreateSidebar(window->sidebar_scrolledwindow, "sidebar", args, 0); - SidebarSetWindow(window->sidebar, window); - XtManageChild(window->sidebar); - //XtManageChild(window->sidebar); - - n = 0; - XtSetArg(args[n], XmNleftAttachment, XmATTACH_FORM); n++; - XtSetArg(args[n], XmNrightAttachment, XmATTACH_FORM); n++; - XtSetArg(args[n], XmNrightWidget, window->sidebar); n++; - XtSetArg(args[n], XmNbottomAttachment, XmATTACH_FORM); n++; - XtSetArg(args[n], XmNtopAttachment, XmATTACH_WIDGET); n++; - XtSetArg(args[n], XmNtopWidget, window->menubar); n++; - XtSetArg(args[n], XmNbackground, BlackPixelOfScreen(XtScreen(window->window))); n++; - window->player_widget = XmCreateDrawingArea(container, "player", args, n); - XtManageChild(window->player_widget); - XtAddCallback(window->player_widget, XmNinputCallback, playerWidgetInputCB, window); - XmProcessTraversal(window->player_widget, XmTRAVERSE_CURRENT); - XtAddEventHandler(window->player_widget, PointerMotionMask | ButtonPressMask | ButtonReleaseMask | FocusChangeMask | - EnterWindowMask | KeyPressMask | KeyReleaseMask | - LeaveWindowMask, FALSE, playerEH, window); - */ - // get F keycode keycodeF = XKeysymToKeycode(XtDisplay(obj->widget), XStringToKeysym("F")); @@ -410,163 +331,19 @@ MainWindow* GetMainWindow(void) { } void WindowShow(MainWindow *win) { - //XtRealizeWidget(win->window); ui_show(win->obj); } -/* - * Creates a XmPushButton menu item - */ -static Widget createMenuItem( - Widget menu, - char *name, - char *label, - char mnemonic, - const char *accelerator, - char *accelerator_text, - XtCallbackProc callback, - void *cbData) -{ - Arg args[16]; - int n = 0; - - XmString s1 = XmStringCreateSimple(label); - XtSetArg(args[n], XmNlabelString, s1); n++; - XtSetArg(args[n], XmNmnemonic, mnemonic); n++; - XmString at = NULL; - if(accelerator && accelerator_text) { - at = XmStringCreateSimple(accelerator_text); - XtSetArg(args[n], XmNaccelerator, accelerator); n++; - XtSetArg(args[n], XmNacceleratorText, at); n++; - } - - Widget menuItem = XmCreatePushButtonGadget(menu, name, args, n); - XtManageChild(menuItem); - XmStringFree(s1); - if(at) XmStringFree(at); - - if(callback) { - XtAddCallback(menuItem, XmNactivateCallback, (XtCallbackProc)callback, cbData); - } - - return menuItem; -} - -/* - * Creates a XmToggleButton menu item - */ -static Widget createToggleMenuItem( - Widget menu, - char *name, - char *label, - char mnemonic, - Boolean defaultValue, - const char *accelerator, - char *accelerator_text, - XtCallbackProc callback, - void *cbData) -{ - Arg args[16]; - int n = 0; - - XmString s1 = XmStringCreateSimple(label); - XtSetArg(args[n], XmNlabelString, s1); n++; - XtSetArg(args[n], XmNmnemonic, mnemonic); n++; - XtSetArg(args[n], XmNset, defaultValue); n++; - XmString at = NULL; - if(accelerator && accelerator_text) { - at = XmStringCreateSimple(accelerator_text); - XtSetArg(args[n], XmNaccelerator, accelerator); n++; - XtSetArg(args[n], XmNacceleratorText, at); n++; - } - - Widget menuItem = XmCreateToggleButtonGadget(menu, name, args, n); - XtManageChild(menuItem); - XmStringFree(s1); - if(at) XmStringFree(at); - - if(callback) { - XtAddCallback(menuItem, XmNvalueChangedCallback, (XtCallbackProc)callback, cbData); - } - - return menuItem; -} - -/* - * Creates a menu separator - */ -static Widget createMenuSeparator(Widget menu) { - Widget w = XmCreateSeparator(menu, "separator", NULL, 0); - XtManageChild(w); - return w; -} - -void go_fullscreen(Display *dsp, Window win) -{ - XEvent xev; - Atom wm_state = XInternAtom(dsp, "_NET_WM_STATE", False); - Atom fullscreen = XInternAtom(dsp, "_NET_WM_STATE_FULLSCREEN", False); - memset(&xev, 0, sizeof(xev)); - xev.type = ClientMessage; - xev.xclient.window = win; - xev.xclient.message_type = wm_state; - xev.xclient.format = 32; - xev.xclient.data.l[0] = 1; // _NET_WM_STATE_ADD - xev.xclient.data.l[1] = fullscreen; - xev.xclient.data.l[2] = 0; - XSendEvent(dsp, DefaultRootWindow(dsp), False, - SubstructureNotifyMask, &xev); -} - static Atom net_wm_state; static Atom net_wm_state_fullscreen; static int net_wm_atoms_initialized = 0; void WindowFullscreen(MainWindow *win, bool enableFullscreen) { - Display *dpy = XtDisplay(win->obj->widget); - - // init net_wm_state atoms - if(!net_wm_atoms_initialized) { - net_wm_state = XInternAtom(dpy, "_NET_WM_STATE", False); - net_wm_state_fullscreen = XInternAtom(dpy, "_NET_WM_STATE_FULLSCREEN", False); - net_wm_atoms_initialized = 1; - } - ui_window_menubar_set_visible(win->obj, !enableFullscreen); win->fullscreen = enableFullscreen; WindowShowSidebar(win, enableFullscreen ? false : win->sidebarvisible); - - XEvent ev; - memset(&ev, 0, sizeof(XEvent)); - ev.type = ClientMessage; - ev.xclient.window = XtWindow(win->obj->widget); - ev.xclient.message_type = net_wm_state; - ev.xclient.format = 32; - ev.xclient.data.l[0] = enableFullscreen ? 1 : 0; - ev.xclient.data.l[1] = net_wm_state_fullscreen; - ev.xclient.data.l[2] = 0; - XSendEvent(dpy, DefaultRootWindow(dpy), False, SubstructureNotifyMask | SubstructureRedirectMask, &ev); -} - -static void ViewFullscreenCB(Widget w, void *udata, void *cdata) { - if(main_window->fullscreen) { - WindowFullscreen(main_window, FALSE); - } else { - WindowFullscreen(main_window, TRUE); - } -} - -static void ViewSidebarCB(Widget w, void *udata, void *cdata) { - MainWindow *win = udata; - XmToggleButtonCallbackStruct *cb = cdata; - win->sidebarvisible = cb->set; - WindowShowSidebar(win, cb->set); -} - -static void ViewAdjustWindowSizeCB(Widget w, void *udata, void *cdata) { - MainWindow *win = udata; - win->adjustWindowSize = XmToggleButtonGadgetGetState(w); + ui_window_fullscreen(win->obj, enableFullscreen); } static void PrefSingleInstanceCB(Widget w, void *udata, void *cdata) { diff --git a/ui/motif/window.c b/ui/motif/window.c index 990b788..9489f07 100644 --- a/ui/motif/window.c +++ b/ui/motif/window.c @@ -179,6 +179,32 @@ void ui_window_menubar_set_visible(UiObject *obj, UiBool visible) { } } +static Atom net_wm_state; +static Atom net_wm_state_fullscreen; +static int net_wm_atoms_initialized = 0; + +void ui_window_fullscreen(UiObject *obj, UiBool fullscreen) { + Display *dpy = XtDisplay(obj->widget); + + // init net_wm_state atoms + if(!net_wm_atoms_initialized) { + net_wm_state = XInternAtom(dpy, "_NET_WM_STATE", False); + net_wm_state_fullscreen = XInternAtom(dpy, "_NET_WM_STATE_FULLSCREEN", False); + net_wm_atoms_initialized = 1; + } + + XEvent ev; + memset(&ev, 0, sizeof(XEvent)); + ev.type = ClientMessage; + ev.xclient.window = XtWindow(obj->widget); + ev.xclient.message_type = net_wm_state; + ev.xclient.format = 32; + ev.xclient.data.l[0] = fullscreen ? 1 : 0; + ev.xclient.data.l[1] = net_wm_state_fullscreen; + ev.xclient.data.l[2] = 0; + XSendEvent(dpy, DefaultRootWindow(dpy), False, SubstructureNotifyMask | SubstructureRedirectMask, &ev); +} + static void filedialog_event(UiEventData *event, int result, UiFileList flist) { UiEvent evt; evt.obj = event->obj; diff --git a/ui/ui/window.h b/ui/ui/window.h index 27203c2..3619b3a 100644 --- a/ui/ui/window.h +++ b/ui/ui/window.h @@ -85,6 +85,8 @@ UIEXPORT void ui_window_size(UiObject *obj, int width, int height); UIEXPORT void ui_window_default_size(int width, int height); UIEXPORT void ui_window_menubar_set_visible(UiObject *obj, UiBool visible); +UIEXPORT void ui_window_fullscreen(UiObject *obj, UiBool fullscreen); + UIEXPORT void ui_splitview_window_set_pos(UiObject *obj, int pos); UIEXPORT int ui_splitview_window_get_pos(UiObject *obj); UIEXPORT void ui_splitview_window_set_default_pos(int pos);