chiark
/
gitweb
/
~yarrgweb
/
ypp-sc-tools.main.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
page with the mouse to avoid the silly page-back-to-top effect
[ypp-sc-tools.main.git]
/
pctb
/
pages.c
diff --git
a/pctb/pages.c
b/pctb/pages.c
index ecec334e88d24ba51fbc1a29c5041441871a98e6..72f9bb478a982f5b0206af12c2cc0b6209c6df83 100644
(file)
--- a/
pctb/pages.c
+++ b/
pctb/pages.c
@@
-52,7
+52,7
@@
static Display *disp;
static struct timeval tv_startup;
static unsigned wwidth, wheight;
static int max_relevant_y= -1;
static struct timeval tv_startup;
static unsigned wwidth, wheight;
static int max_relevant_y= -1;
-static Point commod_focus_point;
+static Point commod_focus_point
, commod_page_point, commod_focuslast_point
;
static XImage *shmim;
static XShmSegmentInfo shminfo;
static XImage *shmim;
static XShmSegmentInfo shminfo;
@@
-105,6
+105,9
@@
static void translate_coords_toroot(int wx, int wy, int *rx, int *ry) {
Window dummy;
xassert( XTranslateCoordinates(disp, id,attr.root, wx,wy, rx,ry, &dummy) );
}
Window dummy;
xassert( XTranslateCoordinates(disp, id,attr.root, wx,wy, rx,ry, &dummy) );
}
+static void translate_coords_toroot_p(Point w, int *rx, int *ry) {
+ translate_coords_toroot(w.x, w.y, rx, ry);
+}
static void check_client_window_all_on_screen(void) {
Rect onroot;
static void check_client_window_all_on_screen(void) {
Rect onroot;
@@
-161,8
+164,8
@@
static void send_key(KeySym sym) {
}
static void mouse_1_updown_here(void) {
check_not_disturbed();
}
static void mouse_1_updown_here(void) {
check_not_disturbed();
- XTestFakeButtonEvent(disp,1,1,
5
0);
- XTestFakeButtonEvent(disp,1,0,
5
0);
+ XTestFakeButtonEvent(disp,1,1,
1
0);
+ XTestFakeButtonEvent(disp,1,0,
1
0);
}
static void mouse_1_updown(int x, int y) {
check_not_disturbed();
}
static void mouse_1_updown(int x, int y) {
check_not_disturbed();
@@
-172,6
+175,12
@@
static void mouse_1_updown(int x, int y) {
XTestFakeMotionEvent(disp, screen, xpos,ypos, 0);
mouse_1_updown_here();
}
XTestFakeMotionEvent(disp, screen, xpos,ypos, 0);
mouse_1_updown_here();
}
+static void pgdown_by_mouse(void) {
+ check_not_disturbed();
+ debugf("PAGING Mouse\n");
+ mouse_1_updown_here();
+ sync_after_input();
+}
static int pgupdown;
static int pgupdown;
@@
-184,12
+193,6
@@
static void send_pgup_many(void) {
debugf("PAGING PageUp x %d\n",i);
sync_after_input();
}
debugf("PAGING PageUp x %d\n",i);
sync_after_input();
}
-static void send_pgdown(void) {
- send_key(XK_Next);
- pgupdown++;
- debugf("PAGING PageDown\n");
- sync_after_input();
-}
static void send_pgdown_torestore(void) {
debugf("PAGING PageDown x %d\n", -pgupdown);
while (pgupdown < 0) {
static void send_pgdown_torestore(void) {
debugf("PAGING PageDown x %d\n", -pgupdown);
while (pgupdown < 0) {
@@
-509,8
+512,8
@@
static void set_focus_commodity(void) {
) );
int xpos,ypos;
) );
int xpos,ypos;
- translate_coords_toroot
(10,10
, &xpos,&ypos);
- XTestFakeMotionEvent(disp,screen, xpos,ypos, 0);
+ translate_coords_toroot
_p(commod_page_point
, &xpos,&ypos);
+ XTestFakeMotionEvent(disp,
screen, xpos,ypos, 0);
sync_after_input();
sync_after_input();
@@
-544,7
+547,10
@@
static void prepare_ypp_client(void) {
wait_for_stability(¤t,0,0, "checking current YPP client screen...");
test= convert_page(current);
wait_for_stability(¤t,0,0, "checking current YPP client screen...");
test= convert_page(current);
- find_structure(test, &max_relevant_y, &commod_focus_point);
+ find_structure(test, &max_relevant_y,
+ &commod_focus_point,
+ &commod_page_point,
+ &commod_focuslast_point);
check_correct_commodities();
Rect sunshine= find_sunshine_widget();
check_correct_commodities();
Rect sunshine= find_sunshine_widget();
@@
-604,11
+610,14
@@
void take_screenshots(void) {
break;
}
break;
}
-
send_pgdown
();
+
pgdown_by_mouse
();
npages++;
}
progress("finishing with the YPP client...");
npages++;
}
progress("finishing with the YPP client...");
+ mouse_1_updown(commod_focuslast_point.x, commod_focuslast_point.y);
+ sync_after_input();
send_pgdown_torestore();
send_pgdown_torestore();
+ sync_after_input();
debugf("PAGING all done.\n");
progress_log("collected %d screenshots.",npages);
debugf("PAGING all done.\n");
progress_log("collected %d screenshots.",npages);