From 186870f028238ba3221dd4ce156bacd39b05a5da Mon Sep 17 00:00:00 2001 From: "slamm%netscape.com" Date: Mon, 5 Oct 1998 23:30:45 +0000 Subject: [PATCH] Set the sensitivity of the show/hide column buttons. git-svn-id: svn://10.0.0.236/trunk@11964 18797224-902f-48f8-a5cc-f745e15eee43 --- mozilla/cmd/xfe/Microline3.0/XmL/Grid.c | 46 +++++++++++++++++++------ 1 file changed, 36 insertions(+), 10 deletions(-) diff --git a/mozilla/cmd/xfe/Microline3.0/XmL/Grid.c b/mozilla/cmd/xfe/Microline3.0/XmL/Grid.c index ad6d6de68ee..48c41f854dc 100644 --- a/mozilla/cmd/xfe/Microline3.0/XmL/Grid.c +++ b/mozilla/cmd/xfe/Microline3.0/XmL/Grid.c @@ -227,6 +227,7 @@ static void EditTimer(XtPointer, XtIntervalId *); static void CreateHideUnhideButtons(XmLGridWidget g); static void HideAction(Widget w, XEvent *event, String *, Cardinal *); static void UnhideAction(Widget w, XEvent *event, String *, Cardinal *); +static void setHideUnhideSensitivity(Widget w); static void MenuArm(Widget w, XEvent *event, String *, Cardinal *); static void MenuDisarm(Widget w, XEvent *event, String *, Cardinal *); static int SizeColumnsToFit(XmLGridWidget g, int start_at); @@ -2807,6 +2808,8 @@ PlaceScrollbars(XmLGridWidget g) buttonWidth, headingRowHeight - st, 0); + setHideUnhideSensitivity((Widget)g); + /* once we've positioned it, make sure it's managed. Doing it in this order (position, then manage) reduces screen flickering -- the button doesn't flash on in the @@ -10840,6 +10843,8 @@ XmLGridSetVisibleColumnCount(Widget w, int new_num_visible) else g->grid.visibleCols = 0; + setHideUnhideSensitivity(w); + HorizLayout(g, 1); DrawArea(g, DrawAll, 0, 0); } @@ -10890,12 +10895,12 @@ CreateHideUnhideButtons(XmLGridWidget g) XmNbottomShadowColor, g->manager.bottom_shadow_color, NULL); - XmLDrawnButtonSetType(g->grid.hideButton, - XmDRAWNB_SMALLARROW, + XmLDrawnButtonSetType(g->grid.hideButton, XmDRAWNB_SMALLARROW, XmDRAWNB_RIGHT); - XmLDrawnButtonSetType(g->grid.unhideButton, - XmDRAWNB_SMALLARROW, + XmLDrawnButtonSetType(g->grid.unhideButton, XmDRAWNB_SMALLARROW, XmDRAWNB_LEFT); + + XtAddCallback(g->grid.hideButton, XmNactivateCallback, HideColumn, (XtPointer)g); XtAddCallback(g->grid.unhideButton, XmNactivateCallback, @@ -10926,17 +10931,38 @@ UnhideAction(Widget w, XmLGridUnhideRightColumn(w); } +static void +setHideUnhideSensitivity(Widget w) +{ + XmLGridWidget g = (XmLGridWidget)w; + int total_columns = XmLArrayGetCount(g->grid.colArray); + Boolean can_unhide, can_hide; + + if (!g->grid.hideUnhideButtons) return; + + /* If visibleCols is zero, that means all the columns are visible. */ + if (g->grid.visibleCols == 0) { + can_unhide = 0; + can_hide = (total_columns > 1); + } else { + can_unhide = (g->grid.visibleCols < total_columns); + can_hide = (g->grid.visibleCols > 1); + } + XtSetSensitive(g->grid.unhideButton, can_unhide); + XtSetSensitive(g->grid.hideButton, can_hide); +} + void XmLGridHideRightColumn(Widget w) { XmLGridWidget g = (XmLGridWidget)w; - int colCount = XmLArrayGetCount(g->grid.colArray); - if (colCount <= 1) + int total_columns = XmLArrayGetCount(g->grid.colArray); + if (total_columns <= 1) return; /* If visibleCols is zero, that means all the columns are visible. */ - if (g->grid.visibleCols == 0 || g->grid.visibleCols > colCount) - XmLGridSetVisibleColumnCount(w, colCount - 1); + if (g->grid.visibleCols == 0 || g->grid.visibleCols > total_columns) + XmLGridSetVisibleColumnCount(w, total_columns - 1); else XmLGridSetVisibleColumnCount(w, g->grid.visibleCols - 1); } @@ -10945,10 +10971,10 @@ void XmLGridUnhideRightColumn(Widget w) { XmLGridWidget g = (XmLGridWidget)w; - int colCount = XmLArrayGetCount(g->grid.colArray); + int total_columns = XmLArrayGetCount(g->grid.colArray); /* If visibleCols is zero, that means all the columns are visible. */ - if ( g->grid.visibleCols != 0 && g->grid.visibleCols < colCount) + if ( g->grid.visibleCols != 0 && g->grid.visibleCols < total_columns) XmLGridSetVisibleColumnCount(w, g->grid.visibleCols + 1); }