Skip to content
Snippets Groups Projects
winwidget.c 29.5 KiB
Newer Older
  • Learn to ignore specific revisions
  • 		max_y = 0;
    	} else {
    		min_y = 0;
    		max_y = far_top;
    	}
    	if (winwid->im_x > max_x)
    		winwid->im_x = max_x;
    	if (winwid->im_x < min_x)
    		winwid->im_x = min_x;
    	if (winwid->im_y > max_y)
    		winwid->im_y = max_y;
    	if (winwid->im_y < min_y)
    		winwid->im_y = min_y;
    
    
    void winwidget_size_to_image(winwidget winwid)
    
    	winwidget_resize(winwid, winwid->im_w * winwid->zoom, winwid->im_h * winwid->zoom, 1);
    
    	winwidget_render_image(winwid, 0, 0);
    
    void winwidget_set_pointer(winwidget winwid, int visible)
    {
    	Cursor no_ptr;
    	XColor black, dummy;
    	Pixmap bm_no;
    	static char bm_no_data[] = { 0, 0, 0, 0, 0, 0, 0, 0 };
    
    	if (visible)
    		XUndefineCursor(disp, winwid->win);
    	else {
    		bm_no = XCreateBitmapFromData(disp, winwid->win, bm_no_data, 8, 8);
    		XAllocNamedColor(disp, DefaultColormapOfScreen(DefaultScreenOfDisplay(disp)), "black", &black, &dummy);
    
    		no_ptr = XCreatePixmapCursor(disp, bm_no, bm_no, &black, &black, 0, 0);
    		XDefineCursor(disp, winwid->win, no_ptr);
    	}
    }
    
    
    int winwidget_get_width(winwidget winwid)
    {
    	int rect[4];
    	winwidget_get_geometry(winwid, rect);
    
    int winwidget_get_height(winwidget winwid)
    {
    	int rect[4];
    	winwidget_get_geometry(winwid, rect);
    
    void winwidget_get_geometry(winwidget winwid, int *rect)
    {
    
    	XGetGeometry(disp, winwid->win, &root, &(rect[0]), &(rect[1]), (unsigned
    				int *)&(rect[2]), (unsigned int *)&(rect[3]), &bw, &bp);
    
    
    	XTranslateCoordinates(disp, winwid->win, root, 0, 0, &(rect[0]), &(rect[1]), &child);
    
    	/* update the window geometry (in case it's inaccurate) */
    	winwid->x = rect[0];
    	winwid->y = rect[1];
    	winwid->w = rect[2];
    	winwid->h = rect[3];
    
    void winwidget_show_menu(winwidget winwid)
    {
    	int x, y, b;
    	unsigned int c;
    	Window r;
    
    	XQueryPointer(disp, winwid->win, &r, &r, &x, &y, &b, &b, &c);
    
    	if (winwid->type == WIN_TYPE_SINGLE) {
    
    		if (!menu_single_win)
    			feh_menu_init_single_win();
    		feh_menu_show_at_xy(menu_single_win, winwid, x, y);
    	} else if (winwid->type == WIN_TYPE_THUMBNAIL) {
    		if (!menu_thumbnail_win)
    			feh_menu_init_thumbnail_win();
    		feh_menu_show_at_xy(menu_thumbnail_win, winwid, x, y);
    	} else if (winwid->type == WIN_TYPE_THUMBNAIL_VIEWER) {
    		if (!menu_single_win)
    			feh_menu_init_thumbnail_viewer();
    		feh_menu_show_at_xy(menu_thumbnail_viewer, winwid, x, y);
    	} else {
    		if (!menu_main)
    			feh_menu_init_main();
    		feh_menu_show_at_xy(menu_main, winwid, x, y);
    	}