Mercurial > hg > xemacs-beta
diff src/scrollbar-x.c @ 288:e11d67e05968 r21-0b42
Import from CVS: tag r21-0b42
author | cvs |
---|---|
date | Mon, 13 Aug 2007 10:35:54 +0200 |
parents | c42ec1d1cded |
children | 182f72e8cd0d |
line wrap: on
line diff
--- a/src/scrollbar-x.c Mon Aug 13 10:35:07 2007 +0200 +++ b/src/scrollbar-x.c Mon Aug 13 10:35:54 2007 +0200 @@ -400,7 +400,7 @@ scroll_event *data = (scroll_event *) client_data; struct device *d = get_device_from_display (XtDisplay (widget)); struct frame *f = x_any_window_to_frame (d, XtWindow (widget)); - Lisp_Object win; + Lisp_Object win, frame; struct scrollbar_instance *instance; struct window_mirror *mirror; @@ -413,6 +413,7 @@ if (NILP (win)) return; instance = mirror->scrollbar_vertical_instance; + frame = WINDOW_FRAME (XWINDOW (win)); /* It seems that this is necessary whenever signal_special_Xt_user_event() is called. #### Why??? */ @@ -421,11 +422,11 @@ switch (data->action) { case SCROLLBAR_LINE_UP: - signal_special_Xt_user_event (win, Qscrollbar_line_up, win); + signal_special_Xt_user_event (frame, Qscrollbar_line_up, win); break; case SCROLLBAR_LINE_DOWN: - signal_special_Xt_user_event (win, Qscrollbar_line_down, win); + signal_special_Xt_user_event (frame, Qscrollbar_line_down, win); break; /* The Athena scrollbar paging behavior is that of xterms. @@ -442,11 +443,11 @@ if (line > -1.0) line = -1.0; - signal_special_Xt_user_event (win, Qscrollbar_page_up, + signal_special_Xt_user_event (frame, Qscrollbar_page_up, Fcons (win, make_int ((int) line))); } #else - signal_special_Xt_user_event (win, Qscrollbar_page_up, + signal_special_Xt_user_event (frame, Qscrollbar_page_up, Fcons (win, Qnil)); #endif break; @@ -465,23 +466,23 @@ { if (line < 1.0) line = 1.0; - signal_special_Xt_user_event (win, Qscrollbar_page_down, + signal_special_Xt_user_event (frame, Qscrollbar_page_down, Fcons (win, make_int ((int) line))); } } #else - signal_special_Xt_user_event (win, Qscrollbar_page_down, + signal_special_Xt_user_event (frame, Qscrollbar_page_down, Fcons (win, Qnil)); #endif break; case SCROLLBAR_TOP: - signal_special_Xt_user_event (win, Qscrollbar_to_top, win); + signal_special_Xt_user_event (frame, Qscrollbar_to_top, win); break; case SCROLLBAR_BOTTOM: - signal_special_Xt_user_event (win, Qscrollbar_to_bottom, win); + signal_special_Xt_user_event (frame, Qscrollbar_to_bottom, win); break; @@ -583,7 +584,7 @@ if (value < SCROLLBAR_X_POS_DATA (instance).minimum) value = SCROLLBAR_X_POS_DATA (instance).minimum; - signal_special_Xt_user_event (win, Qscrollbar_vertical_drag, + signal_special_Xt_user_event (frame, Qscrollbar_vertical_drag, Fcons (win, make_int (value))); } break; @@ -603,7 +604,7 @@ scroll_event *data = (scroll_event *) client_data; struct device *d = get_device_from_display (XtDisplay (widget)); struct frame *f = x_any_window_to_frame (d, XtWindow (widget)); - Lisp_Object win; + Lisp_Object win, frame; struct window_mirror *mirror; if (!f) @@ -614,6 +615,7 @@ if (NILP (win)) return; + frame = WINDOW_FRAME (XWINDOW (win)); /* It seems that this is necessary whenever signal_special_Xt_user_event() is called. #### Why??? */ @@ -622,22 +624,22 @@ switch (data->action) { case SCROLLBAR_LINE_UP: - signal_special_Xt_user_event (win, Qscrollbar_char_left, win); + signal_special_Xt_user_event (frame, Qscrollbar_char_left, win); break; case SCROLLBAR_LINE_DOWN: - signal_special_Xt_user_event (win, Qscrollbar_char_right, win); + signal_special_Xt_user_event (frame, Qscrollbar_char_right, win); break; case SCROLLBAR_PAGE_UP: - signal_special_Xt_user_event (win, Qscrollbar_page_left, win); + signal_special_Xt_user_event (frame, Qscrollbar_page_left, win); break; case SCROLLBAR_PAGE_DOWN: - signal_special_Xt_user_event (win, Qscrollbar_page_right, win); + signal_special_Xt_user_event (frame, Qscrollbar_page_right, win); break; case SCROLLBAR_TOP: - signal_special_Xt_user_event (win, Qscrollbar_to_left, win); + signal_special_Xt_user_event (frame, Qscrollbar_to_left, win); break; case SCROLLBAR_BOTTOM: - signal_special_Xt_user_event (win, Qscrollbar_to_right, win); + signal_special_Xt_user_event (frame, Qscrollbar_to_right, win); break; case SCROLLBAR_CHANGE: inhibit_slider_size_change = 0; @@ -647,11 +649,11 @@ /* #### Fix the damn toolkit code so they all work the same way. Lucid is the one mostly wrong.*/ #if defined (LWLIB_SCROLLBARS_LUCID) || defined (LWLIB_SCROLLBARS_ATHENA3D) - signal_special_Xt_user_event (win, Qscrollbar_horizontal_drag, + signal_special_Xt_user_event (frame, Qscrollbar_horizontal_drag, (Fcons (win, make_int (data->slider_value)))); #else - signal_special_Xt_user_event (win, Qscrollbar_horizontal_drag, + signal_special_Xt_user_event (frame, Qscrollbar_horizontal_drag, (Fcons (win, make_int (data->slider_value - 1))));