Mercurial > dwindows
comparison gtk/dw.c @ 1400:ccd383e11ff8
Allow removing of tooltips by passing NULL or "" and prevent double tooltips on some platforms.
author | bsmith@81767d24-ef19-dc11-ae90-00e081727c95 |
---|---|
date | Sun, 27 Nov 2011 20:28:15 +0000 |
parents | 614fb124d2e2 |
children | 7266e030a3e3 |
comparison
equal
deleted
inserted
replaced
1399:8e569dd09d94 | 1400:ccd383e11ff8 |
---|---|
4364 dw_window_set_font(tmp, _DWDefaultFont); | 4364 dw_window_set_font(tmp, _DWDefaultFont); |
4365 DW_MUTEX_UNLOCK; | 4365 DW_MUTEX_UNLOCK; |
4366 return tmp; | 4366 return tmp; |
4367 } | 4367 } |
4368 | 4368 |
4369 void _create_tooltip(HWND handle, char *text) | |
4370 { | |
4371 GtkTooltips *tooltips = NULL; | |
4372 GtkWidget *oldtooltips = (GtkWidget *)gtk_object_get_data(GTK_OBJECT(handle), "_dw_tooltip"); | |
4373 | |
4374 if(oldtooltips) | |
4375 gtk_widget_destroy(oldtooltips); | |
4376 if(text) | |
4377 { | |
4378 tooltips = gtk_tooltips_new(); | |
4379 gtk_tooltips_set_tip(tooltips, handle, text, NULL); | |
4380 } | |
4381 gtk_object_set_data(GTK_OBJECT(handle), "_dw_tooltip", (gpointer)tooltips); | |
4382 } | |
4383 | |
4369 /* | 4384 /* |
4370 * Create a new bitmap button window (widget) to be packed. | 4385 * Create a new bitmap button window (widget) to be packed. |
4371 * Parameters: | 4386 * Parameters: |
4372 * text: Bubble help text to be displayed. | 4387 * text: Bubble help text to be displayed. |
4373 * id: An ID of a bitmap in the resource file. | 4388 * id: An ID of a bitmap in the resource file. |
4374 */ | 4389 */ |
4375 HWND dw_bitmapbutton_new(char *text, unsigned long id) | 4390 HWND dw_bitmapbutton_new(char *text, unsigned long id) |
4376 { | 4391 { |
4377 GtkWidget *tmp; | 4392 GtkWidget *tmp; |
4378 GtkWidget *bitmap; | 4393 GtkWidget *bitmap; |
4379 GtkTooltips *tooltips; | |
4380 int _locked_by_me = FALSE; | 4394 int _locked_by_me = FALSE; |
4381 | 4395 |
4382 DW_MUTEX_LOCK; | 4396 DW_MUTEX_LOCK; |
4383 tmp = gtk_button_new(); | 4397 tmp = gtk_button_new(); |
4384 bitmap = dw_bitmap_new(id); | 4398 bitmap = dw_bitmap_new(id); |
4387 { | 4401 { |
4388 dw_window_set_bitmap(bitmap, id, NULL); | 4402 dw_window_set_bitmap(bitmap, id, NULL); |
4389 gtk_container_add (GTK_CONTAINER(tmp), bitmap); | 4403 gtk_container_add (GTK_CONTAINER(tmp), bitmap); |
4390 } | 4404 } |
4391 gtk_widget_show(tmp); | 4405 gtk_widget_show(tmp); |
4392 if(text) | 4406 _create_tooltip(tmp, text); |
4393 { | |
4394 tooltips = gtk_tooltips_new(); | |
4395 gtk_tooltips_set_tip(tooltips, tmp, text, NULL); | |
4396 gtk_object_set_data(GTK_OBJECT(tmp), "_dw_tooltip", (gpointer)tooltips); | |
4397 } | |
4398 gtk_object_set_data(GTK_OBJECT(tmp), "_dw_id", GINT_TO_POINTER(id)); | 4407 gtk_object_set_data(GTK_OBJECT(tmp), "_dw_id", GINT_TO_POINTER(id)); |
4399 DW_MUTEX_UNLOCK; | 4408 DW_MUTEX_UNLOCK; |
4400 return tmp; | 4409 return tmp; |
4401 } | 4410 } |
4402 | 4411 |
4414 { | 4423 { |
4415 GtkWidget *bitmap; | 4424 GtkWidget *bitmap; |
4416 GtkWidget *box; | 4425 GtkWidget *box; |
4417 GtkWidget *label; | 4426 GtkWidget *label; |
4418 GtkWidget *button; | 4427 GtkWidget *button; |
4419 GtkTooltips *tooltips; | |
4420 char *label_text=NULL; | 4428 char *label_text=NULL; |
4421 int _locked_by_me = FALSE; | 4429 int _locked_by_me = FALSE; |
4422 | 4430 |
4423 DW_MUTEX_LOCK; | 4431 DW_MUTEX_LOCK; |
4424 | 4432 |
4448 | 4456 |
4449 /* Pack and show all our widgets */ | 4457 /* Pack and show all our widgets */ |
4450 gtk_widget_show( box ); | 4458 gtk_widget_show( box ); |
4451 gtk_container_add( GTK_CONTAINER(button), box ); | 4459 gtk_container_add( GTK_CONTAINER(button), box ); |
4452 gtk_widget_show( button ); | 4460 gtk_widget_show( button ); |
4453 if ( text ) | 4461 _create_tooltip(tmp, text); |
4454 { | |
4455 tooltips = gtk_tooltips_new(); | |
4456 gtk_tooltips_set_tip( tooltips, button, text, NULL ); | |
4457 gtk_object_set_data( GTK_OBJECT(button), "_dw_tooltip", (gpointer)tooltips ); | |
4458 } | |
4459 gtk_object_set_data( GTK_OBJECT(button), "_dw_id", GINT_TO_POINTER(id) ); | 4462 gtk_object_set_data( GTK_OBJECT(button), "_dw_id", GINT_TO_POINTER(id) ); |
4460 DW_MUTEX_UNLOCK; | 4463 DW_MUTEX_UNLOCK; |
4461 return button; | 4464 return button; |
4462 } | 4465 } |
4463 | 4466 |
4472 */ | 4475 */ |
4473 HWND dw_bitmapbutton_new_from_data(char *text, unsigned long id, char *data, int len) | 4476 HWND dw_bitmapbutton_new_from_data(char *text, unsigned long id, char *data, int len) |
4474 { | 4477 { |
4475 GtkWidget *tmp; | 4478 GtkWidget *tmp; |
4476 GtkWidget *bitmap; | 4479 GtkWidget *bitmap; |
4477 GtkTooltips *tooltips; | |
4478 int _locked_by_me = FALSE; | 4480 int _locked_by_me = FALSE; |
4479 | 4481 |
4480 DW_MUTEX_LOCK; | 4482 DW_MUTEX_LOCK; |
4481 tmp = gtk_button_new(); | 4483 tmp = gtk_button_new(); |
4482 bitmap = dw_bitmap_new(id); | 4484 bitmap = dw_bitmap_new(id); |
4485 { | 4487 { |
4486 dw_window_set_bitmap_from_data(bitmap, 0, data, len); | 4488 dw_window_set_bitmap_from_data(bitmap, 0, data, len); |
4487 gtk_container_add (GTK_CONTAINER(tmp), bitmap); | 4489 gtk_container_add (GTK_CONTAINER(tmp), bitmap); |
4488 } | 4490 } |
4489 gtk_widget_show(tmp); | 4491 gtk_widget_show(tmp); |
4490 if(text) | 4492 _create_tooltip(tmp, text); |
4491 { | |
4492 tooltips = gtk_tooltips_new(); | |
4493 gtk_tooltips_set_tip(tooltips, tmp, text, NULL); | |
4494 gtk_object_set_data(GTK_OBJECT(tmp), "_dw_tooltip", (gpointer)tooltips); | |
4495 } | |
4496 gtk_object_set_data(GTK_OBJECT(tmp), "_dw_id", GINT_TO_POINTER(id)); | 4493 gtk_object_set_data(GTK_OBJECT(tmp), "_dw_id", GINT_TO_POINTER(id)); |
4497 DW_MUTEX_UNLOCK; | 4494 DW_MUTEX_UNLOCK; |
4498 return tmp; | 4495 return tmp; |
4499 } | 4496 } |
4500 | 4497 |
4930 * bubbletext: The text in the floating bubble tooltip. | 4927 * bubbletext: The text in the floating bubble tooltip. |
4931 */ | 4928 */ |
4932 void API dw_window_set_tooltip(HWND handle, char *bubbletext) | 4929 void API dw_window_set_tooltip(HWND handle, char *bubbletext) |
4933 { | 4930 { |
4934 int _locked_by_me = FALSE; | 4931 int _locked_by_me = FALSE; |
4935 GtkTooltips *tooltips; | 4932 |
4936 | 4933 DW_MUTEX_LOCK; |
4937 DW_MUTEX_LOCK; | 4934 _create_tooltip(handle, bubbletext); |
4938 tooltips = gtk_tooltips_new(); | |
4939 gtk_tooltips_set_tip(tooltips, handle, bubbletext ? bubbletext : "", NULL); | |
4940 gtk_object_set_data(GTK_OBJECT(handle), "_dw_tooltip", (gpointer)tooltips); | |
4941 DW_MUTEX_UNLOCK; | 4935 DW_MUTEX_UNLOCK; |
4942 } | 4936 } |
4943 | 4937 |
4944 /* | 4938 /* |
4945 * Gets the text used for a given window. | 4939 * Gets the text used for a given window. |