diff src/w32term.c @ 71236:4a38eb2f741d

(w32_set_scroll_bar_thumb, x_scroll_bar_create) (w32_set_vertical_scroll_bar, w32_scroll_bar_handle_click) (x_scroll_bar_report_motion): Remove workarounds for versions of Windows NT < 3.51. [!SIF_ALL]: Remove. (pfnSetScrollInfo, pfnGetScrollInfo): Remove. (w32_initialize): Don't dynamically load Get/SetScrollInfo.
author Jason Rumney <jasonr@gnu.org>
date Mon, 05 Jun 2006 21:20:59 +0000
parents 67dc3a0454b2
children d1eb48dbd3e6 46b1096093f5 a8190f7e546e
line wrap: on
line diff
--- a/src/w32term.c	Mon Jun 05 21:20:22 2006 +0000
+++ b/src/w32term.c	Mon Jun 05 21:20:59 2006 +0000
@@ -146,32 +146,6 @@
 DWORD dwMainThreadId = 0;
 HANDLE hMainThread = NULL;
 
-#ifndef SIF_ALL
-/* These definitions are new with Windows 95. */
-#define SIF_RANGE           0x0001
-#define SIF_PAGE            0x0002
-#define SIF_POS             0x0004
-#define SIF_DISABLENOSCROLL 0x0008
-#define SIF_TRACKPOS        0x0010
-#define SIF_ALL             (SIF_RANGE | SIF_PAGE | SIF_POS | SIF_TRACKPOS)
-
-typedef struct tagSCROLLINFO
-{
-    UINT    cbSize;
-    UINT    fMask;
-    int     nMin;
-    int     nMax;
-    UINT    nPage;
-    int     nPos;
-    int     nTrackPos;
-}   SCROLLINFO, FAR *LPSCROLLINFO;
-typedef SCROLLINFO CONST FAR *LPCSCROLLINFO;
-#endif /* SIF_ALL */
-
-/* Dynamic linking to new proportional scroll bar functions. */
-int (PASCAL *pfnSetScrollInfo) (HWND hwnd, int fnBar, LPSCROLLINFO lpsi, BOOL fRedraw);
-BOOL (PASCAL *pfnGetScrollInfo) (HWND hwnd, int fnBar, LPSCROLLINFO lpsi);
-
 int vertical_scroll_bar_min_handle;
 int vertical_scroll_bar_top_border;
 int vertical_scroll_bar_bottom_border;
@@ -3487,6 +3461,7 @@
   double range = VERTICAL_SCROLL_BAR_TOP_RANGE (f, XINT (bar->height));
   int sb_page, sb_pos;
   BOOL draggingp = !NILP (bar->dragging) ? TRUE : FALSE;
+  SCROLLINFO si;
 
   if (whole)
     {
@@ -3511,24 +3486,17 @@
 
   BLOCK_INPUT;
 
-  if (pfnSetScrollInfo)
-    {
-      SCROLLINFO si;
-
-      si.cbSize = sizeof (si);
-      /* Only update page size if currently dragging, to reduce
-         flicker effects.  */
-      if (draggingp)
-        si.fMask = SIF_PAGE;
-      else
-        si.fMask = SIF_PAGE | SIF_POS;
-      si.nPage = sb_page;
-      si.nPos = sb_pos;
-
-      pfnSetScrollInfo (w, SB_CTL, &si, !draggingp);
-    }
+  si.cbSize = sizeof (si);
+  /* Only update page size if currently dragging, to reduce
+     flicker effects.  */
+  if (draggingp)
+    si.fMask = SIF_PAGE;
   else
-    SetScrollPos (w, SB_CTL, sb_pos, !draggingp);
+    si.fMask = SIF_PAGE | SIF_POS;
+  si.nPage = sb_page;
+  si.nPos = sb_pos;
+
+  SetScrollInfo (w, SB_CTL, &si, !draggingp);
 
   UNBLOCK_INPUT;
 }
@@ -3617,6 +3585,7 @@
 {
   struct frame *f = XFRAME (WINDOW_FRAME (w));
   HWND hwnd;
+  SCROLLINFO si;
   struct scroll_bar *bar
     = XSCROLL_BAR (Fmake_vector (make_number (SCROLL_BAR_VEC_SIZE), Qnil));
 
@@ -3635,26 +3604,15 @@
 
   hwnd = my_create_scrollbar (f, bar);
 
-  if (pfnSetScrollInfo)
-    {
-      SCROLLINFO si;
-
-      si.cbSize = sizeof (si);
-      si.fMask = SIF_ALL;
-      si.nMin = 0;
-      si.nMax = VERTICAL_SCROLL_BAR_TOP_RANGE (f, height)
-      	+ VERTICAL_SCROLL_BAR_MIN_HANDLE;
-      si.nPage = si.nMax;
-      si.nPos = 0;
-
-      pfnSetScrollInfo (hwnd, SB_CTL, &si, FALSE);
-    }
-  else
-    {
-      SetScrollRange (hwnd, SB_CTL, 0,
-                      VERTICAL_SCROLL_BAR_TOP_RANGE (f, height), FALSE);
-      SetScrollPos (hwnd, SB_CTL, 0, FALSE);
-    }
+  si.cbSize = sizeof (si);
+  si.fMask = SIF_ALL;
+  si.nMin = 0;
+  si.nMax = VERTICAL_SCROLL_BAR_TOP_RANGE (f, height)
+    + VERTICAL_SCROLL_BAR_MIN_HANDLE;
+  si.nPage = si.nMax;
+  si.nPos = 0;
+
+  SetScrollInfo (hwnd, SB_CTL, &si, FALSE);
 
   SET_SCROLL_BAR_W32_WINDOW (bar, hwnd);
 
@@ -3763,6 +3721,8 @@
       else
         {
           HDC hdc;
+	  SCROLLINFO si;
+
           BLOCK_INPUT;
 	  if (width && height)
 	    {
@@ -3782,21 +3742,15 @@
           MoveWindow (hwnd, sb_left + VERTICAL_SCROLL_BAR_WIDTH_TRIM,
 		      top, sb_width - VERTICAL_SCROLL_BAR_WIDTH_TRIM * 2,
 		      max (height, 1), TRUE);
-          if (pfnSetScrollInfo)
-            {
-              SCROLLINFO si;
-
-              si.cbSize = sizeof (si);
-              si.fMask = SIF_RANGE;
-              si.nMin = 0;
-              si.nMax = VERTICAL_SCROLL_BAR_TOP_RANGE (f, height)
-                + VERTICAL_SCROLL_BAR_MIN_HANDLE;
-
-              pfnSetScrollInfo (hwnd, SB_CTL, &si, FALSE);
-            }
-          else
-            SetScrollRange (hwnd, SB_CTL, 0,
-                            VERTICAL_SCROLL_BAR_TOP_RANGE (f, height), FALSE);
+
+	  si.cbSize = sizeof (si);
+	  si.fMask = SIF_RANGE;
+	  si.nMin = 0;
+	  si.nMax = VERTICAL_SCROLL_BAR_TOP_RANGE (f, height)
+	    + VERTICAL_SCROLL_BAR_MIN_HANDLE;
+
+	  SetScrollInfo (hwnd, SB_CTL, &si, FALSE);
+
           my_show_window (f, hwnd, SW_NORMAL);
           /* InvalidateRect (w, NULL, FALSE);  */
 
@@ -3948,19 +3902,13 @@
     int top_range = VERTICAL_SCROLL_BAR_TOP_RANGE (f, XINT (bar->height));
     int y;
     int dragging = !NILP (bar->dragging);
-
-    if (pfnGetScrollInfo)
-      {
-	SCROLLINFO si;
-
-	si.cbSize = sizeof (si);
-	si.fMask = SIF_POS;
-
-	pfnGetScrollInfo ((HWND) msg->msg.lParam, SB_CTL, &si);
-	y = si.nPos;
-      }
-    else
-      y = GetScrollPos ((HWND) msg->msg.lParam, SB_CTL);
+    SCROLLINFO si;
+
+    si.cbSize = sizeof (si);
+    si.fMask = SIF_POS;
+
+    GetScrollInfo ((HWND) msg->msg.lParam, SB_CTL, &si);
+    y = si.nPos;
 
     bar->dragging = Qnil;
 
@@ -3997,21 +3945,18 @@
 	emacs_event->part = scroll_bar_handle;
 
 	/* "Silently" update current position.  */
-	if (pfnSetScrollInfo)
-	  {
-	    SCROLLINFO si;
-
-	    si.cbSize = sizeof (si);
-	    si.fMask = SIF_POS;
-	    si.nPos = y;
-	    /* Remember apparent position (we actually lag behind the real
-	       position, so don't set that directly.  */
-	    last_scroll_bar_drag_pos = y;
-
-	    pfnSetScrollInfo (SCROLL_BAR_W32_WINDOW (bar), SB_CTL, &si, FALSE);
-	  }
-	else
-	  SetScrollPos (SCROLL_BAR_W32_WINDOW (bar), SB_CTL, y, FALSE);
+	{
+	  SCROLLINFO si;
+
+	  si.cbSize = sizeof (si);
+	  si.fMask = SIF_POS;
+	  si.nPos = y;
+	  /* Remember apparent position (we actually lag behind the real
+	     position, so don't set that directly.  */
+	  last_scroll_bar_drag_pos = y;
+
+	  SetScrollInfo (SCROLL_BAR_W32_WINDOW (bar), SB_CTL, &si, FALSE);
+	}
 	break;
       case SB_ENDSCROLL:
 	/* If this is the end of a drag sequence, then reset the scroll
@@ -4019,20 +3964,15 @@
 	   nothing.  */
 	if (dragging)
 	  {
-	    if (pfnSetScrollInfo)
-	      {
-		SCROLLINFO si;
-		int start = XINT (bar->start);
-		int end = XINT (bar->end);
-
-		si.cbSize = sizeof (si);
-		si.fMask = SIF_PAGE | SIF_POS;
-                si.nPage = end - start + VERTICAL_SCROLL_BAR_MIN_HANDLE;
-		si.nPos = last_scroll_bar_drag_pos;
-		pfnSetScrollInfo (SCROLL_BAR_W32_WINDOW (bar), SB_CTL, &si, TRUE);
-	      }
-	    else
-	      SetScrollPos (SCROLL_BAR_W32_WINDOW (bar), SB_CTL, y, TRUE);
+	    SCROLLINFO si;
+	    int start = XINT (bar->start);
+	    int end = XINT (bar->end);
+
+	    si.cbSize = sizeof (si);
+	    si.fMask = SIF_PAGE | SIF_POS;
+	    si.nPage = end - start + VERTICAL_SCROLL_BAR_MIN_HANDLE;
+	    si.nPos = last_scroll_bar_drag_pos;
+	    SetScrollInfo (SCROLL_BAR_W32_WINDOW (bar), SB_CTL, &si, TRUE);
 	  }
 	/* fall through */
       default:
@@ -4063,25 +4003,19 @@
   FRAME_PTR f = XFRAME (WINDOW_FRAME (XWINDOW (bar->window)));
   int pos;
   int top_range = VERTICAL_SCROLL_BAR_TOP_RANGE (f, XINT (bar->height));
+  SCROLLINFO si;
 
   BLOCK_INPUT;
 
   *fp = f;
   *bar_window = bar->window;
 
-  if (pfnGetScrollInfo)
-    {
-      SCROLLINFO si;
-
-      si.cbSize = sizeof (si);
-      si.fMask = SIF_POS | SIF_PAGE | SIF_RANGE;
-
-      pfnGetScrollInfo (w, SB_CTL, &si);
-      pos = si.nPos;
-      top_range = si.nMax - si.nPage + 1;
-    }
-  else
-    pos = GetScrollPos (w, SB_CTL);
+  si.cbSize = sizeof (si);
+  si.fMask = SIF_POS | SIF_PAGE | SIF_RANGE;
+
+  GetScrollInfo (w, SB_CTL, &si);
+  pos = si.nPos;
+  top_range = si.nMax - si.nPage + 1;
 
   switch (LOWORD (last_mouse_scroll_bar_pos))
   {
@@ -6409,26 +6343,14 @@
   AttachThreadInput (dwMainThreadId, dwWindowsThreadId, TRUE);
 #endif
 
-  /* Dynamically link to optional system components. */
+  /* Load system settings.  */
   {
-    HANDLE user_lib = LoadLibrary ("user32.dll");
     UINT smoothing_type;
     BOOL smoothing_enabled;
 
-#define LOAD_PROC(fn) pfn##fn = (void *) GetProcAddress (user_lib, #fn)
-
-    /* New proportional scroll bar functions. */
-    LOAD_PROC (SetScrollInfo);
-    LOAD_PROC (GetScrollInfo);
-
-#undef LOAD_PROC
-
-    FreeLibrary (user_lib);
-
     /* If using proportional scroll bars, ensure handle is at least 5 pixels;
        otherwise use the fixed height.  */
-    vertical_scroll_bar_min_handle = (pfnSetScrollInfo != NULL) ? 5 :
-      GetSystemMetrics (SM_CYVTHUMB);
+    vertical_scroll_bar_min_handle = 5;
 
     /* For either kind of scroll bar, take account of the arrows; these
        effectively form the border of the main scroll bar range.  */