tGtkPaned widgets now functional in Windows 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 b0542e47a9251335615fedb5f2e8f7f5752d1a2b
(DIR) parent 026ccc65062042d38013c968c0cfe2d08ebff24c
(HTM) Author: Ben Webb <ben@salilab.org>
Date: Thu, 18 Jan 2001 20:17:21 +0000
GtkPaned widgets now functional in Windows client
Diffstat:
M src/gtk.c | 22 ++++++++++++++++++++++
M src/gtk.h | 2 ++
2 files changed, 24 insertions(+), 0 deletions(-)
---
(DIR) diff --git a/src/gtk.c b/src/gtk.c
t@@ -591,6 +591,7 @@ LRESULT CALLBACK GtkPanedProc(HWND hwnd,UINT msg,UINT wParam,LONG lParam) {
HPEN oldpen,dkpen,ltpen;
RECT rect;
HDC hDC;
+ gint newpos;
GtkPaned *paned;
paned=GTK_PANED(GetWindowLong(hwnd,GWL_USERDATA));
switch(msg) {
t@@ -637,6 +638,15 @@ LRESULT CALLBACK GtkPanedProc(HWND hwnd,UINT msg,UINT wParam,LONG lParam) {
if (!paned||!paned->Tracking) break;
ReleaseCapture();
paned->Tracking=FALSE;
+ GetClientRect(hwnd,&rect);
+ if (rect.right > rect.bottom) {
+ newpos=((gint16)HIWORD(lParam)+GTK_WIDGET(paned)->allocation.y-
+ paned->true_alloc.y)*100/paned->true_alloc.height;
+ } else {
+ newpos=((gint16)LOWORD(lParam)+GTK_WIDGET(paned)->allocation.x-
+ paned->true_alloc.x)*100/paned->true_alloc.width;
+ }
+ gtk_paned_set_position(paned,newpos);
return TRUE;
default:
return DefWindowProc(hwnd,msg,wParam,lParam);
t@@ -3703,6 +3713,8 @@ void gtk_vpaned_set_size(GtkWidget *widget,GtkAllocation *allocation) {
gint16 alloc;
GtkAllocation child_alloc;
+ memcpy(&paned->true_alloc,allocation,sizeof(GtkAllocation));
+
alloc=allocation->height-paned->handle_size;
child=paned->children[0].widget;
t@@ -3733,6 +3745,7 @@ void gtk_hpaned_set_size(GtkWidget *widget,GtkAllocation *allocation) {
gint16 alloc;
GtkAllocation child_alloc;
+ memcpy(&paned->true_alloc,allocation,sizeof(GtkAllocation));
alloc=allocation->width-paned->handle_size;
child=paned->children[0].widget;
t@@ -4049,3 +4062,12 @@ void gtk_window_handle_auto_size(GtkWindow *window,
allocation->height=widget->allocation.height;
}
}
+
+void gtk_paned_set_position(GtkPaned *paned,gint position) {
+ GtkAllocation allocation;
+ if (position<0) position=0;
+ if (position>100) position=100;
+ paned->handle_pos=position;
+ memcpy(&allocation,&paned->true_alloc,sizeof(GtkAllocation));
+ gtk_widget_set_size(GTK_WIDGET(paned),&allocation);
+}
(DIR) diff --git a/src/gtk.h b/src/gtk.h
t@@ -216,6 +216,7 @@ struct _GtkPanedChild {
struct _GtkPaned {
GtkContainer container;
GtkPanedChild children[2];
+ GtkAllocation true_alloc;
gint handle_size,gutter_size;
gint handle_pos;
gint Tracking : 1;
t@@ -605,6 +606,7 @@ void gtk_paned_pack1(GtkPaned *paned,GtkWidget *child,gboolean resize,
gboolean shrink);
void gtk_paned_pack2(GtkPaned *paned,GtkWidget *child,gboolean resize,
gboolean shrink);
+void gtk_paned_set_position(GtkPaned *paned,gint position);
#define gtk_container_border_width gtk_container_set_border_width
#define gtk_hbutton_box_new() gtk_hbox_new(TRUE,5)