Skip to content
Snippets Groups Projects
menu.c 58.1 KiB
Newer Older
  • Learn to ignore specific revisions
  • static void
    feh_menu_cb_save_image(feh_menu * m,
                           feh_menu_item * i,
                           void *data)
    {
      slideshow_save_image(m->fehwin);
    }
    
    static void
    feh_menu_cb_save_filelist(feh_menu * m,
                              feh_menu_item * i,
                              void *data)
    {
      feh_save_filelist();
    }
    
    static void
    feh_menu_cb_opt_draw_filename(feh_menu * m,
                                  feh_menu_item * i,
                                  void *data)
    {
      MENU_ITEM_TOGGLE(i);
      if (MENU_ITEM_IS_ON(i))
        opt.draw_filename = TRUE;
      else
        opt.draw_filename = FALSE;
      winwidget_rerender_all(0, 1);
    }
    
    static void
    feh_menu_cb_opt_keep_http(feh_menu * m,
                              feh_menu_item * i,
                              void *data)
    {
      MENU_ITEM_TOGGLE(i);
      if (MENU_ITEM_IS_ON(i))
        opt.keep_http = TRUE;
      else
        opt.keep_http = FALSE;
    }
    
    static void
    feh_menu_cb_opt_freeze_window(feh_menu * m,
                                  feh_menu_item * i,
                                  void *data)
    {
      MENU_ITEM_TOGGLE(i);
      if (MENU_ITEM_IS_ON(i)) {
        opt.geom_flags = (WidthValue | HeightValue);
        opt.geom_w = m->fehwin->w;
        opt.geom_h = m->fehwin->h;
      } else {
        opt.geom_flags = 0;
      }
    }
    
    static void
    feh_menu_cb_opt_fullscreen(feh_menu * m,
                               feh_menu_item * i,
                               void *data)
    {
      int curr_screen = 0;
    
      MENU_ITEM_TOGGLE(i);
      if (MENU_ITEM_IS_ON(i))
        m->fehwin->full_screen = TRUE;
      else
        m->fehwin->full_screen = FALSE;
    
    #ifdef HAVE_LIBXINERAMA
      if (opt.xinerama && xinerama_screens) {
        int i, rect[4];
    
        winwidget_get_geometry(m->fehwin, rect);
        /* printf("window: (%d, %d)\n", rect[0], rect[1]);
        printf("found %d screens.\n", num_xinerama_screens); */
        for (i = 0; i < num_xinerama_screens; i++) {
          xinerama_screen = 0;
          /* printf("%d: [%d, %d, %d, %d] (%d, %d)\n",
                 i,
                 xinerama_screens[i].x_org, xinerama_screens[i].y_org,
                 xinerama_screens[i].width, xinerama_screens[i].height,
                 rect[0], rect[1]);*/
          if (XY_IN_RECT(rect[0], rect[1],
                xinerama_screens[i].x_org, xinerama_screens[i].y_org,
                xinerama_screens[i].width, xinerama_screens[i].height)) {
            curr_screen = xinerama_screen = i;
            break;
          }
    
        }
      }
    #endif /* HAVE_LIBXINERAMA */
    
      winwidget_destroy_xwin(m->fehwin);
      winwidget_create_window(m->fehwin, m->fehwin->im_w, m->fehwin->im_h);
    
      winwidget_render_image(m->fehwin, 1, 1);
      winwidget_show(m->fehwin);
    
    #ifdef HAVE_LIBXINERAMA
      /* if we have xinerama and we're using it, then full screen the window
       * on the head that the window was active on */
      if (m->fehwin->full_screen == TRUE && opt.xinerama && xinerama_screens) {
        xinerama_screen = curr_screen;
        winwidget_move(m->fehwin,
                       xinerama_screens[curr_screen].x_org,
                       xinerama_screens[curr_screen].y_org);
      }
    #endif /* HAVE_LIBXINERAMA */
    }
    
    static void
    feh_menu_cb_opt_auto_zoom(feh_menu * m,
                              feh_menu_item * i,
                              void *data)
    {
      MENU_ITEM_TOGGLE(i);
      opt.auto_zoom = MENU_ITEM_IS_ON(i) ? 1 : 0;
      winwidget_rerender_all(1, 1);
    }
    
    #ifdef HAVE_LIBXINERAMA
    static void
    feh_menu_cb_opt_xinerama(feh_menu * m,
                             feh_menu_item * i,
                             void *data)
    {
      MENU_ITEM_TOGGLE(i);
      opt.xinerama = MENU_ITEM_IS_ON(i) ? 1 : 0;
    
      if (opt.xinerama) {
        init_xinerama();
      } else {
        XFree(xinerama_screens);
        xinerama_screens = NULL;
      }
      winwidget_rerender_all(1, 1);
    }
    #endif /* HAVE_LIBXINERAMA */