tImproved display of GtkEntry widgets, and initial support for resizing GtkPaned widgets, in Win32 client - vaccinewars - be a doctor and try to vaccinate the world
(HTM) git clone git://src.adamsgaard.dk/vaccinewars
(DIR) Log
(DIR) Files
(DIR) Refs
(DIR) README
(DIR) LICENSE
---
(DIR) commit 693b1b6d84b86e661a296ebc0d1aa73732a334e5
(DIR) parent a7dd0ce452bb13c6b9ffa1892a9691546bed9e86
(HTM) Author: Ben Webb <ben@salilab.org>
Date: Wed, 20 Dec 2000 12:13:38 +0000
Improved display of GtkEntry widgets, and initial support for resizing GtkPaned
widgets, in Win32 client
Diffstat:
M src/gtk.c | 92 +++++++++++++++++++++----------
M src/gtk.h | 1 +
2 files changed, 63 insertions(+), 30 deletions(-)
---
(DIR) diff --git a/src/gtk.c b/src/gtk.c
t@@ -21,6 +21,8 @@ static void gtk_button_size_request(GtkWidget *widget,
GtkRequisition *requisition);
static void gtk_entry_size_request(GtkWidget *widget,
GtkRequisition *requisition);
+static void gtk_entry_set_size(GtkWidget *widget,
+ GtkAllocation *allocation);
static void gtk_text_size_request(GtkWidget *widget,
GtkRequisition *requisition);
static void gtk_button_destroy(GtkWidget *widget);
t@@ -284,6 +286,7 @@ static GtkClass GtkMenuClass = {
static GtkSignalType GtkEditableSignals[] = {
{ "create",gtk_marshal_VOID__VOID,gtk_editable_create },
+ { "activate",gtk_marshal_VOID__VOID,NULL },
{ "",NULL,NULL }
};
t@@ -293,6 +296,7 @@ static GtkClass GtkEditableClass = {
static GtkSignalType GtkEntrySignals[] = {
{ "size_request",gtk_marshal_VOID__GPOIN,gtk_entry_size_request },
+ { "set_size",gtk_marshal_VOID__GPOIN,gtk_entry_set_size },
{ "realize",gtk_marshal_VOID__VOID,gtk_entry_realize },
{ "",NULL,NULL }
};
t@@ -584,38 +588,57 @@ LRESULT CALLBACK GtkPanedProc(HWND hwnd,UINT msg,UINT wParam,LONG lParam) {
HPEN oldpen,dkpen,ltpen;
RECT rect;
HDC hDC;
- if (msg==WM_PAINT) {
- if (GetUpdateRect(hwnd,NULL,TRUE)) {
- BeginPaint(hwnd,&ps);
- GetClientRect(hwnd,&rect);
- hDC=ps.hdc;
- ltpen=CreatePen(PS_SOLID,0,(COLORREF)GetSysColor(COLOR_3DHILIGHT));
- dkpen=CreatePen(PS_SOLID,0,(COLORREF)GetSysColor(COLOR_3DSHADOW));
-
- if (rect.right > rect.bottom) {
- oldpen=SelectObject(hDC,ltpen);
- MoveToEx(hDC,rect.left,rect.top,NULL);
- LineTo(hDC,rect.right,rect.top);
-
- SelectObject(hDC,dkpen);
- MoveToEx(hDC,rect.left,rect.bottom-1,NULL);
- LineTo(hDC,rect.right,rect.bottom-1);
- } else {
- oldpen=SelectObject(hDC,ltpen);
- MoveToEx(hDC,rect.left,rect.top,NULL);
- LineTo(hDC,rect.left,rect.bottom);
+ GtkPaned *paned;
+ paned=GTK_PANED(GetWindowLong(hwnd,GWL_USERDATA));
+ switch(msg) {
+ case WM_PAINT:
+ if (GetUpdateRect(hwnd,NULL,TRUE)) {
+ BeginPaint(hwnd,&ps);
+ GetClientRect(hwnd,&rect);
+ hDC=ps.hdc;
+ ltpen=CreatePen(PS_SOLID,0,(COLORREF)GetSysColor(COLOR_3DHILIGHT));
+ dkpen=CreatePen(PS_SOLID,0,(COLORREF)GetSysColor(COLOR_3DSHADOW));
+
+ if (rect.right > rect.bottom) {
+ oldpen=SelectObject(hDC,ltpen);
+ MoveToEx(hDC,rect.left,rect.top,NULL);
+ LineTo(hDC,rect.right,rect.top);
+
+ SelectObject(hDC,dkpen);
+ MoveToEx(hDC,rect.left,rect.bottom-1,NULL);
+ LineTo(hDC,rect.right,rect.bottom-1);
+ } else {
+ oldpen=SelectObject(hDC,ltpen);
+ MoveToEx(hDC,rect.left,rect.top,NULL);
+ LineTo(hDC,rect.left,rect.bottom);
+
+ SelectObject(hDC,ltpen);
+ MoveToEx(hDC,rect.right-1,rect.top,NULL);
+ LineTo(hDC,rect.right-1,rect.bottom);
+ }
- SelectObject(hDC,ltpen);
- MoveToEx(hDC,rect.right-1,rect.top,NULL);
- LineTo(hDC,rect.right-1,rect.bottom);
+ SelectObject(hDC,oldpen);
+ DeleteObject(ltpen); DeleteObject(dkpen);
+ EndPaint(hwnd,&ps);
}
-
- SelectObject(hDC,oldpen);
- DeleteObject(ltpen); DeleteObject(dkpen);
- EndPaint(hwnd,&ps);
- }
- return TRUE;
- } else return DefWindowProc(hwnd,msg,wParam,lParam);
+ return TRUE;
+ case WM_LBUTTONDOWN:
+ if (!paned) break;
+ SetCapture(hwnd);
+ paned->Tracking=TRUE;
+ return TRUE;
+ case WM_MOUSEMOVE:
+ if (!paned||!paned->Tracking) break;
+ return TRUE;
+ case WM_LBUTTONUP:
+ if (!paned||!paned->Tracking) break;
+ ReleaseCapture();
+ paned->Tracking=FALSE;
+ return TRUE;
+ default:
+ return DefWindowProc(hwnd,msg,wParam,lParam);
+ }
+ return FALSE;
}
LRESULT CALLBACK GtkSepProc(HWND hwnd,UINT msg,UINT wParam,LONG lParam) {
t@@ -2346,6 +2369,15 @@ void gtk_label_set_size(GtkWidget *widget,GtkAllocation *allocation) {
}
}
+void gtk_entry_set_size(GtkWidget *widget,GtkAllocation *allocation) {
+ gint yexcess;
+ yexcess=allocation->height-widget->requisition.height;
+ if (yexcess > 0) {
+ allocation->y += yexcess/2;
+ allocation->height -= yexcess;
+ }
+}
+
void gtk_label_destroy(GtkWidget *widget) {
g_free(GTK_LABEL(widget)->text);
}
(DIR) diff --git a/src/gtk.h b/src/gtk.h
t@@ -218,6 +218,7 @@ struct _GtkPaned {
GtkPanedChild children[2];
gint handle_size,gutter_size;
gint handle_pos;
+ gint Tracking : 1;
};
struct _GtkVPaned {