summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--cocoa/FormSelectMenu.m11
-rw-r--r--cocoa/coordinates.h7
-rw-r--r--render/form.c8
-rw-r--r--render/form.h10
4 files changed, 27 insertions, 9 deletions
diff --git a/cocoa/FormSelectMenu.m b/cocoa/FormSelectMenu.m
index 842d5108d..27156bcae 100644
--- a/cocoa/FormSelectMenu.m
+++ b/cocoa/FormSelectMenu.m
@@ -22,6 +22,13 @@
#import "desktop/browser.h"
#import "render/form.h"
+static inline NSRect cocoa_rect_for_control( struct browser_window *bw, struct form_control *control)
+{
+ struct rect r;
+ form_control_bounding_rect(control, &r);
+ return cocoa_scaled_rect(browser_window_get_scale(bw), r.x0, r.y0, r.x1, r.y1 );
+}
+
@interface FormSelectMenu ()
- (void) itemSelected: (id) sender;
@@ -79,8 +86,8 @@
cell = [[NSPopUpButtonCell alloc] initTextCell: @"" pullsDown: YES];
[cell setMenu: menu];
-
- const NSRect rect = cocoa_rect_for_box( browser, control->box );
+
+ const NSRect rect = cocoa_rect_for_control(browser, control);
[cell attachPopUpWithFrame: rect inView: view];
[cell performClickWithFrame: rect inView: view];
diff --git a/cocoa/coordinates.h b/cocoa/coordinates.h
index d5504941a..a43db0b65 100644
--- a/cocoa/coordinates.h
+++ b/cocoa/coordinates.h
@@ -21,7 +21,6 @@
#include "utils/utils.h"
#import "desktop/browser.h"
-#import "render/box.h"
extern CGFloat cocoa_scale_factor;
@@ -105,11 +104,5 @@ static inline NSRect cocoa_scaled_rect( CGFloat scale, int x0, int y0, int x1, i
return cocoa_scaled_rect_wh( scale, x0, y0, x1 - x0, y1 - y0 );
}
-static inline NSRect cocoa_rect_for_box( struct browser_window *bw, struct box *box )
-{
- struct rect r;
- box_bounds( box, &r );
- return cocoa_scaled_rect(browser_window_get_scale(bw), r.x0, r.y0, r.x1, r.y1 );
-}
#endif
diff --git a/render/form.c b/render/form.c
index 7c90a5250..e5f99c5f3 100644
--- a/render/form.c
+++ b/render/form.c
@@ -1352,6 +1352,14 @@ char *form_control_get_name(struct form_control *control)
return control->name;
}
+/* exported interface documented in render/form.h */
+nserror form_control_bounding_rect(struct form_control *control, struct rect *r)
+{
+ box_bounds( control->box, r );
+ return NSERROR_OK;
+}
+
+
/**
* Handle a click on the area of the currently opened select menu.
*
diff --git a/render/form.h b/render/form.h
index 82e02f61a..44f383960 100644
--- a/render/form.h
+++ b/render/form.h
@@ -62,4 +62,14 @@ struct form_option *form_select_get_option(struct form_control *control, int ite
*/
char *form_control_get_name(struct form_control *control);
+
+/**
+ * Get a form control bounding rectangle
+ *
+ * \param[in] control The form control
+ * \param[out] r The rectangle to place the bounds in.
+ * \return NSERROR_OK on success or error code.
+ */
+nserror form_control_bounding_rect(struct form_control *control, struct rect *r);
+
#endif