void slideh_upd (GtkWidget *wdg, gpointer data) { hf_wrapper_struct *hfw; hfw = (hf_wrapper_struct *) * (hf_wrapper_struct **) data; if (hfw->hf_options->img->slideh == (gint) GTK_ADJUSTMENT(wdg)->value) return; hfw->hf_options->img->slideh = (gint) GTK_ADJUSTMENT(wdg)->value; hfw->if_calculated = FALSE; calc_slider(hfw); }
void gl_handle_events () { XEvent event; while (XPending(_gl_display) > 0) { XNextEvent(_gl_display, &event); #ifdef XDLG if (handle_xdlg_event(_gl_display, &event)) continue; #endif #ifdef XFIB if (x_fib_handle_events (_gl_display, &event)) { if (x_fib_status () > 0) { char *fn = x_fib_filename (); xapi_open (fn); free (fn); } } #endif if (event.xany.window != _gl_win) { continue; } #ifdef DND if (handle_dnd_event(_gl_display, _gl_win, &event)) continue; #endif switch (event.type) { case MapNotify: loop_run=1; break; case UnmapNotify: loop_run=0; break; case ConfigureNotify: if ( (event.xconfigure.width > 1 && event.xconfigure.height > 1) && (event.xconfigure.width != _gl_width || event.xconfigure.height != _gl_height) ) { gl_reshape(event.xconfigure.width, event.xconfigure.height); } break; case Expose: if (event.xexpose.count != 0) { break; } _gl_reexpose = true; break; case MotionNotify: if (osd_seeking && ui_syncsource() == SYNC_NONE && OSD_mode & OSD_POS) { const float sk = calc_slider (event.xmotion.x, event.xmotion.y); if (sk >= 0) ui_sync_manual (sk); } break; case ButtonPress: if (event.xbutton.button == 1 && ui_syncsource() == SYNC_NONE && OSD_mode & OSD_POS) { const float sk = calc_slider (event.xbutton.x, event.xbutton.y); if (sk >= 0) { ui_sync_manual (sk); osd_seeking = 1; force_redraw = 1; } } break; case ButtonRelease: if (osd_seeking) { osd_seeking = 0; force_redraw = 1; } else #ifdef XDLG if (event.xbutton.button == 3) { if (event.xbutton.x >= 0 && event.xbutton.x < _gl_width && event.xbutton.y >= 0 && event.xbutton.y < _gl_height) show_x_dialog(_gl_display, _gl_win, event.xbutton.x_root, event.xbutton.y_root ); } else #endif xjglButton(event.xbutton.button); break; case ReparentNotify: break; case KeyPress: { KeySym sym; char buf[6] = {0,0,0,0,0,0}; static XComposeStatus stat; int n = XLookupString(&event.xkey, buf, sizeof(buf), &sym, &stat); if (event.xkey.state & ControlMask && n == 1 && sym == XK_o) { #ifdef XFIB if (!(interaction_override & OVR_LOADFILE)) { x_fib_cfg_filter_callback(fib_filter_movie_filename); x_fib_show (_gl_display, _gl_win, 0, 0); } #endif } else if (event.xkey.state & ControlMask && n == 1 && sym == XK_w) { if (!(interaction_override & OVR_LOADFILE)) xapi_close (NULL); } else if (event.xkey.state & ControlMask && n == 1 && sym == XK_q) { if (!(interaction_override&OVR_QUIT_WMG)) loop_flag = 0; } else if (n == 1) { xjglKeyPress(sym, buf); } } break; case ClientMessage: if (!strcmp(XGetAtomName(_gl_display, event.xclient.message_type), "WM_PROTOCOLS")) { if ((interaction_override&OVR_QUIT_WMG) == 0) loop_flag=0; } break; default: break; } } if (_gl_reexpose) { _gl_reexpose = false; force_redraw = true; } static int periodic = 10; if (--periodic == 0) { periodic = 50 * framerate; // we should use 1/delay if delay > 0 XResetScreenSaver(_gl_display); // ..or spawn `xdg-screensaver` } }