From 64defd4d22c26310a265f5a24dd31e8343ed5e7c Mon Sep 17 00:00:00 2001 From: kojima Date: Sun, 25 Feb 2001 20:47:04 +0000 Subject: [PATCH] fixed scroller bug when displaying scroller before setting initial values --- WINGs/Extras/wtableview.c | 2 +- WINGs/wpanel.c | 23 +++++++++++++++++++++-- WINGs/wscroller.c | 11 +++++++++-- WINGs/wscrollview.c | 2 +- WINGs/wview.c | 2 ++ 5 files changed, 34 insertions(+), 6 deletions(-) diff --git a/WINGs/Extras/wtableview.c b/WINGs/Extras/wtableview.c index 947a51f5..398ac8f6 100644 --- a/WINGs/Extras/wtableview.c +++ b/WINGs/Extras/wtableview.c @@ -876,7 +876,7 @@ static void handleTableEvents(XEvent *event, void *data) case MotionNotify: if (table->dragging && event->xmotion.y >= 0) { row = event->xmotion.y/table->rowHeight; - if (table->clickedRow != row && row >= 0) { + if (table->clickedRow != row && row >= 0 && row < table->rows) { setRowSelected(table, table->clickedRow, False); setRowSelected(table, row, True); table->clickedRow = row; diff --git a/WINGs/wpanel.c b/WINGs/wpanel.c index 582426d7..bcd308d1 100644 --- a/WINGs/wpanel.c +++ b/WINGs/wpanel.c @@ -483,6 +483,25 @@ WMCreateInputPanel(WMScreen *scrPtr, WMWindow *owner, char *title, char *msg, +static void +handleKeyPress3(XEvent *event, void *clientData) +{ + WMGenericPanel *panel = (WMAlertPanel*)clientData; + KeySym ksym; + + XLookupString(&event->xkey, NULL, 0, &ksym, NULL); + + if (ksym == XK_Return && panel->defBtn) { + WMPerformButtonClick(panel->defBtn); + } else if (ksym == XK_Escape) { + if (panel->altBtn) { + WMPerformButtonClick(panel->altBtn); + } else { + panel->result = WAPRDefault; + WMBreakModalLoop(WMWidgetScreen(panel->win)); + } + } +} void @@ -618,8 +637,8 @@ WMCreateGenericPanel(WMScreen *scrPtr, WMWindow *owner, WMMapSubwidgets(hbox); -// WMCreateEventHandler(W_VIEW(panel->win), KeyPressMask, -// handleKeyPress3, panel); + WMCreateEventHandler(W_VIEW(panel->win), KeyPressMask, + handleKeyPress3, panel); WMRealizeWidget(panel->win); WMMapSubwidgets(panel->win); diff --git a/WINGs/wscroller.c b/WINGs/wscroller.c index d54e7dac..d8eacd61 100644 --- a/WINGs/wscroller.c +++ b/WINGs/wscroller.c @@ -4,6 +4,8 @@ #include "WINGsP.h" +#include + /* undefine will disable the autoadjusting of the knob dimple to be * directly below the cursor * DOES NOT WORK */ @@ -121,6 +123,9 @@ WMCreateScroller(WMWidget *parent) handleActionEvents, sPtr); sPtr->flags.hitPart = WSNoPart; + + sPtr->floatValue = 0.0; + sPtr->knobProportion = 1.0; return sPtr; } @@ -170,6 +175,8 @@ WMSetScrollerParameters(WMScroller *sPtr, float floatValue, { CHECK_CLASS(sPtr, WC_Scroller); + assert(!isnan(floatValue)); + if (floatValue < 0.0) sPtr->floatValue = 0.0; else if (floatValue > 1.0) @@ -429,7 +436,6 @@ paintScroller(Scroller *sPtr) knobL = (float)knobLength(sPtr); knobP = sPtr->floatValue * ((float)length - knobL); - if (sPtr->flags.horizontal) { /* before */ @@ -712,7 +718,8 @@ floatValueForPoint(int slotOfs, int slotLength, int knobLength, int point) /* Compute the float value */ floatValue = (position-(float)slotOfs) / (float)(slotLength-knobLength); #endif - + + assert(!isnan(floatValue)); return floatValue; } diff --git a/WINGs/wscrollview.c b/WINGs/wscrollview.c index 460620b5..954954e3 100644 --- a/WINGs/wscrollview.c +++ b/WINGs/wscrollview.c @@ -566,7 +566,7 @@ updateScrollerProportion(ScrollView *sPtr) oldP = WMGetScrollerKnobProportion(sPtr->hScroller); prop = (float)sPtr->viewport->size.width/(float)sPtr->contentView->size.width; - + if (oldP == 1.0) value = 0; else diff --git a/WINGs/wview.c b/WINGs/wview.c index 22d3d8a7..361844a1 100644 --- a/WINGs/wview.c +++ b/WINGs/wview.c @@ -448,6 +448,8 @@ destroyView(W_View *view) WMUnregisterViewDraggedTypes(view); + WMRemoveNotificationObserver(view); + #if 0 if (view->dragSourceProcs) wfree(view->dragSourceProcs); -- 2.11.4.GIT