ui/motif/window.c

changeset 934
89118a9350da
parent 933
70e14fa98ab4
child 986
6f7600c2b9e1
equal deleted inserted replaced
933:70e14fa98ab4 934:89118a9350da
175 ui_set_visible(window->menubar, visible); 175 ui_set_visible(window->menubar, visible);
176 } 176 }
177 } else { 177 } else {
178 fprintf(stderr, "Error: obj is not an application window\n"); 178 fprintf(stderr, "Error: obj is not an application window\n");
179 } 179 }
180 }
181
182 static Atom net_wm_state;
183 static Atom net_wm_state_fullscreen;
184 static int net_wm_atoms_initialized = 0;
185
186 void ui_window_fullscreen(UiObject *obj, UiBool fullscreen) {
187 Display *dpy = XtDisplay(obj->widget);
188
189 // init net_wm_state atoms
190 if(!net_wm_atoms_initialized) {
191 net_wm_state = XInternAtom(dpy, "_NET_WM_STATE", False);
192 net_wm_state_fullscreen = XInternAtom(dpy, "_NET_WM_STATE_FULLSCREEN", False);
193 net_wm_atoms_initialized = 1;
194 }
195
196 XEvent ev;
197 memset(&ev, 0, sizeof(XEvent));
198 ev.type = ClientMessage;
199 ev.xclient.window = XtWindow(obj->widget);
200 ev.xclient.message_type = net_wm_state;
201 ev.xclient.format = 32;
202 ev.xclient.data.l[0] = fullscreen ? 1 : 0;
203 ev.xclient.data.l[1] = net_wm_state_fullscreen;
204 ev.xclient.data.l[2] = 0;
205 XSendEvent(dpy, DefaultRootWindow(dpy), False, SubstructureNotifyMask | SubstructureRedirectMask, &ev);
180 } 206 }
181 207
182 static void filedialog_event(UiEventData *event, int result, UiFileList flist) { 208 static void filedialog_event(UiEventData *event, int result, UiFileList flist) {
183 UiEvent evt; 209 UiEvent evt;
184 evt.obj = event->obj; 210 evt.obj = event->obj;

mercurial