comparison gtk/dw.c @ 518:7efc5f99c4cc

Implemented dw_window_show/hide/minimize/destroy/set_text for MDI children. reparent needs to be implemented.
author bsmith@81767d24-ef19-dc11-ae90-00e081727c95
date Tue, 16 Mar 2004 06:53:23 +0000
parents 63e5812d64ba
children 2fe16658d18b
comparison
equal deleted inserted replaced
517:63e5812d64ba 518:7efc5f99c4cc
593 GtkMdiChild *child; 593 GtkMdiChild *child;
594 594
595 g_return_if_fail (GTK_IS_MDI (mdi)); 595 g_return_if_fail (GTK_IS_MDI (mdi));
596 child = get_child (mdi, widget); 596 child = get_child (mdi, widget);
597 g_return_if_fail (child); 597 g_return_if_fail (child);
598 g_return_if_fail (GTK_IS_WIDGET (child));
599 gtk_mdi_remove_true (GTK_CONTAINER (mdi), child->widget); 598 gtk_mdi_remove_true (GTK_CONTAINER (mdi), child->widget);
600 } 599 }
601 600
602 static void gtk_mdi_realize(GtkWidget *widget) 601 static void gtk_mdi_realize(GtkWidget *widget)
603 { 602 {
2249 * handle: The window handle to minimize. 2248 * handle: The window handle to minimize.
2250 */ 2249 */
2251 int dw_window_minimize(HWND handle) 2250 int dw_window_minimize(HWND handle)
2252 { 2251 {
2253 int _locked_by_me = FALSE; 2252 int _locked_by_me = FALSE;
2253 GtkWidget *mdi = NULL;
2254 2254
2255 if(!handle) 2255 if(!handle)
2256 return 0; 2256 return 0;
2257 2257
2258 DW_MUTEX_LOCK; 2258 DW_MUTEX_LOCK;
2259 XIconifyWindow(GDK_WINDOW_XDISPLAY(GTK_WIDGET(handle)->window), 2259 #if GTK_MAJOR_VERSION > 1
2260 GDK_WINDOW_XWINDOW(GTK_WIDGET(handle)->window), 2260 if((mdi = (GtkWidget *)gtk_object_get_data(GTK_OBJECT(handle), "_dw_mdi")) && GTK_IS_MDI(mdi))
2261 DefaultScreen (GDK_DISPLAY ())); 2261 {
2262 gtk_mdi_set_state(GTK_MDI(mdi), handle, CHILD_ICONIFIED);
2263 }
2264 else
2265 #endif
2266 {
2267 XIconifyWindow(GDK_WINDOW_XDISPLAY(GTK_WIDGET(handle)->window),
2268 GDK_WINDOW_XWINDOW(GTK_WIDGET(handle)->window),
2269 DefaultScreen (GDK_DISPLAY ()));
2270 }
2262 DW_MUTEX_UNLOCK; 2271 DW_MUTEX_UNLOCK;
2263 return 0; 2272 return 0;
2264 } 2273 }
2265 2274
2266 /* 2275 /*
2305 * handle: The window handle to make visible. 2314 * handle: The window handle to make visible.
2306 */ 2315 */
2307 int dw_window_show(HWND handle) 2316 int dw_window_show(HWND handle)
2308 { 2317 {
2309 int _locked_by_me = FALSE; 2318 int _locked_by_me = FALSE;
2310 GtkWidget *defaultitem; 2319 GtkWidget *defaultitem, *mdi;
2311 2320
2312 if(!handle) 2321 if(!handle)
2313 return 0; 2322 return 0;
2314 2323
2315 DW_MUTEX_LOCK; 2324 DW_MUTEX_LOCK;
2316 gtk_widget_show(handle); 2325 gtk_widget_show(handle);
2317 if(GTK_WIDGET(handle)->window) 2326 #if GTK_MAJOR_VERSION > 1
2318 { 2327 if((mdi = (GtkWidget *)gtk_object_get_data(GTK_OBJECT(handle), "_dw_mdi")) && GTK_IS_MDI(mdi))
2319 int width = (int)gtk_object_get_data(GTK_OBJECT(handle), "_dw_width"); 2328 {
2320 int height = (int)gtk_object_get_data(GTK_OBJECT(handle), "_dw_height"); 2329 gtk_mdi_set_state(GTK_MDI(mdi), handle, CHILD_NORMAL);
2321 2330 }
2322 if(width && height) 2331 else
2323 { 2332 #endif
2324 gtk_widget_set_usize(handle, width, height); 2333 {
2325 gtk_object_set_data(GTK_OBJECT(handle), "_dw_width", 0); 2334 if(GTK_WIDGET(handle)->window)
2326 gtk_object_set_data(GTK_OBJECT(handle), "_dw_height", 0); 2335 {
2327 } 2336 int width = (int)gtk_object_get_data(GTK_OBJECT(handle), "_dw_width");
2328 2337 int height = (int)gtk_object_get_data(GTK_OBJECT(handle), "_dw_height");
2329 gdk_window_raise(GTK_WIDGET(handle)->window); 2338
2330 gdk_flush(); 2339 if(width && height)
2331 gdk_window_show(GTK_WIDGET(handle)->window); 2340 {
2332 gdk_flush(); 2341 gtk_widget_set_usize(handle, width, height);
2333 } 2342 gtk_object_set_data(GTK_OBJECT(handle), "_dw_width", 0);
2334 defaultitem = (GtkWidget *)gtk_object_get_data(GTK_OBJECT(handle), "_dw_defaultitem"); 2343 gtk_object_set_data(GTK_OBJECT(handle), "_dw_height", 0);
2335 if(defaultitem) 2344 }
2336 gtk_widget_grab_focus(defaultitem); 2345
2346 gdk_window_raise(GTK_WIDGET(handle)->window);
2347 gdk_flush();
2348 gdk_window_show(GTK_WIDGET(handle)->window);
2349 gdk_flush();
2350 }
2351 defaultitem = (GtkWidget *)gtk_object_get_data(GTK_OBJECT(handle), "_dw_defaultitem");
2352 if(defaultitem)
2353 gtk_widget_grab_focus(defaultitem);
2354 }
2337 DW_MUTEX_UNLOCK; 2355 DW_MUTEX_UNLOCK;
2338 return 0; 2356 return 0;
2339 } 2357 }
2340 2358
2341 /* 2359 /*
2344 * handle: The window handle to make visible. 2362 * handle: The window handle to make visible.
2345 */ 2363 */
2346 int dw_window_hide(HWND handle) 2364 int dw_window_hide(HWND handle)
2347 { 2365 {
2348 int _locked_by_me = FALSE; 2366 int _locked_by_me = FALSE;
2367 GtkWidget *mdi = NULL;
2349 2368
2350 if(!handle) 2369 if(!handle)
2351 return 0; 2370 return 0;
2352 2371
2353 DW_MUTEX_LOCK; 2372 DW_MUTEX_LOCK;
2354 gtk_widget_hide(handle); 2373 #if GTK_MAJOR_VERSION > 1
2374 if((mdi = (GtkWidget *)gtk_object_get_data(GTK_OBJECT(handle), "_dw_mdi")) && GTK_IS_MDI(mdi))
2375 {
2376 gtk_mdi_set_state(GTK_MDI(mdi), handle, CHILD_ICONIFIED);
2377 }
2378 else
2379 #endif
2380 gtk_widget_hide(handle);
2355 DW_MUTEX_UNLOCK; 2381 DW_MUTEX_UNLOCK;
2356 return 0; 2382 return 0;
2357 } 2383 }
2358 2384
2359 /* 2385 /*
2362 * handle: The window handle to destroy. 2388 * handle: The window handle to destroy.
2363 */ 2389 */
2364 int dw_window_destroy(HWND handle) 2390 int dw_window_destroy(HWND handle)
2365 { 2391 {
2366 int _locked_by_me = FALSE; 2392 int _locked_by_me = FALSE;
2393 GtkWidget *mdi = NULL;
2367 2394
2368 if(!handle) 2395 if(!handle)
2369 return 0; 2396 return 0;
2370 2397
2371 DW_MUTEX_LOCK; 2398 DW_MUTEX_LOCK;
2399 #if GTK_MAJOR_VERSION > 1
2400 if((mdi = (GtkWidget *)gtk_object_get_data(GTK_OBJECT(handle), "_dw_mdi")) && GTK_IS_MDI(mdi))
2401 {
2402 gtk_mdi_remove(GTK_MDI(mdi), handle);
2403 }
2404 #endif
2372 if(GTK_IS_WIDGET(handle)) 2405 if(GTK_IS_WIDGET(handle))
2373 { 2406 {
2374 GtkWidget *eventbox = (GtkWidget *)gtk_object_get_data(GTK_OBJECT(handle), "_dw_eventbox"); 2407 GtkWidget *eventbox = (GtkWidget *)gtk_object_get_data(GTK_OBJECT(handle), "_dw_eventbox");
2375 2408
2376 if(eventbox && GTK_IS_WIDGET(eventbox)) 2409 if(eventbox && GTK_IS_WIDGET(eventbox))
2377 gtk_widget_destroy(eventbox); 2410 gtk_widget_destroy(eventbox);
2378 else 2411 else
2379 gtk_widget_destroy(handle); 2412 gtk_widget_destroy(handle);
2380 } 2413 }
2381 DW_MUTEX_UNLOCK; 2414 DW_MUTEX_UNLOCK;
2382 return 0; 2415 return 0;
2383 } 2416 }
2737 2770
2738 label = gtk_label_new(title); 2771 label = gtk_label_new(title);
2739 gtk_widget_show(label); 2772 gtk_widget_show(label);
2740 gtk_object_set_data(GTK_OBJECT(tmp), "_dw_mdi_child", (gpointer)1); 2773 gtk_object_set_data(GTK_OBJECT(tmp), "_dw_mdi_child", (gpointer)1);
2741 gtk_object_set_data(GTK_OBJECT(tmp), "_dw_mdi_title", (gpointer)label); 2774 gtk_object_set_data(GTK_OBJECT(tmp), "_dw_mdi_title", (gpointer)label);
2775 gtk_object_set_data(GTK_OBJECT(tmp), "_dw_mdi", (gpointer)hwndOwner);
2742 2776
2743 gtk_mdi_put(GTK_MDI(hwndOwner), tmp, 100, 75, label); 2777 gtk_mdi_put(GTK_MDI(hwndOwner), tmp, 100, 75, label);
2744 } 2778 }
2745 else 2779 else
2746 #endif 2780 #endif
3842 * text: The text associsated with a given window. f 3876 * text: The text associsated with a given window. f
3843 */ 3877 */
3844 void dw_window_set_text(HWND handle, char *text) 3878 void dw_window_set_text(HWND handle, char *text)
3845 { 3879 {
3846 int _locked_by_me = FALSE; 3880 int _locked_by_me = FALSE;
3847 3881 GtkWidget *tmp;
3848 DW_MUTEX_LOCK; 3882
3883 DW_MUTEX_LOCK;
3884 if((tmp = (GtkWidget *)gtk_object_get_data(GTK_OBJECT(handle), "_dw_mdi_title")))
3885 handle = tmp;
3849 if(GTK_IS_ENTRY(handle)) 3886 if(GTK_IS_ENTRY(handle))
3850 gtk_entry_set_text(GTK_ENTRY(handle), text); 3887 gtk_entry_set_text(GTK_ENTRY(handle), text);
3851 else if(GTK_IS_COMBO(handle)) 3888 else if(GTK_IS_COMBO(handle))
3852 gtk_entry_set_text(GTK_ENTRY(GTK_COMBO(handle)->entry), text); 3889 gtk_entry_set_text(GTK_ENTRY(GTK_COMBO(handle)->entry), text);
3853 else if(GTK_IS_LABEL(handle)) 3890 else if(GTK_IS_LABEL(handle))