]> pilppa.org Git - familiar-h63xx-build.git/blob - org.handhelds.familiar/packages/gaim/files/02-request-field-dialogs.patch
OE tree imported from monotone branch org.openembedded.oz354fam083 at revision 8b12e3...
[familiar-h63xx-build.git] / org.handhelds.familiar / packages / gaim / files / 02-request-field-dialogs.patch
1 Identiske underkataloger: src2/CVS og src/CVS
2 Identiske underkataloger: src2/.deps og src/.deps
3 Index: gaim/src/gtkgaim.h
4 ===================================================================
5 --- gaim.orig/src/gtkgaim.h     2005-08-19 21:46:09.550560256 +0200
6 +++ gaim/src/gtkgaim.h  2005-08-19 21:47:37.276223928 +0200
7 @@ -66,5 +66,11 @@
8   */
9  #define ICONS_IN_DIALOGS 0
10  
11 +/**
12 + * How many fields is there screen-space for vertically, before a scrollbar is needed?
13 + */
14 +#define VERT_ITEMS 0
15 +
16 +
17  #endif /* _GAIM_GTKGAIM_H_ */
18  
19 Index: gaim/src/gtkrequest.c
20 ===================================================================
21 --- gaim.orig/src/gtkrequest.c  2005-08-19 21:46:09.550560256 +0200
22 +++ gaim/src/gtkrequest.c       2005-08-19 21:53:46.782050504 +0200
23 @@ -1381,6 +1381,8 @@
24         GtkWidget *img;
25  #endif
26         GtkWidget *sw;
27 +       GtkWidget *pri_label;
28 +       GtkWidget *sec_label;
29         GtkSizeGroup *sg;
30         GList *gl, *fl;
31         GaimRequestFieldGroup *group;
32 @@ -1450,6 +1452,7 @@
33                 gtk_misc_set_alignment(GTK_MISC(label), 0, 0);
34                 gtk_box_pack_start(GTK_BOX(vbox), label, TRUE, TRUE, 0);
35                 gtk_widget_show(label);
36 +               pri_label = label;
37                 g_free(label_text);
38         }
39  
40 @@ -1457,7 +1460,7 @@
41                         gl = gl->next)
42                 total_fields += g_list_length(gaim_request_field_group_get_fields(gl->data));
43  
44 -       if(total_fields > 9) {
45 +       if(total_fields > VERT_ITEMS) {
46                 sw = gtk_scrolled_window_new(NULL, NULL);
47                 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(sw),
48                                 GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC);
49 @@ -1484,6 +1487,7 @@
50                 gtk_misc_set_alignment(GTK_MISC(label), 0, 0);
51                 gtk_box_pack_start(GTK_BOX(vbox2), label, TRUE, TRUE, 0);
52                 gtk_widget_show(label);
53 +               sec_label = label;
54         }
55  
56         for (gl = gaim_request_fields_get_groups(fields);
57 @@ -1718,6 +1722,59 @@
58  
59         gtk_widget_show(win);
60  
61 +       //Wait for the window to have recieved its "configure_event",
62 +       //which means it has been resized by the WM
63 +       while (gtk_events_pending ())  gtk_main_iteration ();
64 +
65 +       //Get allocated size, and adjust widgets accordingly
66 +       int w, h, field_labels_w;
67 +       GtkRequisition sg_labels_req;
68 +       gtk_window_get_size(GTK_WINDOW(win), &w, &h);
69 +       field_labels_w = label->allocation.width + GAIM_HIG_BORDER*2; //The width of the largest field-label
70 +
71 +       printf("%d / %d\n", field_labels_w, w);
72 +       
73 +       w = w - GAIM_HIG_BORDER * 2;
74 +       if (primary) gtk_widget_set_size_request(GTK_WIDGET(pri_label), w, -1);
75 +       if (secondary) gtk_widget_set_size_request(GTK_WIDGET(sec_label), w, -1);
76 +       
77 +       //Determine what to do - add a scrollbar or resize the input fields?
78 +       if ((float)field_labels_w / w > 0.5) //if the labels fill more than half the screen add a horizontal scrollbar
79 +       {
80 +               gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(sw),
81 +                       GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
82 +       }
83 +       else //resize the input fields
84 +       {
85 +               for (gl = gaim_request_fields_get_groups(fields);
86 +                        gl != NULL;
87 +                        gl = gl->next)
88 +               {
89 +                       GList *field_list;
90 +                       size_t field_count = 0;
91 +                       size_t cols = 1;
92 +                       size_t rows;
93 +                       size_t col_num;
94 +                       size_t row_num = 0;
95 +                       
96 +                       group      = gl->data;
97 +                       field_list = gaim_request_field_group_get_fields(group);
98 +       
99 +                       for (row_num = 0, fl = field_list;
100 +                               row_num < rows && fl != NULL;
101 +                               row_num++)
102 +                       {
103 +                               for (col_num = 0;
104 +                                        col_num < cols && fl != NULL;
105 +                                        col_num++, fl = fl->next)
106 +                               {
107 +                                       field = fl->data;
108 +                                       gtk_widget_set_size_request(GTK_WIDGET(field->ui_data), w-field_labels_w, -1);
109 +                               }
110 +                       }
111 +               }
112 +       }
113 +
114         return data;
115  }
116