SOURCES: AfterStep-2.2.8-Pager.c.patch (NEW) - fix the sizing bug ...
draenog
draenog at pld-linux.org
Tue Apr 1 16:17:09 CEST 2008
Author: draenog Date: Tue Apr 1 14:17:09 2008 GMT
Module: SOURCES Tag: HEAD
---- Log message:
- fix the sizing bug in Pager; from AfterStep CVS
---- Files affected:
SOURCES:
AfterStep-2.2.8-Pager.c.patch (NONE -> 1.1) (NEW)
---- Diffs:
================================================================
Index: SOURCES/AfterStep-2.2.8-Pager.c.patch
diff -u /dev/null SOURCES/AfterStep-2.2.8-Pager.c.patch:1.1
--- /dev/null Tue Apr 1 16:17:09 2008
+++ SOURCES/AfterStep-2.2.8-Pager.c.patch Tue Apr 1 16:17:04 2008
@@ -0,0 +1,191 @@
+--- src/Pager/Pager.c 2008-02-22 08:20:00.000000000 -0600
++++ src/Pager/Pager.c 2008-03-25 12:54:44.000000000 -0500
+@@ -105,7 +105,6 @@
+
+ int page_rows, page_columns ;
+ /* x and y size of desktop */
+- int vscaled_desk_width, vscaled_desk_height ; /* calculated in accordance to Scale param in database */
+ int desk_width, desk_height ; /* adjusted for the size of title */
+ /* area of the main window used up by labels, borders and other garbadge :*/
+ int wasted_width, wasted_height ;
+@@ -395,6 +394,7 @@
+ /*****************************************************************************
+ * This routine is responsible for reading and parsing the config file
+ ****************************************************************************/
++
+ void
+ CheckConfigSanity()
+ {
+@@ -439,7 +439,7 @@
+ if (Config->geometry.width <= Config->columns )
+ clear_flags(Config->geometry.flags, WidthValue);
+ if (!get_flags(Config->geometry.flags, WidthValue) )
+- Config->geometry.width = PagerState.vscaled_desk_width*Config->columns ;
++ Config->geometry.width = (PagerState.vscreen_width*Config->columns)/Scr.VScale ;
+
+ PagerState.desk_width = Config->geometry.width/Config->columns ;
+ Config->geometry.width = PagerState.desk_width*Config->columns ;
+@@ -447,11 +447,11 @@
+ if (Config->geometry.height <= Config->rows )
+ clear_flags(Config->geometry.flags, HeightValue);
+ if (!get_flags(Config->geometry.flags, HeightValue) || Config->geometry.height <= Config->rows )
+- Config->geometry.height = PagerState.vscaled_desk_height*Config->rows ;
++ Config->geometry.height = (PagerState.vscreen_height*Config->rows)/Scr.VScale ;
+
+ PagerState.desk_height = Config->geometry.height/Config->rows ;
+ Config->geometry.height = PagerState.desk_height*Config->rows ;
+-
++
+ PagerState.wasted_width = PagerState.wasted_height = 0 ;
+
+ if( !get_flags(Config->geometry.flags, XValue))
+@@ -701,9 +701,6 @@
+ PagerState.vscreen_width = Scr.VxMax + Scr.MyDisplayWidth;
+ PagerState.vscreen_height = Scr.VyMax + Scr.MyDisplayHeight;
+
+- PagerState.vscaled_desk_width = PagerState.vscreen_width/Scr.VScale;
+- PagerState.vscaled_desk_height = PagerState.vscreen_height/Scr.VScale;
+-
+ SHOW_TIME("BaseConfigParsingTime",started);
+ LOCAL_DEBUG_OUT("desk_size(%dx%d),vscreen_size(%dx%d),vscale(%d)", PagerState.desk_width, PagerState.desk_height, PagerState.vscreen_width, PagerState.vscreen_height, Scr.VScale );
+ }
+@@ -1031,7 +1028,7 @@
+ }
+
+
+-unsigned int
++inline unsigned int
+ calculate_desk_width( ASPagerDesk *d )
+ {
+ unsigned int width = PagerState.desk_width;
+@@ -1158,7 +1155,7 @@
+ if( wa )
+ {
+ register int p = PagerState.page_columns-1;
+- int pos_inc = Scr.MyDisplayWidth/Scr.VScale;
++ int pos_inc = (Scr.MyDisplayWidth * d->background->width)/PagerState.vscreen_width;
+ /* d->background->width/PagerState.page_columns ; */
+ int pos = d->background->win_x+p*pos_inc;
+ int size = d->background->height ;
+@@ -1177,7 +1174,8 @@
+ wa += PagerState.page_columns-1;
+ wrecta += PagerState.page_columns-1;
+ p = PagerState.page_rows-1;
+- pos_inc = Scr.MyDisplayHeight/Scr.VScale;
++ pos_inc = (Scr.MyDisplayHeight * d->background->height)/PagerState.vscreen_height;
++ /* Scr.MyDisplayHeight/PagerState.vscale_v; */
+ /* d->background->height/PagerState.page_rows ; */
+ pos = d->background->win_y + p*pos_inc;
+ pos2 = d->background->win_x ;
+@@ -1206,8 +1204,10 @@
+ {
+ int sel_x = sel_desk->background->win_x ;
+ int sel_y = sel_desk->background->win_y ;
+- int page_width = Scr.MyDisplayWidth/Scr.VScale ;
+- int page_height = Scr.MyDisplayHeight/Scr.VScale ;
++ int page_width = /*Scr.MyDisplayWidth/PagerState.vscale_h ;*/
++ (Scr.MyDisplayWidth * sel_desk->background->width)/PagerState.vscreen_width;
++ int page_height = /* Scr.MyDisplayHeight/PagerState.vscale_v ;*/
++ (Scr.MyDisplayHeight * sel_desk->background->height)/PagerState.vscreen_height;
+ int i = 4;
+
+ sel_x += (Scr.Vx*page_width)/Scr.MyDisplayWidth ;
+@@ -1500,8 +1500,6 @@
+ if( height > row_height )
+ row_height = height;
+
+- LOCAL_DEBUG_OUT( " :RESIZING: desk = %d, size = %dx%d, all_size = %+d%+d", i, width, height, all_width, all_height );
+-
+ if( ++col >= Config->columns )
+ {
+ if( all_width < x+width )
+@@ -1513,6 +1511,8 @@
+ col = 0;
+ }else
+ x += width;
++ LOCAL_DEBUG_OUT( " :RESIZING: desk = %d, size = %dx%d, all_size = %+d%+d, +x+y = %+d%+d, row_height = %d", i, width, height, all_width, all_height, x, y, row_height );
++
+ }
+ if( all_width < x )
+ all_width = x ;
+@@ -1572,20 +1572,25 @@
+ * and then devide size of the main canvas by this number : */
+ for( col = 0 ; col < Config->columns ; ++col )
+ {
+- Bool unshaded = False ;
+ unsigned int col_shaded_width = 0 ;
+ int i ;
+
+ for( i = col ; i < PagerState.desks_num ; i+= Config->columns )
+ {
+ ASPagerDesk *d = &(PagerState.desks[i]);
++
+ if( !get_flags(d->flags, ASP_DeskShaded ) )
+- unshaded = True ;
+- else if( col_shaded_width < d->title_width )
+- col_shaded_width = d->title_width ;
++ {
++ ++unshaded_col_count ;
++ col_shaded_width = 0;
++ break;
++ }else
++ {
++ int dw = calculate_desk_width(d);
++ if( col_shaded_width < dw )
++ col_shaded_width = dw;
++ }
+ }
+- if( unshaded )
+- ++unshaded_col_count ;
+ shaded_width += col_shaded_width ;
+ }
+
+@@ -1611,7 +1616,6 @@
+ * and then devide size of the main canvas by this number : */
+ for( row = 0 ; row < Config->rows ; ++row )
+ {
+- Bool unshaded = False ;
+ unsigned int row_shaded_height = 0 ;
+ int i, max_i = (row+1)*Config->columns ;
+
+@@ -1622,15 +1626,20 @@
+ {
+ ASPagerDesk *d = &(PagerState.desks[i]);
+ if( !get_flags(d->flags, ASP_DeskShaded ) )
+- unshaded = True ;
+- else if( row_shaded_height < d->title_height )
+- row_shaded_height = d->title_height ;
++ {
++ ++unshaded_row_count ;
++ row_shaded_height = 0;
++ break;
++ }else
++ {
++ int dh = calculate_desk_height(d);
++ if( row_shaded_height < dh )
++ row_shaded_height = dh;
++ }
+ }
+- if( unshaded )
+- ++unshaded_row_count ;
+ shaded_height += row_shaded_height ;
+ }
+-LOCAL_DEBUG_OUT( "unshaded_row_count = %d", unshaded_row_count );
++LOCAL_DEBUG_OUT( "unshaded_row_count = %d, shaded_height = %d, main_height = %d", unshaded_row_count, shaded_height, main_height );
+ if( unshaded_row_count == 0 )
+ return PagerState.desk_height;
+ return (main_height - shaded_height)/unshaded_row_count;
+@@ -2755,9 +2764,10 @@
+ if( new_desk_width != PagerState.desk_width ||
+ new_desk_height != PagerState.desk_height )
+ {
+- PagerState.desk_width = new_desk_width ;
+- PagerState.desk_height = new_desk_height ;
+- }
++ PagerState.desk_width = new_desk_width;
++ PagerState.desk_height = new_desk_height;
++ }
++
+ rearrange_pager_desks( True );
+ }else if( changes != 0 )
+ {
================================================================
More information about the pld-cvs-commit
mailing list